Mumble + Jackd en FreeBSD


Mumble es un sistema de mensajería y VoIP multiplataforma, funciona bien en la mayoría de sistemas pero bajo FreeBSD da algunos problemas. Utilizando OSS directamente es un desastre, hay que reiniciar en cada cambio de configuración y en cuanto se aplica la configuración y se vuelve a la ventana principal deja de capturar el audio del micrófono, pero estos problemas se solventan al utilizar Jackd(servidor de audio), el único inconveniente es que tendremos que compilar Mumble desde los ports.

 

Primero debemos saber de que tarjetas de audio disponemos en el sistema:

pciconf -lv
hdac1@pci0:0:31:3:    class=0x040300 card=0x86911043 chip=0xa1708086 rev=0x31 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '100 Series/C230 Series Chipset Family HD Audio Controller'
    class      = multimedia
    subclass   = HDA
hdac0@pci0:1:0:1:    class=0x040300 card=0x61633842 chip=0x10f110de rev=0xa1 hdr=0x00
    vendor     = 'NVIDIA Corporation'
    device     = 'GP106 High Definition Audio Controller'
    class      = multimedia
    subclass   = HDA

La primera es la tarjeta de audio de la placa y la segunda es la de la tarjeta gráfica para poder sacar audio por HDMI.

Ahora listamos los dispositivos de audio creados por el sistema operativo:

cat /dev/sndstat
Installed devices:
pcm0: <NVIDIA (0x0084) (HDMI/DP 8ch)> (play)
pcm1: <NVIDIA (0x0084) (HDMI/DP 8ch)> (play)
pcm2: <NVIDIA (0x0084) (HDMI/DP 8ch)> (play)
pcm3: <NVIDIA (0x0084) (HDMI/DP 8ch)> (play)
pcm4: <Realtek ALC1150 (Analog 5.1+HP/2.0)> (play/rec) default
pcm5: <Realtek ALC1150 (Rear Digital)> (play)
pcm6: <Realtek ALC1150 (Front Analog Mic)> (rec)
pcm7: <USB audio> (rec)
No devices installed from userspace.

Para identificar los dispositivos de salida iremos cambiando la tarjeta por defecto y reproduciremos un fichero de audio.

En este caso cambiamos la salida por defecto al dispositivo pcm3:

sysctl hw.snd.default_unit=3

Reproducimos el fichero de audio con mpv por ejemplo:

mpv FILE

Para la grabación utilizaremos sox e iremos probando los distintos AUDIODEV hasta que logremos grabar del micro:

AUDIODRIVER=oss AUDIODEV=/dev/dsp6 sox -d test.wav trim 0 10

Reproducimos el fichero grabado con mpv:

mpv test.wav

Probando la reproducción de audio y la grabación he llegado a la siguiente conclusión:

  • pcm4: <Realtek ALC1150 (Analog 5.1+HP/2.0)> (play/rec) default -> Salida jack
  • pcm6: <Realtek ALC1150 (Front Analog Mic)> (rec) -> Entrada micrófono

Ahora que ya tenemos claro que dispositivo es el de entrada y cual el de salida nos disponemos a instalar Jackd:

pkg install qjackctl

Configuramos Jackd, indicando el usuario que lo utilizará y los dispositivos de entrada/salida:

vi /etc/rc.conf
jackd_enable="YES"
jackd_user="kr0m"
jackd_rtprio="YES"
jackd_args="-R -doss -r48000 -p1024 -n3 -w16 --capture /dev/dsp6 --playback /dev/dsp4"

NOTA: Esta configuración impone la limitación de que solo el usuario kr0m podrá utilizar el servidor de sonido, un posible workaround sería reconfigurarlo mediante un script que utilizase sudo y sysrc en el arranque de las X de cada usuario.

Arrancamos el servicio:

service jackd start

Ahora ya podemos compilar Mumble con la opción de Jackd:

cd /usr/ports/audio/mumble
make config

Compilamos e instalamos:

make install clean

Bloqueamos el paquete para que pkg lo ignore ya que lo vamos a gestionar desde los ports:

pkg lock mumble

Arrancamos mumble y nos dirigimos a las opciones de entrada de audio donde indicaremos:

System: JACK
Transit: Signal to Noise

En el apartado de salida de audio:

System: JACK
Device: Stereo

Con esta configuración ya podremos disfrutar de Mumble sin ningún tipo de problema.

Si te ha gustado el artículo puedes invitarme a un redbull aquí.
Autor: kr0m -- 12/04/2020 02:16:31