Dzisiaj jest 24 lis 2020, 02:25

Strefa czasowa UTC+1godz.




Nowy temat Odpowiedz w temacie  [ Posty: 7 ] 
Autor Wiadomość
 Tytuł: Netgear R6220 zabawa z oryginalnym firmware
Post: 8 kwie 2020, 08:15 
Offline
Użytkownik

Rejestracja: 8 kwie 2020, 07:52
Posty: 3
Dzień dobry,

Jakiś czas temu zakupiłem dwa używane Netgear R6220 z myślą o tym, by używać ich z oprogramowaniem OpenWRT.

Niestety tuner z oprogramowaniem OpenWRT w wersji 19.07.1 i 19.07.2 nie działa stabilnie.
Przez jakiś czas testowałem też na wersji 18, ale bez poprawy.

Występujące problem to między innym:
1. Wyciek pamięci (wolny ale jednak systematyczne ubywanie pamięci RAM) po sprawdzeniu zarezerwowanej pamięci przez wszystkie działające procesy stwierdziłem, że wyciek musi być w kernelu bo pamięć zarezerwowana przez wszystkie uruchomione procesy była stabilna, a mimo to wolnej pamięci systematyczni ubywało, co miedzy innymi objawiało się tym, że później software update był już niemożliwy bo OpenWRT wrzuca pliki update do temp'a który jest systemem plików w RAM i go brakowało

2. Problem ze switchem objawiający się:
[70078.308651] ------------[ cut here ]------------
[70078.317862] WARNING: CPU: 0 PID: 0 at net/sched/sch_generic.c:320 0x8038b620
[70078.331978] NETDEV WATCHDOG: eth0 (mtk_soc_eth): transmit queue 0 timed out
[70078.345927] Modules linked in: ftdi_sio usbserial pppoe ppp_async pppox ppp_g                                                                                                                                                             eneric nf_conntrack_ipv6 mt76x2e mt76x2_common mt76x02_lib mt7603e mt76 mac80211                                                                                                                                                              iptable_nat ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_na                                                                                                                                                             t xt_multiport xt_mark xt_mac xt_limit xt_conntrack xt_comment xt_TCPMSS xt_REDI                                                                                                                                                             RECT xt_LOG xt_FLOWOFFLOAD xt_CT slhc nf_reject_ipv4 nf_nat_redirect nf_nat_masq                                                                                                                                                             uerade_ipv4 nf_conntrack_ipv4 nf_nat_ipv4 nf_nat nf_log_ipv4 nf_flow_table_hw nf                                                                                                                                                             _flow_table nf_defrag_ipv6 nf_defrag_ipv4 nf_conntrack_rtcache nf_conntrack ipta                                                                                                                                                             ble_mangle iptable_filter ip_tables crc_ccitt compat ledtrig_usbport nf_log_ipv6                                                                                                                                                              nf_log_common ip6table_mangle ip6table_filter ip6_tables ip6t_REJECT x_tables n                                                                                                                                                             f_reject_ipv6 leds_gpio xhci_plat_hcd xhci_pci xhci_mtk xhci_hcd gpio_button_hot                                                                                                                                                             plug usbcore
[70078.487065]  nls_base usb_common
[70078.493579] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.14.171 #0
[70078.505704] Stack : 00000000 00000000 00000000 87f20a40 00000000 00000000 000                                                                                                                                                             00000 00000000
[70078.522341]         00000000 00000000 00000000 00000000 00000000 00000001 87c                                                                                                                                                             09d60 5326164a
[70078.538970]         87c09df8 00000000 00000000 00006310 00000038 8049ba78 000                                                                                                                                                             00007 00000000
[70078.555596]         00000000 80550000 0007880b 00000000 87c09d40 00000000 000                                                                                                                                                             00000 80509e44
[70078.572221]         8038b620 00000140 00000000 87f20a40 00000000 802ac920 000                                                                                                                                                             00000 806b0000
[70078.588846]         ...
[70078.593699] Call Trace:
[70078.593717] [<8049ba78>] 0x8049ba78
[70078.605486] [<8038b620>] 0x8038b620
[70078.612411] [<802ac920>] 0x802ac920
[70078.619340] [<8000c1a0>] 0x8000c1a0
[70078.626268] [<8000c1a8>] 0x8000c1a8
[70078.633195] [<804848f4>] 0x804848f4
[70078.640120] [<80071a10>] 0x80071a10
[70078.647046] [<8002e5f8>] 0x8002e5f8
[70078.653971] [<8038b620>] 0x8038b620
[70078.660930] [<8002e680>] 0x8002e680
[70078.667859] [<86f81b04>] 0x86f81b04 [mt7603e@86f80000+0x90a0]
[70078.679280] [<8038b620>] 0x8038b620
[70078.686208] [<8038b474>] 0x8038b474
[70078.693137] [<8008845c>] 0x8008845c
[70078.700064] [<8025a9c0>] 0x8025a9c0
[70078.706990] [<80088718>] 0x80088718
[70078.713915] [<80079058>] 0x80079058
[70078.720846] [<80078000>] 0x80078000
[70078.727776] [<804a2878>] 0x804a2878
[70078.734707] [<80032f84>] 0x80032f84
[70078.741633] [<80259ed0>] 0x80259ed0
[70078.748559] [<80007488>] 0x80007488
[70078.755482]
[70078.758742] ---[ end trace 28d67ed0d4462d29 ]---
[70078.767940] mtk_soc_eth 1e100000.ethernet eth0: transmit timed out
[70078.780306] mtk_soc_eth 1e100000.ethernet eth0: dma_cfg:80000065
[70078.792339] mtk_soc_eth 1e100000.ethernet eth0: tx_ring=0, base=07010000, max                                                                                                                                                             =0, ctx=3995, dtx=3995, fdx=3994, next=3995
[70078.814034] mtk_soc_eth 1e100000.ethernet eth0: rx_ring=0, base=067a0000, max                                                                                                                                                             =0, calc=3560, drx=3562
[70078.835459] mtk_soc_eth 1e100000.ethernet: 0x100 = 0x6060000c, 0x10c = 0x8081                                                                                                                                                             8
[70078.855218] mtk_soc_eth 1e100000.ethernet: PPE started



