Temat: Urządzenie 4/32 jako mesh point

Witam,

Mam kilka starych urządzeń, np. WA901ND, czyli z 4MB flash i 32MB RAM.

Używając odpowiednio starej wersji OpenWrt da się na tym postawić AP a nawet WDS. Z odpowiednimi skryptami monitorującymi da się nawet most bezprzewodowy zrobić w miarę stabilny. Jednak naprawdę stabilny most uzyskuję dopiero ostatnio włączając 802.11s.

Ogólnie do 802.11s potrzebuję OpenWrt 19.07, które już na urządzenia 4/32 nawet nie jest kompilowane. Do tego pakiety wpad-mesh-wolfssl i libwolfssl32, które w sumie zajmują ok. 900kB.

Znalazłem coś o nazwie ath79-tiny. Da się tego użyć do kompilacji obrazów 19.07 na urządzenia z flashem 4MB:

http://archive.openwrt.org/releases/19. … th79/tiny/
https://openwrt.ashus.net/
https://forum.openwrt.org/t/openwrt-19- … luci/55458

Patrząc na obrazy tworzone przez użytkownika Ashus, to wycinając LuCI oraz zamieniając wpad-basic na wpad-mesh-wolfssl obrazy będą miały podobny rozmiar. I wydaje mi się, że libwolfssl32 już tam nijak się nie zmieści sad

No i w końcu moje pytanie: Czy jak jeszcze pozmieniam conieco w konfiguracji tych obrazów, to jest szansa, że zmieszczę w obrazie 4MB OpenWrt 19.07 z obsługą 802.11s i SAE? Nie potrzebuję LuCI. Nie potrzebuję IPv6. I pewnie jeszcze coś mógłbym wyciąć... Natomiast na początek muszę się nauczyć jak zrobić taki "własny image" (kiedyś tam coś sobie zbudowałem na starego D-Linka) i przygotować sobie całe środowisko. Czy w ogóle jest szansa na powodzenie, czy nawet nie mam co próbować?

Pozdrwiam,
Marcin

2

Odp: Urządzenie 4/32 jako mesh point

NIe dodawaj luci, nie dodawaj ppp, nie dodawaj odhcpd oraz udhcpc. Nie dodawaj także opkg, nie jest potrzebny bo i tak jest za mało miejsca żeby coś zainstalować.

Jeżeli chcesz sam budować to poradnik znajdziesz u mnie: https://eko.one.pl/?p=openwrt-kompilacja
Na początek nie musisz kompilować całego środkowiska, możesz pobrać imagebuildera na 19.07 i złożyć samodzielnie obraz z pakietów jakie potrzebujesz. Może się zmieści wszystko to co chcesz w 4M.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3 (edytowany przez marcinkk 2023-05-30 15:01:17)

Odp: Urządzenie 4/32 jako mesh point

Pół roku minęło i wróciłem do tematu. Ale coś słabo u mnie z czytaniem dokumentacji, bo chwilę mi zajęło zanim zaczęło cokolwiek działać.

Zacząłem tutaj: https://openwrt.org/docs/guide-develope … uildsystem a potem gdzieś znalazłem, że niby mogę zrobić tak:

make image PACKAGES="-ppp -ppp-mod-pppoe -ip6tables -odhcp6c -kmod-ipv6 -kmod-ip6tables -odhcpd-ipv6only -opkg -wpad-mini wpad-mesh-wolfssl"

Co nijak nie działało hmm

Wyszukałem sobie wreszcie ten wątek. Przeczytałem uważniej odpowiedź Cezarego i chyba coś do mnie dotarło. Spróbuję podsumować i prosiłbym o poprawki, jeżeli coś źle napiszę oraz o uzupełnienie i odpowiedzi na dwa pytania smile

Własny image można stworzyć ze źródeł lub używając imagebuildera:

