2015-04-23 2 views
0

У меня есть USB-устройство, которое правильно перечисляется в качестве интерфейса CDC./dev/ttyACM1, и я могу в конечном итоге обмениваться данными с конечными точками.Linux USB CDC отправка неожиданных символов

Но увы, в первые несколько секунд после перечисления некоторых таинственная вещь на стороне хоста Linux посылает AT <CR> AT <CR> AT <CR> к устройству, а затем через несколько секунд после того, странная последовательность 0x7E 0x00 0x78 0xF0 0x7E. Первым, очевидно, является Some Mysterious Thing, пытающаяся разбудить модем. Второе, по-видимому, похоже на намерение.

Кто-нибудь знает, откуда взялись эти незапрашиваемые байты?

Я пробовал два разных VID --- 0x1CBE, поскольку устройство является чипом TI, и это их значение по умолчанию и 0xF055, если TI VID запускает несколько альтернативных драйверов. Такое же поведение. Дескриптор устройства выглядит довольно ванильно: класс CDC, подкласс 0, протокол 0, одна конфигурация.

Хост Ubuntu 14.04.1 LTS, 64-бит./sys/bus/usb/drivers/говорит, что он использует драйвер cdc_acm. Ниже приведен вывод из usbmon; таинственные дополнительные байты в конце.

Обратите внимание, что в этом запуске он перечислялся с помощью USB_CDC_ACM_PROTO_AT_V25TER; Я также попробовал USB_CDC_PROTO_NONE, но результат был тот же.

