Links and notes as I learn wireless device driver development.

{i} Links to all subpages are in the upper right corner of this website.



Adrian Chadd suggested looking at the following features (roughly in that order):


Adrian Chadd suggested I should spoke to ivadasz (Imre Vadász) from DragonFly BSD. I gained a lot of valuable insights:

  1. Imre works on iwn (not iwm).

    1. Commits are available here.

      1. Adrian has been merging a lot of those to FreeBSD.
    2. Updates and fixes of the driver.
    3. Newer hardware support (AC3168 and AC8265).
    4. Imre said that he's syncing against the Linux-4.7.2's iwlwifi driver.

    5. He didn't work on 11n and 11ac support.
  2. iwm needs fixing in how it interacts with the net80211 state machine (for associating/disassociating with access points and so on)

  3. OpenBSD-stable has basic 11n support in iwm thanks to Stefan Sperling (stsp at OpenBSD). OpenBSD-current should have MIMO support although it hasn't been tested by Imre personally.

  4. Difference between iwm and iwn:

    1. iwm is a driver for Intel WiFi hardware starting from AC7260 and AC3160. At the moment the code in DragonFly BSD and FreeBSD only has support for 11a, 11b and 11g modes.

    2. iwn is a driver for older Intel WiFi hardware

  5. iwm and iwn counterparts in Linux. Imre said:

    In Linux the code corresponding to iwm and iwn lives in drivers/net/wireless/intel/iwlwifi. There is various common code there, and in the pcie subdirectory. And basically the dvm subdirectory contains code exclusive to hardware supported by iwn, and stuff corresponding to iwm lives in the mvm subdirectory.

  6. Why 11ac doesn't work during FreeBSD installation? Imre said:

    You'll need to load iwm manually during installation. In regular boot after installing, the iwm driver module should be loaded automatically. Since iwm needs to load the firmware quite early during attachment, it doesn't work properly when loading the module in the bootloader or adding it to the kernel configuration to statically link it; One would need to load the correct firmware module as well from the loader.


DragonFly BSD




I am not sure about sys/dev/pci. It seems like I've not found the proper directories yet.


According to the iwm(4) manpage from OpenBSD-current:


Kyua is designed for userland applications. It might come handy if I can trigger userland behaviour

Adrian uses iperf.

Getting iperf to do UDP quickly:

   1 # Example for getting 100Mbit of UDP for 30 seconds.
   2 # Server side:
   3 iperf -s -u -i 1
   4 # Client side:
   5 iperf -s -u -i 1 -t 300 -b 100m <ip address>

Useful for testing Wi-Fi:

Mailing list threads

  1. Doing 802.11ac drivers for GSoC 2017

See also

[NEW] indicates that I've not read it yet (and most often just scanned through)

Special thanks to


MateuszPiotrowski/Drivers (last edited 2018-04-09T16:14:24+0000 by MateuszPiotrowski)