3. Duża liczba błędów przerwań, po 1,5 dnia było ich już ponad 3 tysiące
root@OpenWrt:~# uptime
 07:33:33 up 1 day,  7:58,  load average: 0.24, 0.17, 0.16
root@OpenWrt:~# cat /proc/interrupts
           CPU0       CPU1
  8:   11508546   11508573  MIPS GIC Local   1  timer
  9:     116986          0  MIPS GIC  63  IPI call
 10:          0    8772968  MIPS GIC  64  IPI call
 11:     506379          0  MIPS GIC  65  IPI resched
 12:          0     661616  MIPS GIC  66  IPI resched
 15:         14          0  MIPS GIC  33  ttyS0
 16:    7360219          0  MIPS GIC  29  xhci-hcd:usb1
 17:   16723345          0  MIPS GIC  10  1e100000.ethernet
 18:         12          0  MIPS GIC  30  gsw
 19:          2          0  MIPS GIC  11  mt76x2e
 21:         23   10988004  MIPS GIC  32  mt7603e
ERR:       3081
root@OpenWrt:~#


Z informacji innych np. https://eko.one.pl/forum/viewtopic.php?id=19522

Można było dojść do wniosku, że na oryginalnym oprogramowanie problemy te nie występują.
Dlatego postanowiłem dodać to oryginalnego oprogramowania, rzeczy które są mi potrzebne (ingerencja w oryginalne oprogramowanie, między innymi dodanie dropbear) i sprawdzić czy router będzie działał stabilnie.

Zebrałem to wszystko do kupy (więcej informacji podam niebawem) i od wczoraj tj. 2020-04-08 od godziny ok 23 rozpocząłem test na oryginalnym oprogramowaniu.

To zbyt krótki czas ale jak dotąd wygląda to obiecująco. Mam zero błędów obsługi przerwań, brak niepokojących logów w dmesg, ilość wolnej pamięci RAM też wydaje być stabilna:
              total         used         free       shared      buffers
  Mem:       122308        50784        71524            0         2764
 Swap:            0            0            0
