User Tools

Site Tools


802.11s based wireless mesh network

802.11s is an open-source standard for connecting wireless devices without having to set up infrastructure. It operates on Layer 2 and makes sure that all nodes see each other on Layer 2 (as if they were all plugged in a switch). It means that you will need more Layer 3 infrastructure for TCP/IP to work (assign IP addresses, etc).

:!: TODO clarify the following: To connect end-user devices without infrastructure see P2P (Wi-Fi Direct)FIXME or IBSS (ad-hoc). Ad-Hoc is used in B.A.T.M.A.N and OLSR


Open 802.11s should work with Chaos Calmer (15.05), encryption may have issues.

Relevant issues in the tracker:


Install dependencies (if short on space may use wpad-mesh instead):

# opkg remove wpad-mini
# opkg install wpad authsae

Edit /etc/config/wireless and make sure:

  • radio0 is not disabled
  • radio0 is configured to be compatible on each device (same channel, etc)
  • add an iface entry along these lines:

config wifi-iface 'mesh'
        option network 'mesh'
        option device 'radio0'
        option mode 'mesh'
        option mesh_id 'your-mesh-name' # anything, this connects the nodes into one mesh (plus the password if there's any)
        option encryption 'psk2/aes' # or 'none'
        option key 'your-secret-password'

For a complete list of mesh parameters you can inspect the values of the following variables in Source:


Then reinitialize wifi and see if it worked:

# wifi
# logread -l 20 -f
# iw dev wlan0 station dump

Known Issues

:!: Support for 802.11s (type mesh) depends on wireless driver

:!: 802.11s , P2P-GO or P2P-client (Wi-Fi Direct), IBSS are less often used. There might be bugs.

Use the following to determine if your hardware supports 802.11s mesh.

iw list | grep "Supported interface modes" -A 9

      Supported interface modes:
                 * IBSS
                 * managed
                 * AP
                 * AP/VLAN
                 * WDS
                 * monitor
                 * mesh point
                 * P2P-client
		 * P2P-GO

  • Having multiple mesh points, APs depends on the wireless driver

Example: ath9k in router

iw list
valid interface combinations:
		 * #{ managed, WDS } <= 2048, #{ AP, mesh point } <= 8, #{ P2P-client, P2P-GO } <= 1, #{ IBSS } <= 1,
		   total <= 2048, #channels <= 1, STA/AP BI must match
		 * #{ IBSS, AP, mesh point } <= 1,
		   total <= 1, #channels <= 1, STA/AP BI must match, radar detect widths: { 20 MHz (no HT), 20 MHz }

Example: ath9k_htc USB Stick

iw list
valid interface combinations:
		 * #{ managed, P2P-client } <= 2, #{ AP, mesh point, P2P-GO } <= 2,
		   total <= 2, #channels <= 1

Using the command line CLI

iw is a new nl80211 based CLI configuration utility for wireless devices.more...

Create a new interface "mesh0"

iw phy phy0 interface add mesh0 type mp mesh_id mymesh

Confirm that the new interface exists

ifconfig -a | grep mesh0

     mesh0      Link encap:Ethernet  HWaddr 00:18:39:14:48:B5

Bring up your mesh0 interface

ifconfig mesh0 up

Assign the interface an IP address. ie: 10.0.0.x

ifconfig mesh0

By default, mesh points will use channel 1 and automatically attempt to create peer links with mesh nodes with the same mesh ID and channel.


Use the iw command to display peer links or a table of reachable nodes in your mesh

iw dev $MESH_IFACE station dump
iw dev $MESH_IFACE mpath dump


iw dev $MESH_IFACE station dump
    Station 00:15:6d:84:14:10 (on mesh)
         inactive time:  1320 ms
         rx bytes:   352
         rx packets: 4
         tx bytes:   174
         tx packets: 2
         signal:     -61 dBm
         tx bitrate: 1.0 MBit/s
         mesh llid:  32577
         mesh plid:  15969
         mesh plink: ESTAB
    Station 00:15:6d:84:14:09 (on mesh)
         inactive time:  3370 ms
         rx bytes:   1064
         rx packets: 12
         tx bytes:   545
         tx packets: 7
         signal:     -53 dBm
         tx bitrate: 1.0 MBit/s
         mesh llid:  41036
         mesh plid:  24435
         mesh plink: ESTAB

more background

doc/howto/mesh.80211s.txt · Last modified: 2016/08/08 04:36 by al