x220解决wlan时延问题

7cmb a nobody

之前x220跑windows还算勉强能用,除了需要耐心和屏幕瞎眼以外好像也没有太大的缺点。在debian11-xfce上不跑服务仅仅当作浏览器启动器也算体验良好

然而最近重新整备的时候,却发现本机在运行debian12的情况下,使用内网中其他机器访问他的无线网卡时延时居然游离在1~300ms不等,这在内网算是天文数字了……换第二张无线网卡,换网络服务后端问题依旧,详情在:关于x220掌托排线更换提问 - 经典ThinkPad专区 - 专门网 。找不到解决方法后暂时搁置了一段时间

后来抱着试一试的心态从debian12-lxqt换了manjaro-cinnamon。遂发现在某种特定配置下无线网卡就能到达一个相对正常的状态。但manjaro上存在某些我无法接受又找不到workaround和solution的问题,而且都用manjaro了我为什么不用他的上游archlinux呢?因此决定在archlinux live cd上再次debug无线网卡延时问题

参考:

Is iwlwifi or iwldvm or wext the wireless driver? - Ask Ubuntu

Fixing Intel Wi-Fi 6 AX200 latency and ping spikes in Linux – The Z-Issue

wifi - Make "iw wlan0 set power_save off" permanent - Raspberry Pi Stack Exchange

Reddit - Dive into anything

解决思路

1 - 排查后端

首先检查无线服务的后端。archlinux的livecd无线服务后端默认是iwd;而manjaro-cinnamon的无线服务后端为wpa_supplicant,使用NetworkManager作为前端控制。我的manjaro不存在这个问题,当然一把梭wpa_supplicant+NetworkManager。这时踢到第一个铁板——把iwd服务停掉后无线网卡掉设备了。无奈,google发现解决方案Reddit - Dive into anything :

1
2
3
4
rmmod iwlmvm
rmmod iwlwifi
modprobe iwlwifi
modprobe iwlmvm

尝试后网卡回来了,就是名字从wlan0变成了wlp3s0,连上wifi后测试问题依旧

2 - 排查内核参数

经过多轮搜索发现有部分老哥也有高延迟或者类似问题:

High latency and sound distortion when using WiFi (X200t) - Thinkpads Forum

networking - Thinkpad x220 wireless network slows down after some time - Ask Ubuntu

他们都指出了这个参数11n_disable。开启后问题依旧

3 - 问题源头

继续查阅资料发现了一点端倪Fixing Intel Wi-Fi 6 AX200 latency and ping spikes in Linux – The Z-Issue 。这篇博文描述的情况跟我几乎一模一样,尝试了同样的解决方法iw wlan0 set power_save off问题解决

关于这个配置的持久化可以参考这里wifi - Make “iw wlan0 set power_save off” permanent - Raspberry Pi Stack Exchange

显然配置一个systemd unit作为脚本开机自启的方法有点笨重,并且我也懒得配置iwlwifi的模块参数。因此我决定用NetworkManager自带的nmcli工具来实现这个配置的持久化

解决手段

UPDATE:2024.8.15

NetworkManager的无线后端需要为wpa_supplicant, iwd以下不生效,建议cron或者systemd执行以上iw命令

检查powersaver状态可以用这条命令iwconfig wlan0 | grep Power Management

nmcli的connection配置中有一段:

1
2
root@archiso ~ # nmcli connection show myssid |grep 802-11-wireless.powersave
802-11-wireless.powersave: 2 (disable)

这个选项默认是3(该处有误,默认是多少忘了),只需要把他改成2并up一下即可解决这个问题:

1
2
3
root@archiso ~ # nmcli connection modify myssid 802-11-wireless.powersave 2
root@archiso ~ # nmcli connection up myssid
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)

关于其他选项具体作用详细查看nm-settings-nmcli手册

尚未连接过的wifi没有相关配置文件,因此modify无法补全参数。建议先使用nmcli连接一次wifi生成connection文件再修改这个选项

可以使用nmcli device wifi connect myssid --ask或者添加connection文件 以连接wifi

疑问

latency和delay的区别实在没分清,稍后解决

  • 标题: x220解决wlan时延问题
  • 作者: 7cmb
  • 创建于 : 2024-04-22 00:36:49
  • 更新于 : 2024-10-12 23:07:35
  • 链接: https://7cmb.com/x220解决wlan时延问题/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。