Eu estou trabalhando em um sistema de energia solar que dá saída de dados via fluxo de dados serial constante através de um cabo USB. O sistema funcionava em um PC Windows 7 (usando um driver encontrado em um CD-ROM em uma caixa empoeirada pelo sistema solar) e em um PC Windows 10 sem necessidade de instalar o driver (embora seja possível que o driver tenha sido instalado anteriormente 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á ponto de conexão perto do sistema solar (irônico?), Então eu estou apenas alimentando o BeagleBone do meu PC. Ao conectar o cabo, eu 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, aqui está 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 "bad cable" 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 um passo para fazer este dispositivo funcionar?