En mi placa RasPi, Debian Linux, el micrófono USB ocasionalmente se bloquea de modo que nada pueda usarlo. El micrófono tiene un LED que generalmente parpadea, cuando está bloqueado, se apaga.
La utilidad lo arecord
describe de la siguiente manera:
card 1: Device [DYNEX USB MIC Device], device 0:USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
Cuando el micrófono deja de funcionar, arecord
ofrece diagnósticos como este:
> arecord -D plughw:1,0 > recording.wav
Recording WAVE 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono
arecord: set_params:1145: Unable to install hw_params:
ACCESS: RW_INTERLEAVED
FORMAT: U8
etc...
¡Desconectar y enchufar el micrófono lo arregla, solo porque la caída actual obliga al RasPi a reiniciarse! No es una situación ideal.
¿Hay alguna manera de arreglar esto desde la línea de comandos o un ejecutable en C?
También intenté usar ioctl(fd, USBDEVFS_RESET, 0)
la salida de lsusb
para proporcionar el bus y el número de dispositivo. Eso vuelve a encender el LED, pero es excesivo. El dispositivo debe volver a configurarse con alsamixer.