Total:       122308        50784        71524


Więcej informacji niebawem.


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Netgear R6220 zabawa z oryginalnym firmware
Post: 9 kwie 2020, 15:58 
Offline
Użytkownik

Rejestracja: 8 kwie 2020, 07:52
Posty: 3
Wygląda na to, że jest dobrze :D
# cat /proc/uptime && free && cat /proc/interrupts
143273.35 281879.40
              total         used         free       shared      buffers
  Mem:       122308        50960        71348            0         2764
 Swap:            0            0            0
Total:       122308        50960        71348
           CPU0       CPU1
  3:    8374762          0        MIPS GIC  eth2
  4:        188   13084120        MIPS GIC  rai0
  7:   35817743   35817057        MIPS GIC  timer
 12:          0          0        MIPS GIC  ralink_gpio
 18:          0          0        MIPS GIC  Ralink_SPDIF
 22:  143423784          0        MIPS GIC  xhci-hcd:usb1
 23:         14          0        MIPS GIC  Ralink_ESW
 25:        798   14023090        MIPS GIC  ra0
 26:     773476          0        MIPS GIC  serial
 56:     623430          0        MIPS GIC  IPI_resched
 57:          0     681897        MIPS GIC  IPI_resched
 58:          0          0        MIPS GIC  IPI_resched
 59:          0          0        MIPS GIC  IPI_resched
 60:    3754158          0        MIPS GIC  IPI_call
 61:          0    1950747        MIPS GIC  IPI_call
 62:          0          0        MIPS GIC  IPI_call
 63:          0          0        MIPS GIC  IPI_call

ERR:          0


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Netgear R6220 zabawa z oryginalnym firmware
Post: 9 kwie 2020, 16:07 
Offline
Użytkownik

Rejestracja: 8 kwie 2020, 07:52
Posty: 3
Dobrze, a teraz parę informacji co i jak z oryginalnym softem.

Źródła i środowisko kompilacji można pobrać ze strony:
https://kb.netgear.com/2649/NETGEAR-Ope ... ammers-GPL

Co prawda ostatnia wersja dostępna do pobrania to:
R6220_v1.1.0.80_gpl.tgz.zip
tymczasem ostatnia wersja to V1.1.0.92_1.0.1

Nie mniej jednak niczemu to nie przeszkadza - z pomocą pobranego środowiska jesteśmy w stanie zbudować toolchain oraz kernel. Całości nie budowałem ponieważ nie miałem takiej potrzeby.

Po wypakowaniu paczki będziemy mieć katalog R6220_V1.1.0.80_src, żeby zbudować toolchain wystarczy wydać poniższe polecenia:
TOPDIR=$PWD
cd R6220_V1.1.0.80_src
tar -xvf buildroot-gcc463-src-offlinebuild_NPTLSHAREDLIBGCC.tar.bz2
cd buildroot-2012.11.1
sudo ./build.sh


Po skompilowaniu toolchain zostanie zainstalowany do:
/opt/buildroot-gcc463_NPTLSHAREDLIBGCC

tymczasem cześć skryptów kompilacji spodziewa się go w
/opt/buildroot-gcc463

Stworzyłem zatem link symboliczny
sudo ln -s /opt/buildroot-gcc463_NPTLSHAREDLIBGCC /opt/buildroot-gcc463


Kompilacja kernela:
cd $TOPDIR/R6220_V1.1.0.80_src
make kernel


Włączenie w kernelu dodatkowych modułów, które potrzebujemy:
cd $TOPDIR/R6220_V1.1.0.80_src/linux
make menuconfig


no i ponowna kompilacja.

Dodatkowo potrzebowałem też narzędzi unsquashfs/mksquashfs
żeby użyć odkładnie takich jakie były użyte przy składaniu oryginalnego softu.

W celu skompilowania tych narzędzi wystarczy wydać polecenie:
cd $TOPDIR/R6220_V1.1.0.80_src
make image


Nasze toole znajdziemy w:
$TOPDIR/R6220_V1.1.0.80_src/image/tools/src/squashfs4.2/squashfs-tools/


