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.

Linux/AM3358: BeagleBone Black Wireless (BBBWL) - WiLink8 help - Linux configuration of a Wi-Fi mesh network

Part Number: AM3358

Tool/software: Linux

Hardware:

Software

My question is in regards to Mesh Wi-Fi via Wilink8.

  1. Does this OS image com pre-installed with the drivers and other software necessary to configure a mesh network using Wilink8? It appears that this OS image comes with the wlink drivers installed but I haven't found a definitive source to confirm this. My findings have been via the following:
    $ uname -a
    Linux beaglebone 4.14.71-ti-r80 #1 SMP PREEMPT Fri Oct 5 23:50:11 UTC 2018 armv7l GNU/Linux
    
    $ lsmod | grep wl
    wl18xx                110592  0
    wlcore                237568  1 wl18xx
    mac80211              696320  2 wl18xx,wlcore
    cfg80211              622592  3 wl18xx,wlcore,mac80211
    wlcore_sdio            16384  0
    
    $ ls /lib/firmware/ti-connectivity/
    TIInit_11.8.32.bts  wl1271-fw-2.bin     wl127x-fw-4-plt.bin  wl127x-nvs.bin       wl128x-fw-5-plt.bin  wl12xx-nvs.bin
    TIInit_6.2.31.bts   wl1271-fw-ap.bin    wl127x-fw-4-sr.bin   wl128x-fw-3.bin      wl128x-fw-5-sr.bin   wl18xx-conf.bin
    TIInit_6.6.15.bts   wl1271-fw.bin       wl127x-fw-5-mr.bin   wl128x-fw-4-mr.bin   wl128x-fw-ap.bin     wl18xx-fw-2.bin
    TIInit_7.2.31.bts   wl1271-nvs.bin      wl127x-fw-5-plt.bin  wl128x-fw-4-plt.bin  wl128x-fw.bin        wl18xx-fw-3.bin
    wl1251-fw.bin       wl127x-fw-3.bin     wl127x-fw-5-sr.bin   wl128x-fw-4-sr.bin   wl128x-fw-plt-3.bin  wl18xx-fw-4.bin
    wl1251-nvs.bin      wl127x-fw-4-mr.bin  wl127x-fw-plt-3.bin  wl128x-fw-5-mr.bin   wl128x-nvs.bin       wl18xx-fw.bin
    
  2. What is a good resource to learn about how to configure a mesh network using Wilink8 on Linux? This thread shows some attempt to setup a mesh network but the discussion is incomplete.

  • On the OS image above, I was able to do the following on two BBBWL and verify that I can ping (ping6 -I mesh0 fe80::....) between the two devices over mesh wifi.

    # disable services that control wifi hardware..
    sudo systemctl stop wpa_supplicant bb-wl18xx-wlan0.service
    sudo systemctl disable wpa_supplicant bb-wl18xx-wlan0.service
    
    # add logical interface of mesh type, name it mesh0
    iw dev wlan0 interface add mesh0 type mesh
    ip link set wlan0 down
    ip link set mesh0 up
    # join a mesh network with meshid "loopback"
    iw dev mesh0 mesh join loopback
    

    Resources used:

    EDIT:

    Note: Disabling bb-wl18xx-wlan0.service also prevents the network interface over usb0. What apears to be happening is that IP addresses are not being served because dnsmasq (dhcp) gets started by that script.

    This is because bb-wl18xx-wlan0.service calls /usr/bin/bb-wwl18xx-wlan0 which calls /usr/bin/bb-wwl18xx-tether which writes the /etc/dnsmasq.d/SoftAp0 config file and starts the dnsmasq.service.

    To resolve enable the dnsmasq.service:

    sudo systemctl enable dnsmasq.service
    

    Optionally, rename /etc/dnsmasq.d/SoftAp0 to /etc/dnsmasq.d/bb-usb0 and remove all lines with references to SoftAp0. The resulting file should look like this:

    interface=usb0
    interface=usb1
    port=53
    dhcp-authoritative
    domain-needed
    bogus-priv
    expand-hosts
    cache-size=2048
    dhcp-range=usb0,192.168.7.1,192.168.7.1,2m
    dhcp-range=usb1,192.168.6.1,192.168.6.1,2m
    listen-address=127.0.0.1
    listen-address=192.168.7.2
    listen-address=192.168.6.2
    dhcp-option=usb0,3
    dhcp-option=usb0,6
    dhcp-option=usb1,3
    dhcp-option=usb1,6
    
  • Hello,

    In general, wifi related patches for both drivers and wpa_supplicant, have been up-streamed and should be part of the v4.14 kernel.
    So in case you are using v4.14 and latest wpa_supplicant (v2.7) you should have the support there and it looks like it is also basically working for you, right?

    For examples on usage we provide we normally provide sample scripts that are part of the TI processor SDK image and are normally located under /usr/share/wl18xx and include scripts like:
    mesh_start.sh mesh_join.sh etc that demonstrate how to start mesh and join the mesh network.
    If you don't have these scripts in your root you can see them here as well:
    git.ti.com/.../mesh

    Best Regards,
    Eyal
  • Hi Eyal, it does seem to be working, thanks. Note that I did not need to install the TI SDK, this works out of the box on the Debian image linked above.

    The scripts you linked show a "type mp" argument for the "iw" command but reading the iw help output (iw -h) theres is no type "mp", only a type "mesh". This is for iw version 4.9.

    wpa_supplicant is version v2.4