Parece que o problema residia nas configurações do terminal.
Ao definir manualmente a taxa de transmissão e o modo raw corretos, comecei a receber dados significativos do dispositivo:
stty -F /dev/ttyACM0 57600
stty -F /dev/ttyACM0 raw
Estou tentando conectar um dispositivo GPS u-Blox USB a um sistema Linux 2.6.32 embutido (armel) baseado no BusyBox. O dispositivo tem uma interface USB CDC ACM nativa. O sistema não veio com cdc_acm, então eu fiz a compilação cruzada, transferi & insmodded, e carregado com sucesso (confirmado por dmesg
).
Eu pluguei o dispositivo e ele foi corretamente enumerado pelo driver USB com o endereço 001:003
e atribuído ao driver cdc_acm
que criou o arquivo /dev/ttyACM0
. No entanto, a abertura do dispositivo com um terminal serial ou mesmo com o comando cat
resulta na impressão de lixo, enquanto os comandos ASCII NMEA devem ser impressos (isso é confirmado para funcionar em outros dois sistemas).
stty
é executado no arquivo sem erros (no entanto, os dados relatados são obviamente inválidos / arbitrários, devido ao dispositivo ser um dispositivo USB e não um dispositivo serial). lsusb -v -s 1:3
também informa as informações corretas para o dispositivo.
Eu não sei como depurar ainda mais o problema. Que passos posso dar para descobrir o problema e resolvê-lo?
Parece que o problema residia nas configurações do terminal.
Ao definir manualmente a taxa de transmissão e o modo raw corretos, comecei a receber dados significativos do dispositivo:
stty -F /dev/ttyACM0 57600
stty -F /dev/ttyACM0 raw