zyk
1
我的开发板使用瑞芯微的rv1126b,移植ec200d的驱动后做了如下调试:
1、使用quectel-CM进行拨号,拨号成功后板子上的usb0分配了一个ip,此时板子上的tcp应用程序正常连接到外网的tcp服务器。
2、使用echo ‘mem’ > /sys/power/state使系统休眠,唤醒后发现tcp应用收不到数据了,ifconfig发现usb0的ip以及没有了,再运行一次quectel-CM打印如下:
此时ifconfig后usb0还是没有ip
3、重启4G模组后再运行quectel-CM恢复正常,能够成功获取ip,tcp能够成功连接
休眠唤醒,中间看看内核log有没有USB disconnect?
唤醒后quectel-CM进程还在吗?
怀疑是唤醒后usb disconnect了。可以试下先用AT断开拨号,再重拨看看能否解决问题。
AT+QNETDEVCTL=0
然后再重新跑quectel-CM.
zyk
3
唤醒后quectel-CM进程还在。
采用AT+QNETDEVCTL=0,然后再重新跑quectel-CM后能够重新拨号。
休眠唤醒期间的打印如下:
请问休眠时usb断开的问题怎么解决呢?
zyk
4
唤醒后quectel-CM进程还在。
采用AT+QNETDEVCTL=0,然后再重新跑quectel-CM后能够重新拨号。
休眠唤醒期间的打印如下:

image1730×1551 314 KB
请问休眠时usb断开的问题怎么解决呢?
从这个log截图看看,Linux suspend 过程直接将USB hub断电了,主控可能也不支持USB的休眠唤醒。你可以用其他的USB外设也试试。
猜测情况是,USB disconnect 后又重新connect了,但模块可能没有掉电重启,usb 重新连上后usb 网卡的拨号状态异常,所以重新AT+QNETDEVCTL=0后才可以。
quectel-CM在也是正常的,虽然usb disconnect,但是quectel-CM还在一直等usb 设备重连。这个机制也可以取消。