刚看完一部动画短篇《真理社游记》,里面有个画面让我印象很深:网瘾少女发现家里没有WiFi后,整个人节奏瞬间乱了。这个设定确实夸张,但要是真把WiFi从生活里抽走,很多人并不比动画里强多少。遇到网络卡顿,大家第一反应就是重启路由器、问宽带客服、甚至直接下单换设备,可最后查出来问题往往出在电脑网卡驱动、系统网络服务、路由器信道,甚至是设备摆放位置。
这篇文章把“没有WiFi的一天”当线索,写一写WiFi问题的排查顺序、电脑上常见的无线网卡故障、断网时怎么用手机和局域网自救,以及想自己动手做点WiFi小工具时该从哪入门。平时不修网络的人可以直接跳到第3部分先应急;经常折腾电脑的人可以顺着看,很多坑提前避开比事后解决省时间。
1. 断网先分层:WiFi问题不是“网速慢”五个字能概括的
1.1 现象千差万别,定位方式完全不同
WiFi问题最麻烦的地方在于:现象看起来差不多,原因可能完全不同。
连不上WiFi,可能是路由器没有广播SSID,可能是信号太弱,可能是密码过期,可能是网卡被禁用了。能连上但打不开网页,可能是DHCP没有分配IP,可能是DNS解析异常,可能是宽带欠费。WiFi图标直接消失,可能是驱动掉了,也可能是系统服务停了。频繁掉线,可能是信道干扰、网卡省电模式、路由器固件问题,也可能只是无线网卡的漫游策略太激进。
所以第一步不是去改路由器参数,而是先把现象描述清楚。用什么设备?有线正常还是无线正常?所有设备都断,还是只有一台设备断?这些信息能帮你把问题范围砍掉一半。
我平时会按四个问题往下查:
- 问题出现在哪个终端。
- 无线网卡有没有在工作。
- 终端有没有拿到有效的IP地址。
- 路由器到运营商这条链路通不通。
这套顺序在Windows、macOS、Android、iOS上基本都适用,区别只是每条线索的命令和设置入口不同。
1.2 我的标准排查顺序:先终端,再路由,最后运营商
先说结论:家里网络出问题,我一般不从路由器开始,先从终端开始。终端就是指电脑、手机、电视这类需要联网的设备。
具体步骤是这样:
- 先用一台有线连接的电脑测试,确认宽带和路由器本身是好的。
- 再用手机或其他设备连同一个WiFi,看是不是只有你的设备连不上。
- 如果所有设备都连不上,才把关注点移到路由器。
- 如果路由器后台能登录,但外网不通,再考虑宽带线路和运营商状态。
为什么不一开始就重启路由器?因为重启路由器和重启电脑都很快,很多问题在重启后确实能好,这就容易造成一种“路由器坏了”的错觉。等换了一个新路由器,发现旧路由器的配置才是问题根源,时间就浪费了。
判断内网和外网是否正常,最直接的办法是看IP地址。如果终端获取的IP是192.168.x.x或10.x.x.x这种私网地址,说明局域网内已经连接成功,问题多半在DNS或者外网。如果获取的IP是169.254.x.x这种地址,说明DHCP没有正常工作,终端没有从路由器拿到有效地址。这一幕在Windows上特别常见,看到169.254开头,先去查路由器DHCP、网线、无线认证,不用急着联系运营商。
分层排查还有一个额外好处:能减少无效操作。很多人断网之后习惯把光猫、路由器一起断电重启,但重启动作本身不会留下什么日志,也不会告诉你真正的故障原因。你只看到恢复了,但下次断网可能还会出现。所以我会尽量把问题定位到某一层,再针对这一层修,而不是每次都“重启大法”。
注意:不要一上来就改信道、关防火墙、改DNS。先把“连得上但打不开网页”和“根本连不上”分开,网络故障基本已经解决一半。
2. Windows、Ubuntu和主板WiFi,系统层面怎么救
2.1 Windows:WiFi图标消失、不自动连接、网卡被禁用
Windows下WiFi图标消失,很多人第一反应是重装驱动,但更快的做法是先看设备管理器。
按下Win+X,打开设备管理器,在网络适配器里找有没有“Wireless”“WLAN”或“WiFi”字样的设备。如果一个无线网卡都没有,可能是驱动没有安装,也可能是设备被禁用了。看看设备图标是不是灰色,如果是灰色,右键启用即可。启用完还不行,再考虑驱动问题。
还有一个很容易被忽略的服务:WLAN AutoConfig。这个服务负责无线网络的扫描和连接,如果它没有运行,Windows即使能看到网络,也无法正常连接。在运行框里输入services.msc,找到WLAN AutoConfig,确认状态是“正在运行”,启动类型是“自动”。如果这个服务被手动改成禁用,WiFi图标就会显得非常神秘。
命令行查看无线状态也很有用:
netsh wlan show interfaces netsh wlan show networks第一条会显示当前连接的SSID、信号强度、连接速率。第二条会列出周围能扫描到的无线网络。如果第二条能列出网络但第一条没有连接,说明无线网卡扫描功能正常,问题出在连接配置上。
Win11不自动连接WiFi,一般不是故障,是系统记住了网络但没有触发自动连接。处理办法是进入“设置—网络和Internet—WLAN”,在已知网络里找到目标WiFi,点属性,确认“自动连接”开关已打开。如果还不行,就忘记网络重新连接,清掉保存的认证信息再输入一次密码。这个方法也能解决一部分“频繁掉线后一直连不上”的问题。
2.2 Ubuntu和双系统:识别不到无线网卡时这样处理
双系统用户常遇到一个经典问题:Windows下WiFi正常,切到Ubuntu后找不到无线网卡。这不是网卡坏了,多半是驱动和固件没就位。
先在终端里确认硬件是否被系统识别:
dmesg | grep wireless lspci -nnk | grep -iA3 network rfkill list ip arfkill list特别重要。很多笔记本有无线开关,系统会通过rfkill把无线网卡软屏蔽。如果看到blocked: yes,执行rfkill unblock all,然后重启网络服务。ip a用来确认无线接口是否存在,常见名字是wlan0、wlp2s0等。接口存在但驱动没加载,通常能通过dmesg看到提示。
Intel CNVi这类内置无线网卡在Ubuntu下识别不到,常见原因是内核自带的固件版本太低,或者linux-firmware包没有安装。处理方式是在有网状态下更新系统:
sudo apt update sudo apt install --reinstall linux-firmware sudo reboot问题来了:如果现在就是因为没有WiFi才想装驱动呢?最简单的应急方式是手机USB网络共享。手机数据线连接电脑,开启USB网络共享,Ubuntu一般会把它识别成一张有线网卡,不需要额外驱动就能上网。等网络通了,再执行驱动安装。这个方法几乎能解决“装驱动需要联网,但联网需要驱动”的死循环。
2.3 主板自带WiFi:BIOS、模块开关和天线都是变量
使用板载WiFi主板的人,有时候会遇到另一个问题:网卡在BIOS里被关掉了。主板上的无线网卡如果是M.2或CNVi模块,BIOS里通常有对应的开关,命名可能包含Wireless、WLAN、WiFi Module等。如果BIOS关掉了这个模块,进入系统后设备管理器里根本看不到网卡。
我遇到过有人重装驱动无效,最后发现是BIOS设置恢复默认时把WiFi模块关闭了。处理方式不复杂:开机进BIOS,在板载设备或者周边设备设置里,把无线模块设置为Enabled,保存重启即可。
还有天线。板载WiFi通常附带两根外置天线,如果天线没装或者松了,信号会非常差,表现为能搜索到网络但速率很低、频繁掉线。这不是路由器问题,也不是网卡坏了,把天线拧紧位置调整好,情况会立刻好转。另外,BIOS更新要谨慎。如果主板和当前BIOS版本相差太大,去官网下载更新包时先确认具体型号,尽量用官方工具。BIOS更新本身不会主动提升WiFi性能,它解决的是兼容性和稳定性问题。
3. 没有WiFi的一天,技术人怎么把日子过下去
3.1 手机流量和USB网络共享是第一个应急通道
家里没有WiFi,不等于没有网络。手机自带数据网络,只是流量有限。最直接的做法是开个人热点,让笔记本连接手机热点。不过热点耗电快、发热大,长时间用不建议,应急几分钟可以。
更稳的方式是USB网络共享:手机用数据线连接电脑,在手机设置里打开USB网络共享。Windows和Linux一般都会把它识别成一张有线网卡,连接比WiFi热点更稳定,延迟也更低。这个技巧在系统没装无线驱动、只能用有线做紧急修复时非常管用。
手机热点也有一个隐藏坑:电脑连上热点,但系统还走原来的路由规则,可能访问不了外网。遇到这种情况,先把原来断网的网卡禁用,再看网络状态。大多数场景不需要手动改路由表,禁用掉有问题的网卡就够了。
3.2 断网时还能用局域网:文件传输和本地服务
没有外网不等于没有任何网络。只要电脑和手机连在同一个路由器上,哪怕路由器外网断掉了,局域网依然是通的。
局域网里最常用的场景是传文件。比如电脑上有一个大文件要发给手机,与其绕一圈网盘,不如直接在电脑上开一个临时HTTP文件服务:
python3 -m http.server 8000 --bind 0.0.0.0然后在手机浏览器里访问电脑的局域网IP,比如http://192.168.1.100:8000,就能直接下载文件。这个方式不依赖第三方软件,不需要账号,适合应急。
如果需要传大量文件,可以先把文件夹压缩,再放到这个服务暴露的目录里。如果路由器外网断了,但局域网功能正常,还能继续做本地开发。很多开发工具其实不依赖外网:本地数据库、本地Web服务器、Git本地仓库都可以照常工作。真正需要外网的是拉取依赖、查文档、同步远程仓库。所以长期来看,准备一份离线文档和本地依赖缓存,对开发者来说是件很值得做的事。
3.3 随身WiFi设备能用,但别被“管理工具”套路
随身WiFi这类设备适合临时住处、短租或者不方便拉宽带的场景。它的本质大多是4G/5G上网模块加一个路由功能,通过USB供电,再发射WiFi信号给其他设备使用。
用这类设备要注意三件事:流量资费、设备散热和后台管理。不少随身WiFi会附带一个管理程序,插上电脑后自动弹出来。我的建议是,优先去设备厂商官网或应用商店下载管理工具,不要用论坛或网盘里那种打包好的exe。我见过所谓“工具箱”装完后桌面多出很多推广软件,驱动反而没装对。
还有一种情况也常见:USB随身WiFi插上后,系统里会多出一个虚拟网卡,和电脑原有无线网卡驱动冲突,导致原网卡从设备管理器里消失。遇到这种问题,先把USB设备拔掉,然后在设备管理器里“扫描检测硬件改动”,多数能恢复正常。使用随身WiFi时,位置尽量放在通风处,不要长时间放在封闭的包里跑满速,设备过热会掉线。
4. 想自己写WiFi相关小工具,从这几个方向入门
4.1 用C#或PowerShell读取当前连接的WiFi名称
Windows系统里,最简单的方式是调用netsh命令。虽然它的输出是文本,但用来做小工具起步完全够。用C#读取当前连接的WiFi名称,可以先启动netsh wlan show interfaces,再解析输出里的SSID字段:
using System; using System.Diagnostics; class Program { static void Main() { var psi = new ProcessStartInfo("netsh", "wlan show interfaces") { RedirectStandardOutput = true, UseShellExecute = false, CreateNoWindow = true }; using var p = Process.Start(psi); string output = p.StandardOutput.ReadToEnd(); Console.WriteLine(output); } }运行时会看到SSID、信号强度、连接速率等信息。中文系统里的字段名可能是“SSID 名称”,解析时不要只匹配英文SSID。如果你不想写C#,PowerShell一行也能做到:
netsh wlan show interfaces | Select-String 'SSID'这个命令适合先验证系统层面能不能拿到数据,再决定要不要封装成小工具。做这类工具时,关键是理解netsh的输出结构,而不是一上来就去调用复杂的Native Wifi API。等你的工具需要做连接、断开、批量切换WiFi时,再去研究WlanConnect、WlanDisconnect这些原生接口。
读取操作一般不需要管理员权限,但执行某些设置操作可能需要。另一个值得做的小工具是WiFi质量记录:周期性记录信号强度和连接速率,输出成日志,用来判断“某段时间掉线”是不是信号干扰。这类小工具门槛不高,很适合练手。
4.2 ESP32连WiFi:配网、数据上报和OTA升级
ESP32是很多IoT开发者的入门芯片,自带WiFi和蓝牙,价格不高。它的典型价值是把传感器数据通过WiFi送到局域网或云平台