我有一个 cubieboard2,运行带有自定义 Linux 内核的 arch linux。在我插入 USB 串行设备(如 arduino)的 cubieboard2 中,该设备被识别为 CDC ACM。我的 Linux 内核在配置中启用了 CDC 选项,正如我在此看到的页,但是,我无法使用/dev/ttyACM0
应用程序minicom
或来使用串行端口pyserial
。
Minicom只是说无法打开串口。 Pyserial 能够打开端口,但是当我尝试读取它时,结果是:
SerialException:设备报告已准备好读取,但未返回任何数据(设备已断开连接或端口上有多个访问?)
然而,pyserial
如果我尝试写入一个字节,结果是其他的:
SerialException:写入失败:[Errno 5] 输入/输出错误。
当我关闭串口时,会发生其他奇怪的事情,它会更改名称,换句话说,当我关闭它时,/dev/ttyACM0
它会更改为/dev/ttyACM1
.
我已经在笔记本电脑上尝试了我的设备,它与pyserial
和都可以正常工作minicom
。
cubieboard2信息:
$ uname -a
Linux alarm 3.4.61-rt77-ARCH+ #10 SMP PREEMPT RT Thu Apr 17 13:58:20 BRT 2014 armv7l GNU/Linux
我的内核配置文件:http://pastebin.com/raw.php?i=6LfsRyek
我的猜测是它缺少启用某些内核选项,但我不知道是哪个。
任何想法?
答案1
在我看来,问题出在你的设备上。它可能会枚举 OK,但在执行进一步通信时会出现意外行为。尝试将 Wireshark 与 usbmon 结合使用(如果没有 X 会话,则最终使用 tshark)。 ttyACM1 名称通常是由于通信错误后重新枚举造成的。