我有这个 USB 56k 调制解调器我正在用它来编写一些家庭自动化软件,当我的家庭电话响起时,它会让我知道。我的软件可以在我的 Ubuntu 14.04 LTS 笔记本电脑上运行,我的调制解调器可以通过/dev/ttyACM0
(我可以screen
进入它并查看电话何时响起)
然而,在我的家庭自动化系统(Ninja Sphere,它是运行 Ubuntu 14.04.2 LTS (GNU/Linux 3.12.10-ninja-spheramid-dev201412211738 armv7l) 的 ARMv7 系统)上,它没有显示在那里。它在我的 Raspberry Pi 上运行,运行 Debian Wheezy,所以我想功耗/不兼容性不是问题。
我知道Sphere 内核中的热插拔被破坏,但是如果我在已插入调制解调器的情况下重新启动,我可以在 中看到它lsusb
,但无法访问它:
Bus 001 Device 007: ID 0572:1340 Conexant Systems (Rockwell), Inc.
如果我运行udevadm monitor
并拔掉调制解调器(在插入调制解调器后重新启动后),我会收到删除事件:
KERNEL[1465.648648] remove /devices/ocp.2/47400000.usb/47401400.usb/musb-hdrc.0.auto/usb1/1-1/1-1.4/1-1.4:1.0 (usb)
KERNEL[1465.653580] remove /devices/ocp.2/47400000.usb/47401400.usb/musb-hdrc.0.auto/usb1/1-1/1-1.4/1-1.4:1.1 (usb)
KERNEL[1465.661160] remove /devices/ocp.2/47400000.usb/47401400.usb/musb-hdrc.0.auto/usb1/1-1/1-1.4 (usb)
UDEV [1465.667082] remove /devices/ocp.2/47400000.usb/47401400.usb/musb-hdrc.0.auto/usb1/1-1/1-1.4/1-1.4:1.1 (usb)
UDEV [1465.668216] remove /devices/ocp.2/47400000.usb/47401400.usb/musb-hdrc.0.auto/usb1/1-1/1-1.4/1-1.4:1.0 (usb)
UDEV [1465.683048] remove /devices/ocp.2/47400000.usb/47401400.usb/musb-hdrc.0.auto/usb1/1-1/1-1.4 (usb)
如果我插入 4 端口 USB 集线器(从主机获取电源)并重新启动,则集线器上的指示灯会亮起,并在udevadm monitor
每次拔出/插入时显示添加和删除事件:
KERNEL[1534.873966] add /devices/ocp.2/47400000.usb/47401400.usb/musb-hdrc.0.auto/usb1/1-1/1-1.1 (usb)
KERNEL[1534.884224] add /devices/ocp.2/47400000.usb/47401400.usb/musb-hdrc.0.auto/usb1/1-1/1-1.1/1-1.1:1.0 (usb)
KERNEL[1534.898938] add /devices/ocp.2/47400000.usb/47401400.usb/musb-hdrc.0.auto/usb1/1-1/1-1.1/1-1.1:1.1 (usb)
UDEV [1534.915844] add /devices/ocp.2/47400000.usb/47401400.usb/musb-hdrc.0.auto/usb1/1-1/1-1.1 (usb)
UDEV [1534.940319] add /devices/ocp.2/47400000.usb/47401400.usb/musb-hdrc.0.auto/usb1/1-1/1-1.1/1-1.1:1.0 (usb)
UDEV [1534.948969] add /devices/ocp.2/47400000.usb/47401400.usb/musb-hdrc.0.auto/usb1/1-1/1-1.1/1-1.1:1.1 (usb)
拔掉插头后运行dmesg | tail
,然后插入调制解调器显示:
[71710.128027] usb 1-1.1: USB disconnect, device number 3
[71712.667430] usb 1-1.1: new full-speed USB device number 4 using musb-hdrc
[71712.789867] usb 1-1.1: New USB device found, idVendor=0572, idProduct=1340
[71712.789916] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[71712.789945] usb 1-1.1: Product: USB Modem
[71712.789970] usb 1-1.1: Manufacturer: Conexant
[71712.789996] usb 1-1.1: SerialNumber: 12345678
我尝试运行modprobe usbserial
(这给了我一个致命错误,说未找到模块 usbserial),尝试运行其他各种modprobe
命令,但什么也没有发生。
因为这段代码是为了更广泛的发布,我希望非技术人员可以购买任何与 Linux 兼容的 USB 56k 调制解调器并使用它,所以我希望得到一个“通用”答案,但现在我最紧迫的问题是:
- 我如何确定是什么阻止了 Linux 分配条目
/dev
- 如果没有什么(例如过多的功耗)阻止我的调制解调器工作,我需要做什么才能让它运行?
(请注意,虽然 Ninja Blocks 已经破产,但我认为我们仍然可以将软件推送给拥有该设备的人,因此系统更改应该不成问题)