我正在通过USB将一个Gemalto (Cinterion)调制解调器连接到我的嵌入式Linux (2.6.31),运行BusyBox和mdev。
调制解调器创建ttyACM 0-6,其中“0”用于pppd。我不时地得到dis和重新连接(1小时,1天.)整个系统更加复杂--另一个嵌入式设备通过RS232接口bla连接到调制解调器。
我的问题:
当发生断开和重新连接时,pppd不够快,无法释放ttyACM0,因此创建了ttyACM 1-7。下一次可能是0,2-7或3-8,没有具体的算法。
我尝试过更新一个simlink (到/dev/ttyMyModem),但同样的“没有具体算法”的问题.所有的接口都是相同的- CDC-ACM (不是吗??)
当前的方法:
一个bash脚本,包装pppd,有一个没完没了的循环,等待pppd的出口(它停留在前台,"nodetach“在我的选项文件中)。当pppd死掉时,我会删除驱动程序(mod探针-r cdc_acm),删除所有节点(rm /dev/ttyACM*),重新安装驱动程序(mod探针cdc_acm)并运行pppd。我在需要的东西之间加了1-2秒钟的延迟。
这个解决方案需要2-4次迭代才能重新连接(不知道为什么第一次不工作),但是看起来很稳定。
我的问题:
请不要对我太苛刻..。
发布于 2015-07-13 13:07:28
我没有足够的代表在评论部分问,所以我必须在这里问这个。当你说你更新了符号链接时,你说的是udev规则吗?我在打印机,扫描仪等方面也有同样的问题。在我的程序中,一旦我得到一个写/读错误,我就使用"udevadm export“为我的设备读取正确的devpath。我关闭文件描述符并在新设备上重新打开它。你试过阻止断线吗?我自己做不到,但你可以尝试禁用自动挂起。使用usbcore.auto悬架=-1内核选项,并:
for i in /sys/bus/usb/devices/usb*/power/control; do echo "on" > $i; done希望这能有所帮助。你的解决方案很稳定。我习惯于在自动化系统中使用这种奇怪的“解决方案”。
https://stackoverflow.com/questions/31381785
复制相似问题