A) Ze źródeł robimy zgodnie z poradnikiem w podanym wyżej linku albo tym który podał Cezary (https://eko.one.pl/?p=openwrt-kompilacja). Czyli po wydaniu polecenia make menuconfig trzeba wszystkie opcje ustawić a potem tylko wpisujemy make i czekamy. Wersję sprzętu dla której chcemy stworzyć image wybieramy na etapie konfiguracji.

B) W przypadku użycia imagebuildera można używać polecenia jak to podane powyżej, które modyfikuje domyślną konfigurację pakietów usuwając i dodając wybrane opcję. Imagebuilder jest przygotowywany dla konkretnej wersji sprzętu osobno i trzeba za każdym razem pobrać. Przykładowo dla WA901ND odpowiedni będzie ten dostępny tutaj: https://archive.openwrt.org/releases/19 … th79/tiny/

Pytania:

1. Skąd wiem, że przygotowany plik (powiedzmy: openwrt-19.07.10-ath79-tiny-tplink_tl-wa901nd-v1-squashfs-sysupgrade.bin) zawiera wszystko co chciałem i mogę go użyć do aktualizacji oprogramowania? Czy w razie czego gdzieś dostanę komunikat, że jest za duży, czy też muszę go wrzucić na urządzenie, żeby się przekonać?

2. Dobrze zauważyłem, że jeżeli wybieram sobie jakąś opcję w menuconfig, to ewentualne zależności dodają się automatycznie? Podobnie w przypadku imagebuilder? W tym konkretnym przykładzie: dodając wpad-mesh-wolfssl biblioteka libwolfssl doda się automatycznie. Nie muszę analizować potrzebnych mi pakietów, żeby ustalić listę zależności?

4

Odp: Urządzenie 4/32 jako mesh point

1. Tak, jak jest za duży to się nie zbuduje, nie będzie go
2. Oczywiście. Zależności zaznaczą się i dodają się same. Tylko pamiętaj o tym bo jak przy kompilacji coś zaznaczysz i zaznaczą się pakiety zależne to później odznaczenie tego czegoś nie odznaczy też ew zależności.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: Urządzenie 4/32 jako mesh point

Ad. 2: Jest dobra metoda do zapanowania nad tym? Bo w sumie, to niby nie wiem co mi się tam dodało z zależności hmm Czy też pytając inaczej: Jak przywrócić zawartość pliku .config do wartości domyślnych?

6

Odp: Urządzenie 4/32 jako mesh point

Skasuj plik .config. Zrób make menuconfig, zaznacz tylko to urządzenie które chcesz kompilować i nic więcej. Wyjdź i będziesz miał .config jako szablon. Skopiuj go sobie na bok. Teraz możesz znów zrobić menuconfig i zaznaczyć co tam potrzebujesz.

Robiąc w konsoli scripts/diffconfig.sh pokaże ci różnice. Oczywiście możesz też zmieniać ręcznie w konfigu i później robić make defconfig.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7 (edytowany przez marcinkk 2023-06-05 12:59:03)

Odp: Urządzenie 4/32 jako mesh point

Może spróbuję trochę podsumować moje testy dotyczące sieci mesh (802.11s) na WA-901ND v2.

Doprowadziłem system do stanu, kiedy mogłem kompilować ze źródeł, ale obrazy do testów tworzyłem używając imagebuilder. Może coś bym zyskał kompilujać ze źródeł i zmieniając opcje kompilacji, ale nie wiem jakimi parametrami mogę operować - chodzi mi o opcje dotyczące optymalizacji kodu pod względem wydajności zamiast rozmiaru, czy coś podobnego.

----

Testowałem kilka wersji i stanęło na następujących opcjach tworzenia obrazu:

make image PACKAGES="-ppp -ppp-mod-pppoe -ip6tables -odhcp6c -kmod-ipv6 -kmod-ip6tables -odhcpd-ipv6only -opkg -wpad-mini wpad-mesh-wolfssl -iptables -firewall -kmod-nf-conntrack -kmod-nf-flow -kmod-nf-reject -kmod-usb-ohci -kmod-usb-ehci -kmod-usb2 -kmod-nf-ipt -kmod-usb-ledtrig-usbport -kmod-ipt-offload -kmod-ipt-core -dnsmasq mesh11sd"

