From Noisebridge
Jump to: navigation, search


  • IEEE 802.11 comprises a set of standards for wireless LAN (WLAN) operation.

Regulatory Requirements[edit]

Although it is possible to encode nearly all callsigns in the 6 byte source MAC address field for an 802.11 radio to satisfy the identification requirement for part 97 operation, callsigns can be more than 6 bytes long. Sending a broadcast UDP packet to port 73 with the station identification information will suffice in this case.

Commercial Hardware[edit]


802.11s is a draft amendment to the existing 802.11 standards documents to support mesh networking between WLAN nodes. It supports unicast and multicast routing, and RF-aware dynamic routing using a new dynamic routing protocol dubbed Hybrid Wireless Mesh Protocol (HWMP).

There is some support in the mac80211 stack in the Linux kernel to support an all-software implementation of 802.11s dubbed open80211s.

It is present in kernel 2.6.32 and above, and is backported through the wireless-testing git tree. [Citation Needed]

Hardware requirements for open80211s[edit]

  • A WLAN adapter that has a driver written for the mac80211 framework. Consult the Driver Table to check that it also supports "mesh" as an interface type.
  • Recommended computers
    • Soekris computers with miniPCI slots. These are fairly open, low-power, x86 computers. They're produced in relatively small production runs so they can be somewhat expensive.
    • Ubiquiti RouterStation. A low-power, MIPS computer for WISP applications. Produced at scale, and relatively inexpensive.
    • RouterBoard are low-power, mostly Atheros-based MIPS computers made by WISP supplier MicroTik. Produced at scale and relatively inexpensive.
  • Recommended wireless adapters/controllers
    • Ubiquiti Networks Atheros-based miniPCI Adapters
      • XR2. A high-power 2.4 GHz adapter that supports 5 MHz channels. 28 dBm TXPO.
      • SR2. A high-power 2.4 GHz adapter that supports 5 MHz channels. 26 dBm TXPO.
      • XR5. A high-power 5 GHz adapter that supports 5 MHz channels. 28 dBm TXPO.
      • XR9. A 900 MHz adapter that supports 5 MHz channels inside the 33cm band. 28 dBm.
      • SR9. A 900 MHz adapter that supports 5 MHz channels inside the 33cm band. 20 dBm.
      • XR3-3.5. A 3.4 - 3.7 GHz adapter. Might be usable in the 3.3 - 3.5 GHz band.
      • XR1. A 180-280 MHz VHF adapter that might be able to be modified for use in amateur radio spectrum. Supports 5 MHz channels.
    • Ubiquiti Networks Atheros-based radio systems
      • Bullet are ruggedized radio systems that are powered over PoE and have an integrated N connector. 1 watt TXPO.

Example: configuring an open80211s network under Linux using mac80211_hwsim[edit]

There exists a testing driver in the mac80211 stack in Linux in recent kernels that will create simulated 802.11 devices so that one can test mesh networking even if they don't have proper adapters yet. It creates a configurable number of adapters (default is 2) that will shuttle frames between adapters that are tuned to the same frequency.

  • Before beginning, make sure that you have a recent version of the "iw" utility, as the netlink interface to mac80211 is under constant development.
  • First, load the mac80211_hwsim driver
modprobe mac80211_hwsim
  • You should see some lines in your dmesg like:
[80477.585860] mac80211_hwsim: Initializing radio 0
[80477.586051] phy3: Selected rate control algorithm 'minstrel'
[80477.587047] phy3: hwaddr 02:00:00:00:00:00 registered
[80477.587057] mac80211_hwsim: Initializing radio 1
[80477.587326] phy4: Selected rate control algorithm 'minstrel'
[80477.588596] phy4: hwaddr 02:00:00:00:01:00 registered
  • Pick a 32-byte "mesh ID". "hinternet" is used here.
  • Create some mesh interfaces from the two phys that were created (called wlan1 and wlan2 here)
think:~# iw dev wlan1 interface add mesh1 type mp mesh_id hinternet
think:~# iw dev wlan2 interface add mesh2 type mp mesh_id hinternet
  • See the new devices with "iw dev"
think:~# iw dev
	Interface mesh2
		ifindex 22
		type mesh point
	Interface wlan2
		ifindex 19
		type managed
	Interface mesh1
		ifindex 21
		type mesh point
	Interface wlan1
		ifindex 18
		type managed
  • Bring "UP" the mesh interfaces
think:~# ip link set dev mesh1 up
think:~# ip link set dev mesh2 up
  • Tune the interfaces to the same channel
think:~# iw dev mesh1 set channel 1
think:~# iw dev mesh2 set channel 1
  • At this point, the mesh interfaces should be able to "hear" each other and create adjacencies
think:~# iw dev mesh1 station dump
Station 02:00:00:00:01:00 (on mesh1)
	inactive time:	612 ms
	rx bytes:	17352
	rx packets:	171
	tx bytes:	264
	tx packets:	3
	signal:  	-50 dBm
	tx bitrate:	1.0 MBit/s
	mesh llid:	46469
	mesh plid:	33020
	mesh plink:	ESTAB
think:~# iw dev mesh2 station dump
Station 02:00:00:00:00:00 (on mesh2)
	inactive time:	912 ms
	rx bytes:	22127
	rx packets:	232
	tx bytes:	594
	tx packets:	8
	signal:  	-50 dBm
	tx bitrate:	1.0 MBit/s
	mesh llid:	33020
	mesh plid:	46469
	mesh plink:	ESTAB