1 (edytowany przez tenobcy 2015-07-19 14:42:54)

Temat: WPS dioda na WNDR4300?

Może nie jest to aż tak bardzo istotne mimo wszystko fajnie widzieć sygnalizację na diodą LED na ruterze, że WPS jest aktywny tongue Do tej pory korzystałem z WDR4300 i tam aby dioda sygnalizowała aktywność WPS zawartość pliku wps w /etc/rc.button była następująca:

root@OpenWrt:~# cat /etc/rc.button/wps 
#!/bin/sh

if [ "$ACTION" = "pressed" -a "$BUTTON" = "wps" ]; then
    for dir in /var/run/hostapd*; do
        [ -d "$dir" ] || continue
        hostapd_cli -p "$dir" wps_pbc
    done
fi
is_wps_led=`ls -al /sys/class/leds/ | grep wps | cut -d " " -f 30`
is_qss_led=`ls -al /sys/class/leds/ | grep qss | cut -d " " -f 30`

if [ ! -z "$is_wps_led" ]
then
    led="$is_wps_led"
elif [ ! -z "$is_qss_led" ]
then
    led="$is_qss_led"
fi

wps_state_wlan0=`hostapd_cli -i wlan0 get_config  2>/dev/null | grep wps_state | cut -d= -f2`
wps_state_wlan1=`hostapd_cli -i wlan1 get_config  2>/dev/null | grep wps_state | cut -d= -f2`

if [ "$wps_state_wlan0" = "disabled" ] && [ "$wps_state_wlan1" = "disabled" ]
then
    logger "The WPS feature is disabled, please enable it in /etc/config/wireless ."
    exit 1
elif [ "$wps_state_wlan0" = "configured" ] && [ "$wps_state_wlan1" = "configured" ]
then
    ifaces="wlan0 wlan1"
    
    for iface in $ifaces
    do         
        logger "Enabling WPS for interface: $iface"
        hostapd_cli -i $iface -p /var/run/hostapd/ wps_pbc

        echo "255" > /sys/class/leds/$led/brightness
        logger "WPS activated for 15s or until it gets a request"

        for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
        do
            is_wps_active=`hostapd_cli -i $iface wps_get_status | grep "PBC Status" | cut -d " " -f 3`
            
            if [ "$is_wps_active" != "Active" ]
            then
                echo "0" > /sys/class/leds/$led/brightness
            fi

        sleep 1

        done

        hostapd_cli -i $iface wps_cancel
        logger "WPS has been deactivated for interface: $iface"

        echo "0" > /sys/class/leds/$led/brightness

        sleep 3
    done
elif [ "$wps_state_wlan0" = "configured" ] && [ "$wps_state_wlan1" != "configured" ]
then
    ifaces="wlan0"
    
    for iface in $ifaces
    do         
        logger "Enabling WPS for interface: $iface"
        hostapd_cli -i $iface -p /var/run/hostapd/ wps_pbc

        echo "255" > /sys/class/leds/$led/brightness
        logger "WPS activated for 15s or until it gets a request"

        for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
        do
            is_wps_active=`hostapd_cli -i $iface wps_get_status | grep "PBC Status" | cut -d " " -f 3`
            
            if [ "$is_wps_active" != "Active" ]
            then
                echo "0" > /sys/class/leds/$led/brightness
            fi

            sleep 1
        done

        hostapd_cli -i $iface wps_cancel
        logger "WPS has been deactivated for interface: $iface"

        echo "0" > /sys/class/leds/$led/brightness
    done
elif [ "$wps_state_wlan0" != "configured" ] && [ "$wps_state_wlan1" = "configured" ]
then
    ifaces="wlan1"
    
    for iface in $ifaces
    do         
        logger "Enabling WPS for interface: $iface"
        hostapd_cli -i $iface -p /var/run/hostapd/ wps_pbc

        echo "255" > /sys/class/leds/$led/brightness
        logger "WPS activated for 15s or until it gets a request"

        for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
        do
            is_wps_active=`hostapd_cli -i $iface wps_get_status | grep "PBC Status" | cut -d " " -f 3`
            
            if [ "$is_wps_active" != "Active" ]
            then
                echo "0" > /sys/class/leds/$led/brightness
            fi

            sleep 1
        done

        hostapd_cli -i $iface wps_cancel
        logger "WPS has been deactivated for interface: $iface"

        echo "0" > /sys/class/leds/$led/brightness
    done
else
    exit 1
fi

Niestety ta sama zwartość pliku nie sygnalizuje aktywności WPS na WNDR4300. Pomożecie skonfigurować zawartość tego pliku tak aby aktywność WPS była sygnalizowana diodą?
Zawartość /sys/class/leds dla WDR4300:

