Na minha placa RasPi, Debian Linux, o microfone USB ocasionalmente fica bloqueado de tal forma que nada pode usá-lo. O microfone tem um LED que geralmente está piscando, quando está travado, desliga.
O utilitário arecord
descreve o seguinte:
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 corrige, apenas porque o mergulho atual força o RasPi a reinicializar! Não é uma situação ideal.
Existe uma maneira de corrigir isso a partir da linha de comando ou de um executável C?
Eu também tentei usar ioctl(fd, USBDEVFS_RESET, 0)
usando a saída de lsusb
para fornecer o número do barramento e do dispositivo. Isso liga o LED novamente, mas é um exagero. O dispositivo deve ser reinstalado usando o alsamixer.