我使用 TP-Link TL-WN823N wifi 适配器,它连接到 Alcatel Link Zone MW40V wifi 路由器。操作系统是 Ubuntu Xenial。
我的脚本每 1 秒通过 ping 我的路由器检查一次连接。
每隔几分钟,连接就会断开 10 秒。有时需要更长时间,直到我重新连接我的 USB 设备。
以下是针对此问题建议的脚本的结果*:
http://paste.ubuntu.com/25666809/
这是我丢失连接时的系统日志:
Oct 3 14:52:35 konrad kernel: [48057.888362] RTL871X: rtl8192e_sreset_xmit_status_check tx hang
Oct 3 14:52:35 konrad kernel: [48058.003310] RTL871X: SetHwReg8192E(enxd46e0e147875): [HW_VAR_MACID_SLEEP] macid=0, org reg_0x4d4=0x00000000
Oct 3 14:52:37 konrad kernel: [48060.078834] RTL871X: survey done event(e) band:0 for enxd46e0e147875
Oct 3 14:52:37 konrad kernel: [48060.078851] RTL871X: rtw_indicate_scan_done(enxd46e0e147875)
Oct 3 14:52:43 konrad kernel: [48065.904390] RTL871X: rtl8192e_sreset_xmit_status_check tx hang
Oct 3 14:52:45 konrad kernel: [48067.908373] RTL871X: rtl8192e_sreset_xmit_status_check tx hang
Oct 3 14:52:47 konrad kernel: [48069.912351] RTL871X: rtl8192e_sreset_xmit_status_check tx hang
Oct 3 14:52:49 konrad kernel: [48071.916318] RTL871X: rtl8192e_sreset_xmit_status_check tx hang
Oct 3 14:52:51 konrad kernel: [48073.920294] RTL871X: rtl8192e_sreset_xmit_status_check tx hang
Oct 3 14:52:53 konrad kernel: [48075.924656] RTL871X: rtl8192e_sreset_xmit_status_check tx hang
Oct 3 14:52:55 konrad kernel: [48077.928901] RTL871X: rtl8192e_sreset_xmit_status_check tx hang
Oct 3 14:52:59 konrad kernel: [48081.936320] RTL871X: rtl8192e_sreset_xmit_status_check tx hang
Oct 3 14:53:01 konrad kernel: [48083.940556] RTL871X: rtl8192e_sreset_xmit_status_check tx hang
Oct 3 14:53:03 konrad kernel: [48085.944913] RTL871X: rtl8192e_sreset_xmit_status_check tx hang
Oct 3 14:53:05 konrad kernel: [48087.948873] RTL871X: rtl8192e_sreset_xmit_status_check tx hang
Oct 3 14:53:07 konrad kernel: [48089.952599] RTL871X: rtl8192e_sreset_xmit_status_check tx hang
Oct 3 14:53:09 konrad kernel: [48091.956913] RTL871X: rtl8192e_sreset_xmit_status_check tx hang
Oct 3 14:53:11 konrad kernel: [48093.960434] RTL871X: rtl8192e_sreset_xmit_status_check tx hang
我做了什么:
我禁用了省电功能
选项 8192eu rtw_power_mgnt=0 rtw_enusbss=1 rtw_ips_mode=1
在 /etc/modprobe.d/8192eu.conf 中
我禁用了对 IPv6 的支持,但没有用,所以我再次启用了它
我使用以下命令升级了网络管理器:
sudo apt-get 安装网络管理器
为了驳斥路由器在非活动状态时禁用连接的理论,我编写了一个脚本,每 1 秒 ping 一次,另外,该脚本会告诉我连接何时断开,因此我希望在 /var/log/syslog 中看到相关(及时)消息,但这并没有真正帮助,因为连接通常在以下情况下断开:
konrad 内核:[515.730095] RTL871X:rtw_indicate_scan_done(enxd46e0e147875)
有时(但并非总是)会出现以下情况:
konrad 内核:[515.730060] RTL871X:针对 enxd46e0e147875 的调查完成事件 (f) 波段:0
顺便说一句,任务栏上的 wifi 图标显示它仍处于“连接”状态。但事实并非如此。
请...我已经为此挣扎了好几个星期了...
*这是生成上述报告的脚本: 我的无线/WiFi 连接无法使用。诊断问题需要哪些信息?