Na początku działałem bez pakietu mesh11sd (pobranego z 21.02), ale jego dodanie nic nie zmieniło.

Na powyższych ustawieniach MESH działa, ale nie działa szyfrowanie. A dokładniej wyglada to w logu tak:

Mon Jun  5 09:01:29 2023 daemon.notice wpa_supplicant[981]: wlan0: new peer notification for b0:48:7a:d0:9f:bc
Mon Jun  5 09:01:29 2023 daemon.notice wpa_supplicant[981]: wlan0: mesh plink with b0:48:7a:d0:9f:bc established
Mon Jun  5 09:01:29 2023 daemon.notice wpa_supplicant[981]: wlan0: MESH-PEER-CONNECTED b0:48:7a:d0:9f:bc

Czyli niby ok, ale poąłczenie nie działa. A dokładniej jak się włączy pinga na dłużej, to czasami coś się odezwie po drugiej stronie siatki. Nie wiem o co chodzi. W logu nic ciekawego nie widzę. Komendy iw dev wlan0 station dump oraz iw dev wlan0 mpath dump pokazują, że wszystko jest ok:

root@mesh-link-253:~# iw dev wlan0 station dump
Station b0:48:7a:d0:9f:bc (on wlan0)
        inactive time:  10 ms
        rx bytes:       3281480
        rx packets:     42198
        tx bytes:       94265
        tx packets:     1511
        tx retries:     1
        tx failed:      0
        rx drop misc:   1755
        signal:         -26 [-32, -29, -32] dBm
        signal avg:     -25 [-31, -28, -31] dBm
        Toffset:        18446744073675589924 us
        tx bitrate:     117.0 MBit/s MCS 14
        rx bitrate:     130.0 MBit/s MCS 15
        rx duration:    0 us
        expected throughput:    42.388Mbps
        mesh llid:      0
        mesh plid:      0
        mesh plink:     ESTAB
        mesh local PS mode:     ACTIVE
        mesh peer PS mode:      ACTIVE
        mesh non-peer PS mode:  ACTIVE
        authorized:     yes
        authenticated:  yes
        associated:     yes
        preamble:       long
        WMM/WME:        yes
        MFP:            yes
        TDLS peer:      no
        DTIM period:    2
        beacon interval:100
        connected time: 2005 seconds
root@mesh-link-253:~# iw dev wlan0 mpath dump
DEST ADDR         NEXT HOP          IFACE       SN      METRIC  QLEN    EXPTIME         DTIM    DRET    FLAGS
b0:48:7a:d0:9f:bc b0:48:7a:d0:9f:bc wlan0       1802    189     0       0       1600    4       0x14

I jak podałem wyżej wpa_supplicant też się nie awanturuje, ale połączenie nie ma sad

Puściłem pinga na urządzenie podłączone za takim szyfrowanym linkiem typu mesh i fragment odpowiedzi wygląda tak:

Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Reply from 192.168.104.1: bytes=32 time=8ms TTL=64
Request timed out.
Request timed out.
Reply from 192.168.104.1: bytes=32 time=6ms TTL=64
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Request timed out.

Czyli co jakiś czas odpowiedź jest, ale ogólnie jest to nieużywalne.

Bez szyfrowania działa.

----

Wersje z OpenSSL nie chciała mi się utworzyć na 19.07 (za mało miejsca), ale udało się taką stworzyć na 18.06:

make image PACKAGES="-ppp -ppp-mod-pppoe -ip6tables -odhcp6c -kmod-ipv6 -kmod-ip6tables -odhcpd-ipv6only -opkg -wpad-mini wpad-mesh-openssl -iptables -firewall -kmod-nf-conntrack -kmod-nf-flow -kmod-nf-reject -kmod-usb-ohci -kmod-usb-ehci -kmod-usb2 -kmod-nf-ipt -kmod-usb-ledtrig-usbport -kmod-ipt-offload -kmod-ipt-core -dnsmasq"

