Estou trabalhando em um sistema de energia solar que fornece saída de dados por meio de fluxo constante de dados seriais por meio de um cabo USB. O sistema funcionou em um PC com Windows 7 (usando um driver encontrado em um CD-ROM em uma caixa empoeirada do sistema solar) e em um PC com Windows 10 sem necessidade de instalação de driver (embora seja possível que o driver tenha sido instalado anteriormente quando trabalhando com algum outro dispositivo).
No gerenciador de dispositivos do Windows aprendi que o cabo é do tipo CDC_ACM
.
Agora estou tentando usá-lo com o BeagleBone Black para poder automatizar a coleta de dados. Não há nenhum ponto de conexão próximo ao sistema solar (irônico?), Então estou apenas alimentando o BeagleBone no meu PC. Ao conectar o cabo digito lsusb
e vejo que o dispositivo não está conectado:
debian@beaglebone:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Olhando para o log de mensagens, eis o que estou recebendo:
debian@beaglebone:~$ dmesg | tail -n 20
[ 442.566683] hub 1-0:1.0: hub_resume
[ 442.566753] hub 1-0:1.0: port 1: status 0101 change 0001
[ 442.668291] hub 1-0:1.0: state 7 ports 1 chg 0002 evt 0000
[ 442.668381] hub 1-0:1.0: port 1, status 0101, change 0000, 12 Mb/s
[ 442.721964] CAUTION: musb: Babble Interrupt Occurred
[ 442.773713] usb 1-1: new full-speed USB device number 44 using musb-hdrc
[ 442.823536] musb-hdrc: setup fifo_mode 4
[ 442.823583] musb-hdrc: 28/31 max ep, 16384/16384 memory
[ 442.826509] hub 1-0:1.0: unable to enumerate USB device on port 1
[ 442.833788] hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0002
[ 442.833924] hub 1-0:1.0: port 1, status 0500, change 0003, 480 Mb/s
[ 442.941687] hub 1-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x500
[ 442.941807] hub 1-0:1.0: hub_suspend
[ 442.941867] usb usb1: bus auto-suspend, wakeup 1
[ 443.006061] usb usb1: usb wakeup-resume
[ 443.006138] usb usb1: usb auto-resume
[ 443.006178] hub 1-0:1.0: hub_resume
[ 443.006253] hub 1-0:1.0: port 1: status 0101 change 0001
[ 443.107772] hub 1-0:1.0: state 7 ports 1 chg 0002 evt 0000
[ 443.107860] hub 1-0:1.0: port 1, status 0101, change 0000, 12 Mb/s
Se eu enviar primeiro, sudo modprobe cdc_acm
parece que obtenho o mesmo resultado ao conectar o cabo. (Em um BeagleBone Black diferente, recebi uma mensagem de "cabo ruim" uma vez, mas confirmei que o cabo ainda funcionava em um PC com Windows).
Parece que os drivers existem no kernel:
debian@beaglebone:/sys/bus/usb/drivers$ ls
cdc_acm cdc_ncm rndis_host usb usbhid
cdc_ether hub rt2870 usbfs usb-storage
debian@beaglebone:/sys/bus/usb/drivers$ cd cdc_acm
debian@beaglebone:/sys/bus/usb/drivers/cdc_acm$ ls
bind new_id remove_id uevent unbind
Estou faltando uma etapa para fazer este dispositivo funcionar?
Responder1
Como mostram as mensagens de erro, o hub raiz USB não consegue enumerar o dispositivo que você conectou. Uma possível razão para tais erros é que o Beaglebone não consegue fornecer energia suficiente para esse dispositivo.
Tente conectar um hub alimentado ao Beaglebone e conecte o dispositivo ao hub.
(De acordo com os comentários, isso resolveu o problema).