I’m having some difficulties running the basic scripts to start a mesh network. I have two Beaglebone Black Wireless boards. They came with Linux beaglebone 4.14.108. I am following the WiLink mesh instructions in the swaa166.pdf document, and I retrieved the mesh scripts from TI at https://git.ti.com/cgit/wilink8-wlan/wl18xx-target-scripts/tree/mesh?h=R8.7_SP3
When I run the mesh_start.sh script, it responds with the following…
adding mesh0 interface
Successfully initialized wpa_supplicant
Could not set interface mesh0 flags (UP): Device or resource busy
nl80211: Could not set interface 'mesh0' UP
nl80211: deinit ifname=mesh0 disabled_11b_rates=0
mesh0: Failed to initialize driver interface
SIOCSIFFLAGS: Device or resource busy
I don’t understand how a resource can be busy when it was just created. It seems that there may be a conflict with wlan0 when trying to create mesh0, so I issued “ip link set wlan0 down” to take down lan0 before running the script. Then I get the following from the mesh_start.sh script…
Same error first time, but if I run it a second time, I get this …
Successfully initialized wpa_supplicant
nl80211: Could not set interface 'p2p-dev-mesh0' UP
nl80211: deinit ifname=p2p-dev-mesh0 disabled_11b_rates=0
p2p-dev-mesh0: Failed to initialize driver interface
P2P: Failed to enable P2P Device interface
mesh0: CTRL-EVENT-REGDOM-CHANGE init=USER type=COUNTRY alpha2=US
I don’t know where the p2p errors came from since p2p is disabled in the wpa_supplicant.conf file, but it does seem to be creating mesh0. When I issue ifconfig I see the following…
mesh0: flags=-28669<UP,BROADCAST,MULTICAST,DYNAMIC> mtu 1500
inet 10.20.30.40 netmask 255.255.255.0 broadcast 10.20.30.255
ether 12:08:2c:5e:4f:1c txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Now, on to joining mesh. When I issue the mesh_join.sh script, I get syntax errors. I was a bit surprised by this, and double checked the source on the TI website, and it is correct. When I run mesh_join.sh this is what I get…
root@beaglebone:/usr/share/wl18xx# ./mesh_join.sh bobmesh 2412
./mesh_join.sh: 5: [: bobmesh: unexpected operator
./mesh_join.sh: 5: [: bobmesh: unexpected operator
netid=0
=========================
./mesh_join.sh: 29: [: 0: unexpected operator
OK
Line 0: too large mode (value=5 max_value=4)
FAIL
OK
OK
OK
root@beaglebone:/usr/share/wl18xx#
The error from line 5 is from the if statement, and it doesn’t like all of the OR conditions strung together. Since that section is only there to make sure that the command arguments are correct, I just commented out that if statement section. The remaining error is from setting the mesh mode to 5. The command that it is trying to execute is “wpa_cli set_network 0 mode 5”, but it doesn’t seem to want to accept the mode to be 5. Not sure why.
I thought that maybe upgrading to a newer Linux distribution might help, so I upgraded one of the boards BBBW to Linux beaglebone 4.19.94. The output and errors are all the same, except that the p2p errors disappear after the second issuing of mesh_start.sh.
Does anyone know why these scripts are failing? I must be missing something simple, but there is very little information online about this scenario. And when I try to find more examples or resources, I keeping getting the TI Gone page with this …
“As TI continues to improve our customers' online experience, the decision has been made to shut down TI's processors wiki site on January 15, 2021. The content has been aging and becoming less relevant to engineers designing with recent products. The content that continues to be relevant has been migrated to appropriate pages on TI.com.
For questions or inquiries, please contact www.ti.com/support.”
If anyone can offer some assistance in getting mesh to work on a Beaglebone Black Wireless board, I’d greatly appreciate it. Thank you.
-Bob