{"id":2022,"date":"2021-03-20T13:37:44","date_gmt":"2021-03-20T16:37:44","guid":{"rendered":"https:\/\/maurom.com\/blog\/?p=2022"},"modified":"2024-12-10T10:12:44","modified_gmt":"2024-12-10T13:12:44","slug":"soporte-para-headsets-hsp-hfp-en-ubuntu-y-debian","status":"publish","type":"post","link":"https:\/\/maurom.com\/blog\/2021\/03\/20\/soporte-para-headsets-hsp-hfp-en-ubuntu-y-debian\/","title":{"rendered":"Soporte para headsets HSP\/HFP en Ubuntu y Debian"},"content":{"rendered":"<blockquote><p><strong>\u00a1Aviso!<\/strong> A finales de 2022, <a href=\"https:\/\/www.phoronix.com\/news\/Debian-12-PipeWire\">GNOME, Ubuntu y Debian cambiaron a Pipewire<\/a> como su servidor de audio predeterminado. <strong>PipeWire resuelve muchos de los problemas con el hardware y los c\u00f3decs de Bluetooth. <\/strong>Incluye una capa de compatibilidad con PulseAudio (pipewire-pulse), permitiendo que las aplicaciones existentes aprovechen las mejoras sin realizar cambios y sin inconvenientes.<\/p>\n<p>Vengo usando <a href=\"https:\/\/packages.debian.org\/bookworm-backports\/pipewire-audio\">pipewire<\/a> junto con <a href=\"https:\/\/packages.debian.org\/bookworm-backports\/wireplumber\">wireplumber<\/a> session manager desde la versi\u00f3n 0.3.x, por lo que si a\u00fan est\u00e1 utilizando pulseaudio y sigue con problemas con bluetooth, la mejor opci\u00f3n es migrarlo. Hay muchas gu\u00edas en l\u00ednea, pero <a href=\"https:\/\/www.baeldung.com\/linux\/pulseaudio-pipewire-replace\">esta de Baeldung<\/a> es IMHO la mejor.<\/p>\n<p>Esto significa que la mayor parte de la informaci\u00f3n de este art\u00edculo es obsoleta, pero lo mantendr\u00e9 solo a fines de referencia.<\/p><\/blockquote>\n<p>Hace unos meses me obsequiaron un set de trabajo remoto que incluye unos auriculares bluetooth denominados <a href=\"https:\/\/www.fravega.com\/p\/auricular-bluetooth-ec717-50004905\">simplemente &#8220;EC717&#8221;<\/a>.<\/p>\n<p>La verdad que me vienen muy bien, pues estaba utilizando el manos libres del celular, y no es lo mismo en calidad ni comodidad.<\/p>\n<p>Sin embargo, encontr\u00e9 imposible hacerlos funcionar en Ubuntu 20.04 y en Debian 10, dos de las plataformas que utilizo habitualmente. En realidad s\u00ed funcionan para escuchar m\u00fasica, con el perfil A2DP, pero no funcionan como micr\u00f3fono para videollamadas, con lo cual pierde bastante el sentido de ser un &#8220;set de trabajo remoto&#8221;. Al intentar establecer el perfil de <code>a2dp_sink<\/code> a <code>headset_head_unit<\/code>, obtengo este error:<\/p>\n<pre>W: [pulseaudio] module-bluez5-device.c: Refused to switch profile to headset_head_unit: Not connected<\/pre>\n<p>Este problema est\u00e1 documentado ampliamente en un mont\u00f3n de bugs y tickets de pulseaudio en <a href=\"https:\/\/bugs.freedesktop.org\/show_bug.cgi?id=93898\">bugs.freedesktop.org<\/a> (<a href=\"https:\/\/bugs.freedesktop.org\/show_bug.cgi?id=93898\">93898<\/a>, <a href=\"https:\/\/bugs.freedesktop.org\/show_bug.cgi?id=97316\">97316<\/a>,\u00a0<a href=\"https:\/\/bugs.freedesktop.org\/show_bug.cgi?id=73325\">73325<\/a>) y en el nuevo <a href=\"https:\/\/gitlab.freedesktop.org\/pulseaudio\/pulseaudio\/-\/issues\/84\">gitlab.freedesktop.org<\/a> (<a href=\"https:\/\/gitlab.freedesktop.org\/pulseaudio\/pulseaudio\/-\/issues\/84\">84<\/a>, <a href=\"https:\/\/gitlab.freedesktop.org\/pulseaudio\/pulseaudio\/-\/issues\/122\">122<\/a>, <a href=\"https:\/\/gitlab.freedesktop.org\/pulseaudio\/pulseaudio\/-\/issues\/742\">742<\/a>, <a href=\"https:\/\/gitlab.freedesktop.org\/pulseaudio\/pulseaudio\/-\/issues\/776\">776<\/a>, <a href=\"https:\/\/gitlab.freedesktop.org\/pulseaudio\/pulseaudio\/-\/issues\/960\">960<\/a>)<\/p>\n<p>B\u00e1sicamente, no hay soporte completo para la <a href=\"https:\/\/www.philips.com.ar\/c-f\/XC000008687\/%C2%BFqu%C3%A9-son-los-perfiles-bluetooth-hsp,-a2dp,-avrcp\">variedad de HandSet Profile \/ Hands Free Profile \/ HSP&amp;HFP profiles<\/a> mediante los cuales se coordinan los canales de audio y control en Bluetooth. En realidad lo hab\u00eda, pero cambios en la arquitectura de Bluez y PulseAudio hicieron que desaparezcan. Y esto afecta de forma variada a algunos headset que implementan uno solo de dichos perfiles.<\/p>\n<p><a href=\"https:\/\/twitter.com\/jejb_\">James Bottomley<\/a> estuvo trabajando en 2017 en la incorporaci\u00f3n de soporte para las versiones de pulseaudio 11, 12 y 13, pero lamentablemente esos parches no llegaron a incorporarse a la rama estable de la biblioteca pulseaudio cuando los public\u00f3, y <a href=\"https:\/\/gitlab.freedesktop.org\/pulseaudio\/pulseaudio\/-\/commits\/master\/src\/modules\/bluetooth?utf8=%E2%9C%93&amp;search=bottomley\">reci\u00e9n fueron incorporados hace pocos d\u00edas<\/a>, con lo cual no figuran ni de casualidad en las releases actuales de las distribuciones modernas.<\/p>\n<p>Afortunadamente, \u00e9l ha segmentado dos ramas de trabajo en las cuales marca prolijamente cuales son los cambios a incorporar para poder hacer andar este tipo de headsets con <a href=\"https:\/\/git.kernel.org\/pub\/scm\/linux\/kernel\/git\/jejb\/pulseaudio.git\/log\/?h=jejb-v12\">pulseaudio 12<\/a> y <a href=\"https:\/\/git.kernel.org\/pub\/scm\/linux\/kernel\/git\/jejb\/pulseaudio.git\/log\/?h=jejb-v13\">pulseaudio 13<\/a> , y a partir de ellos pude modificar y compilar dos versiones del paquete pulseaudio-module-bluetooth con soporte para HSP\/HFP tanto en Debian como en Ubuntu:<\/p>\n<ul>\n<li><a href=\"https:\/\/maurom.com\/files\/pulseaudio-module-bluetooth_13.99.1-1ubuntu3.10%2B1_amd64.deb\"><strong>pulseaudio-module-bluetooth<\/strong> (13.99.1-1ubuntu3.10)<\/a> con soporte para HFP &amp; HSP\u00a0para Ubuntu.<\/li>\n<li><a href=\"https:\/\/maurom.com\/files\/pulseaudio-module-bluetooth_12.2-4%2Bdeb10u1.1_amd64.deb\"><strong>pulseaudio-module-bluetooth<\/strong> (12.2-4+deb10u1)<\/a> con soporte para HFP &amp; HSP\u00a0para Debian<\/li>\n<\/ul>\n<p>Por cierto, y antes de que se quejen, el perfil HSP\/HFP seg\u00fan la especificaci\u00f3n Bluetooth es monocanal y en 8 khz (Volume 2, Section 6.12, de la especificaci\u00f3n Bluetooth Core 2.0), por lo cual la calidad de audio es similar a la de un tel\u00e9fono de l\u00ednea (bueno, que en esp\u00edritu eso es HSP). En resumen, se escucha feo como en un tel\u00e9fono anal\u00f3gico. Si quieren escuchar m\u00fasica, establezcan perfil A2DP, pero con ese perfil no es posible utilizar el headset como micr\u00f3fono. Las versiones m\u00e1s nuevas del parche incorporan <a href=\"https:\/\/gitlab.freedesktop.org\/pulseaudio\/pulseaudio\/-\/commits\/master\/src\/modules\/bluetooth?utf8=%E2%9C%93&amp;search=support\">soporte para m\u00faltiples codecs<\/a> que mejoran la calidad de audio, pero desde luego estas mejoras s\u00f3lo est\u00e1n disponibles en hardware m\u00e1s moderno y de mejor calidad.<\/p>\n<p>Por mi parte, tambi\u00e9n opt\u00e9 por hacer un passthru mediante python3-bluez y sources\/sinks virtuales de pulseaudio, un script de unas 600 l\u00edneas, de forma tal de dialogar directamente con el headset y pasar el audio como entradas y salidas nuevas en el stack de la biblioteca de sonido, pero la latencia que incorporaba al sonido lo hac\u00eda inusable. Los parches de Bottomley, en cambio, funcionan perfecto.<\/p>\n<p>Finalmente, respecto a la calidad del c\u00f3digo, si estuvieron trabajando en cuestiones de SCSI, Secure Boot, TPMs y UEFI, hay una muy alta probabilidad de que est\u00e9n utilizando y se hayan cruzado con <a href=\"https:\/\/blog.hansenpartnership.com\/\">c\u00f3digo de James<\/a>. Va mi agradecimiento por todos sus aportes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00a1Aviso! A finales de 2022, GNOME, Ubuntu y Debian cambiaron a Pipewire como su servidor de audio predeterminado. PipeWire resuelve muchos de los problemas con el hardware y los c\u00f3decs de Bluetooth. Incluye una capa de compatibilidad con PulseAudio (pipewire-pulse), permitiendo que las aplicaciones existentes aprovechen las mejoras sin realizar cambios y sin inconvenientes. Vengo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[5,17,3],"_links":{"self":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/posts\/2022"}],"collection":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/comments?post=2022"}],"version-history":[{"count":16,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/posts\/2022\/revisions"}],"predecessor-version":[{"id":2123,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/posts\/2022\/revisions\/2123"}],"wp:attachment":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/media?parent=2022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/categories?post=2022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/tags?post=2022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}