NetGear AC1200 A6210

  • In this section, you are going to learn

  • How to load netgear wifi linux driver for NetGear AC1200 A6210-100PES USB Wi-Fi Adapter

Diagram

Features

Hardware Interface

USB 2.0

Compatible Devices

Laptop, Desktop

Data Link Protocol

USB

Data Transfer Rate

1200 Megabits Per Second

Item Weight

0.09 Kilograms

#

Version

Ubuntu

Ubuntu 22.04 64 bit

Linux Kernel

6.9.0

Wifi chip

NetGear

Chipset version

NetGear A6210

  • Insert the wifi usb adapter to the usb port:

  • Check the wifi chipset by running the below command

test:~$ lsusb
Bus 002 Device 011: ID 0846:9053 NetGear, Inc. A6210
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 413c:301a Dell Computer Corp. Dell MS116 Optical Mouse
Bus 001 Device 002: ID 0461:0010 Primax Electronics, Ltd HP PR1101U / Primax PMX-KPR1101U Keyboard
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  • Check the dmesg output by running the below command:

test:~$ sudo dmesg
[350373.768384] usb 2-5: USB disconnect, device number 10
[350376.064380] usb 2-5: new SuperSpeed USB device number 11 using xhci_hcd
[350376.086666] usb 2-5: New USB device found, idVendor=0846, idProduct=9053, bcdDevice= 1.00
[350376.086679] usb 2-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[350376.086685] usb 2-5: Product: A6210
[350376.086690] usb 2-5: Manufacturer: NETGEAR
[350376.086693] usb 2-5: SerialNumber: 100
  • Stop applications by running the commands below:

test@test-V520-15IKL:~/linux-6.9$ pwd
/home/test/linux-6.9

test:~/linux-6.9$ sudo systemctl stop NetworkManager.service

test:~/linux-6.9$ sudo killall wpa_supplicant hostapd

test:~/linux-6.9$ ps -N | grep -i wpa_supplicant

test:~/linux-6.9$ ps -N | grep -i hostapd
  • Run lsmod commands:

test:~/linux-6.9$ lsmod | grep -i 80211
mac80211             1712128  10 mt792x_lib,mt76,mt76x2e,mt76x0e,mt76x02_lib,mt76x02_usb,mt76x0_common,mt76x2u,mt76_connac_lib,mt76x0u
lib80211_crypt_tkip    24576  0
lib80211_crypt_ccmp    16384  0
lib80211_crypt_wep     12288  0
libarc4                12288  3 lib80211_crypt_tkip,lib80211_crypt_wep,mac80211
lib80211               16384  3 lib80211_crypt_tkip,lib80211_crypt_wep,lib80211_crypt_ccmp
cfg80211             1376256  7 mt76,mt76x02_lib,mac80211,mt76x02_usb,mt76x0_common,mt76x2_common,mt76_connac_lib

test:~/linux-6.9$ lsmod | grep -i mt76
mt7663s                16384  0
mt7663u                16384  0
mt7663_usb_sdio_common    12288  2 mt7663u,mt7663s
mt7615e                28672  0
mt7615_common         143360  4 mt7663_usb_sdio_common,mt7615e,mt7663u,mt7663s
mt7603e                77824  0
mt76x2u                28672  0
mt76x2e                24576  0
mt76x2_common          28672  2 mt76x2e,mt76x2u
mt76x0e                16384  0
mt76x0u                20480  0
mt76x0_common          53248  2 mt76x0e,mt76x0u
mt76_connac_lib       106496  12 mt792x_lib,mt7921s,mt7996e,mt7663_usb_sdio_common,mt7921e,mt7915e,mt7615e,mt7663u,mt7615_common,mt7921_common,mt7663s,mt7921u
mt76x02_usb            24576  2 mt76x2u,mt76x0u
mt76x02_lib           114688  7 mt76x2e,mt76x0e,mt76x02_usb,mt76x0_common,mt76x2u,mt76x2_common,mt76x0u
mt76_sdio              32768  2 mt7921s,mt7663s
mt76_usb               40960  6 mt792x_usb,mt7663u,mt76x02_usb,mt76x2u,mt76x0u,mt7921u
mt76                  139264  25 mt792x_lib,mt7921s,mt7996e,mt7663_usb_sdio_common,mt792x_usb,mt76x2e,mt76x0e,mt7921e,mt76_usb,mt7915e,mt76x02_lib,mt7615e,mt7663u,mt76x02_usb,mt7615_common,mt7921_common,mt76x0_common,mt7663s,mt76_sdio,mt76x2u,mt76x2_common,mt76_connac_lib,mt7603e,mt76x0u,mt7921u
mac80211             1712128  19 mt792x_lib,mt76,mt7996e,mt7663_usb_sdio_common,mt76x2e,mt76x0e,mt7915e,mt76x02_lib,mt7615e,mt7663u,mt76x02_usb,mt7615_common,mt7921_common,mt76x0_common,mt7663s,mt76x2u,mt76_connac_lib,mt7603e,mt76x0u
cfg80211             1376256  12 mt76,mt7996e,mt7915e,mt76x02_lib,mac80211,mt76x02_usb,mt7615_common,mt7921_common,mt76x0_common,mt76x2_common,mt76_connac_lib,mt7603e
  • Now, remove drivers by executing rmmod command as shown below:

