zhangpisces 发表于 2013-11-12 11:04:19

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:} 。找了几天的原因了,,,,,哎,,无赖只有请坛友帮忙看看。

abutter 发表于 2013-11-12 20:08:17

USB 复位相当于重新插拔,而 udev 会认为新插入的设备,所以编号也会自动增加。

dadongleilei 发表于 2013-11-13 16:54:25

楼主是什么情况下出现的,是每次挂断之后就出现还是偶尔出现的?

jujiaqi 发表于 2013-11-13 17:15:00

楼主的问题应该不是每次都会出现的,pppd拨号后会锁住该串口,pppd未退出的情况下关闭模块可能会导致USB串口设备无法释放。
以上分析不一定对啊,只是凭感觉和以前的经验

zhangpisces 发表于 2013-11-14 09:19:52

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命令都有回复的。

zhangpisces 发表于 2013-11-14 09:20:35

jujiaqi 发表于 2013-11-13 17:15 static/image/common/back.gif
楼主的问题应该不是每次都会出现的,pppd拨号后会锁住该串口,pppd未退出的情况下关闭模块可能会导致USB串 ...

那要怎么释放这个口呢?

winterw 发表于 2013-11-14 09:42:08

我同事也在调这个,难道,你==他?

dadongleilei 发表于 2013-11-14 09:42:24

一般 pppd拨号 然后挂断,再次拨号,中间最好有个延时间隔,比如30秒以上;再就是挂断的时候 要执行PPP off脚本,让他完全挂断

zhangpisces 发表于 2013-11-14 09:47:51

winterw 发表于 2013-11-14 09:42 static/image/common/back.gif
我同事也在调这个,难道,你==他?

{:funk:} {:funk:} {:funk:} 有可能哈哈

zhangpisces 发表于 2013-11-14 10:01:18

dadongleilei 发表于 2013-11-14 09:42 static/image/common/back.gif
一般 pppd拨号 然后挂断,再次拨号,中间最好有个延时间隔,比如30秒以上;再就是挂断的时候 要执行PPP off ...

关键现在想不通的是,挂掉了,,,我关闭之前打开的文件,close(fd);   线程居然也挂了

chiooo1 发表于 2013-11-14 11:39:26

zhangpisces 发表于 2013-11-15 09:40:12

dadongleilei 发表于 2013-11-13 16:54 static/image/common/back.gif
楼主是什么情况下出现的,是每次挂断之后就出现还是偶尔出现的?

如果是偶尔出现这种情况,一般是什么原因造成的呢?

mangocity 发表于 2013-11-15 11:03:50

如果PPPD进程或者RIL进程正在打开ttyUSB0/ttyUSB1,但是由于某些原因导致3G module被复位了重新enumeration,这个时候因为ttyUSB0/ttyUSB1正被占用udev会自动给它分配其它的设备名。

dadongleilei 发表于 2013-11-15 12:09:15

偶尔出现的话,一般是由于ppp拨号 通讯 后面出现错误后,未能完全 挂断,而又重新拨号,一般保证完全挂断,并且ppp拨号之间留上足够的延时就可以解决

zhangpisces 发表于 2013-11-15 14:17:05

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上呢?

zhangpisces 发表于 2013-11-15 14:44:00

dadongleilei 发表于 2013-11-15 12:09 static/image/common/back.gif
偶尔出现的话,一般是由于ppp拨号 通讯 后面出现错误后,未能完全 挂断,而又重新拨号,一般保证完全挂断, ...

有点怪,,测试发现刚开始是ttyUSB0和ttyUSB1,,,有时重连出现ttyUSB0和ttyUSB2

zhangpisces 发表于 2013-11-15 14:46:51

dadongleilei 发表于 2013-11-15 12:09 static/image/common/back.gif
偶尔出现的话,一般是由于ppp拨号 通讯 后面出现错误后,未能完全 挂断,而又重新拨号,一般保证完全挂断, ...

ttyUSB0是发AT命令的,,ttyUSB1是用来拨号的

mangocity 发表于 2013-11-15 17:27:43

zhangpisces 发表于 2013-11-15 14:17 static/image/common/back.gif
有道理,但是情况是这样的,随着重启的此次增加,ttyUSB*号也在增加,都增加到8和9了。显示/dev/下面的设 ...

不知道你操作 ttyUSBx 的时候的读写函数有没有判断 err,或者有没有用 select 来判断是否为 exception file descriptor?
遇到这种情况,第一时间就需要关闭 file descriptor 了。

fchen2 发表于 2014-12-19 10:55:26

3G模块使用时RESET后USB串口号变化正常,首先不能直接使用这个USB串口设备,需要用udev或mdev映射一个设备名。这样即使USB串口变了,设备名也不会变

zhangpisces 发表于 2014-12-22 22:41:31

fchen2 发表于 2014-12-19 10:55
3G模块使用时RESET后USB串口号变化正常,首先不能直接使用这个USB串口设备,需要用udev或mdev映射一个设 ...

请指教,怎么映射的呢{:handshake:}

fchen2 发表于 2014-12-30 10:43:43

硬件是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]
查看完整版本: linux下3G模块异常 原来生成的ttyUSB0和ttyUSB1变成了2和3