El audio USB solo emite ruido blanco

9

Estoy ejecutando OpenBSD / i386 5.1 en una computadora portátil de 5 años. Los altavoces y el puerto de auriculares funcionan, pero el puerto de auriculares está un poco flojo, así que estoy tratando de instalar una tarjeta de sonido USB externa (Fiio E17 USB DAC). No hay problemas para usarlo en Windows.

El dispositivo se detecta y crea un nodo para ello en /devcon sh /dev/MAKEDEV audio1, entonces ligado al resto de los dispositivos de punto de la nueva tarjeta de sonido. Hasta ahora todo bien, soy capaz de correr cat /dev/urandom > /dev/audioy escucho ruido blanco. Sin embargo, no puedo ejecutar ningún otro audio a través de él.

Mi tail /var/log/messagesdespués de enchufar el dispositivo:

Aug 30 10:03:55 s96j /bsd: uhidev0 at uhub1
Aug 30 10:03:55 s96j /bsd:  port 1 configuration 1 interface 0 "FiiO FiiO USB DAC-E17" rev 1.10/0.01 addr 2
Aug 30 10:03:55 s96j /bsd: uhidev0: iclass 3/0
Aug 30 10:03:55 s96j /bsd: uhid0 at uhidev0: input=18, output=27, feature=0
Aug 30 10:03:55 s96j /bsd: uaudio0 at uhub1
Aug 30 10:03:55 s96j /bsd:  port 1 configuration 1 interface 1 "FiiO FiiO USB DAC-E17" rev 1.10/0.01 addr 2
Aug 30 10:03:56 s96j /bsd: uaudio0: ignored setting with type 8193 format
Aug 30 10:03:56 s96j /bsd: uaudio0: audio rev 1.00, 2 mixer controls
Aug 30 10:03:56 s96j /bsd: audio1 at uaudio0

Mi lista de dispositivos relevantes de /dev:

lrwxr-xr-x  1 root  wheel         6 Aug 30 09:44 audio -> audio1
crw-rw-rw-  1 root  wheel   42, 128 Aug 30 10:07 audio0
crw-rw-rw-  1 root  wheel   42, 129 Aug 30 10:15 audio1
crw-rw-rw-  1 root  wheel   42, 130 Aug 30 06:40 audio2
lrwxr-xr-x  1 root  wheel         9 Aug 30 09:44 audioctl -> audioctl1
crw-rw-rw-  1 root  wheel   42, 192 Aug 30 06:40 audioctl0
crw-rw-rw-  1 root  wheel   42, 193 Aug 30 09:44 audioctl1
crw-rw-rw-  1 root  wheel   42, 194 Aug 30 06:40 audioctl2
lrwxr-xr-x  1 root  wheel         6 Aug 30 09:45 mixer -> mixer1
crw-rw-rw-  1 root  wheel   42,  16 Aug 30 06:40 mixer0
crw-rw-rw-  1 root  wheel   42,  17 Aug 30 09:44 mixer1
crw-rw-rw-  1 root  wheel   42,  18 Aug 30 06:40 mixer2
lrwxr-xr-x  1 root  wheel         6 Aug 30 09:45 sound -> sound1
crw-rw-rw-  1 root  wheel   42,   0 Aug 30 06:40 sound0
crw-rw-rw-  1 root  wheel   42,   1 Aug 30 09:44 sound1
crw-rw-rw-  1 root  wheel   42,   2 Aug 30 06:40 sound2

Una prueba simple de las preguntas frecuentes para determinar si los datos pasan por el dispositivo:

# cat > /dev/audio < /dev/zero &
[1] 21098
# audioctl play.{seek,samples,errors}
play.seek=61712
play.samples=1146080
play.errors=0
# audioctl play.{seek,samples,errors}
play.seek=52896
play.samples=1542800
play.errors=0
# audioctl play.{seek,samples,errors}
play.seek=61712
play.samples=1957152
play.errors=0

Mi audioctl -a:

name=USB audio
version=
config=uaudio
encodings=slinear_le:16:2:1,slinear_le:24:3:1
properties=independent
full_duplex=0
fullduplex=0
blocksize=8816
hiwat=7
lowat=1
output_muted=0
monitor_gain=0
mode=
play.rate=44100
play.sample_rate=44100
play.channels=2
play.precision=16
play.bps=2
play.msb=1
play.encoding=slinear_le
play.gain=127
play.balance=32
play.port=0x0
play.avail_ports=0x0
play.seek=8816
play.samples=131988
play.eof=0
play.pause=0
play.error=1
play.waiting=0
play.open=0
play.active=0
play.buffer_size=65536
play.block_size=8816
play.errors=2267
record.rate=44100
record.sample_rate=44100
record.channels=2
record.precision=16
record.bps=2
record.msb=1
record.encoding=slinear_le
record.gain=127
record.balance=32
record.port=0x0
record.avail_ports=0x0
record.seek=0
record.samples=0
record.eof=0
record.pause=0
record.error=0
record.waiting=0
record.open=0
record.active=0
record.buffer_size=65536
record.block_size=8816
record.errors=0

Y por último, mi mixerctl -a:

outputs.aux.mute=off
outputs.aux=255,255

Una vez más, puedo cat /dev/urandom > /dev/audioy obtengo ruido blanco, pero nada más que he probado me permite emitir otros sonidos o música. También lo intenté cat sample.au > /dev/audiopero eso también fue silencioso.

Cualquier sugerencia o ayuda sería muy apreciada! En el peor de los casos, espero que alguien pueda usar los pasos que describí aquí para solucionar sus propios dispositivos de sonido.

ssh2ksh
fuente
¿Cuál es la salida de mixerctl -v |grep output?

Respuestas:

2

En OpenBSD, la reproducción / grabación de audio es manejada por el demonio sndiod (1) por defecto. Los nombres de los dispositivos se documentan en sndio (7) de la siguiente manera:

 type      The type of the audio device or MIDI port.  Possible values
           are:

              rsnd      Raw audio(4) device.
              rmidi     Raw midi(4) port.
              snd       Audio device exposed by sndiod(1).
              midithru  MIDI thru box created with sndiod(1).
              midi      MIDI port exposed by sndiod(1).
              default   Default audio device or MIDI port (see below).

La salida de dmesgindica que su USB está encendido audio1, así que agregue lo siguiente /etc/rc.conf.localpara especificar dos dispositivos de audio sin formato (4) utilizando el segundo como predeterminado:

sndiod_flags="-f rsnd/1 -f rsnd/0"

Entonces corre /etc/rc.d/sndiod restart. La -fbandera también funciona con la aucatreproducción o grabación de audio:

aucat -f rsnd/1 -i my.wav # second "raw" audio device 
aucat -f snd/1 -i my.wav  # second sndiod device
eradman
fuente
¡Gracias! Su respuesta y la sndiod(1)página de manual me pusieron en el camino correcto y el dispositivo está funcionando muy bien. Aprecio tu ayuda.
ssh2ksh