RS-232 para USB CDC_ACM no Debian/BeagleBone Black não funciona

RS-232 para USB CDC_ACM no Debian/BeagleBone Black não funciona

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 lsusbe 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_acmparece 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).

informação relacionada