test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt7996e
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt7921u
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt7921s
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt7921e
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt7921-common
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt7915e
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt7663s
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt7663u
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt7663-usb-sdio-common
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt7615e
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt7615-common
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt7603e
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt76x2u
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt76x2e
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt76x2-common
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt76x0e
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt76x0u
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt76x0-common
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt792x-usb
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt792x-lib
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt76-connac-lib
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt76x02-usb
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt76x02-lib
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt76-sdio
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt76-usb
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mt76
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod mac80211
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod lib80211_crypt_tkip
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod lib80211_crypt_ccmp
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod lib80211_crypt_wep
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod libarc4
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod lib80211
test@test-V520-15IKL:~/linux-6.9$ sudo rmmod cfg80211
$ cd /home/test/linux-6.9
  • Check current directory:

test@test-V520-15IKL:~/linux-6.9$ pwd
/home/test/linux-6.9
  • Start compilation for wireless folder:

test@test-V520-15IKL:~/linux-6.9$ sudo make -C . M=net/wireless/
make: Entering directory "/home/test/linux-6.9"
  CC [M]  net/wireless/core.o
  LD [M]  net/wireless/cfg80211.o
  CC [M]  net/wireless/lib80211.o
  CC [M]  net/wireless/lib80211_crypt_wep.o
  CC [M]  net/wireless/lib80211_crypt_ccmp.o
  CC [M]  net/wireless/lib80211_crypt_tkip.o
  MODPOST net/wireless/Module.symvers
  LD [M]  net/wireless/cfg80211.ko
  LD [M]  net/wireless/lib80211.ko
  LD [M]  net/wireless/lib80211_crypt_wep.ko
  LD [M]  net/wireless/lib80211_crypt_ccmp.ko
  LD [M]  net/wireless/lib80211_crypt_tkip.ko
make: Leaving directory "/home/test/linux-6.9"
  • Run make command for mac80211 folder:

test@test-V520-15IKL:~/linux-6.9$ sudo make -C . M=net/mac80211
make: Entering directory "/home/test/linux-6.9"
  CC [M]  net/mac80211/main.o
  LD [M]  net/mac80211/mac80211.o
  MODPOST net/mac80211/Module.symvers
  LD [M]  net/mac80211/mac80211.ko
make: Leaving directory "/home/test/linux-6.9"
  • Run make command for mt76 folder:

test@test-V520-15IKL:~/linux-6.9$ sudo make -C . M=drivers/net/wireless/mediatek/mt76
make: Entering directory "/home/test/linux-6.9"
  CC [M]  drivers/net/wireless/mediatek/mt76/mt7603/main.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt7603/mt7603e.o
  CC [M]  drivers/net/wireless/mediatek/mt76/mt7615/mmio.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt7615/mt7615e.o
  CC [M]  drivers/net/wireless/mediatek/mt76/mt7915/mmio.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt7915/mt7915e.o
  CC [M]  drivers/net/wireless/mediatek/mt76/mt7996/mmio.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt7996/mt7996e.o
  MODPOST drivers/net/wireless/mediatek/mt76/Module.symvers
  CC [M]  drivers/net/wireless/mediatek/mt76/mt76.mod.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt76.ko
  CC [M]  drivers/net/wireless/mediatek/mt76/mt76-usb.mod.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt76-usb.ko
  CC [M]  drivers/net/wireless/mediatek/mt76/mt76-sdio.mod.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt76-sdio.ko
  CC [M]  drivers/net/wireless/mediatek/mt76/mt76x02-lib.mod.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt76x02-lib.ko
  CC [M]  drivers/net/wireless/mediatek/mt76/mt76x02-usb.mod.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt76x02-usb.ko
  CC [M]  drivers/net/wireless/mediatek/mt76/mt76-connac-lib.mod.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt76-connac-lib.ko
  CC [M]  drivers/net/wireless/mediatek/mt76/mt792x-lib.mod.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt792x-lib.ko
  CC [M]  drivers/net/wireless/mediatek/mt76/mt792x-usb.mod.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt792x-usb.ko
  CC [M]  drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0u.mod.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0u.ko
  CC [M]  drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0e.mod.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0e.ko
  CC [M]  drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common.mod.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common.ko
  CC [M]  drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common.mod.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common.ko
  CC [M]  drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2e.mod.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2e.ko
  CC [M]  drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2u.mod.o
  LD [M]  drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2u.ko
