ubuntu14.04 AR5B22 无线网卡连不上 AP 问题解决

Posted Li-Yongjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu14.04 AR5B22 无线网卡连不上 AP 问题解决相关的知识,希望对你有一定的参考价值。

前言

最近在尝试理解 PCIe,手上正好有一个 J1900 小主机,和一张拥有 PCIe 通道的 AR5B22 无线网卡。
AR5B22 使用的驱动是 ath9k,ubuntu 自带这个驱动。所以无线网卡插到 J1900 上直接可以使用。

$ lspci
...
05:00.0 Network controller: Qualcomm Atheros AR9462 Wireless Network Adapter (rev 01)
...

$ ifconfig wlan0
wlan0     Link encap:以太网  硬件地址 48:d2:24:18:ff:47
          inet 地址:192.168.31.49  广播:192.168.31.255  掩码:255.255.255.0
          inet6 地址: fe80::4ad2:24ff:fe18:ff47/64 Scope:Link
          inet6 地址: 240e:3a1:1838:b050:4ad2:24ff:fe18:ff47/64 Scope:Global
          inet6 地址: 240e:3a1:1838:b050:5d2e:dc24:6af6:f841/64 Scope:Global
          inet6 地址: 240e:3a1:1838:b050::316/128 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:1786 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:405 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000
          接收字节:396702 (396.7 KB)  发送字节:101966 (101.9 KB)

由于要研究 PCIe 界面,免不了重新编译 WiFi 驱动,加一些 log,分析验证等。
但是出问题了,当我卸载掉 ath9k 再重新安装后,WiFi 始终连不上 AP 了。dmesg 打印错误如下

$ dmesg
...
[34359.515584] wlan0: authenticate with 80:ea:07:c9:d6:4b
[34359.529459] wlan0: send auth to 80:ea:07:c9:d6:4b (try 1/3)
[34359.530900] wlan0: authenticated
[34364.541217] wlan0: aborting authentication with 80:ea:07:c9:d6:4b by local choice (Reason: 3=DEAUTH_LEAVING)

auth 之后就不再进行 association 了,显然 WiFi 出了问题。

尝试

怀疑是两次加载驱动,使网卡重复 load 了网卡固件,导致网卡异常。于是想 reset 一下网卡,但是 PCIe 接口并没有 reset 引脚。

硬件 reset

想到 PCIe 设备支持热拔插,遂拧掉固定无线网卡的螺丝,拔掉无线网卡再插上,结果,哦吼,设备重启了!尝试了三次发现均会重启,也不敢再试了,可别把设备烧了。难道我对热拔插有什么误解??

软件 reset

硬件 reset 不成,有没有软件 reset 的方法。经过一番搜索,找到了一个办法

# echo 1 > /sys/class/pci_bus/0000\\:05/device/reset

下发命令后发现并没有任何动作,软复位也宣告失败。

rfkill

又想到了 rfkill 命令

$ rfkill list
1: hci0: Bluetooth
        Soft blocked: no
        Hard blocked: no
2: phy0: Wireless LAN
        Soft blocked: no
        Hard blocked: no

$ rfkill block 2
$ rfkill unblock 2

还是不行,重连时内核仍然打印

wlan0: aborting authentication with 80:ea:07:c9:d6:4b by local choice (Reason: 3=DEAUTH_LEAVING)

连接不加密AP

网上还搜到了一个办法,说是连不上 wpa 加密方式的 AP,能够连上不加密的 AP。于是又翻箱倒柜的找来了一台路由器,开启一个不加密的 AP(iphone 和 win10 制造的热点必须启用加密)。控制WiFi重连,依旧失败!😂😂

解决

最后,想到 WiFi 作为 station 去连接 AP 的功能是 wpa_supplicant 守护进程实现的,会不会是在卸载并安装驱动后,该进程异常了。那就先杀掉重启该进程试一下。
kill 完刚想重启,发现 WiFi 已经开始重连了,应该是系统自动又启动了 wpa_supplicant 进程,ps 查看下过不其然,wpa_supplicant 已经启动了。也就在这时,突然发现,WiFi 连接成功了!
原来是 wpa_supplicant 进程的问题。
解决,撒花!🎉🎉🎉

以上是关于ubuntu14.04 AR5B22 无线网卡连不上 AP 问题解决的主要内容,如果未能解决你的问题,请参考以下文章

安装ubuntu14.04后,开机没有没有无线网卡驱动

ubuntu 14.04 E450c 连不上网问题

ubuntu14.04怎么给无线网卡配置静态IP

黑苹果无线显卡型号

记录Ubuntu 14.04 下安装无线网卡驱动解决无法连接WiFi的过程

Thinkpad E430 Ubuntu 14.04 无线网卡驱动