GithubHelp home page GithubHelp logo

Comments (3)

darkdrgn2k avatar darkdrgn2k commented on June 7, 2024

Clean install

✔️ mesh module only

  • bash scripts/mesh-point/install
  • hardcoded meshname in mesh-point script
  • hardcoded frequency in mesh-point script
wlan1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500  

❌ Disabled WPA Kill in mesh-point

wlan1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500

❌ manual meshpoint

sudo ifconfig wlan1 down
sudo iw wlan1 set type mp
sudo ifconfig wlan1 up
sudo iw dev wlan1  mesh join tomesh freq 2412
sudo iw dev wlan1  set mesh_param mesh_fwding=0
wlan1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500

from prototype-cjdns-pi.

darkdrgn2k avatar darkdrgn2k commented on June 7, 2024

Script reported to work:

#!/bin/bash

function isMeshable {
    interface=`iw dev | grep phy#$1 -A 1 | grep Interface | awk '{print $2}'`

    # Check to see if driver reports missing mesh point support
    if  [ -z "$(iw phy phy$1 info | grep 'mesh point')" ]; then
        result='' # Indicate interface is not meshable
    # XRADIO driver reports Mesh Point but does not actually work
    elif [ "$(basename $(readlink /sys/class/net/$interface/device/driver))" == 'xradio_wlan' ]; then
        result='' # Indicate interface is actually not meshable
    else
        result='1' # Indicate interface supports mesh point
    fi

    echo $result
}

set -e

# Set wireless regulatory domain
sudo iw reg set BO

# Find first 802.11s Mesh Point capable device
for wlanfile in /sys/class/net/*; do
    int="$(basename "$wlanfile")"
    if [ -d "/sys/class/net/$int/wireless" ]; then
        phy=$(iw dev "$int" info | grep wiphy | awk '{print $2}')
        if [ ! -z "$phy" ]; then
            if ! [ -z $(isMeshable "$phy") ]; then
                mesh_dev="$int"
            fi
        fi
    fi
done

# If no device found exit with error
if [ -z "$mesh_dev" ]; then
    exit 1
fi

# Shut down the mesh_dev interface
sudo ifconfig $mesh_dev down

# Convert mesh_dev to 802.11s Mesh Point interface
sudo iw $mesh_dev set type mp

# Bring up the mesh_dev interface
sudo ifconfig $mesh_dev up

# Optionally assign IPv4 address to the mesh_dev interface
# sudo ifconfig $mesh_dev 192.168.X.Y

# Join the mesh network
# To join radio in HT40+ htmode (enable 802.11n rates) add  HT40+ to end of this line
sudo iw dev $mesh_dev mesh join HS freq 2412 HT40+

# Disable forwarding since we rely on cjdns to do routing and only uses Mesh Point as a point-to-point link
sudo iw dev $mesh_dev set mesh_param mesh_fwding=0

# Prevent trying to establish connections with nodes under -65 dBm
sudo iw dev $mesh_dev set mesh_param mesh_rssi_threshold -85

# Make a local-link ip out of yggdrasil ip if $mesh_dev does not have a local-link ip
if [ ! -z "$(which yggdrasilctl)" ]; then
  if [ -z "$(ip addr show dev $mesh_dev | grep inet6\ fe)" ]; then
	  ip="$(sudo yggdrasilctl getSelf | grep "IPv6 address" | awk '{print $3}' | cut -d ":" -f5-8)"
	  ip address add dev $mesh_dev scope link fe80::${ip}/64
  fi
fi
pi@raspberrypi:~ $ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.40.240  netmask 255.255.255.0  broadcast 192.168.40.255
        inet6 fddd:869:29bf::b78  prefixlen 128  scopeid 0x0<global>
        inet6 fe80::1a5:fc4d:706:f857  prefixlen 64  scopeid 0x20<link>
        inet6 2607:f2c0:940e:1c00:c08d:4bf9:7902:fd6a  prefixlen 64  scopeid 0x0<global>
        inet6 2607:f2c0:940e:1c00::b78  prefixlen 128  scopeid 0x0<global>
        inet6 fddd:869:29bf:0:3836:a52d:898d:32f6  prefixlen 64  scopeid 0x0<global>
        ether dc:a6:32:04:64:8a  txqueuelen 1000  (Ethernet)
        RX packets 79  bytes 9959 (9.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 121  bytes 54489 (53.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        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

wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether dc:a6:32:04:64:8b  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

wlan1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 18:a6:f7:14:26:d2  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

pi@raspberrypi:~ $ bash test.sh
pi@raspberrypi:~ $ iw dev
phy#1
        Interface wlan1
                ifindex 4
                wdev 0x100000001
                addr 18:a6:f7:14:26:d2
                type mesh point
                channel 1 (2412 MHz), width: 40 MHz, center1: 2422 MHz
                txpower 20.00 dBm
phy#0
        Unnamed/non-netdev interface
                wdev 0x2
                addr 22:a7:2e:81:9d:48
                type P2P-device
                txpower 31.00 dBm
        Interface wlan0
                ifindex 3
                wdev 0x1
                addr dc:a6:32:04:64:8b
                type managed
                channel 34 (5170 MHz), width: 20 MHz, center1: 5170 MHz
                txpower 31.00 dBm
pi@raspberrypi:~ $ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.40.240  netmask 255.255.255.0  broadcast 192.168.40.255
        inet6 fddd:869:29bf::b78  prefixlen 128  scopeid 0x0<global>
        inet6 fe80::1a5:fc4d:706:f857  prefixlen 64  scopeid 0x20<link>
        inet6 2607:f2c0:940e:1c00:c08d:4bf9:7902:fd6a  prefixlen 64  scopeid 0x0<global>
        inet6 2607:f2c0:940e:1c00::b78  prefixlen 128  scopeid 0x0<global>
        inet6 fddd:869:29bf:0:3836:a52d:898d:32f6  prefixlen 64  scopeid 0x0<global>
        ether dc:a6:32:04:64:8a  txqueuelen 1000  (Ethernet)
        RX packets 151  bytes 16432 (16.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 177  bytes 64973 (63.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        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

wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether dc:a6:32:04:64:8b  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

wlan1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 18:a6:f7:14:26:d2  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

pi@raspberrypi:~ $

from prototype-cjdns-pi.

darkdrgn2k avatar darkdrgn2k commented on June 7, 2024

Reported behaviors seems to be because of different drivers the ALFA wireless cards use.

Seems the underlying issue has something to do with drivers, however patching wpa_supplicant works on all devices.

from prototype-cjdns-pi.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.