Na router z najnowszym oryginalnym oprogramowaniem można wbić się w dwojaki sposób,
1. Włączając telnet i logując się przez telnet
Żeby włączyć telnet wystarczy w przeglądarce wpisać:
http://192.168.1.1/setup.cgi?todo=debug
gdzie 192.168.1.1 to ip routera. Póżniej można zalogować się na konsole routera przez dowolny klient obsługujący protokół telnet.

2. Lutując przewody do interfejsu szeregowego (wymagany jest konwerter napięć z TTL do RS232), albo konwerter USB-UART np. FTDI FT232RL
Jak połączyć: https://openwrt.org/_media/media/netgea ... tok=a33fe9

Używałem obydwu opcji.

Po zalogowaniu na router podłączyłem pendrive do USB, żeby z dumpować rootfs.
W celu znalezienia mount-pointa pendriva wystarczy wydać polecenie:
mount


Nie pamiętam dokładnie, gdzie to się montowało, a teraz do USB mam co innego podłączone i nie chce odłączać, żeby nie przerywać testu longtermowego.
Ale powiedzmy, że było to /mnt/shares/U, żeby zdumpować rootfs należy najpierw sprawdzić, która partycja mtd jest naszym rootfs:
cat /proc/mtd


dostaniemy w odpowiedzi coś takiego:
# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00100000 00020000 "Bootloader"
mtd1: 00100000 00020000 "SC PID"
mtd2: 00400000 00020000 "Kernel"
mtd3: 01c00000 00020000 "Rootfs"
mtd4: 00200000 00020000 "English UI"
mtd5: 00200000 00020000 "ML1"
mtd6: 00200000 00020000 "ML2"
mtd7: 00200000 00020000 "ML3"
mtd8: 00200000 00020000 "ML4"
mtd9: 00200000 00020000 "ML5"
mtd10: 00100000 00020000 "Factory"
mtd11: 00100000 00020000 "SC Private Data"
mtd12: 00200000 00020000 "POT"
mtd13: 00200000 00020000 "Traffic Meter"
mtd14: 00200000 00020000 "DPF"
mtd15: 00200000 00020000 "SC Nvram"
mtd16: 00200000 00020000 "Ralink Nvram"
mtd17: 00200000 00020000 "Ralink Reserved"
mtd18: 00200000 00020000 "ML6"
mtd19: 00200000 00020000 "Upgrade Flag"
mtd20: 00200000 00020000 "Reserved Block3"
mtd21: 03c00000 00020000 "Reserved Block4"


I teraz dumpujemy rootfs:
cat /dec/mtd3 > /mnt/shares/U/mtd3
sync


albo

cat /dev/mtdblock3 > /mnt/shares/U/mtdblock3
sync


Modyfikacje rootf robimy na PC z linux na którym kompilowaliśmy toole mksquashfs/unsquashfs

I tak wypakowanie rootfs:
sudo $TOPDIR/R6220_V1.1.0.80_src/image/tools/src/squashfs4.2/squashfs-tools/unsquashfs -f mtdblock3


Rootfs wypakowany zostanie do katalogu
$TOPDIR/squashfs-root

Teraz można w tym rootfs zmienić co nam potrzeba, ja postanowiłem zmienić go minimalnie a wszystkie niezbędne rzeczy dorzucać na partycje RW (ubi0:vol_name on /tmp/RWFS type ubifs (rw,relatime)), która oryginalnie służy do pobierania aktualizacji.

No więc moja modyfikacja sprowadza się do modyfikacji jednego pliku:
$TOPDIR/squashfs-root/etc/usr/etc/rcS

i dodanie na sam koniec:
if [ -f /tmp/RWFS/rc.local ];
then
    /tmp/RWFS/rc.local &
fi


Po takiej modyfikacji przy starcie zostanie wywołany nasz skrypt zlokalizowany na partycji rw.

Po modyfikacji pakujemy nasz zmodyfikowany rootfs:
cd $TOPDIR
sudo $TOPDIR/R6220_V1.1.0.80_src/image/tools/src/squashfs4.2/squashfs-tools/mksquashfs squashfs-root rootfs.squashfs


