在 rock 3a 系列板子上配置无线网,需要单独购买网卡。一开始在淘宝买了一块 Intel 7265 无线网卡(rock 3a 官方限定的,应该其它型号也可以,但是需要注意内核版本),使用体验还可以。后来又采购了一批 rock 3a 的板子,于是又按照原来的单子买了一块 Intel 7265 无线网卡,但是接上去之后找不到无线网卡,以下记录一下排查过程和思考。
一、问题描述
硬件环境:
- Rock 3A 开发板
- Intel 7265 无线网卡(M.2 接口)
问题现象:
问题猜测:
- 最糟糕的情形是硬件是个坏的,买了也很久了没做过测试可能不给换了
- 其次可能是网卡适配问题,但是为什么另一块网卡可以用呢?
二、问题排查
2.1 硬件排查
从网上了解到 lspci
命令可以查看主板(开发板)上接入的 PCI 设备(根据实际应用发现也可以查看 M.2 设备)
1 2 3
| # lspci 输出 00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01) 01:00.0 Network controller: Intel Corporation Wireless 7265 (rev 48)
|
从上面 lspci
的输出可以看出来,应该不是硬件坏了,因为硬件的版本还是可以看到的。
查找到 -k
参数可以看对应的驱动程序,内核模块
1 2 3 4 5 6
| # lspci -k 输出 00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01) Kernel driver in use: pcieport lspci: Unable to load libkmod resources: error -12 01:00.0 Network controller: Intel Corporation Wireless 7265 (rev 48) Subsystem: Intel Corporation Dual Band Wireless-AC 7265
|
从上面我以为找到了重点:lspci: Unable to load libkmod resources: error -12
,但是我在另一块开发板上也发现了同样的问题。
再次使用 -v
参数查看详细的信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| # lspci -v 输出 00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01) (prog-if 00 [Normal decode]) Flags: bus master, fast devsel, latency 0, IRQ 108 Bus: primary=00, secondary=01, subordinate=ff, sec-latency=0 I/O behind bridge: [disabled] Memory behind bridge: 00900000-009fffff [size=1M] Prefetchable memory behind bridge: [disabled] Expansion ROM at 300a00000 [virtual] [disabled] [size=64K] Capabilities: [40] Power Management version 3 Capabilities: [50] MSI: Enable+ Count=16/32 Maskable- 64bit+ Capabilities: [70] Express Root Port (Slot-), MSI 00 Capabilities: [b0] MSI-X: Enable- Count=1 Masked- Capabilities: [100] Advanced Error Reporting Capabilities: [148] Secondary PCI Express Capabilities: [160] L1 PM Substates Capabilities: [170] Vendor Specific Information: ID=0002 Rev=4 Len=100 <?> Kernel driver in use: pcieport lspci: Unable to load libkmod resources: error -12
01:00.0 Network controller: Intel Corporation Wireless 7265 (rev 48) Subsystem: Intel Corporation Dual Band Wireless-AC 7265 Flags: fast devsel, IRQ 107 Memory at 300900000 (64-bit, non-prefetchable) [size=8K] Capabilities: [c8] Power Management version 3 Capabilities: [d0] MSI: Enable- Count=1/1 Maskable- 64bit+ Capabilities: [40] Express Endpoint, MSI 00 Capabilities: [100] Advanced Error Reporting Capabilities: [140] Device Serial Number 64-80-99-ff-ff-a8-34-a5 Capabilities: [14c] Latency Tolerance Reporting Capabilities: [154] L1 PM Substates
|
同样的,这些信息也和另外一块板子上一模一样,没有参考价值。
在使用 -k
参数查看内核信息时,并没有看到有内核信息输出,所以问题是不是出在内核驱动上?于是想到了 dmesg
命令。
2.2 驱动排查
dmesg
命令可以查看开机信息,可以看各个模块是否加载成功。查看 dmesg
输出:
1 2 3 4 5 6 7 8 9 10 11 12
| # dmesg 输出(部分) [ 5.735812] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-7265-17.ucode failed with error -2 [ 5.735933] iwlwifi 0000:01:00.0: no suitable firmware found! [ 5.736069] iwlwifi 0000:01:00.0: iwlwifi-7265-17 is required [ 5.736093] iwlwifi 0000:01:00.0: check git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git [ 5.969330] usbcore: registered new interface driver btusb [ 5.988375] Bluetooth: hci0: read Intel version: 370810011002270d00 [ 5.990701] bluetooth hci0: Direct firmware load for intel/ibt-hw-37.8.10-fw-1.10.2.27.d.bseq failed with error -2 [ 5.990737] Bluetooth: hci0: failed to open Intel firmware file: intel/ibt-hw-37.8.10-fw-1.10.2.27.d.bseq (-2) [ 5.993308] Bluetooth: hci0: Intel Bluetooth firmware file: intel/ibt-hw-37.8.bseq [ 5.995534] Bluetooth: hci0: unexpected event for opcode 0xfc2f [ 5.998546] Bluetooth: hci0: Intel firmware patch completed
|
于是就看到了启动时加载 wifi 固件 iwlwifi-7265-17.ucode
和蓝牙固件 intel/ibt-hw-37.8.10-fw-1.10.2.27.d.bseq
都失败了,这两个模块在 /usr/lib/firmware
中,查看固件目录:
1 2 3 4 5 6 7 8
| (blockchain_board) root@rock-3a:/usr/lib/firmware# pwd /usr/lib/firmware (blockchain_board) root@rock-3a:/usr/lib/firmware# ls ath10k intel iwlwifi-cc-a0-46.ucode rtl8723du_config rtl8821cu_config rtl8852bu_config rtl_bt brcm iwlwifi-7265D-29.ucode iwlwifi-ty-a0-gf-a0-59.ucode rtl8723du_fw rtl8821cu_fw rtl8852bu_fw rtlwifi (blockchain_board) root@rock-3a:/usr/lib/firmware# ls intel/ ibt-0041-0041.ddc ibt-0041-0041.sfi ibt-hw-37.8.10-fw-1.10.3.11.e.bseq ibt-hw-37.8.10-fw-22.50.19.14.f.bseq ibt-hw-37.8.bseq (blockchain_board) root@rock-3a:/usr/lib/firmware#
|
可以看到应该是缺了这两个固件,所以 WIFI 才没有启动成功!从列出来的固件可以看出,无线网卡 7265 只有一个 iwlwifi-7265D-29.ucode
固件,应该是 7265 也有不同的固件版本才导致无线网卡会加载失败吧。蓝牙固件也是,只是版本不一样。
2.3 解决
从网上找到这两个固件,放到固件的目录,重启即可解决无线找不到的问题了。
三、思考
我们无法一开始就知道是固件版本的问题,只能从整体的结构上去分析问题到底出在哪里。从整体上分析问题要对整体的结构都有所了解,即使不知道细节,也可以将问题定位到一个很小的范围,这样才能更快更好的解决问题。
原文链接: https://www.delta1037.cn/2023/Bugsfix/无线网卡找不到问题调试/
版权声明: 转载请注明出处.