linux下3G模块异常 原来生成的ttyUSB0和ttyUSB1变成了2和3
linux下3G模块出现Modem hangup
Connect time 1.0 minutes.
Sent 1507 bytes, received 1021 bytes.
出现上面的信息后就是原来的tyyUSB0和ttyUSB1 变成了tyyUSB2和ttyUSB3,,本来开始打开了/dev/ttyUSB0的,变成这样了 程序就出错了{:cry:} 。找了几天的原因了,,,,,哎,,无赖只有请坛友帮忙看看。 USB 复位相当于重新插拔,而 udev 会认为新插入的设备,所以编号也会自动增加。 楼主是什么情况下出现的,是每次挂断之后就出现还是偶尔出现的? 楼主的问题应该不是每次都会出现的,pppd拨号后会锁住该串口,pppd未退出的情况下关闭模块可能会导致USB串口设备无法释放。
以上分析不一定对啊,只是凭感觉和以前的经验 dadongleilei 发表于 2013-11-13 16:54 static/image/common/back.gif
楼主是什么情况下出现的,是每次挂断之后就出现还是偶尔出现的?
基本上是每次出现吧,,,而且测试得到出现hangup,后,ttyUSB0和ttyUSB2还在,但是之前int fd = open("/dev/ttyUSB0",O_RDWR|O_NOCTTY|O_NDELAY);的fd号,用wirte(fd,"at",2)写不会成功。。。但用microcom 打开/dev/ttyUSB0 输入at命令都有回复的。 jujiaqi 发表于 2013-11-13 17:15 static/image/common/back.gif
楼主的问题应该不是每次都会出现的,pppd拨号后会锁住该串口,pppd未退出的情况下关闭模块可能会导致USB串 ...
那要怎么释放这个口呢? 我同事也在调这个,难道,你==他? 一般 pppd拨号 然后挂断,再次拨号,中间最好有个延时间隔,比如30秒以上;再就是挂断的时候 要执行PPP off脚本,让他完全挂断 winterw 发表于 2013-11-14 09:42 static/image/common/back.gif
我同事也在调这个,难道,你==他?
{:funk:} {:funk:} {:funk:} 有可能哈哈 dadongleilei 发表于 2013-11-14 09:42 static/image/common/back.gif
一般 pppd拨号 然后挂断,再次拨号,中间最好有个延时间隔,比如30秒以上;再就是挂断的时候 要执行PPP off ...
关键现在想不通的是,挂掉了,,,我关闭之前打开的文件,close(fd); 线程居然也挂了 dadongleilei 发表于 2013-11-13 16:54 static/image/common/back.gif
楼主是什么情况下出现的,是每次挂断之后就出现还是偶尔出现的?
如果是偶尔出现这种情况,一般是什么原因造成的呢? 如果PPPD进程或者RIL进程正在打开ttyUSB0/ttyUSB1,但是由于某些原因导致3G module被复位了重新enumeration,这个时候因为ttyUSB0/ttyUSB1正被占用udev会自动给它分配其它的设备名。 偶尔出现的话,一般是由于ppp拨号 通讯 后面出现错误后,未能完全 挂断,而又重新拨号,一般保证完全挂断,并且ppp拨号之间留上足够的延时就可以解决 mangocity 发表于 2013-11-15 11:03 static/image/common/back.gif
如果PPPD进程或者RIL进程正在打开ttyUSB0/ttyUSB1,但是由于某些原因导致3G module被复位了重新enumeration ...
有道理,但是情况是这样的,随着重启的此次增加,ttyUSB*号也在增加,都增加到8和9了。显示/dev/下面的设备也只有ttyUSB8和ttyUSB9,,
没有ttyUSB0-----ttyUSB7。那么下次重启后为什么不映射到ttyUSB0和ttyUSB1上呢? dadongleilei 发表于 2013-11-15 12:09 static/image/common/back.gif
偶尔出现的话,一般是由于ppp拨号 通讯 后面出现错误后,未能完全 挂断,而又重新拨号,一般保证完全挂断, ...
有点怪,,测试发现刚开始是ttyUSB0和ttyUSB1,,,有时重连出现ttyUSB0和ttyUSB2 dadongleilei 发表于 2013-11-15 12:09 static/image/common/back.gif
偶尔出现的话,一般是由于ppp拨号 通讯 后面出现错误后,未能完全 挂断,而又重新拨号,一般保证完全挂断, ...
ttyUSB0是发AT命令的,,ttyUSB1是用来拨号的 zhangpisces 发表于 2013-11-15 14:17 static/image/common/back.gif
有道理,但是情况是这样的,随着重启的此次增加,ttyUSB*号也在增加,都增加到8和9了。显示/dev/下面的设 ...
不知道你操作 ttyUSBx 的时候的读写函数有没有判断 err,或者有没有用 select 来判断是否为 exception file descriptor?
遇到这种情况,第一时间就需要关闭 file descriptor 了。 3G模块使用时RESET后USB串口号变化正常,首先不能直接使用这个USB串口设备,需要用udev或mdev映射一个设备名。这样即使USB串口变了,设备名也不会变 fchen2 发表于 2014-12-19 10:55
3G模块使用时RESET后USB串口号变化正常,首先不能直接使用这个USB串口设备,需要用udev或mdev映射一个设 ...
请指教,怎么映射的呢{:handshake:} 硬件是Smart210. 我用的是mdev, 原理大致是这样, USB 设备插入后,内核会在 /sys/devices/platform/s5p-ehci/目录下生成几个节点。同时调用/etc/mdev.conf。 如果在mdev.conf中有类似
ttyUSB* 0:0 0660*/home/modem_hotplug 内容,就会执行/home/modem_hotplug. 你可以在modem_hotplug可执行文件中利用一定规则,不是用ttyUSB*,而是用/sys/devices/platform/s5p-ehci/下节点信息生成设备名。现在我手头没有3G Dongle, 没法给出确切节点信息。
如果还不清楚,可以搜索mdev用法。
页:
[1]