unblock wifi in rfkill
rfkill block问题
之前在部署arch linux时比较偷懒,没有采用正规的网络设置方法,而是使用脚本来启动有线和无线网络。
start_lan
sudo wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant-my_wifi.conf -D wired -i enp0s25 &
sleep 5
sudo dhcpcd enp0s25start_wifi
sudo ifconfig wlp3s0 down
sleep 1
sudo ifconfig wlp3s0 up
sudo wpa_supplicant -B -c /etc/wpa_supplicant/wpa_supplicant-my_wifi.conf -i wlp3s0
sleep 5
sudo dhcpcd wlp3s0但是我发现发现无线脚本运行时候报错
SIOCSIFFLAGS: Operation not possible due to RF-kill
Successfully initialized wpa_supplicant
rfkill: WLAN soft blocked
dhcpcd-9.2.0 starting
DUID 00:04:62:91:a1:81:51:17:11:cb:b7:60:eb:9e:7a:2e:cc:7b
dhcpcd_prestartinterface: Operation not possible due to RF-kill
wlp3s0: waiting for carrier
timed out
dhcpcd exited为何会出现 rfkill: WLAN soft blocked 报错?
参考 How to unblock something listed in rfkill?
检查 rfkill
显示无线接口存在 Soft blocked
"Hard blocked" 不能通过软件修改,需要检查是否是硬件开关关闭,例如ThinkPad笔记本的侧边有一个硬件拨动开关可以关闭无线设备
"Soft blocked" 是软件关闭,例如失败的驱动或者内核模块导致连接断开
解除block: 这里可以看到无线接口是
2: phy0: Wireless LAN,所以使用这个标号就是2
然后再次
rfkill list all检查就可以看到软件阻断已经关闭
再次执行
但是提示无法从驱动读取 SSID
我发现可能是我在 /etc/wpa_supplicant/wpa_supplicant-my_wifi.conf 有一个配置影响了SSID获取
将这个配置修改成 ap_scan=1 ,即
然后再执行
则正常连接成功,此时使用 iwconfig 可以看到
完整配置
确保无线网卡已经激活
首先使用
rfkill确保无线网卡已经激活
检查无线网卡状态
如果wifi被软件block,需要unblock
停止NetworkManager(如果是Ubuntu桌面版本,通常需要停止NetworkManager)
检查无线网卡接口
使用iwconfig命令检查
显示输出
这里可以看到 Access Point: Not-Associated
如果无线接口没有显示,可能需要激活:
然后扫描无线网络:
此时可以看到周围可用的无线热点名字列表
使用wpa_supplicant连接无线网络
安装wpa_supplicant
wapsupplicant提供了一个
wpa_passphrase工具可以创建配置:
然后我们通过命令行就可以连接
如果终端显示的输出没有报错,就可以在命令行上添加 -B 参数以便在后台运行 wpa_supplicant 进程
连接正常,则使用
iwconfig可以看到已经连接到无线Access Point最后执行dhcp
连接隐藏的无线网络
如果无线网络是隐藏SSID,则需要在 wpa_supplicant.conf 配置中加上
启动时自动连接
参考
Last updated
Was this helpful?