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

0

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?

    
por LShaver 13.04.2017 / 11:15

1 resposta

1

Como as mensagens de erro mostram, o hub raiz USB não pode enumerar o dispositivo que você conectou. Uma possível razão para tais erros é que o Beaglebone não pode fornecer energia suficiente para esse dispositivo.

Tente conectar um hub ativado ao Beaglebone e conecte o dispositivo ao hub.

(Segundo comentários, isso resolveu o problema).

    
por 15.04.2017 / 09:00