So

Ubuntu Touch utilitza Pulseaudio com a servidor de so, assegut entre l’àudio HAL del dispositiu i les aplicacions i altres components del sistema. També és responsable de controlar l’àudio HAL per a trucades de veu i suport per auriculars Bluetooth.

../../_images/sound-architecture.svg

Ubuntu Touch utilitza pulseaudio-modules-droid de SailfishOS per parlar amb Audio HAL. El mòdul és responsable de:

  • S’està carregant la HAL d’àudio apropiada des de la partició del proveïdor.

  • Presentar la sortida d’àudio (enfonsament) i l’entrada (font) a Pulseaudio.

  • Configurant correctament el HAL d’àudio per a trucades de veu, encaminant la veu a l’auricular, l’altaveu o el Bluetooth.

Execució de l’Ubuntu Touch

A causa de com els diferents proveïdors de dispositius implementen Android Audio HAL de manera diferent, de vegades haureu de passar arguments a pulseaudio-modules-droid. A l’Ubuntu Touch, això es fa proporcionant una clau Deviceinfo PulseaudioModulesDroid_ExtraCardArgs.

La llista completa d’opcions es pot trobar a la pàgina GitHub de pulseaudio-modules-droid. No obstant això, les següents són algunes de les opcions que podrien haver d’afegir-se:

  • Sembla que el droid de pulseaudio-modules detecta incorrectament la freqüència de mostreig d’àudio en alguns dispositius. Si la sortida d’àudio sona afinada i accelerada amunt/avall, proveu d’afegir rate=48000 o rate=44100.

  • hw_volume=false es pot utilitzar si el canvi de volum sembla no fer res.

  • use_legacy_stream_set_parameters.true es pot provar si PulseAudio falla en iniciar la crida de veu i/o la crida de veu no produeix so.

Configurar pulseaudio-modules-droid per comunicar-se amb HALs basats en Binder

En un petit nombre de dispositius, el droid de polsos d’àudio-mòduls pot no ser capaç de carregar l’àudio HAL directament, però ha de comunicar-se a ell a través de Binder. Com que el droid de polsos d’àudio-mòduls no ha estat dissenyat per comunicar-se amb l’àudio HAL sobre Binder, es necessita una solució.

Per comprovar si el dispositiu necessita aquesta solució de treball o no, executeu:

ls /android/*/lib64/hw/audio.primary.*

Si audio.primary.default.so és l’única sortida, normalment vol dir que es necessita la solució temporal. Seguiu els següents passos per implementar la solució:

  1. «Overlay» audio.primary.default.so amb un mòdul de compatibilitat col·locant l’enllaç simbòlic a la superposició. Des del repositori d’origen del dispositiu, executeu l’ordre:

ln -s \
    /system/lib64/hw/audio.hidl_compat.default.so \
    overlay/vendor/lib64/hw/audio.primary.default.so

audio.hidlcompat.default.so és un mòdul d’ajustament que implementa la interfície HAL d’àudio connectant-se a la HAL d’àudio real sobre Binder, permetent així que pulseaudio-modules-droid es connecti a ella.

  1. Superposa init.disabled.rc de manera que el procés Hall de l’àudio no es desactiva. El procés de HAL d’àudio està desactivat de manera predeterminada, ja que s’espera que pulseaudio-modules-droid sigui capaç d’utilitzar el HAL d’àudio directament. Això es fa amb el següent:
    • Obteniu una còpia de init.disabled.rc des del sistema arrencat. Això es pot fer en el sistema arrencat utilitzant ADB o SSH. Per exemple:

    adb pull /system/etc/init/init.disabled.rc
    
    • Modifiqueu el fitxer comentant les seccions que mencionen audio-hal. Tota la secció es pot comentar col·locant # al davant. Per exemple:

    # service vendor.audio-hal-2-0 android.hardware.audio@2.0-service_HYBRIS_DISABLED
    #     disabled
    #     oneshot
    #     override
    
    • Col·loqueu el fitxer modificat al directori de superposició al repositori d’origen del dispositiu, a overlay/system/etc/init/init.disabled.rc.

Nota

Si el vostre port no ha migrat al mètode de superposició «overlaystore», necessitareu les superposicions en una ubicació diferent. Contacteu amb .UBports porting group <https://t.me/ubportsporting>. per obtenir ajuda.