Plik wynikowy rootfs.squashfs przerzucamy na pendrive i z powrotem podłączamy pod router.
Aktualizujemy rootfs (tu jest pewien kłopot bo aktualizujemy partycje, które jest w użyciu, ale jakoś to się udaje bez błędów, być może dlatego, że względu na naturę squashfs, który jest read only)

cd /mnt/shares/U
mtd_write -r  write rootfs.squashfs  Rootfs


Po tych akcjach przy starcie routera wykonany zostanie nasz plik /tmp/RWFS/rc.local zlokalizowany na partycji RW

Mój wygląda tak:
#!/bin/sh

/usr/sbin/rc usb_printer stop
/usr/sbin/rc RAE stop

/usr/sbin/rmmod usbserial_filter

/usr/sbin/insmod /lib/modules/2.6.36/kernel/drivers/usb/serial/usbserial.ko
/usr/sbin/insmod /tmp/RWFS/lib/modules/ftdi_sio.ko

if [ ! -d /tmp/RWFS/etc/dropbear ];
then
    /usr/bin/mkdir -p /tmp/RWFS/etc/dropbear
fi

/usr/bin/ln -s /tmp/RWFS/etc/dropbear /etc/dropbear

if [ ! -f /tmp/RWFS/etc/passwd ];
then
    /usr/bin/cp /etc/passwd /tmp/RWFS/etc/
fi

/usr/bin/rm -rf /etc/passwd
/usr/bin/ln -s /tmp/RWFS/etc/passwd /etc/passwd

export LD_LIBRARY_PATH=/tmp/RWFS/lib
export PATH=$PATH:/tmp/RWFS/bin/
/tmp/RWFS/sbin/dropbear -P /var/run/dropbear.1.pid -a -p 22 -K 300 -T 3 -E -R

/usr/sbin/killall cmd_agent_ap_RAE

/tmp/RWFS/bin/inotify_firewall /var/run/ &

/tmp/RWFS/start.sh



Wygląda tak bo ja potrzebowałem podpiąć pod USB konwerter USB <-> RS232, dlatego wyłączam usługę usb_printer i dokładam sterownik ftdi_sio.ko który dodałem sobie do kernela.

Dodatkowo uruchamiam serwer dropbear, który skompilowałem toolchainem
/opt/buildroot-gcc463_NPTLSHAREDLIBGCC

Żeby móc zmieniać hasło roota (logowanie przez ssh) używam passwd z /tmp/RWFS/etc/passwd

Ponieważ w skrypcie /tmp/RWFS/start.sh odpalam sobie inne lokalne serwisy to potrzebuje zmieniać iptables po to by zezwolić na komunikację do tych serwisów.

firewall (iptables) zarządzany jest przez inne serwisy routera wiec dodanie na starcie starcie odpowiednich reguł to za mało ponieważ router w trakcie działania np. otrzymania IP na WAN czyści całego firewalla i dodaje reguły na nowo dlatego my musimy na to reagować.
Na szczęście router w trakcie modyfikowania reguł firewalla tworzy plik /var/run/rc.firewall.run, a po zakończeniu jego modyfikacji ten plik jest usuwany.

Korzystając z tego mechanizmu napisałem sobie demona /tmp/RWFS/bin/inotify_firewall, który wykorzystując mechanizm inotify nasłuchuje na akcję usunięcie pliku rc.firewall.run z katalogu /var/run/
i uruchamia skrypt:
/tmp/RWFS/firewall.sh

Zam zaś skrypt /tmp/RWFS/firewall.sh wygląda tak:
#!/bin/ash

valid_ip()
{
    local  ip=$1
    local  stat="1"
    local  result=`echo $ip | awk -F"\." ' $0 ~ /^([0-9]{1,3}\.){3}[0-9]{1,3}$/ && $1 <=255 && $2 <= 255 && $3 <= 255 && $4 <= 255 '`
    if [ -z "$result" ];
    then
        stat="0"
    fi
    echo $stat
}

sleep 2

