2015-04-23 25 views
0

我有一個USB設備,它正確枚舉爲CDC接口。/dev/ttyACM1被創建,我最終可以通過端點進行通信。Linux USB CDC發送意外字符

但很可惜,在查點後的最初幾秒鐘,在Linux主機端有些神祕的東西發送AT <CR> AT <CR> AT <CR>到該設備,然後在幾秒鐘後說,奇怪的序列0x7E 0x00 0x78 0xF0 0x7E。第一個顯然是一些神祕的事情試圖喚醒調制解調器。第二種可能與意圖類似。

有誰知道這些不請自來的字節從哪裏來?

我試過兩種不同的VID --- 0x1CBE,因爲該設備是TI芯片,這是它們的默認設置,而0xF055是TI的VID觸發了一些備用驅動程序的情況。同樣的行爲。設備描述符看起來非常完全:vanilla: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

那些AT命令是由ModemManager發送的。

如果出現問題,可以添加udev規則以告訴ModemManager將您的設備保留在單獨的位置。只需在/etc/udev/rules.d中添加一個像foo.rules這樣的內容的文件,內容如下:

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

太棒了!你搖滾,謝謝。 –