Ale ogólny efekt ten sam, czyli bez szyfrowania działa a z szyfrowaniem nie. Różnica taka, że w logu nic na temat połączenia z wpa_supplicant nie znalazłem.

----

I jeszcze w kwestii zapytania:

To wyżej dotyczy ar71xx-tiny. Miałem też ath79-tiny i nawet stworzony obraz dało się zaaplikować, ale potem zaczęły się problemy. Na początku myślałem, że zrobiłem cegłę, ale po dłuższym zastanowieniu podłączyłem się do portu szeregowego i okazało się, że sprzęt żyje. Problem w tym, że port eth0 nie działał. Piszą coś o tym na forum DD-WRT: https://forum.dd-wrt.com/phpBB2/viewtop … ;start=109 i ... zgubiłem drugiego linka.

Zastanawiałem się, czy nie przejście z ar71xx na ath79 nie wymaga pełnego obrazu factory, ale tutaj: https://openwrt.org/docs/guide-user/ins … x.to.ath79 piszą, że zwykłe sysupgrade z restetem ustawień wystarczy. Więc pozostaje błąd w samym firmware?

----

Dwa słowa podsumowania do tematu: Da się upchnąć wszytsko co potrzeba do uruchomiennia sieci mesh na urządzniu 4/32 z OpenWrt 19.07. Będzie działać bez szyfrowania. Ale z szyfrowaniem nie bardzo sad

8 (edytowany przez marcinkk 2023-06-06 14:40:04)

Odp: Urządzenie 4/32 jako mesh point

Tak w ramach testów postanowiłem jednak spróbować skompilować ze źródeł. W skrócie zrobiłem:

git clone https://git.openwrt.org/openwrt/openwrt.git
git checkout openwrt-19.07
make menu config
make

Po menuconfig ustawiłem sobie co chciałem i nie chce się skompilować. Wypisało mi:

Collected errors:
 * satisfy_dependencies_for: Cannot satisfy the following dependencies for kmod-gpio-button-hotplug:
 *     kernel (= 4.14.275-1-8d77cd2c522cf7e98194bac2a71c8e62)
 * opkg_install_cmd: Cannot install package kmod-gpio-button-hotplug.
 * satisfy_dependencies_for: Cannot satisfy the following dependencies for kmod-ath:
 *     kernel (= 4.14.275-1-8d77cd2c522cf7e98194bac2a71c8e62)
 * opkg_install_cmd: Cannot install package kmod-ath.
 * satisfy_dependencies_for: Cannot satisfy the following dependencies for kmod-ath9k:
 *     kernel (= 4.14.275-1-8d77cd2c522cf7e98194bac2a71c8e62)
 * opkg_install_cmd: Cannot install package kmod-ath9k.

Co zrobiłem źle? Czy z mojej strony jednak wszystko dobrze, tylko jest jakiś problem ze źródłami? Jak go naprawić?

9

Odp: Urządzenie 4/32 jako mesh point

Ten sam co zawsze - próbowałeś coś skompilowac, zostały śmieci, zmieniłeś config i jest inne oznaczenie wersji buildu.

Skasuj cały build_dir i zacznij kompilację od nowa.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

10

Odp: Urządzenie 4/32 jako mesh point

Skasowanie build_dir nie wystarczyło, ale zrobiłem make distclean i potem już poszła kompilacja. Skonfigurowałem od nowa.

----

A wracając do szyfrowania sieci mesh. Zmieniłem zawartość pliku /etc/modules.d/ath9k z:

ath9k

na:

ath9k nohwcrypt=1

i zaczęło połączenie 802.11s działać również z szyfrowaniem.
Wydajność jest jaka jest ... 12-13 Mbit/s w porównaniu do 22-23 Mbit/s z wyłączonym szyfrowaniem ... ale działa. Zostawiam linka na jakiś czas i sprawdzę jak sprawa będzie wyglądała za kilka dni. Znaczy się, czy będzie ciągle połączenie działało, czyli czy jest stabilne wink