PIP=`/usr/bin/cat /tmp/custom_prev_ip`
CIP=`/usr/sbin/ifconfig eth3 | /usr/bin/grep 'inet addr' | /usr/bin/cut -d: -f2 | /usr/bin/awk '{print $1}'`

t1=$(valid_ip $PIP)
t2=$(valid_ip $CIP)

if [ "0" == "$t1" ] && [ "1" == "$t2" ];
then
    PIP="$CIP"
    t1="$t2"
fi

if [ "1" == "$t1" ];
then
    # remove rules
    /usr/sbin/iptables -D INPUT -j CUSTOM
    /usr/sbin/iptables -F CUSTOM
    /usr/sbin/iptables -X CUSTOM
    /tmp/RWFS/sbin/napt cpm_del "ls:1:tcp/udp:$PIP:22-22:any:22-22"
fi

if [ "1" == "$t2" ];
then
    # add rules
    /tmp/RWFS/sbin/napt cpm_add "ls:1:tcp/udp:$CIP:22-22:any:22-22"

    /usr/sbin/iptables -N CUSTOM
    /usr/sbin/iptables -A CUSTOM -d $CIP/32 -p tcp -m tcp --dport 22 -j ACCEPT

    /usr/sbin/iptables -A INPUT -j CUSTOM

    echo "$CIP" > /tmp/custom_prev_ip
    /usr/sbin/iptables -S INPUT > /tmp/custom_iptables
fi


Nie będę go zbytnio analizował powiem tylko, że chodzi o to, żeby była możliwość dostania się na router przez ssh przez WAN.

Jedyną nie standardową rzeczą w tym prostym skrypcie są:
...
/tmp/RWFS/sbin/napt cpm_del "ls:1:tcp/udp:$PIP:22-22:any:22-22"
...
/tmp/RWFS/sbin/napt cpm_add "ls:1:tcp/udp:$CIP:22-22:any:22-22"


Netgear oprócz standadowych iptables korzysta również z czegoś innego to kontroli ruchu przychodzącego z WAN, a mianowicie cnap
/proc/cnapt
/proc/cnapt_serv

Na routerze nie ma utlity które by pozwalało dodawać/usuwać reguły tego czegoś (może ktoś wie co to jest?) ale jest biblioteka
/lib/lib_napt.so
która to umożliwia.
W C napisałem sobie tylko prosty wrapper /tmp/RWFS/sbin/napt do tej biblioteki, a oto jego kod:
#include <stdio.h>
#include <libcnapt.h>
#include <string.h>

static void check(char *cmd, int expected, int provided)
{
    if (expected != provided)
    {
        printf("cmd %s need %d params, you provided %d!\n", cmd, expected, provided);
        exit(-1);
    }
}

int main(int argc, char *argv[])
{
    if (argc < 2)
    {
        printf("Please provide operation as first param!");
        exit(-1);
    }

    if (!strcmp(argv[1], "cpt_flush"))
    {
        return cpt_flush();
    }

    if (argc < 3)
    {
        printf("Please provide operation and at leas one parameter!");
        exit(-1);
    }


    if (!strcmp(argv[1], "cpm_add"))
    {
        check(argv[1], 1, argc - 2);
        return cpm_add(argv[2]);
    }
    else if (!strcmp(argv[1], "cpm_del"))
    {
        check(argv[1], 1, argc - 2);
        return cpm_del(argv[2]);
    }
    else if (!strcmp(argv[1], "cpm_edit"))
    {
        check(argv[1], 2, argc - 2);
        return cpm_edit(argv[2], argv[3]);
    }
    else if (!strcmp(argv[1], "cpm_flush"))
    {
        check(argv[1], 1, argc - 2);
        cpm_flush(argv[2]);
        return 0;
    }
    else if (!strcmp(argv[1], "cpt_add"))
    {
        check(argv[1], 1, argc - 2);
        return cpt_add(argv[2]);
    }
    else if (!strcmp(argv[1], "cpt_del"))
    {
        check(argv[1], 1, argc - 2);
        return cpt_del(argv[2]);
    }
    else if (!strcmp(argv[1], "cpt_edit"))
    {
        check(argv[1], 2, argc - 2);
        return cpt_edit(argv[2], argv[3]);
    }
    else if (!strcmp(argv[1], "cpt_flush"))
    {
        check(argv[1], 1, argc - 2);
        return cpt_flush();
    }
    else if (!strcmp(argv[1], "cnapt_flush_bypriv"))
    {
        check(argv[1], 2, argc - 2);
        cnapt_flush_bypriv(argv[2], argv[3]);
        return 0;
    }
    else if (!strcmp(argv[1], "cdmz_clean"))
    {
        check(argv[1], 2, argc - 2);
       
        cdmz_clean(strcmp(argv[2], "1") ? 1 : 0, argv[3]);
        return 0;
    }
    else
    {
        printf("Unknown command: %s\n", argv[1]);
    }
   
    return -2;
}