ffff8801466ff180 3244792454 S Ci:2:029:0 s 80 06 0100 0000 0012 18 < 
ffff8801466ff180 3244792654 C Ci:2:029:0 0 18 = 12011001 02000040 55f00200 00010102 0301 
ffff8801466ff180 3244792709 S Ci:2:029:0 s 80 06 0200 0000 0009 9 < 
ffff8801466ff180 3244792934 C Ci:2:029:0 0 9 = 09024300 020105c0 00 
ffff8801466ff180 3244792997 S Ci:2:029:0 s 80 06 0200 0000 0043 67 < 
ffff8801466ff180 3244793306 C Ci:2:029:0 0 67 = 09024300 020105c0 00090400 00010202 01040524 00100104 24020605 24060001 
ffff8801466ff180 3244793377 S Ci:2:029:0 s 80 06 0300 0000 00ff 255 < 
ffff8801466ff180 3244793570 C Ci:2:029:0 0 4 = 04030904 
ffff8801466ff180 3244793632 S Ci:2:029:0 s 80 06 0302 0409 00ff 255 < 
ffff8801466ff180 3244793802 C Ci:2:029:0 0 30 = 1e035300 61007400 50006100 71003a00 20007300 65007200 69006100 6c00 
ffff8801466ff180 3244793861 S Ci:2:029:0 s 80 06 0301 0409 00ff 255 < 
ffff8801466ff180 3244794065 C Ci:2:029:0 0 28 = 1c034800 69006700 68006500 72002000 47007200 6f007500 6e006400 
ffff8801466ff180 3244794131 S Ci:2:029:0 s 80 06 0303 0409 00ff 255 < 
ffff8801466ff180 3244794309 C Ci:2:029:0 0 18 = 12033100 32003300 34003500 36003700 3800 
ffff8801466ff000 3244794739 S Co:2:029:0 s 00 09 0001 0000 0000 0 
ffff8801466ff000 3244794897 C Co:2:029:0 0 0 
ffff8801466ff000 3244794959 S Ci:2:029:0 s 80 06 0305 0409 00ff 255 < 
ffff8801466ff000 3244795140 C Ci:2:029:0 0 54 = 36035300 65006c00 66002000 50006f00 77006500 72006500 64002000 43006f00 
ffff8801466ffe40 3244795245 S Ci:2:029:0 s 80 06 0304 0409 00ff 255 < 
ffff8801466ffe40 3244795390 C Ci:2:029:0 0 44 = 2c034100 43004d00 20004300 6f006e00 74007200 6f006c00 20004900 6e007400 
ffff8801466d1f00 3244796605 S Co:2:029:0 s 21 22 0000 0000 0000 0 
ffff8801466d1f00 3244796764 C Co:2:029:0 0 0 
ffff8801466d1f00 3244796791 S Co:2:029:0 s 21 20 0000 0000 0007 7 = 80250000 000008 
ffff8801466d1f00 3244796931 C Co:2:029:0 0 7 > 
ffff8801466ffe40 3244812303 S Ii:2:029:1 -115:1 16 < 
ffff8801477a69c0 3244812323 S Co:2:029:0 s 21 22 0003 0000 0000 0 
ffff8801477a69c0 3244812387 C Co:2:029:0 0 0 
ffff8801466ff480 3244812454 S Bi:2:029:2 -115 128 < 
ffff8801466ff600 3244812457 S Bi:2:029:2 -115 128 < 
ffff8801466ff6c0 3244812458 S Bi:2:029:2 -115 128 < 
ffff8801466ff780 3244812459 S Bi:2:029:2 -115 128 < 
ffff8801466ff840 3244812460 S Bi:2:029:2 -115 128 < 
ffff8801466ff900 3244812460 S Bi:2:029:2 -115 128 < 
ffff8801466fff00 3244812461 S Bi:2:029:2 -115 128 < 
ffff8801466ff9c0 3244812462 S Bi:2:029:2 -115 128 < 
ffff8801466ffa80 3244812463 S Bi:2:029:2 -115 128 < 
ffff8801466ffd80 3244812463 S Bi:2:029:2 -115 128 < 
ffff8800971e8240 3244812464 S Bi:2:029:2 -115 128 < 
ffff8801473c2f00 3244812465 S Bi:2:029:2 -115 128 < 
ffff8801473c2e40 3244812465 S Bi:2:029:2 -115 128 < 
ffff8801473c2d80 3244812466 S Bi:2:029:2 -115 128 < 
ffff8801473c2cc0 3244812467 S Bi:2:029:2 -115 128 < 
ffff8801473c2c00 3244812468 S Bi:2:029:2 -115 128 < 
ffff8801477a6300 3244812483 S Co:2:029:0 s 21 20 0000 0000 0007 7 = 00e10000 000008 
ffff8801477a6300 3244812634 C Co:2:029:0 0 7 > 
ffff8801477a6300 3244813414 S Co:2:029:0 s 21 22 0002 0000 0000 0 
ffff8801477a6300 3244813510 C Co:2:029:0 0 0 
ffff8801473b96c0 3244913682 S Co:2:029:0 s 21 22 0003 0000 0000 0 
ffff8801473b96c0 3244913763 C Co:2:029:0 0 0 
ffff8801473c2b40 3244913835 S Bo:2:029:1 -115 1 = 41 
ffff8801473c2b40 3244913882 C Bo:2:029:1 0 1 > 
ffff8801473c2b40 3245014062 S Bo:2:029:1 -115 1 = 54 
ffff8801473c2b40 3245014160 C Bo:2:029:1 0 1 > 
ffff8801473c2b40 3245114308 S Bo:2:029:1 -115 1 = 0d 
ffff8801473c2b40 3245114394 C Bo:2:029:1 0 1 > 
ffff8801473b9480 3245302014 S Co:2:029:0 s 21 20 0000 0000 0007 7 = 00c20100 000008 
ffff8801473b9480 3245302184 C Co:2:029:0 0 7 > 
ffff8801473c2b40 3248486129 S Bo:2:029:1 -115 1 = 41 
ffff8801473c2b40 3248486239 C Bo:2:029:1 0 1 > 
ffff8801473c2b40 3248586369 S Bo:2:029:1 -115 1 = 54 
ffff8801473c2b40 3248586488 C Bo:2:029:1 0 1 > 
ffff8801473c2b40 3248686655 S Bo:2:029:1 -115 1 = 0d 
ffff8801473c2b40 3248686737 C Bo:2:029:1 0 1 > 
ffff8801473c2b40 3251487738 S Bo:2:029:1 -115 1 = 41 
ffff8801473c2b40 3251487836 C Bo:2:029:1 0 1 > 
ffff8801473c2b40 3251587976 S Bo:2:029:1 -115 1 = 54 
ffff8801473c2b40 3251588088 C Bo:2:029:1 0 1 > 
ffff8801473c2b40 3251688249 S Bo:2:029:1 -115 1 = 0d 
ffff8801473c2b40 3251688357 C Bo:2:029:1 0 1 > 
ffff8801473c2b40 3254489075 S Bo:2:029:1 -115 5 = 7e0078f0 7e 
ffff8801473c2b40 3254489188 C Bo:2:029:1 0 5 > 
ffff8801473c2b40 3257488394 S Bo:2:029:1 -115 5 = 7e0078f0 7e 
ffff8801473c2b40 3257488549 C Bo:2:029:1 0 5 > 

ответ

0

Те команды АТ направляются по ModemManager.

Можно добавить правило udev, чтобы сообщить ModemManager о том, чтобы оставить ваше устройство в покое, если это проблема. Просто добавьте файл в /etc/udev/rules.d с именем, как foo.rules с содержанием, как это:

ATTRS{idVendor}=="12ba", ATTRS{idProduct}=="23ef", ENV{ID_MM_DEVICE_IGNORE}="1" 
+0

Awesome! Вы кажетесь, спасибо. –