make: Leaving directory "/home/test/linux-6.9"
  • Run find command to search for “.ko” files in ./net/wireless directory:

test@test-V520-15IKL:~/linux-6.9$ find ./net/wireless/ -iname "*.ko" -print
./net/wireless/lib80211_crypt_wep.ko
./net/wireless/cfg80211.ko
./net/wireless/lib80211_crypt_ccmp.ko
./net/wireless/lib80211.ko
./net/wireless/lib80211_crypt_tkip.ko
  • Run find command to search for “.ko” files in ./net/mac80211 directory:

test@test-V520-15IKL:~/linux-6.9$ find ./net/mac80211/ -iname "*.ko" -print
./net/mac80211/mac80211.ko
  • Run find command to search for “.ko” files in ./drivers/net/wireless/mediatek/mt76/ directory:

test@test-V520-15IKL:~/linux-6.9$ find ./drivers/net/wireless/mediatek/mt76/ -iname "*.ko" -print
./drivers/net/wireless/mediatek/mt76/mt7921/mt7921-common.ko
./drivers/net/wireless/mediatek/mt76/mt7921/mt7921u.ko
./drivers/net/wireless/mediatek/mt76/mt7921/mt7921s.ko
./drivers/net/wireless/mediatek/mt76/mt7921/mt7921e.ko
./drivers/net/wireless/mediatek/mt76/mt7603/mt7603e.ko
./drivers/net/wireless/mediatek/mt76/mt76-sdio.ko
./drivers/net/wireless/mediatek/mt76/mt76x02-lib.ko
./drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common.ko
./drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0e.ko
./drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0u.ko
./drivers/net/wireless/mediatek/mt76/mt76.ko
./drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2e.ko
./drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common.ko
./drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2u.ko
./drivers/net/wireless/mediatek/mt76/mt7615/mt7615e.ko
./drivers/net/wireless/mediatek/mt76/mt7615/mt7663s.ko
./drivers/net/wireless/mediatek/mt76/mt7615/mt7663-usb-sdio-common.ko
./drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common.ko
./drivers/net/wireless/mediatek/mt76/mt7615/mt7663u.ko
./drivers/net/wireless/mediatek/mt76/mt792x-usb.ko
./drivers/net/wireless/mediatek/mt76/mt76-connac-lib.ko
./drivers/net/wireless/mediatek/mt76/mt792x-lib.ko
./drivers/net/wireless/mediatek/mt76/mt76-usb.ko
./drivers/net/wireless/mediatek/mt76/mt7996/mt7996e.ko
./drivers/net/wireless/mediatek/mt76/mt7915/mt7915e.ko
./drivers/net/wireless/mediatek/mt76/mt76x02-usb.ko
  • Remove the following .zst files

test@test-V520-15IKL:~/linux-6.9$ find  /lib/modules/6.9.0/kernel/net/wireless/ -iname "*.ko.zst*" -print
/lib/modules/6.9.0/kernel/net/wireless/lib80211_crypt_wep.ko.zst
/lib/modules/6.9.0/kernel/net/wireless/lib80211_crypt_ccmp.ko.zst
/lib/modules/6.9.0/kernel/net/wireless/lib80211.ko.zst
/lib/modules/6.9.0/kernel/net/wireless/cfg80211.ko.zst
/lib/modules/6.9.0/kernel/net/wireless/lib80211_crypt_tkip.ko.zst

test@test-V520-15IKL:~/linux-6.9$ find  /lib/modules/6.9.0/kernel/net/mac80211/ -iname "*.ko.zst*" -print
/lib/modules/6.9.0/kernel/net/mac80211/mac80211.ko.zst

