
前阵子帮朋友调一台装了Intel AX200的笔记本系统是Ubuntu别的都好说唯独开热点这件事特别拧巴手机死活搜不到5GHz的SSID强行切到2.4GHz连上之后速度又只有三四十Mbps传个大文件都急人。后来我陆续在AX201、AX203、AX210这些网卡上遇到类似的反馈问题套路几乎一模一样要么5GHz热点根本起不来要么起来了速率却跑不满。这篇文章就把我从现象、根因到最终落地的完整排查过程写清楚涉及iwlwifi驱动、监管域、hostapd配置和速率协商这些环节希望对正在折腾Intel无线网卡Linux热点的朋友有点用。1. 开局一块AX200在Linux下开热点5GHz频道神秘消失1.1 先确认你手里的卡和它现在的状态开始排查之前一定要先确认网卡有没有被系统正确识别、驱动模块加载的是哪个。很多问题其实在第一步就已经露出马脚但因为没人看底层的输出所以绕了一大圈。lspci -nnk | grep -i network正常会看到类似02:00.0 Network controller [0280]: Intel Corporation Wi-Fi 6 AX200 [8086:2723] (rev 1a) Subsystem: Intel Corporation Wi-Fi 6 AX200 [8086:0084] Kernel driver in use: iwlwifi这里有几个信息很关键8086:2723是AX200的PCI IDAX201、AX203、AX210各有各的ID但驱动基本都落在iwlwifi上。Kernel driver in use: iwlwifi说明驱动已经绑上了。如果这里显示iwlwifi换成别的奇怪驱动或者干脆是(null)那热点问题大概率不是5GHz的锅而是驱动根本就没起来。再看一下当前无线接口的状态iw dev确认无线接口名叫wlan0也好phy0也好记住这个名字后面所有配置都要对着它来。然后检查固件是否正常加载sudo dmesg | grep iwlwifi | head -20看到类似iwlwifi ... loaded firmware version ...这样的日志就行具体版本号以你的系统为准。如果日志里出现Direct firmware load failed那就是固件缺失或版本太老后面第2章会专门讲。1.2 把症状分门别类别上来就乱改配置我在处理这类问题的时候习惯先把症状归成四类每一类的排查方向完全不同手机完全搜不到5GHz热点但2.4GHz正常这通常是网卡的5GHz band没有被系统启用或者热点工具被限制在bg频段。5GHz能开出来但连接后协商速率只有几十Mbps一般是信道宽度不够或者客户端和AP之间协商到了802.11n而不是802.11ac/ax。热点开着开着设备掉线、速度忽高忽低大概率是DFS信道被雷达检测触发切换或者信道拥挤。手机连上后提示“IP配置失败”这个跟5GHz本身无关是DHCP服务没起来很多折腾热点的人会卡在这一步。我见过的案例里第1类和第4类占了八成。第1类的原因是“5GHz被封印”第4类是“只开了AP没开DHCP”。能准确分类后面就不会瞎折腾。1.3 顺手把手里的工具准备齐排查和修复过程中会用到这些工具先用包管理器装好sudo apt install wireless-tools iw hostapd dnsmasq如果习惯用脚本类工具可以再装一个create_ap但我不建议一上来就依赖它先搞懂底层的hostapd怎么配置再回去看那些封装脚本就一目了然了。iw是核心中的核心查频道、看状态、设置监管域全靠它。2. 为什么热点被摁在2.4GHz驱动、固件与监管域逐层排查2.1 iwlwifi驱动大部分时候它真的挺无辜很多人在网上搜“AX200 Linux 5GHz热点”的时候会看到一个论调“Intel网卡在Linux下不支持AP模式”。这个说法在早期确实有部分道理比如老固件、老内核阶段iwlwifi对AP模式支持不完整但放到现在AX200、AX210这些卡在主线内核下是原生支持AP模式的。怎么确认你的网卡到底支不支持AP直接问固件iw phy phy0 info | grep -A 20 Supported interface modes输出里如果有* AP这一行说明当前驱动和固件组合是支持热点的。我见过的情况里绝大多数现代内核都支持所以你如果看到不支持优先怀疑内核太老而不是网卡本身不行。另外一个高频误区就是所谓“Killer驱动”。很多笔记本自带的是Killer AX1650它的硬件本质就是AX200的马甲PCI ID可能是8086:2723子系统是Killer的。在Linux下完全不需要去装什么Killer专用驱动直接用iwlwifi就好。实在看到有人说“下了Killer驱动就好了”多半是他系统里其他东西被顺手修好了。2.2 固件版本Linux下5GHz热点翻车的一大半原因在这驱动没问题下一个检查项就是固件。Intel网卡在Linux下靠iwlwifi驱动加载.ucode固件文件这些固件由linux-firmware这个包统一管理。不同发行版的固件包新旧差异很大如果你的内核比较新但固件包还是几年前的很多新特性就被卡住了。先看当前加载的固件版本sudo dmesg | grep loaded firmware然后对照网卡型号AX200系列用的是iwlwifi-cc-a0-*.ucodeAX210系列用的是iwlwifi-ty-a0-gf-a0-*.ucodeAX201、AX203这些同样属于cc系列固件固件升级方式因发行版而异# Debian / Ubuntu sudo apt update sudo apt install --only-upgrade linux-firmware# Fedora sudo dnf update linux-firmware有时候你不想动整个固件包也可以直接去内核仓库拉对应.ucode文件扔进/lib/firmware/然后重启网卡sudo modprobe -r iwlwifi sudo modprobe iwlwifi注意卸载驱动会顺带把网络断掉最好走有线连接或准备好恢复手段。2.3 监管域regulatory domain最容易被忽略的5GHz封印如果说驱动和固件是“能不能开AP”那监管域就是“允不允许你用5GHz里的那些频道”。这是我在绝大多数Linux热点问题里找到的真正元凶。Linux内核里有个无线监管框架它会根据你设置的国家码决定哪些频段、哪些信道可以使用。很多时候系统默认的国家码是00也就是所谓的“全球通用”区域。问题在于00状态下的5GHz频段限制非常严不少信道会被直接标记为disabled只剩下少数几个可用。先看当前国家码iw reg get如果输出开头是country 00那就八九不离十了。然后看5GHz频段里的信道状态iw phy phy0 info | grep -A 100 Band 2 | grep -E Frequencies|disabled|radar能看到类似Frequencies: * 5180 MHz [36] (23.0 dBm) * 5200 MHz [40] (23.0 dBm) ... * 5260 MHz [52] (23.0 dBm) (radar detection)如果某些信道前面出现(disabled)就说明当前监管域不允许使用它们。把这个国家码改掉很多“5GHz消失”的问题当场就能解决sudo iw reg set CN国家码按你所在地区填CN、US、JP、DE都是常见例子。设置完再iw reg get确认然后重新查看信道状态会发现原本 disable 的5GHz信道都解锁了。这里有个经验改完国家码后最好把热点相关进程全部停掉再重新设置信道否则部分驱动可能会沿用旧的监管状态。2.4 排查顺序总结从底层到应用层一层层排除我处理这类问题的固定顺序是先查驱动和固件再查监管域和信道然后才是热点工具本身。如果一上来就折腾hostapd配置很可能你会反复怀疑hw_modea写错了但真正问题在更底层。你可以按这个顺序快速过一遍lspci -nnk | grep -i network确认网卡被识别。sudo dmesg | grep iwlwifi确认固件加载无误。iw reg get确认国家码不是00。iw phy phy0 info | grep -A 20 Supported interface modes确认支持AP模式。iw list看5GHz频段信道有没有disabled。每一步的输出都会给你非常明确的方向。这个顺序十次里面有九次能定位到问题所在。3. NetworkManager、create_ap、hostapd到底该信谁热点工具的踩坑对照3.1 NetworkManager的热点省心但默认把5GHz藏起来了大多数人开热点的第一反应是用系统自带的图形界面比如Ubuntu的“设置 - 网络 - 打开热点”。这个方式确实最快但它创建的连接配置默认只允许bg频段也就是2.4GHz。你想让它走5GHz可以先用命令行方式创建一个热点然后手动修改连接的band属性。不同版本的NetworkManager命令支持程度不一样我验过相对通用的做法是nmcli dev wifi hotspot ifname wlan0 ssid MyHotspot password yourpasswd nmcli connection modify MyHotspot 802-11-wireless.band a nmcli connection modify MyHotspot 802-11-wireless.channel 149 nmcli connection up MyHotspot如果802-11-wireless.band属性你的nm版本不认识那说明这一版NetworkManager对AP频段控制支持有限。别跟它死磕直接跳到hostapd方案。我个人的建议是如果只是一时应急NetworkManager的热点够用但如果想稳定跑5GHz、调信道、开Wi-Fi 6特性它并不是最合适的工具。原因在于它帮你封装了太多东西出问题的时候很难看到底层发生了什么。3.2 create_ap方便但它也只是hostapd的搬运工既然聊到工具就绕不开create_ap。这脚本确实好用尤其是需要无线网卡共享有线网络的时候一条命令全搞定。很多人以为它能解决一切热点问题其实它最终做的事情就是生成一个hostapd.conf然后调用hostapd把AP跑起来。如果你用create_ap遇到5GHz开不出来不用去翻它的源码直接看它到底给hostapd查了哪些参数就行。脚本通常支持把临时配置导出出来你自己看一眼就知道hw_mode是不是a、channel填了多少有没有被默认写回bg。这部分让我多说一句封装工具不是不能用但你要清楚它替你做了什么。create_ap设计上要考虑各种网卡的兼容性所以有些默认值会偏保守2.4GHz优先级更高这直接导致很多人“明明支持5GHz工具却给我开了2.4GHz热点”。3.3 hostapd把频段控制权真正拿回手里一句话总结我最终的选择想要稳定5GHz热点直接手写hostapd配置。这也是我能在各种Intel网卡上一次又一次解决问题的核心原因。一个最小可用的5GHz热点配置长这样interfacewlan0 drivernl80211 ssidMyHotspot5G hw_modea channel149 country_codeCN ieee80211n1 ieee80211ac1 ieee80211ax1 wmm_enabled1 ht_capab[HT40] vht_capab[SHORT-GI-80][MAX-MPDU-11454] wpa2 wpa_passphraseYourStrongPass wpa_key_mgmtWPA-PSK rsn_pairwiseCCMP几个关键点的说明hw_modea是5GHz的硬开关写g就是2.4GHz。channel149选了5GHz的U-NII-3信道避开了DFS信道绝大多数终端设备都能搜到。ieee80211ax1开启Wi-Fi 6特性但前提是你的hostapd版本支持2.10基本没问题。如果报错说unknown configuration field检查一下hostapd版本。country_codeCN要和iw reg set CN对应上不然hostapd可能拒绝在某些信道上启动。启动方式sudo hostapd /etc/hostapd/hostapd.conf如果只想前台跑看日志别加-B。日志里会出现类似Setup of interface done的字样说明AP起来了。之后用另一个终端iw dev wlan0 info能看到ssid MyHotspot5G type AP channel 149 (5745 MHz), width: 80 MHz, center1: 5735 MHz看到channel 149、width: 80 MHz5GHz才算是真正起来了。3.4 别忘了配套的DHCP手机“IP配置失败”的真凶很多人在用hostapd自己开热点的时候发现手机能搜到Wi-Fi、能连上但一直提示“IP配置失败”。这不是无线链路的问题而是hostapd只负责无线接入不负责IP分配。你需要在热点接口上配好IP并启动一个DHCP服务。最简单的就是dnsmasqsudo ip addr add 192.168.12.1/24 dev wlan0sudo dnsmasq --interfacewlan0 --dhcp-range192.168.12.50,192.168.12.150,255.255.255.0,12h手机再次连接IP就能正常拿到了。如果你用NetworkManager的热点方式它会自动处理DHCP这也是为什么很多人一开始用NM没遇到IP问题但换成hostapd之后就卡住的原因。4. 5GHz开起来了速度还是爬不上千兆从协商速率到信道拥挤的完整链路4.1 先测再猜用station dump看客户端实际协商速率5GHz热点终于能开了但这只是第一步接下来才是“跑不满速”的正题。不要用手机上的“测网速”App直接下结论先看看无线链路层协商出来的速率是多少。iw dev wlan0 station dump输出里最重要的字段是tx bitrate上行协商速率rx bitrate下行协商速率signal信号强度负数越接近0越好举个例子如果你的客户端连上后tx bitrate只有72.2 MBit/s MCS 7说明它正在用802.11n的20MHz频宽通信这个速率在5GHz场景里明显不正常。正常5GHz 80MHz、802.11ac/ax的协商速率应该在400 Mbit/s以上双流AX可以到1200 Mbit/s级别。4.2 信道宽度80MHz才是Wi-Fi 5/6的正常打开方式协商速率上不去最常见的坑是信道宽度停留在20MHz。hostapd默认情况下往往不会主动把80MHz打开需要你在配置里明确声明。我在上一章的配置里写了vht_capab[SHORT-GI-80][MAX-MPDU-11454]这个SHORT-GI-80是个关键它告诉系统支持80MHz频宽下的短保护间隔。如果缺失很多驱动会把VHT信道宽度锁在20MHz。启动后记得验证iw dev wlan0 info正常情况下应该出现channel 149 (5745 MHz), width: 80 MHz, center1: 5735 MHz如果只有width: 20 MHz说明80MHz没有生效。检查两件事一是hostapd版本是否支持VHT配置二是配置里有没有ieee80211ac1。至于160MHzAX200和AX210硬件上支持但Linux驱动下开160MHz的AP模式兼容性并不算好很多无线客户端和驱动组合会出奇奇怪怪的问题比如频繁掉线、连接不稳定。我自己的经验是如果目的是稳定高速率先稳定在80MHz得到一个600-800Mbps的实际吞吐比一个不稳定的1000Mbps更有价值。4.3 发射功率与天线被忽略的物理层问题软件配置对协商速率也对但实际测速还是慢那就得看物理层。先看发射功率iw phy phy0 info | grep -A 5 txpower或者iw dev wlan0 info | grep txpower很多Intel网卡在Linux下默认发射功率并不高iw里显示的值有时候只有20dBm左右但5GHz频段能用多高功率受监管域限制。比如国家码CN下部分信道允许23dBm如果你设的信道对应的功率被限制到很低覆盖范围和速率都会受影响。另外笔记本内置天线的物理连接也是一个隐性问题。我遇到过一台机器里面两根Wi-Fi天线只接了一根网卡能工作但信号和速率都很差。这不是软件能解决的但可以通过对比signal强值和实际距离衰减来辅助判断。如果你用的是PCIe转接卡检查天线扣具是不是完全压实了。4.4 信道拥挤与DFS为什么你选的5GHz看起来没人用却慢5GHz整体上比2.4GHz干净很多但不是所有5GHz信道都“干净”。在这件事上同样有个高频误区有人看到某个信道周围信号少就认为它是最佳选择结果忽略了DFS信道的问题。DFS信道比如52、56、60、64以及100-140这些会被雷达信号检测机制控制。一旦系统检测到雷达脉冲AP会自动切换信道甚至暂时停止发射。在Linux下如果用了DFS信道经常会遇到热点开起来几分钟后突然所有客户端掉线然后日志里出现雷达检测相关记录。所以我通常建议直接避开DFS信道优先选这些非DFS频段信道编号中心频率使用场景365180 MHz室内低干扰405200 MHz室内低干扰445220 MHz室内低干扰485240 MHz室内低干扰1495745 MHz穿透性稍好1535765 MHz穿透性稍好1575785 MHz穿透性稍好1615805 MHz穿透性稍好1655825 MHz穿透性稍好值得注意的是即使在非DFS信道如果周围环境有其他AP占用同样的信道会形成同频干扰速率照样被拉低。用手机或笔记本扫描一下周围5GHz网络分布挑一个当前时间点相对空闲的信道很关键。关于“跑不满速”我还想补一个更隐蔽的原因如果热点同时挂了很多设备恰好其中某一台老设备只支持802.11n 20MHz整个BSS的广播帧速率会被拉下来其他高速率设备的实际吞吐也会受影响。这就是为什么有时候你在家里一个人测速一切正常多连几个设备后速度断崖式下跌。5. 一条完整可复现的配置流程与常见报错对照5.1 从固件到热点一条龙操作步骤把前面的每一块串起来我通常按下面这个顺序走一遍所有步骤都是实测过的升级内核相关固件包确保linux-firmware在一个较新的版本。设置监管域sudo iw reg set CN用你所在区域对应的国家码。确认iw phy phy0 info里5GHz信道已经可用。停掉NetworkManager自带的自动热点避免它和hostapd抢网卡sudo systemctl stop NetworkManager给wlan0配IPsudo ip addr add 192.168.12.1/24 dev wlan0写/etc/hostapd/hostapd.conf把第3章的配置填进去。前台启动hostapdsudo hostapd /etc/hostapd/hostapd.conf另开终端启动DHCPsudo dnsmasq --interfacewlan0 --dhcp-range192.168.12.50,192.168.12.150,255.255.255.0,12hiw dev wlan0 info和iw dev wlan0 station dump双重验证。这里有一个反复踩过的坑hostapd 和 NetworkManager 同时操作同一块无线网卡时会出现Device or resource busy的报错。所以如果你用hostapd就别让NetworkManager托管这张卡或者干脆把NM停掉。5.2 常见报错和日志对照表我把自己遇到过的、以及帮别人处理过的典型报错整理成下面这张表方便你快速定位报错/现象原因解决方案nl80211: Failed to set channel to frequency ... (-16)网卡被占用或者监管域不允许该信道停掉NetworkManager换非DFS信道iw reg set设好国家码AP mode is not supported驱动太老或固件太旧升级内核/linux-firmware或改用backport版iwlwifiCould not configure driver modehostapd配置里的driver或接口名错误确认interfacewlan0对应真实接口driver保持nl80211手机搜不到5GHz SSID监管域限制、hostapd还停留在hw_modegiw reg get检查国家码确认hw_modea连上了但速率只有几十Mbps协商带宽20MHz或者客户端只支持2.4GHz n检查vht_capab、ieee80211ac用station dump看协商速率手机提示IP配置失败hostapd不负责DHCP启动dnsmasq并给wlan0配好IP热点运行几分钟后全部掉线用了DFS信道触发雷达检测改到149、157、161等非DFS信道5.3 关于“Killer网卡要不要装Killer驱动”的迷思这个点专门拿出来说是因为搜索热词里“ax200安装killer驱动”频繁出现。Killer AX1650以及部分AX1675硬件本质就是Intel的AX200/AX210差别主要在子系统ID、软件管理工具和固件里的营销名称。在Linux下Killer网卡装Killer官方驱动基本没有意义内核直接用iwlwifi就能完整驱动。我帮人处理过一台笔记本系统日志里能看到Killer的无线模块被识别成AX200装什么Killer驱动纯属多此一举反而可能因为第三方驱动签名问题造成dkms编译失败。如果你在Linux下碰到Killer无线网卡记住一个原则按Intel原型号的驱动方案处理即可。6. 折腾完后的经验沉淀反复倒腾这些Intel无线网卡的热点问题之后我最大的一个体会是这类问题很少是单一原因造成的更多时候是“监管域没设、工具默认2.4GHz、DHCP没起”三层问题叠在一起。所以碰到问题时最好按底层到应用层的顺序走一遍不要只盯着某一个配置文件反复改。另外一个实用小技巧是每次修改完hostapd配置后不要急着让手机去连先在前台跑一次hostapd观察日志确认Setup of interface done出现再放手。很多“随机性掉线”的问题其实就是配置阶段就埋了雷只是启动的时候没暴露。如果你是给嵌入式设备或者临时组网场景用这套方案还能继续简化把hostapd和dnsmasq做成systemd服务开机自动起热点。但无论怎么简化前面那几步排查动作都建议保留尤其是iw reg get和iw dev wlan0 info这两个查看命令它们能让你在五分钟内判断出问题大概在哪一层省下大量的试错时间。