Plik libcnapt.h można znaleźć w paczce ze źródłami.

No i to chyba tyle. W sumie to jeszcze mam skrypt aktualizujący IP na DDNS ale to chyba nic wartego uwagi. W sieci można znaleźć dziesiątki pewnie lepszych.

Jeśli ktoś potrzebowałby zrobić coś podobnego jak ja i maiłby z czymś problem to chętnie odpowiem na pytania w tym temacie.

P.S Zawsze ceniłem OpenWRT za minimalizm i stabilne działanie - niejednokrotnie router który nie działał stabilnie na oryginalnym sofcie stawał się stabilny na OpenWRT, tutaj jest odwrotnie. Pewnie, że wolałbym, żeby OpenWRT działało stabilnie ale po za poznaniu się z tematem wychodzi na to, że problem niestabilności OpenWRT jest bardzo, bardzo stary. Wiec nie zanosi się, żeby coś miało ulec poprawie. Pewnie ktoś powie, że mogłem zainwestować czas w szukaniu przyczyn niestabilności OpenWRT ale skoro przez tak długi czas tyle mądrych głów nie znalazło przyczyny, a problemów było więcej niż jeden. To zajęło by to naprawdę spoooro czasu i nie było by żadnej gwarancji, że by mi się to udało. Tymczasem oprócz wspomnianych problemów które nie występują na oryginalny sofcie, dodatkowo siec działa na nim lepiej. WiFi 5GHz działa mega stabilnie. Na OpenWRT tylko sprawdziłem ale działało bardzo kulawo, potrafiło w ciągu godziny kilka razy się rozłączyć dodatkowo na ISP 100Mb/s wyciągało przy dobrych wiatrach 80Mb/s (zwalałem to na to, że mieszkam w bloku i w około jest mnóstwo sieci WiFi, których sygnał jest bardzo mocny), ale bardzo pozytywnie zaskoczyłem się, że na sofcie producenta działa to po prostu ZAJEBIŚCIE!

Wielki szacunek dla producenta, że nie zamknął routera na 4 spusty, że respektuje licencje GPL i udostępnia nie tylko źródła ale i środowisko do kompilacji. Wielki, wielki szcun!


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Netgear R6220 zabawa z oryginalnym firmware
Post: 9 cze 2020, 21:24 
Offline
Użytkownik

Rejestracja: 11 paź 2012, 09:54
Posty: 24
Czy można doinstalowywać inne pakiety przenosząc źródła z openwrt. Chodzi mi o jakieś nieskomplikowane typu remserial lub jakieś proste swoje które wymagają góra 1 biblioteki.
Jeśli tak to w jaki sposób ?


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Netgear R6220 zabawa z oryginalnym firmware
Post: 11 cze 2020, 09:18 
Offline
Użytkownik
Awatar użytkownika

Rejestracja: 25 lut 2011, 21:28
Posty: 679
@Obiedzinski
Z ciekawości przetestowałem swój router.
Błędów switcha nie znalazłem (szukałem w dmesg).
Obiedzinski pisze:
3. Duża liczba błędów przerwań, po 1,5 dnia było ich już ponad 3 tysiące

Po 10 dniach sytuacja nie wygląda za dobrze, ale jest lepiej niż u Ciebie:
root@OpenWrt:/etc# uptime
 10:12:12 up 10 days,  5:11,  load average: 0.22, 0.20, 0.18
