usb usb1-port2: disabled by hub (EMI?), re-enabling...

一、背景

        最近在测试LTE modem链接稳定性的时候,需要长期挂测,LTE modem在系统层生成RNDIS的网卡。

         可以看见,上图中有一个名为 usb0的RNDIS网卡,另外有三个ttyUSB设备,参照Modem的指导文档,得知其中只有一个TTYUSB可以用于AT指令调试以及modem 拨号。

        这也是很坑的地方,只有一个口要同时用于AT指令查询以及modem 拨号,等于来说二者不能同时进行,因为ttyUSB在AT模式下和modem下面的tty line 是不一样的,简单来说就是在AT模式下,这个ttyUSB在line =0只能承载简单的AT字符这样的内容,但是切换为PPP拨号之后(line =3),底层需要承载PPP这样的报文格式,就不在兼容AT字符。从PPP模式切换出来需要输入‘+++’。

1.1 网络拓扑

二、测试

        好了,一切都准备好了以后,就可以开始测试了,装上SIM卡和天线,让设备通过PPP拨上公网,在使用xl2tp拨上服务器,后续我们在应用层会做一个类似于心跳包的逻辑,间隔一段时间服务器会向设备发送一个报文并期待回复:回复成功就是在线,多次没回复就会上报设备离线。

同时路由表如下: 

同时结合路由表可知:数据包大多会从ppp0接口路由出去,手动开启该接口的tcpdump抓包 ,这个是公网网卡接口(准确来说应该算是和Modem桥接的一个网卡,底层是USB走线),通过他可以看看是不是和公网链接有问题,由于Xl2tp(基于PPPD)中都有链路保活报文的措施:

但是如果发生这种情况, Xl2tp只能判定是和服务器之间的通信是否正常,换句话说,他看不到和外部公网的链接是否正常,但是设备和服务器之间隔了那么多跳的设备,像和我们相连的modem都估计是在转发我们设备的消息。因此我们需要加入一个可以检测外网的逻辑:

 时间很重要,能否核对清楚设备在那个时刻到底发生了什么:

三、离线的网络节点说明

         这几次的离线报文如初一则,清一色的报文类似结构(唯一没变的就是PPP0这个网卡接口一直存在,证明公网还在,但是那个时刻的网络连接状态不可知)

         可以看见设备发送5次保活报文都没回复,PPPD服务认为链路连接不正常,就进行相应的会话和隧道的拆除,然后再发起下一次注册,就有了那个多的注册信息。

        注意:没有收到回复不要认为就是服务器那边的问题,这也是我之前处理这类问题的惯性思维,你需要考虑到这二者之间还有很多的转发节点,其中最值得怀疑的就是modem这个节点,有可能是Modem那边和公网的链接就不正常导致的,这样自然也是收不到回复,因为我的设备和模组之间走的物理的usb链路,本质上这样类似于有线网络,比Modem和基站那边的链接会稳定很多,除非底层的USB驱动出现问题,也会导致传输异常。所以我后续加了一个ping 8.8.8.8这个IP的逻辑,通过二者时间进行比对,看看在Xl2tp服务 发送5次保活报文都失败的时候,8.8.8.8能否ping通,能ping通证明网络出现在运营商和服务器之间,不能ping通就是出现在Modem和运营商网络之间

#!/bin/sh

# 外网 DNS 服务器的 IP 地址
dns_server="8.8.8.8"

# 定义检测函数
check_dns_connection() {
    ping -q -c 4 -W 4  -s 2  $dns_server -I ppp0 > /dev/null
    if [ $? -eq 0 ]; then
        echo "$DATE DNS 连接正常">/dev/null&
    else
        echo "===>$DATE DNS 连接失败">>/root/networkcheck.log&
    fi
}

# 循环检测
while true; do

        DATE=`date  +20%y%m%d%H%M%S`
    check_dns_connection
    sleep 1  # 每隔 5 秒检测一次,可以根据需要调整时间间隔
done

四、悄无声息的离线

查看6点这次离线报文的时候,直接呆住了:

 设备在6点1分左右就停止抓包,停止抓包就意味着ppp0网卡都没有了。

查看内核打印的日志信息,基本证明了那个时候ppp0已经消失了

可是这个信息提示有EMI(电磁干扰??) ,阿丢,早上6点出现这种情况,这是什么问题,还有这些??

[317688.665057] ERROR ohci-q.c  0x5! 7292000 0x7292fff
[317688.670090] ERROR ohci-q.c  0x5! 735b000 0x735bfff

emm,感觉有点像linux底层的东西了,等我有空回来再研究一下,今天先记录一下

有遇到这种问题的朋友可以交流下您的处理方案,小白第一次遇见这种问题

五、更新

        时隔两个月,有空再次捡起来这个问题继续看看,上述的EMI问题,查看了博客之类的,描述成是电磁干扰,应该和usb的两科查分信号线走线有关。

        查看我们设备的原理图,之间两个USB信号线之间 “一丝不挂”,并且我们对该模块没有进行过静电测试这一项体检项目,而且我们的usb主机设备在接入LTE Modem之后是工作在全速模式下,因此在这个模式下需要考虑线路兼容性的问题。后续查看LTE Modem手册,厂家有以下建议:

后续参看了他们的参考设计图:

 

我只是个软件小白,看了这些资料之后想给板子飞线也不会飞,且产品定型之后不太会去考虑改版的问题,以上只是参考厂家的指导文献,如果有朋友遇到,可以参照您手里产品厂家的指导尝试一下 。

  • 25
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值