test@test-V520-15IKL:~/linux-6.9$ find  /lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/ -iname "*.ko.zst*" -print
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt76-sdio.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt7921/mt7921u.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt7921/mt7921-common.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt7921/mt7921e.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt7921/mt7921s.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt76-usb.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt76-connac-lib.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0u.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0e.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt76x02-usb.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2u.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2e.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7663s.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7663-usb-sdio-common.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7663u.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7615e.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt792x-usb.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt7996/mt7996e.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt792x-lib.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt76.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt7915/mt7915e.ko.zst
/lib/modules/6.9.0/kernel/drivers/net/wireless/mediatek/mt76/mt76x02-lib.ko.zst
  • You may restart your system using the command below:

$ reboot
  • Repeat Step 3

$ cd /home/test/linux-6.9
  • Repeat Step 5

test@test-V520-15IKL:~/linux-6.9$ sudo dmesg -c
sudo insmod ./net/wireless/cfg80211.ko
sudo insmod ./net/wireless/lib80211.ko
sudo insmod ./lib/crypto/libarc4.ko
sudo insmod ./net/wireless/lib80211_crypt_wep.ko
sudo insmod ./net/wireless/lib80211_crypt_ccmp.ko
sudo insmod ./net/wireless/lib80211_crypt_tkip.ko
sudo insmod ./net/mac80211/mac80211.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt76.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt76-usb.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt76-sdio.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt76x02-lib.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt76x02-usb.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt76-connac-lib.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt792x-lib.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt792x-usb.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0-common.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0u.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0e.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2-common.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2e.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2u.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt7603/mt7603e.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt7615/mt7615-common.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt7615/mt7615e.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt7615/mt7663-usb-sdio-common.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt7615/mt7663u.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt7615/mt7663s.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt7915/mt7915e.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt7921/mt7921-common.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt7921/mt7921e.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt7921/mt7921s.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt7921/mt7921u.ko
sudo insmod drivers/net/wireless/mediatek/mt76/mt7996/mt7996e.ko
test@test-V520-15IKL:~/linux-6.9$ lsmod
Module                  Size  Used by
mt7996e               200704  0
mt7921u                16384  0
mt7921s                20480  0
mt7921e                20480  0
mt7921_common          81920  3 mt7921s,mt7921e,mt7921u
mt7915e               212992  0
mt7663s                16384  0
mt7663u                16384  0
mt7663_usb_sdio_common    12288  2 mt7663u,mt7663s
mt7615e                28672  0
mt7615_common         143360  4 mt7663_usb_sdio_common,mt7615e,mt7663u,mt7663s
mt7603e                77824  0
mt76x2u                28672  0
mt76x2e                24576  0
mt76x2_common          28672  2 mt76x2e,mt76x2u
mt76x0e                16384  0
mt76x0u                20480  0
mt76x0_common          53248  2 mt76x0e,mt76x0u
mt792x_usb             16384  1 mt7921u
mt792x_lib             73728  5 mt7921s,mt792x_usb,mt7921e,mt7921_common,mt7921u
mt76_connac_lib       106496  12 mt792x_lib,mt7921s,mt7996e,mt7663_usb_sdio_common,mt7921e,mt7915e,mt7615e,mt7663u,mt7615_common,mt7921_common,mt7663s,mt7921u
mt76x02_usb            24576  2 mt76x2u,mt76x0u
mt76x02_lib           114688  7 mt76x2e,mt76x0e,mt76x02_usb,mt76x0_common,mt76x2u,mt76x2_common,mt76x0u
mt76_sdio              32768  2 mt7921s,mt7663s
mt76_usb               40960  6 mt792x_usb,mt7663u,mt76x02_usb,mt76x2u,mt76x0u,mt7921u
mt76                  139264  25 mt792x_lib,mt7921s,mt7996e,mt7663_usb_sdio_common,mt792x_usb,mt76x2e,mt76x0e,mt7921e,mt76_usb,mt7915e,mt76x02_lib,mt7615e,mt7663u,mt76x02_usb,mt7615_common,mt7921_common,mt76x0_common,mt7663s,mt76_sdio,mt76x2u,mt76x2_common,mt76_connac_lib,mt7603e,mt76x0u,mt7921u
mac80211             1712128  19 mt792x_lib,mt76,mt7996e,mt7663_usb_sdio_common,mt76x2e,mt76x0e,mt7915e,mt76x02_lib,mt7615e,mt7663u,mt76x02_usb,mt7615_common,mt7921_common,mt76x0_common,mt7663s,mt76x2u,mt76_connac_lib,mt7603e,mt76x0u
lib80211_crypt_tkip    24576  0
lib80211_crypt_ccmp    16384  0
lib80211_crypt_wep     12288  0
libarc4                12288  3 lib80211_crypt_tkip,lib80211_crypt_wep,mac80211
lib80211               16384  3 lib80211_crypt_tkip,lib80211_crypt_wep,lib80211_crypt_ccmp
cfg80211             1376256  12 mt76,mt7996e,mt7915e,mt76x02_lib,mac80211,mt76x02_usb,mt7615_common,mt7921_common,mt76x0_common,mt76x2_common,mt76_connac_lib,mt7603e
test@test-V520-15IKL:~/linux-6.9$ iwconfig
lo        no wireless extensions.