root@OpenWrt:/etc# cat /proc/interrupts
           CPU0       CPU1       
  8:   88272484   88272430  MIPS GIC Local   1  timer
  9:     193544          0  MIPS GIC  63  IPI call
 10:          0   77190026  MIPS GIC  64  IPI call
 11:    3312675          0  MIPS GIC  65  IPI resched
 12:          0    2517883  MIPS GIC  66  IPI resched
 15:         14          0  MIPS GIC  33  ttyS0
 16:          0          0  MIPS GIC  29  xhci-hcd:usb1
 17:  177064537          0  MIPS GIC  10  1e100000.ethernet
 18:          7          0  MIPS GIC  30  gsw
 19:        112   33709507  MIPS GIC  11  mt76x2e
 21:        160   67565364  MIPS GIC  32  mt7603e
ERR:       2645


Moja wersja openWRT:
-----------------------------------------------------------------------------
 |                                                                           |
 | OpenWrt 19.07-SNAPSHOT, r11050-a8c92e9eda                                 |
 |                                                                           |
 | Build time: 2020-05-09 16:21 CEST                                         |
 | Cezary Jackiewicz (obsy), http://eko.one.pl                               |
 |                                                                           |
 -----------------------------------------------------------------------------
 | Machine: Netgear R6220                                                    |
 | Uptime: 10d, 05:05:39                                                     |
 | Load: 0.14 0.17 0.15                                                      |
 | Flash: total: 15.2MB, free: 13.8MB, used: 4%                              |
 | Memory: total: 121.0MB, free: 87.5MB, used: 27%                           |

_________________
FunBOX (Orange) + WD My Net N750 (OpenWrt Chaos Calmer 15.05 by Obsy) + ASUS RT-N10 Tomato by Shibby
System: OpenSUSE
http://software.opensuse.org/


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Netgear R6220 zabawa z oryginalnym firmware
Post: 12 sie 2020, 10:46 
Offline
Użytkownik

Rejestracja: 23 lip 2014, 21:05
Posty: 5
Czy wiesz jak wymusić opcje noscan przy 2,4Ghz ?
Mimo ,że mieszkam na odludziu to i tak R6220 daje max 150Mbit , i nie chce przełączyć się na 300Mbit...
Jakiś wpis nvram ?


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Netgear R6220 zabawa z oryginalnym firmware
Post: 25 sie 2020, 16:19 
Offline
Użytkownik

Rejestracja: 25 sie 2020, 15:46
Posty: 2
Też miałem problem z OpenWRT, ciągłe restarty lub całkowity brak internetu po LANie, pomagał tylko restart.

Natomiast zainstalowałem OpenWRT tylko ze względu na problemy z minidlna na oryginalnym sofcie; jakikolwiek podpięty dysk po USB, po utworzeniu przez serwer bazy plików o wielkości 9.5 MB na dysku USB, przestaje dalej skanować pliki a sam router przestaje odpowiadać - pomaga tylko restart. Próbowałem z różnymi wersjami oryginalnego softu lecz za każdym razem jest to samo. Po wywołaniu przez przeglądarkę serwera minidlna identyfikuje się on w wersji 1.0.26 natomiast w źródłach znalazłem nowszą wersję 1.2.1. Nie wiem dlaczego w producent stosuje oficjalnym oprogramowaniu starszą wersję.

Nie mam większego a praktycznie żadnego pojęcia o tworzeniu obrazów z dostępnych źródeł stąd też moje pytanie; czy jest możliwość aktualizacji minidlna do wersji 1.2.1 na działającym routerze (przez telnet?) czy też pozostaje jedynie stworzenie obrazu do wgrania? Jeśli tak, to jak to zrobić?

Mam nadzieję czy też łudzę się że aktualizacja rozwiąże mój problem.


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
Wyświetl posty nie starsze niż:  Sortuj wg  
Nowy temat Odpowiedz w temacie  [ Posty: 7 ] 

Strefa czasowa UTC+1godz.


Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów

Szukaj:
Przejdź do:  
designed by digi-led.pl
...Copyright © 2010-2013, Ekipa openrouter.info