wifi6 Linux driver - Intel ax201 wifi driver - 2 - pcie/drv.c 認卡
繼 前篇 Dell Inspiron 7490 安裝 Linux kernel
接下來來玩 Intel ax201 Linux wifi driver
可以參考之前寫的這篇 - Intel ax201
https://www.intel.com/content/www/us/en/support/articles/000005511/network-and-io/wireless-networking.html
1. Firmware:
https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi/iwlwifi-qu-48.13675109.0.tgz
copy 到 /lib/firmware 底下即可
2. Driver
4.14 附的是 2016 年的, 還沒有支援 ax 201, 官網建議用 Linux v5.2 以上的.
下載了 Linux v5.4 source code, 在 drivers//net/wireless/intel 底下有 iwlwifi,
也正好 這台 目前只能用 v4.15 以前的 Linux kernel, 剛好可以用來比對學習.
====
一天一小步: pcie/drv.c 認卡
lspci -k 時可以看到
00:14.3 Network controller: Intel Corporation Device 02f0
Subsystem: Intel Corporation Device 4070
在 pcie/drv.c 中
struct pci_device_id iwl_hw_card_ids
{IWL_PCI_DEVICE(0x02F0, 0x4070, iwl_ax201_cfg_quz_hr)},
而 iwl_ax201_cfg_quz_hr 定義在 cfg/22000.c
這方式倒值得學習, 每個 IC 設定 cfg, 宣告在各自 cfg/ 的 .c 檔案
所以得加入檔案, 並在 Makefile 也加入
iwlwifi-$(CONFIG_IWLMVM) += cfg/7000.o cfg/8000.o cfg/9000.o cfg/a000.o cfg/22000.o
接下來來玩 Intel ax201 Linux wifi driver
可以參考之前寫的這篇 - Intel ax201
https://www.intel.com/content/www/us/en/support/articles/000005511/network-and-io/wireless-networking.html
1. Firmware:
https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi/iwlwifi-qu-48.13675109.0.tgz
copy 到 /lib/firmware 底下即可
2. Driver
4.14 附的是 2016 年的, 還沒有支援 ax 201, 官網建議用 Linux v5.2 以上的.
下載了 Linux v5.4 source code, 在 drivers//net/wireless/intel 底下有 iwlwifi,
也正好 這台 目前只能用 v4.15 以前的 Linux kernel, 剛好可以用來比對學習.
====
一天一小步: pcie/drv.c 認卡
lspci -k 時可以看到
00:14.3 Network controller: Intel Corporation Device 02f0
Subsystem: Intel Corporation Device 4070
在 pcie/drv.c 中
struct pci_device_id iwl_hw_card_ids
{IWL_PCI_DEVICE(0x02F0, 0x4070, iwl_ax201_cfg_quz_hr)},
而 iwl_ax201_cfg_quz_hr 定義在 cfg/22000.c
這方式倒值得學習, 每個 IC 設定 cfg, 宣告在各自 cfg/ 的 .c 檔案
所以得加入檔案, 並在 Makefile 也加入
iwlwifi-$(CONFIG_IWLMVM) += cfg/7000.o cfg/8000.o cfg/9000.o cfg/a000.o cfg/22000.o
( 可以檢查一下 /usr/src/linux-4.14.156/.confg
應該CONFIG_IWLMVM=m )
接下來可以在 /usr/src/linux-4.14.156 下, 打 sudo make modules
...
修完後保險起見, 可以做 sudo make modules_install
也可以不做, 直接 rmmod iwlwifi ; 然後 insmod 新的 iwlwifi.ko file.
--
(1) DRV_DESCRIPTION
我們可以修改這行內容, 這樣 insmod 就會先看到是否是自己修改的
(2) 我們可以在 pcie/drv.c::iwl_pci_probe() 一開始, 加入
pr_info("%s enter\n", __func__);
執行如果認到卡, 整個程式會從 iwl_pci_probe() 開始跑起.
一樣 同上 make modules 編譯, 在該 iwlwifi 目錄下會產生 iwlwifi.ko
rmmod iwlwifi / insmod iwlwifi.ko 來執行
另外注意, 如果出現
iwlwifi: Unknown symbol ieee80211_channel_to_frequency (err 0)
iwlwifi: Unknown symbol ieee80211_hdrlen (err 0)
表示 cfg80211 module 還沒載入, 可以執行
modprobe cfg80211
--
執行結果:
Intel(R) Wireless WiFi driver for Linux - 20191129-1
Copyright(c) 2003- 2015 Intel Corporation
iwlwifi: iwl_pci_probe Enter
iwlwifi 0000:00:14.3: enabling device (0000 -> 0002)
不過如預期的後面在 probe 出現 bug 了, 應該還有些變數還沒整合進來.
BUG: Unable to handle Kernel NULL pointer deference at ...
IP: iwl_trans_pcie_alloc+0xf7/0xc60 [iwlwifi]
接續: https://njiot.blogspot.com/2019/12/wifi6-linux-driver-intel-ax201-wifi.html
應該CONFIG_IWLMVM=m )
接下來可以在 /usr/src/linux-4.14.156 下, 打 sudo make modules
並開始修 compile error
...
修完後保險起見, 可以做 sudo make modules_install
也可以不做, 直接 rmmod iwlwifi ; 然後 insmod 新的 iwlwifi.ko file.
--
(1) DRV_DESCRIPTION
我們可以修改這行內容, 這樣 insmod 就會先看到是否是自己修改的
iwl-drv.c
#define DRV_DESCRIPTION "Intel(R) Wireless WiFi driver for Linux - 20191129-1"
(2) 我們可以在 pcie/drv.c::iwl_pci_probe() 一開始, 加入
pr_info("%s enter\n", __func__);
執行如果認到卡, 整個程式會從 iwl_pci_probe() 開始跑起.
一樣 同上 make modules 編譯, 在該 iwlwifi 目錄下會產生 iwlwifi.ko
rmmod iwlwifi / insmod iwlwifi.ko 來執行
另外注意, 如果出現
iwlwifi: Unknown symbol ieee80211_channel_to_frequency (err 0)
iwlwifi: Unknown symbol ieee80211_hdrlen (err 0)
表示 cfg80211 module 還沒載入, 可以執行
modprobe cfg80211
--
執行結果:
Intel(R) Wireless WiFi driver for Linux - 20191129-1
Copyright(c) 2003- 2015 Intel Corporation
iwlwifi: iwl_pci_probe Enter
iwlwifi 0000:00:14.3: enabling device (0000 -> 0002)
不過如預期的後面在 probe 出現 bug 了, 應該還有些變數還沒整合進來.
BUG: Unable to handle Kernel NULL pointer deference at ...
IP: iwl_trans_pcie_alloc+0xf7/0xc60 [iwlwifi]
接續: https://njiot.blogspot.com/2019/12/wifi6-linux-driver-intel-ax201-wifi.html
留言
張貼留言