Na minha placa RasPi, Debian Linux, o microfone USB ocasionalmente fica travado, de forma que nada possa usá-lo. O microfone possui um LED que normalmente pisca. Quando está bloqueado, ele apaga.
O utilitário arecord
descreve da seguinte maneira:
card 1: Device [DYNEX USB MIC Device], device 0:USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
Quando o microfone para de funcionar, arecord
fornece 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 e conectar o microfone o corrige, apenas porque a queda atual força o RasPi a reiniciar! Não é uma situação ideal.
Existe uma maneira de corrigir isso na linha de comando ou em um executável C?
Também tentei usar ioctl(fd, USBDEVFS_RESET, 0)
a saída de lsusb
para fornecer o número do barramento e do dispositivo. Isso acende o LED novamente, mas é um exagero. O dispositivo deve ser re-configurado usando o alsamixer.