This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

WL1835MOD: WiLink Mesh on Beaglebone Black Wireless

Part Number: WL1835MOD

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

 

  • Bob,

    We released latest WiLink8 driver version  R8.8 on kernel 4.19 : https://www.ti.com/tool/WILINK8-WIFI-NLCP

    You can easily update to latest driver by running the scripts. Pls consult : https://www.ti.com/lit/ug/swru561a/swru561a.pdf

    As for mesh , it needs to be enabled in the kernel configuration ( pls consult the above guide , CONFIG_MAC80211_MESH=y  ) and also in the supplicant.

    You may try enabling mesh related kerne configuration flag and rebuild the kernel and kernel modules.

    If you move to R8.8 release, scripts should take care of kernel configuration flags ( including mesh )  , supplicant , driver modules etc. 

    Thanks,

    Saurabh

  • Saurabh,

    Thank you for the reply.  The WiLink drivers seem to be loaded and running in the default Beaglebone Black Wireless system.  I can even initiate a mesh on two devices and ping back and forth by using ...

    iw dev wlan0 interface ass mesh0 type mesh
    iw dev mesh0 mesh join meshtest

    I was hoping to use the TI provided scripts, like mesh_start.sh, mesh_join.sh, and others, but that is when I am getting many unexplained errors.  It seems more like a compatibility issue.  Should the TI WiLink scripts run correctly on a Beaglebone Black Wireless platform, or are they only compatible with the TI AM335x-EVM platform?

    -Bob

  • Bob,

    I would expect these scripts to be platform agnostic.

    We run these scripts successfully on our EVMs all the time.

    Could it have to do with interface name ? We reserve mesh0 for mesh interface and wlan0 for sta interface

    scripts simply adds mesh0 interface and starts wpa supplicant on mesh0

    Regards

    Saurabh