root@OpenWrt:/sys/class/leds# ls
ath9k-phy0           tp-link:blue:lan3    tp-link:blue:wan
ath9k-phy1           tp-link:blue:lan4    tp-link:blue:wlan2g
tp-link:blue:lan1    tp-link:blue:qss     tp-link:green:usb1
tp-link:blue:lan2    tp-link:blue:system  tp-link:green:usb2

a dla WNDR4300:

root@OpenWrt:/sys/class/leds# ls
ath9k-phy0            netgear:amber:wps     netgear:green:wan
ath9k-phy1            netgear:blue:wlan5g   netgear:green:wlan2g
netgear:amber:power   netgear:green:power   netgear:green:wps
netgear:amber:wan     netgear:green:usb

Co musiałbym i gdzie zmienić aby przy aktywności WPS dioda odpowiedzialna za WPS na WNDR4300 była aktywna?
Z góry dzięki za pomoc i wszelkie wskazówki.

2 (edytowany przez build000 2015-07-19 16:12:51)

Odp: WPS dioda na WNDR4300?

Nie da się. Router nie wystawia nigdzie (SoC) sygnału, że "teraz radio działa tylko po zestawieniu połączenia dzięki wps". Za to można przypisać akcję wciśnięcia przycisku WPS z wywoływaną komendą od WPS i docelowo skojarzyć chwilę kiedy się łączysz/próbujesz połączyć po WPS. I to ma sens i jest prawidłowe do chwili kiedy trwa łączenie - i wtedy będzie np. migać dioda od WPS.
Być może SoC na jakimś adresie prezentuje tą informację ("trwa połączenie uzyskane dzięki WPS"), ale jak do tej pory to nie zaimplementowano tego w /sys.
Zwróć uwagę, że w ofw w ogóle jest tylko sygnalizowana sama funkcjonalność WPS - że jest włączona, lub nie.
Możesz to samo osiągnąć zapalając diodę w zależność od ustawionej przy wps lini w konfiguracji danego radia:
- option wps_pushbutton '1' .

3

Odp: WPS dioda na WNDR4300?

build000 napisał/a:

Za to można przypisać akcję wciśnięcia przycisku WPC z wywoływaną komendą od WPS i docelowo skojarzyć chwilę kiedy się łączysz/próbujesz połączyć po WPS. I to ma sens i jest prawidłowe do chwili kiedy trwa łączenie.

W jaki sposób można to uzyskać?

4 (edytowany przez build000 2015-07-19 15:08:25)

Odp: WPS dioda na WNDR4300?

Nie podpowiem Ci szczegółowym skryptem - kiedyś się w to bawiłem, straciłem na to sporo czasu - nie jestem zbyt zaangażowany w to, by to rozgryzać, więc zwyczajnie zapomniałem. Pamiętam tylko, że wszystkie komendy i pliki konfiguracyjno/informacyjne już są - wystarczy to skojarzyć w prostym skrypcie.
Coś chyba było grane z "if...then"...
wink

5

Odp: WPS dioda na WNDR4300?

Ok poszukam informacji na ten temat i pokombinuję coś smile

6 (edytowany przez build000 2015-07-19 15:28:13)

Odp: WPS dioda na WNDR4300?

Jest jakiś program od tego w openwrt, na stronach wiki jest opisany - właśnie ma jedną tylko wadę - tylko kuma z tplinkami dobrze, ale można się na nim wzorować składnią skryptu i dodać swoje wtrącenia.

7

Odp: WPS dioda na WNDR4300?

Ok dzięki poszukam, a gdybyś pamiętał nazwę albo link byłoby super wink

8

Odp: WPS dioda na WNDR4300?

sorki - taki dzisiaj leniwy jestem przez tą pogodę, że...aż wstyd się przyznać... wink

9

Odp: WPS dioda na WNDR4300?

Nie no spoko wiadoma sprawa smile

10 (edytowany przez build000 2015-07-19 16:32:19)

Odp: WPS dioda na WNDR4300?

https://dev.openwrt.org/browser/trunk/t … wndr4300.c
W tym pliku (w CC jest identyczny) masz rozkminione co, jak, i dlaczego się zapala/jest zaimplementowane.
Do tego znajdź sobie (jest wskazanie w tym pliku gdzie szukać) pliki h,c od przycisków, powiąż oczekiwaną akcję na danym przycisku oraz diodzie...i będziesz miał co chcesz i jak chcesz. Trzeba tylko pilnować adresów, żeby nie wyszły jakieś "wieści z Marsa"...
wink