enp1s0    no wireless extensions.

wlx44a56e63a637  IEEE 802.11  ESSID:off/any
  Mode:Managed  Access Point: Not-Associated   Tx-Power=3 dBm
  Retry short limit:7   RTS thr:off   Fragment thr:off
  Encryption key:off
  Power Management:on
  • Open below files with vim and add prints in module_init and module_exit fucntions:

test:linux-6.9$ pwd
/home/test/linux-6.9

./net/wireless/lib80211_crypt_wep.c
./net/wireless/lib80211.c
./net/wireless/lib80211_crypt_tkip.c
./net/wireless/lib80211_crypt_ccmp.c
./net/wireless/core.c
./net/mac80211/main.c
./drivers/net/wireless/mediatek/mt76/mt7603/main.c
./drivers/net/wireless/mediatek/mt76/mt7615/mmio.c
./drivers/net/wireless/mediatek/mt76/mt7996/mmio.c
./drivers/net/wireless/mediatek/mt76/mt7915/mmio.c
  • Open nl80211.c file with vim, add prints in all .doit functions in nl80211_small_ops

test:linux-6.9/net/wireless$ vi nl80211.c
static const struct genl_small_ops nl80211_small_ops[] = {
        {
                .cmd = NL80211_CMD_SET_WIPHY,
                .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = nl80211_set_wiphy,
                .flags = GENL_UNS_ADMIN_PERM,
        },
        {
                .cmd = NL80211_CMD_GET_INTERFACE,
                .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = nl80211_get_interface,
                .dumpit = nl80211_dump_interface,
                /* can be retrieved by unprivileged users */
                .internal_flags = IFLAGS(NL80211_FLAG_NEED_WDEV),
        },
        {
                .cmd = NL80211_CMD_SET_INTERFACE,
                .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = nl80211_set_interface,
                .flags = GENL_UNS_ADMIN_PERM,
                .internal_flags = IFLAGS(NL80211_FLAG_NEED_NETDEV |
                 NL80211_FLAG_NEED_RTNL),
        },
  • Open cfg.c file with vim, add prints in all functions in mac80211_config_ops

test:linux-6.9/net/mac80211$ vi cfg.c
const struct cfg80211_ops mac80211_config_ops = {
        .add_virtual_intf = ieee80211_add_iface,
        .del_virtual_intf = ieee80211_del_iface,
        .change_virtual_intf = ieee80211_change_iface,
        .start_p2p_device = ieee80211_start_p2p_device,
        .stop_p2p_device = ieee80211_stop_p2p_device,
  • Open usb_main.c file with vim, add prints in all functions in mt76x2u_ops

test:linux-6.9/drivers/net/wireless/mediatek/mt76/mt76x2$ vi usb_main.c
const struct ieee80211_ops mt76x2u_ops = {
        .add_chanctx = ieee80211_emulate_add_chanctx,
        .remove_chanctx = ieee80211_emulate_remove_chanctx,
        .change_chanctx = ieee80211_emulate_change_chanctx,
        .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx,
        .tx = mt76x02_tx,
        .start = mt76x2u_start,
        .stop = mt76x2u_stop,
        .add_interface = mt76x02_add_interface,
  • Open iface.c file with vim, add prints in all functions in ieee80211_dataif_ops

test:linux-6.9/net/mac80211$ vi ./iface.c
static const struct net_device_ops ieee80211_dataif_ops = {
        .ndo_open               = ieee80211_open,
        .ndo_stop               = ieee80211_stop,
        .ndo_uninit             = ieee80211_uninit,
        .ndo_start_xmit         = ieee80211_subif_start_xmit,
        .ndo_set_rx_mode        = ieee80211_set_multicast_list,
        .ndo_set_mac_address    = ieee80211_change_mac,
        .ndo_get_stats64        = ieee80211_get_stats64,
        .ndo_setup_tc           = ieee80211_netdev_setup_tc,
};