Hirdetés

Keresés

Hozzászólok Aktív témák

  • Vtmk

    csendes tag

    Szia én is vettem egy asus rt ac 57u-t tudnál segíteni a firmware cserében? mit töltcsek honnan?
    Esetleg hogyan tudom feldobni mit kell utána állítani? Köszönöm.
    Nekem a vpn kliens miatt kellene ppt -re meg az usb pendrive miatt felmegy 92%-ra a memo. Köszi előre.

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Szia én vagyok az ncore-ról. Mi beszélünk napok óta.

    Ez a telepítési mód:
    Letöltöd a gyári firmware-t biztos ami bizonytalan alapon.

    Utána ezt:
    https://dimez.ru/padavan-ng/current/asus/RT-AC1200GU_3.4.3.9L-100.trx

    Az Asus gyári panelban
    bekapcsolod a SSH-t.
    Én speciel mobaxtermet használok.
    Utána bemész ssh-ban 192.168.1.1 22port
    amivel a router panelba lépsz be azt adod meg nevet jelszót.
    majd kimész egészen a tmp/ mappába.
    oda felrakod az új firmeware-t
    majd terminálba ezt a parancsot bedarálod:
    mtd-write -i RT-AC1200GU_3.4.3.9L-100.trx -d linux && reboot
    Ezt szépen megeszi majd újraindul ne csinálj semmit kb 5 perc ez az egész. Kidob persze terminálból. De utána meglepődsz az online felületen mivel htaces belépés lesz nem csicsás design.
    Belépés alapból:
    admin
    admin
    Azt mikor bent vagy millió új és jobb gyorsabb beállítás átláthatóbb és kihasználhatóbb dolgok jöttek elő.
    Ja ami a ledet illeti.:
    Ha kikapcsolom az összes ledet a lanok és az internet led világítva marad meg a bekapcsoláskor tényleg a wifi led nem villog de lefosom. Engem a terhelés érdekel.
    Ami előzőleg 112mb foglalt volt az most 86mb. Ez a nem mindegy.
    proci 0.02 0.02 0 ez a nem mindegy.

    woodworm még megírta és igaza van ssh-n a file jogok még mindig csökkentve vannak.
    Próbáltam letölteni az angol meg az orosz nyelvit le is szedi. Át is tudom írni magyarra,de visszamásolni már nem mert védett...

    7zip-pel kitudod csomagolni a trx-et utána már sima notepa++-ban át tudod írni a nyelvet.
    Én az En.dict filet akarom mivel akkor nem kell semmi további file-hoz nyúlni meg keresgélni.
    Itt a file. Már amennyire volt kedvem írkálni:

    http://nettest.vtmk.hu/EN.rar

    [ Szerkesztve ]

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    De itt a gyári is,ha valaki nem találná.:

    http://nettest.vtmk.hu/gyari/RT-AC57U_3.0.0.4_380_10732-g5506a3c.trx

    Ez pedig a padavan:

    http://nettest.vtmk.hu/RT-AC1200GU_3.4.3.9L-100.trx

    Nekem csak azt mondja el valaki,hogy mikor mit kell csinálni ezzel a prometheus progival...
    Mert nagyon nem vágom...

    Már ezzel a Visual Studio-val gondolkozom,hogy az megtudná csinálni ezt a dolgot. Kibontás szerkesztés és Buildelés... De kicsit fázik a lábam...

    [ Szerkesztve ]

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Bocsi nem :)
    Hanem woodwormnek.

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Miért te tudod,hogy kell megcsinálni a nyelvi file cserét?
    Bocsi mert ahhoz már hülye vagyok,hogy szerkesztés után újra összerakjam...

    Visual Studio 2015 enterprise meg se mukkan rá..

    [ Szerkesztve ]

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Van fenn a win 7 mellet ubuntu 16.04
    Mükszik a progi tehát ledaráltam ezt:

    wget -O start.sh http://prometheus.freize.net/script/start-99.sh
    chmod +x start.sh
    ./start.sh

    http://prometheus.freize.net/

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Na átjöttem Ubuntura.
    Így fest ettől nem tudom mit kell csinálni.:

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Itt tartok ,de sehol nincs leírás amúgy...
    De ez most élesben csinálja a routert...

    [ Szerkesztve ]

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Bocsi akkor itt mit nyomjak?
    Update scripts (1) Letölti és frissíti a prometheus scriptet.
    Update sources (2) Letölti a beállított tárolóból a legfrissebb forrást.
    Build toolchain (3) A fordítási környezet felépítése.
    Firmware (4) Almenükön keresztül az fw tartalmának az összeállítása és elkészítése.

    Tegyük fel szétszedem a fw-t és ugye módosítani akarom..

    Hogy létrejöjjön az alap fájlrendszer érdemes egyszer leforgatni egy fw-t. Az egyéb módosításhoz, sku fájlok engedélyezése

    Rz kicsit nekem kínai..

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Na most komolyan. Szerinted ez a sok össze vissza ollózgatott leírásokból ki fog érteni valamit?
    Nem volna egyszerűbb összeszedve leírni?

    Pl:
    Felrakom a wmware-t (12 pro)
    Utána leszedsz egy ubuntut és berakod az isot a wamware-ba feldobja
    Terminál leszeded és futtatod a prometheust.
    stb.stb.
    Mert nem hinném,hogy valaki akkora frankó gyerek lenne,hogy megcsinálná a magyar trx-et. És megosztaná.
    A másik nekem elég gyenge gépem van itthon és lassan fog menni. Arról nem beszélve nincs leírva sehol speciel hogy a trx file-t raköom be vagy a routerből szed ki mindent és azt varriálod és utána hozod létre at trx file-t. Nem semmi sem derül ki részemről.

    Tehát itt a prometheus használatád és csak azért kérdem én hogy a nyelvet az EN.dict-et hol tudom átírni vagy miként mikor ..

    És utána mi a teendő.
    Mondjuk a dark vendor témára szerintem át fogom rakni. De azt már látom hogy kell.

    DE pl a Build toolchain (3) A fordítási környezet felépítése.

    Nekem 30 percig ment és még nem ért véget...

    Ezért szerintem nem ártana kivesézni mit mikor lehet csinálni vagy kell csinálni. Mert én még nem csináltam ilyet és szeretném megtanulni. Azért kérdezek sokat. Hiába olvasok utána ninc silyen részletesen leírva..

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Amúgy pl hova csomagolja ki a router firmware-t? ubuntun belül?
    A leforgatást a Főmenüben a 3-as gombra érted?

    Illetve ha kész vagyok a magyar nyelvvel és a skinnel melyiket nyomjam meg? Vagy hogy készítem el a trx file-t?

    THX

    [ Szerkesztve ]

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Aki keresné itt van az a file ahol a nyelvek vannak:

    padavan-ng/trunk/.config

    a filt-t ubuntuban csak terimnálban látod:
    De abban tudod szerkeszteni mindjárt én a rus-t kiszedtem:
    alt +x = #

    AZ EN.dict még nem látom hol van.. Még darálja a 3-as menü.. Amint megvan már rakom is be.

    [ Szerkesztve ]

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Még a ledes részt keresem...

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Mire írjam át?

    /* ASUS RT-AC1200GU */
    #define BOARD_PID "RT-AC1200GU"
    #define BOARD_NAME "RT-AC1200GU"
    #define BOARD_DESC "ASUS RT-AC1200GU Wireless Router"
    #define BOARD_VENDOR_NAME "ASUSTek Computer Inc."
    #define BOARD_VENDOR_URL "http://www.asus.com/"
    #define BOARD_MODEL_URL "http://www.asus.com/Networking/RTN56U_B1/"
    #define BOARD_BOOT_TIME 30
    #define BOARD_FLASH_TIME 120
    #define BOARD_GPIO_BTN_RESET 41
    #define BOARD_GPIO_BTN_WPS 43
    #define BOARD_GPIO_LED_ALL 46
    #undef BOARD_GPIO_LED_WIFI
    #define BOARD_GPIO_LED_SW2G 14 /* soft led */
    #define BOARD_GPIO_LED_SW5G 15 /* soft led */
    #define BOARD_GPIO_LED_POWER 48
    #define BOARD_GPIO_LED_LAN 7
    #define BOARD_GPIO_LED_WAN 16
    #define BOARD_GPIO_LED_USB 47
    #undef BOARD_GPIO_LED_ROUTER
    #undef BOARD_GPIO_PWR_USB
    #define BOARD_HAS_5G_11AC 1
    #define BOARD_NUM_ANT_5G_TX 2
    #define BOARD_NUM_ANT_5G_RX 2
    #define BOARD_NUM_ANT_2G_TX 2
    #define BOARD_NUM_ANT_2G_RX 2
    #define BOARD_NUM_ETH_LEDS 0
    #define BOARD_HAS_EPHY_L1000 1
    #define BOARD_HAS_EPHY_W1000 1
    #define BOARD_NUM_UPHY_USB3 0
    #define BOARD_USB_PORT_SWAP 0

    -------
    #undef BOARD_GPIO_LED_WIFI

    [ Szerkesztve ]

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    A srácot itt is meg lehet találni?

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Most gyártom a buildel. Magyarosan és egy másik skinnel.
    A ledet meg hagyom még egyenlőre nem dobom el a projektet ki van csomagolva majd adja magát. Meg még úgyis kell hozzá írni magyar szöveget.
    Tesztelek....

    Csak kérdés hova fogja létrehozni a cuccot..

    [ Szerkesztve ]

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Kész van végre a cucc!
    Jó még kell dolgoznom rajta a nyelven van még mit írni.
    De a skin is összejött és a panelban a firmware frissítésen át feltöltöttem és magától megcsinálta. Ja és az adatok minden megmaradt.



    [ Szerkesztve ]

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Szia. Tudom a nyelven még sokat kell írnom ez még csak teszt. Amúgy bekapcsoltam az összes témát. És megjelenik a panelben egy téma választó logót lehet megadni url ben meg a betüket formázni. Hátteret.

    De én kicseréltem a logot.
    A nyrlvi fájl. Az english file írtam át és a ruszkit kikapcsoltam.
    Csak 11 órakor már nem álltam neki buildelni. 52 percig tart. De majd ma írom tovább. Win 7 mellett van fent az ubuntu 16.04 abban bármikor tudom folytatni.
    Amugy prometheusban a fomenuben 3 rleg volt ztana 4 firmware skinek ja meg a condig szerkesztesben a rus kinyomtam #
    Azt build daralas.

    De a logo méretet at fogom irni nagyobbra. Delutan rakok fel képet róla.
    Az angol nyelvi file 2 db van enheader es enfooter.

    [ Szerkesztve ]

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Én csak a magyart akartam. Se angol se orosz csak magyar. Ha irtam volna bele magyart az angol is ott fityegne. De na nehogy mán. Én nich sprechen english! Daaaa.
    Full magyar 6-7 skin. Jó ez így neken.

    A ledes dolgot a wifi 2 nev 5g még nem tom szerintem kinézem a gyári firmware bol. Csak remenykedek,hogy abban az 1 file ban kell csak firkalni... utana kb soha tobbet nem kell felmennem a panelba. Es lesz egy kozeposztalyos rutyibol egy fullos.
    Befejezem a router gyartasat a gyarto helyett. Már megérte megvenni :DD

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Factory resetnel elszallna a firmware?

    Merr azert kerdem ha kell valakinek akkor uresen adatok nelkul megosztom.

    [ Szerkesztve ]

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Megkerdeztem nemreg az asust. Hogy a firmwareban hol talalhato a wifi led funkcio. Nem tudtak megmondani a technikain. Sot meg a gyartot megkerdeznek biztos nem mondana el..

    Tehat marad az amerikai kezi...
    Asus gyari firmware letolt 7zip kipakol es szemrebbenes nelkul belekockulva keresni konfig filet meg annak a megfelelo funkcio fule at. Annyit mondott megvan adva melyik porton kell lennie a wifi ledeknek.

    Most az meg a kerdes a padavanban benne van a wifi led funkcio vagy nincs mert a .configba hiaba irom at az undefin defined re meg annak a portjat ha nem is letezik benne a wifi led funkcio.
    :U

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Végfejlemény:

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Köszi. De nagyon amatőr vagyok ebben..

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    :R

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    A gyari firmware asus 57ben talatam ketto mappat egy egy file es a kiterjeszteuk ko se windows se ubuntu16.04 nem nyitja meg semmivel.

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Bassz nem tudom már hova menti ez a szutyok a trx file-t beszarok...

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Komolyan mindent lefogok írni lépésről lépésre. Elfelejtettem vagy valamit nem jól állrítottam be de nem találom a mentési mappát.

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    A padavan-ng mappa melle kene letrehoznia jaja de nekem nem csinalta meg azt a mappat. Koszi a segitseget. Csak az okát nem vágom miert nem.

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Szia itt telepitesi bajok vannak. Meg ubuntu jog. Terminalban root vavy? En gyokbe hoztam letre a scriptet. Es megy. Leiras alapjan.

    chmod +x start.sh

    De nem itt hanem ahova letoltotted azt az utvonalat add meg kulonben nem lesz jogosultsaga az sh nak.

    [ Szerkesztve ]

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Ubuntu magyar desktopot szoktam felrakni. Programokban beirod a keresobe terminal.

    Sudo su
    Bekeri a jelszot enter es root vagy.

    Berakod a 3 parancsot es megy a script..

    En se tudtam megtanultam sokat olvastam.

    Nem olyan egyszeru tudni kell mit akarsz es mi kell hozza.

    Telepites terminalban ha kell valami mas apt get install glances pl.

    [ Szerkesztve ]

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    1

    utána ki kell választani melyik a te géped gyártó - típus.

    Utána megjön egy menü

    3-a gomb az petyeg kb 58 percet az megvan akkor nyelvi file skin meg config file szerkesztés utána mikor minden kész 4-es gomb gyártás...

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Asszem megvan a wifi ledes dolog csak még nem tudom a matek végét:

    Trunk/user/rc/net_wifi_c

    /*
    * This program is free software; you can redistribute it and/or
    * modify it under the terms of the GNU General Public License as
    * published by the Free Software Foundation; either version 2 of
    * the License, or (at your option) any later version.
    *
    * This program is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    * GNU General Public License for more details.
    *
    * You should have received a copy of the GNU General Public License
    * along with this program; if not, write to the Free Software
    * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
    * MA 02111-1307 USA
    */
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdarg.h>
    #include <errno.h>
    #include <syslog.h>
    #include <ctype.h>
    #include <string.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <net/if.h>
    #include <time.h>
    #include "rc.h"
    #include "switch.h"
    #include "gpio_pins.h"
    static int
    wif_control(const char *wifname, int is_up)
    {
    return doSystem("ifconfig %s %s 2>/dev/null", wifname, (is_up) ? "up" : "down");
    }
    void
    mlme_state_wl(int is_on)
    {
    nvram_set_int("mlme_radio_wl", is_on);
    }
    void
    mlme_state_rt(int is_on)
    {
    nvram_set_int("mlme_radio_rt", is_on);
    }
    void
    mlme_radio_wl(int is_on)
    {
    #if BOARD_HAS_5G_RADIO
    const char *wifname = find_wlan_if_up(1);
    if (!wifname)
    return;
    doSystem("iwpriv %s set %s=%d", wifname, "RadioOn", (is_on) ? 1 : 0);
    #endif
    mlme_state_wl(is_on);
    #if defined(BOARD_GPIO_LED_SW5G)
    LED_CONTROL(BOARD_GPIO_LED_SW5G, (is_on) ? LED_ON : LED_OFF);
    #endif
    }
    void
    mlme_radio_rt(int is_on)
    {
    const char *wifname = find_wlan_if_up(0);
    if (!wifname)
    return;
    doSystem("iwpriv %s set %s=%d", wifname, "RadioOn", (is_on) ? 1 : 0);
    mlme_state_rt(is_on);
    #if defined(BOARD_GPIO_LED_SW2G)
    LED_CONTROL(BOARD_GPIO_LED_SW2G, (is_on) ? LED_ON : LED_OFF);
    #endif
    #if defined(USE_RT3352_MII)
    if (is_on) {
    int i_val = nvram_wlan_get_int(0, "TxPower");
    doSystem("iwpriv %s set %s=%d", wifname, "TxPower", i_val);
    }
    // isolation iNIC port from all LAN ports
    phy_isolate_inic((is_on) ? 0 : 1);
    #endif
    }
    int
    get_mlme_radio_wl(void)
    {
    return nvram_get_int("mlme_radio_wl");
    }
    int
    get_mlme_radio_rt(void)
    {
    return nvram_get_int("mlme_radio_rt");
    }
    int
    get_enabled_radio_wl(void)
    {
    return nvram_wlan_get_int(1, "radio_x");
    }
    int
    get_enabled_radio_rt(void)
    {
    return nvram_wlan_get_int(0, "radio_x");
    }
    int
    get_enabled_guest_wl(void)
    {
    return nvram_wlan_get_int(1, "guest_enable");
    }
    int
    get_enabled_guest_rt(void)
    {
    return nvram_wlan_get_int(0, "guest_enable");
    }
    int
    get_mode_radio_wl(void)
    {
    return nvram_wlan_get_int(1, "mode_x");
    }
    int
    get_mode_radio_rt(void)
    {
    return nvram_wlan_get_int(0, "mode_x");
    }
    int
    is_apcli_wisp_wl(void)
    {
    return nvram_wlan_get_int(1, "sta_wisp");
    }
    int
    is_apcli_wisp_rt(void)
    {
    return nvram_wlan_get_int(0, "sta_wisp");
    }
    int
    get_apcli_sta_auto(int is_aband)
    {
    int i_sta_auto = 0;
    #if defined(USE_RT3352_MII)
    // iNIC not support ApCliAutoConnect
    if (is_aband)
    #endif
    i_sta_auto = nvram_wlan_get_int(is_aband, "sta_auto");
    return i_sta_auto;
    }
    char *
    get_apcli_wisp_ifname(void)
    {
    int i_mode_x;
    #if !defined(USE_RT3352_MII)
    i_mode_x = get_mode_radio_rt();
    if (get_enabled_radio_rt() && (i_mode_x == 3 || i_mode_x == 4) && is_apcli_wisp_rt() &&
    (strlen(nvram_wlan_get(0, "sta_ssid")) > 0))
    return IFNAME_2G_APCLI;
    #endif
    #if BOARD_HAS_5G_RADIO
    i_mode_x = get_mode_radio_wl();
    if (get_enabled_radio_wl() && (i_mode_x == 3 || i_mode_x == 4) && is_apcli_wisp_wl() &&
    (strlen(nvram_wlan_get(1, "sta_ssid")) > 0))
    return IFNAME_5G_APCLI;
    #endif
    return NULL;
    }
    static void
    check_apcli_wan(int is_5g, int radio_on)
    {
    int man_id, wisp_id;
    char *man_ifname, *wisp_ifname;
    if (get_ap_mode())
    return;
    is_5g &= 1;
    man_id = -1;
    man_ifname = get_man_ifname(0);
    if (strcmp(man_ifname, IFNAME_2G_APCLI) == 0)
    man_id = 0;
    #if BOARD_HAS_5G_RADIO
    else if (strcmp(man_ifname, IFNAME_5G_APCLI) == 0)
    man_id = 1;
    #endif
    wisp_id = -1;
    wisp_ifname = get_apcli_wisp_ifname();
    if (wisp_ifname) {
    if (strcmp(wisp_ifname, IFNAME_2G_APCLI) == 0)
    wisp_id = 0;
    #if BOARD_HAS_5G_RADIO
    else if (strcmp(wisp_ifname, IFNAME_5G_APCLI) == 0)
    wisp_id = 1;
    #endif
    }
    if (man_id != wisp_id) {
    /* MAN interface changed, need full restart WAN */
    full_restart_wan();
    } else if (radio_on && wisp_id == is_5g) {
    /* MAN interface still ApCli, need restart WAN after acpli0 down/up */
    try_wan_reconnect(1, 0);
    }
    }
    static inline void
    wif_control_m2u(int is_aband, const char *wifname)
    {
    #if !defined(USE_IGMP_SNOOP)
    int i_m2u = nvram_wlan_get_int(is_aband, "IgmpSnEnable");
    brport_set_m2u(wifname, i_m2u);
    #endif
    }
    #if defined(USE_RT3352_MII)
    static void
    update_inic_mii(void)
    {
    #if 0
    int i;
    const char *ifname_inic = IFNAME_INIC_MAIN;
    // below params always set in new iNIC_mii.obj
    doSystem("iwpriv %s set %s=%d", ifname_inic, "asiccheck", 1);
    // config RT3352 embedded switch for VLAN3 passthrough
    doSystem("iwpriv %s switch setVlanId=%d,%d", ifname_inic, 2, INIC_GUEST_VLAN_VID);
    // power down unused PHY of RT3352 embedded switch
    for(i = 0; i < 5; i++)
    doSystem("iwpriv %s switch setPortPowerDown=%d,%d", ifname_inic, i, 1);
    // add static IGMP entries (workaround for IGMP snooping bug in iNIC firmware)
    doSystem("iwpriv %s set IgmpAdd=%s", ifname_inic, "01:00:5e:7f:ff:fa"); // SSDP IPv4
    doSystem("iwpriv %s set IgmpAdd=%s", ifname_inic, "01:00:5e:00:00:fb"); // mDNS IPv4
    doSystem("iwpriv %s set IgmpAdd=%s", ifname_inic, "01:00:5e:00:00:09"); // RIP IPv4
    // doSystem("iwpriv %s set IgmpAdd=%s", ifname_inic, "33:33:00:00:00:0c"); // SSDP IPv6
    // doSystem("iwpriv %s set IgmpAdd=%s", ifname_inic, "33:33:00:00:00:fb"); // mDNS IPv6
    #endif
    }
    static void
    start_inic_mii(void)
    {
    const char *ifname_inic = IFNAME_INIC_MAIN;
    if (nvram_get_int("inic_disable") != 1) {
    /* release iNIC reset pin */
    cpu_gpio_set_pin(1, 1);

    usleep(50000);

    /* enable iNIC RGMII port */
    phy_disable_inic(0);

    /* start iNIC boot */
    wif_control(ifname_inic, 1);

    /* update some iNIC params */
    update_inic_mii();

    if (get_mlme_radio_rt()) {
    /* clear isolation iNIC port from all LAN ports */
    phy_isolate_inic(0);
    } else {
    /* disable mlme radio */
    doSystem("iwpriv %s set %s=%d", ifname_inic, "RadioOn", 0);
    }

    /* add rai0 to bridge (needed for RADIUS) */
    br_add_del_if(IFNAME_BR, ifname_inic, is_need_8021x(nvram_wlan_get(0, "auth_mode")));
    } else {
    /* force disable iNIC (e.g. broken module) */

    /* down iNIC interface */
    wif_control(ifname_inic, 0);

    // set isolate iNIC port from all LAN ports
    phy_isolate_inic(1);

    /* disable iNIC RGMII port */
    phy_disable_inic(1);

    /* raise iNIC reset pin */
    cpu_gpio_set_pin(1, 0);

    logmessage(LOGNAME, "iNIC module disabled! (NVRAM %s=1)", "inic_disable");
    }
    }
    void
    check_inic_mii_rebooted(void)
    {
    int rt_mode_x;
    if (!get_mlme_radio_rt()) {
    doSystem("iwpriv %s set %s=%d", IFNAME_INIC_MAIN, "RadioOn", 0);
    return;
    }
    rt_mode_x = get_mode_radio_rt();
    if (rt_mode_x != 1 && rt_mode_x != 3) {
    /* check guest AP */
    if (!is_interface_up(IFNAME_INIC_GUEST) && is_guest_allowed_rt())
    wif_control(IFNAME_INIC_GUEST, 1);
    }
    }
    #endif
    void
    update_vga_clamp_wl(int first_call)
    {
    #if BOARD_HAS_5G_RADIO
    #if defined (USE_WID_5G) && (USE_WID_5G==7612)
    int i_val;
    const char *wifname;
    wifname = find_wlan_if_up(1);
    if (!wifname)
    return;
    i_val = nvram_wlan_get_int(1, "VgaClamp");
    if (i_val == 0 && first_call)
    return;
    doSystem("iwpriv %s set %s=%d", wifname, "VgaClamp", i_val);
    #endif
    #endif
    }
    void
    update_vga_clamp_rt(int first_call)
    {
    #if defined (USE_WID_2G) && (USE_WID_2G==7602 || USE_WID_2G==7612)
    int i_val;
    const char *wifname;
    wifname = find_wlan_if_up(0);
    if (!wifname)
    return;
    i_val = nvram_wlan_get_int(0, "VgaClamp");
    if (i_val == 0 && first_call)
    return;
    doSystem("iwpriv %s set %s=%d", wifname, "VgaClamp", i_val);
    #endif
    }
    void
    stop_wifi_all_wl(void)
    {
    #if BOARD_HAS_5G_RADIO
    // stop ApCli
    wif_control(IFNAME_5G_APCLI, 0);
    // stop WDS (4 interfaces)
    wif_control(IFNAME_5G_WDS3, 0);
    wif_control(IFNAME_5G_WDS2, 0);
    wif_control(IFNAME_5G_WDS1, 0);
    wif_control(IFNAME_5G_WDS0, 0);
    // stop AP (guest + main)
    wif_control(IFNAME_5G_GUEST, 0);
    wif_control(IFNAME_5G_MAIN, 0);
    #if defined (BOARD_GPIO_LED_SW5G)
    LED_CONTROL(BOARD_GPIO_LED_SW5G, LED_OFF);
    #endif
    #endif
    }
    void
    stop_wifi_all_rt(void)
    {
    #if defined(USE_RT3352_MII)
    stop_inicd();

    // set isolate iNIC port from all LAN ports
    phy_isolate_inic(1);
    #endif
    // stop ApCli
    wif_control(IFNAME_2G_APCLI, 0);
    // stop WDS (4 interfaces)
    wif_control(IFNAME_2G_WDS3, 0);
    wif_control(IFNAME_2G_WDS2, 0);
    wif_control(IFNAME_2G_WDS1, 0);
    wif_control(IFNAME_2G_WDS0, 0);
    // stop AP (guest + main)
    wif_control(IFNAME_2G_GUEST, 0);
    wif_control(IFNAME_2G_MAIN, 0);
    #if defined (BOARD_GPIO_LED_SW2G)
    LED_CONTROL(BOARD_GPIO_LED_SW2G, LED_OFF);
    #endif
    }
    void
    start_wifi_ap_wl(int radio_on)
    {
    #if BOARD_HAS_5G_RADIO
    int i_mode_x = get_mode_radio_wl();
    // check WDS only, ApCli only or Radio disabled
    if (i_mode_x == 1 || i_mode_x == 3 || !radio_on)
    {
    br_add_del_if(IFNAME_BR, IFNAME_5G_GUEST, 0);
    br_add_del_if(IFNAME_BR, IFNAME_5G_MAIN, 0);
    }
    mlme_state_wl(radio_on);
    // check Radio enabled and not WDS only, not ApCli only
    if (radio_on && i_mode_x != 1 && i_mode_x != 3)
    {
    wif_control(IFNAME_5G_MAIN, 1);
    br_add_del_if(IFNAME_BR, IFNAME_5G_MAIN, 1);
    wif_control_m2u(1, IFNAME_5G_MAIN);

    if (is_guest_allowed_wl())
    {
    wif_control(IFNAME_5G_GUEST, 1);
    br_add_del_if(IFNAME_BR, IFNAME_5G_GUEST, 1);
    wif_control_m2u(1, IFNAME_5G_GUEST);
    }
    }
    #endif
    }
    void
    start_wifi_ap_rt(int radio_on)
    {
    int i_mode_x = get_mode_radio_rt();
    #if defined(USE_RT3352_MII)
    int is_ap_mode = get_ap_mode();
    #endif
    // check WDS only, ApCli only or Radio disabled
    if (i_mode_x == 1 || i_mode_x == 3 || !radio_on)
    {
    #if defined(USE_RT3352_MII)
    if (!is_ap_mode)
    br_add_del_if(IFNAME_BR, IFNAME_INIC_GUEST_VLAN, 0);
    #else
    br_add_del_if(IFNAME_BR, IFNAME_2G_GUEST, 0);
    br_add_del_if(IFNAME_BR, IFNAME_2G_MAIN, 0);
    #endif
    }
    mlme_state_rt(radio_on);
    #if defined(USE_RT3352_MII)
    // iNIC_mii driver always needed rai0 first before use other interfaces (boot firmware)
    start_inic_mii();
    // check Radio enabled and check not WDS only, not ApCli only
    if (radio_on && i_mode_x != 1 && i_mode_x != 3 && is_guest_allowed_rt())
    {
    wif_control(IFNAME_INIC_GUEST, 1);
    if (!is_ap_mode)
    br_add_del_if(IFNAME_BR, IFNAME_INIC_GUEST_VLAN, 1);
    }
    // start iNIC_mii checking daemon
    if (nvram_get_int("inic_disable") != 1)
    start_inicd();
    #else
    // check Radio enabled and check not WDS only, not ApCli only
    if (radio_on && i_mode_x != 1 && i_mode_x != 3)
    {
    wif_control(IFNAME_2G_MAIN, 1);
    br_add_del_if(IFNAME_BR, IFNAME_2G_MAIN, 1);
    wif_control_m2u(0, IFNAME_2G_MAIN);

    if (is_guest_allowed_rt())
    {
    wif_control(IFNAME_2G_GUEST, 1);
    br_add_del_if(IFNAME_BR, IFNAME_2G_GUEST, 1);
    wif_control_m2u(0, IFNAME_2G_GUEST);
    }
    }
    #endif
    }
    void
    start_wifi_wds_wl(int radio_on)
    {
    #if BOARD_HAS_5G_RADIO
    int i_mode_x = get_mode_radio_wl();
    if (radio_on && (i_mode_x == 1 || i_mode_x == 2))
    {
    int i_wds_num = 4;

    if (nvram_wlan_get_int(1, "wdsapply_x") == 1)
    i_wds_num = nvram_wlan_get_int(1, "wdsnum_x");

    if (i_wds_num > 3) {
    wif_control(IFNAME_5G_WDS3, 1);
    br_add_del_if(IFNAME_BR, IFNAME_5G_WDS3, 1);
    }

    if (i_wds_num > 2) {
    wif_control(IFNAME_5G_WDS2, 1);
    br_add_del_if(IFNAME_BR, IFNAME_5G_WDS2, 1);
    }

    if (i_wds_num > 1) {
    wif_control(IFNAME_5G_WDS1, 1);
    br_add_del_if(IFNAME_BR, IFNAME_5G_WDS1, 1);
    }

    wif_control(IFNAME_5G_WDS0, 1);
    br_add_del_if(IFNAME_BR, IFNAME_5G_WDS0, 1);
    }
    else
    {
    br_add_del_if(IFNAME_BR, IFNAME_5G_WDS3, 0);
    br_add_del_if(IFNAME_BR, IFNAME_5G_WDS2, 0);
    br_add_del_if(IFNAME_BR, IFNAME_5G_WDS1, 0);
    br_add_del_if(IFNAME_BR, IFNAME_5G_WDS0, 0);
    }
    #endif
    }
    void
    start_wifi_wds_rt(int radio_on)
    {
    int i_mode_x = get_mode_radio_rt();
    if (radio_on && (i_mode_x == 1 || i_mode_x == 2))
    {
    int i_wds_num = 4;

    if (nvram_wlan_get_int(0, "wdsapply_x") == 1)
    i_wds_num = nvram_wlan_get_int(0, "wdsnum_x");

    if (i_wds_num > 3) {
    wif_control(IFNAME_2G_WDS3, 1);
    #if !defined(USE_RT3352_MII)
    br_add_del_if(IFNAME_BR, IFNAME_2G_WDS3, 1);
    #endif
    }

    if (i_wds_num > 2) {
    wif_control(IFNAME_2G_WDS2, 1);
    #if !defined(USE_RT3352_MII)
    br_add_del_if(IFNAME_BR, IFNAME_2G_WDS2, 1);
    #endif
    }

    if (i_wds_num > 1) {
    wif_control(IFNAME_2G_WDS1, 1);
    #if !defined(USE_RT3352_MII)
    br_add_del_if(IFNAME_BR, IFNAME_2G_WDS1, 1);
    #endif
    }

    wif_control(IFNAME_2G_WDS0, 1);
    #if !defined(USE_RT3352_MII)
    br_add_del_if(IFNAME_BR, IFNAME_2G_WDS0, 1);
    #endif
    }
    #if !defined(USE_RT3352_MII)
    else
    {
    br_add_del_if(IFNAME_BR, IFNAME_2G_WDS3, 0);
    br_add_del_if(IFNAME_BR, IFNAME_2G_WDS2, 0);
    br_add_del_if(IFNAME_BR, IFNAME_2G_WDS1, 0);
    br_add_del_if(IFNAME_BR, IFNAME_2G_WDS0, 0);
    }
    #endif
    }
    void
    start_wifi_apcli_wl(int radio_on)
    {
    #if BOARD_HAS_5G_RADIO
    const char *ifname_apcli = IFNAME_5G_APCLI;
    int i_mode_x = get_mode_radio_wl();
    if (radio_on && (i_mode_x == 3 || i_mode_x == 4) && (strlen(nvram_wlan_get(1, "sta_ssid")) > 0))
    {
    wif_control(ifname_apcli, 1);
    br_add_del_if(IFNAME_BR, ifname_apcli, !is_apcli_wisp_wl() || get_ap_mode());
    if (nvram_wlan_get_int(1, "sta_auto"))
    doSystem("iwpriv %s set %s=%d", ifname_apcli, "ApCliAutoConnect", 1);
    }
    else
    {
    br_add_del_if(IFNAME_BR, ifname_apcli, 0);
    }
    #endif
    }
    void
    start_wifi_apcli_rt(int radio_on)
    {
    const char *ifname_apcli = IFNAME_2G_APCLI;
    int i_mode_x = get_mode_radio_rt();
    if (radio_on && (i_mode_x == 3 || i_mode_x == 4) && (strlen(nvram_wlan_get(0, "sta_ssid")) > 0))
    {
    wif_control(ifname_apcli, 1);
    #if !defined(USE_RT3352_MII)
    br_add_del_if(IFNAME_BR, ifname_apcli, !is_apcli_wisp_rt() || get_ap_mode());
    if (nvram_wlan_get_int(0, "sta_auto"))
    doSystem("iwpriv %s set %s=%d", ifname_apcli, "ApCliAutoConnect", 1);
    #endif
    }
    #if !defined(USE_RT3352_MII)
    else
    {
    br_add_del_if(IFNAME_BR, ifname_apcli, 0);
    }
    #endif
    }
    void
    reconnect_apcli(const char *ifname_apcli, int force)
    {
    int is_aband, i_mode_x;
    if (strcmp(ifname_apcli, IFNAME_2G_APCLI) == 0)
    is_aband = 0;
    #if BOARD_HAS_5G_RADIO
    else if (strcmp(ifname_apcli, IFNAME_5G_APCLI) == 0)
    is_aband = 1;
    #endif
    else
    return;
    if (!is_interface_up(ifname_apcli))
    return;
    i_mode_x = nvram_wlan_get_int(is_aband, "mode_x");
    if (i_mode_x != 3 && i_mode_x != 4)
    return;
    if (get_apcli_sta_auto(is_aband)) {
    doSystem("iwpriv %s set %s=%d", ifname_apcli, "ApCliAutoConnect", 1);
    } else if (force) {
    doSystem("iwpriv %s set %s=%d", ifname_apcli, "ApCliEnable", 0);
    usleep(300000);
    doSystem("iwpriv %s set %s=%d", ifname_apcli, "ApCliEnable", 1);
    }
    }
    void
    restart_wifi_wl(int radio_on, int need_reload_conf)
    {
    #if BOARD_HAS_5G_RADIO
    stop_8021x_wl();
    stop_wifi_all_wl();
    if (need_reload_conf) {
    gen_ralink_config_5g(0);
    nvram_set_int_temp("reload_svc_wl", 1);
    }
    start_wifi_ap_wl(radio_on);
    start_wifi_wds_wl(radio_on);
    start_wifi_apcli_wl(radio_on);
    start_8021x_wl();
    restart_guest_lan_isolation();
    check_apcli_wan(1, radio_on);
    if (radio_on)
    update_vga_clamp_wl(0);
    #if defined (BOARD_GPIO_LED_SW5G)
    if (radio_on)
    LED_CONTROL(BOARD_GPIO_LED_SW5G, LED_ON);
    #endif
    #endif
    }
    void
    restart_wifi_rt(int radio_on, int need_reload_conf)
    {
    stop_8021x_rt();
    stop_wifi_all_rt();
    if (need_reload_conf) {
    gen_ralink_config_2g(0);
    nvram_set_int_temp("reload_svc_rt", 1);
    }
    start_wifi_ap_rt(radio_on);
    start_wifi_wds_rt(radio_on);
    start_wifi_apcli_rt(radio_on);
    start_8021x_rt();
    restart_guest_lan_isolation();
    check_apcli_wan(0, radio_on);
    if (radio_on)
    update_vga_clamp_rt(0);
    #if defined (BOARD_GPIO_LED_SW2G)
    if (radio_on)
    LED_CONTROL(BOARD_GPIO_LED_SW2G, LED_ON);
    #endif
    }
    int is_need_8021x(char *auth_mode)
    {
    if (!strcmp(auth_mode, "wpa") ||
    !strcmp(auth_mode, "wpa2") ||
    !strcmp(auth_mode, "radius"))
    return 1;
    return 0;
    }
    void
    start_8021x_wl(void)
    {
    #if BOARD_HAS_5G_RADIO
    if (!get_enabled_radio_wl())
    return;
    if (is_need_8021x(nvram_wlan_get(1, "auth_mode")))
    eval("rt2860apd", "-i", IFNAME_5G_MAIN);
    #endif
    }
    void
    start_8021x_rt(void)
    {
    #if !defined(USE_RT3352_MII)
    if (!get_enabled_radio_rt())
    return;
    #endif
    if (is_need_8021x(nvram_wlan_get(0, "auth_mode")))
    eval("rtinicapd", "-i", IFNAME_2G_MAIN);
    }
    void
    stop_8021x_wl(void)
    {
    #if BOARD_HAS_5G_RADIO
    char* svcs[] = { "rt2860apd", NULL };
    kill_services(svcs, 3, 1);
    #endif
    }
    void
    stop_8021x_rt(void)
    {
    char* svcs[] = { "rtinicapd", NULL };
    kill_services(svcs, 3, 1);
    }
    void
    stop_8021x_all(void)
    {
    char* svcs[] = { "rt2860apd", "rtinicapd", NULL };
    kill_services(svcs, 3, 1);
    }
    int
    is_radio_on_wl(void)
    {
    #if BOARD_HAS_5G_RADIO
    #if defined(USE_IWPRIV_RADIO_5G)
    return (is_interface_up(IFNAME_5G_MAIN) && get_mlme_radio_wl());
    #else
    return is_interface_up(IFNAME_5G_MAIN) ||
    is_interface_up(IFNAME_5G_GUEST) ||
    is_interface_up(IFNAME_5G_APCLI) ||
    is_interface_up(IFNAME_5G_WDS0) ||
    is_interface_up(IFNAME_5G_WDS1) ||
    is_interface_up(IFNAME_5G_WDS2) ||
    is_interface_up(IFNAME_5G_WDS3);
    #endif
    #else
    return 0;
    #endif
    }
    int
    is_radio_on_rt(void)
    {
    #if defined(USE_IWPRIV_RADIO_2G) || defined(USE_RT3352_MII)
    return (is_interface_up(IFNAME_2G_MAIN) && get_mlme_radio_rt());
    #else
    return is_interface_up(IFNAME_2G_MAIN) ||
    is_interface_up(IFNAME_2G_GUEST) ||
    is_interface_up(IFNAME_2G_APCLI) ||
    is_interface_up(IFNAME_2G_WDS0) ||
    is_interface_up(IFNAME_2G_WDS1) ||
    is_interface_up(IFNAME_2G_WDS2) ||
    is_interface_up(IFNAME_2G_WDS3);
    #endif
    }
    int
    is_radio_allowed_wl(void)
    {
    return timecheck_wifi(1, "radio_date_x", "radio_time_x", "radio_time2_x");
    }
    int
    is_radio_allowed_rt(void)
    {
    return timecheck_wifi(0, "radio_date_x", "radio_time_x", "radio_time2_x");
    }
    int
    is_guest_allowed_wl(void)
    {
    if (get_enabled_guest_wl())
    return timecheck_wifi(1, "guest_date_x", "guest_time_x", "guest_time2_x");
    return 0;
    }
    int
    is_guest_allowed_rt(void)
    {
    if (get_enabled_guest_rt())
    return timecheck_wifi(0, "guest_date_x", "guest_time_x", "guest_time2_x");
    return 0;
    }
    int
    control_radio_wl(int radio_on, int manual)
    {
    int is_radio_changed = 0;
    #if BOARD_HAS_5G_RADIO
    if (radio_on)
    {
    if (!is_radio_on_wl()) {
    #if defined(USE_IWPRIV_RADIO_5G)
    mlme_radio_wl(1);
    #else
    restart_wifi_wl(1, 0);
    #endif
    is_radio_changed = 1;
    }
    }
    else
    {
    if (is_radio_on_wl()) {
    #if defined(USE_IWPRIV_RADIO_5G)
    mlme_radio_wl(0);
    #else
    restart_wifi_wl(0, 0);
    #endif
    is_radio_changed = 1;
    }
    }
    if (is_radio_changed && !manual)
    logmessage("WiFi scheduler", "5GHz radio: %s", (radio_on) ? "ON" : "OFF");
    #endif
    return is_radio_changed;
    }
    int
    control_radio_rt(int radio_on, int manual)
    {
    int is_radio_changed = 0;
    if (radio_on)
    {
    if (!is_radio_on_rt()) {
    #if defined(USE_IWPRIV_RADIO_2G) || defined(USE_RT3352_MII)
    mlme_radio_rt(1);
    #else
    restart_wifi_rt(1, 0);
    #endif
    is_radio_changed = 1;
    }
    }
    else
    {
    if (is_radio_on_rt()) {
    #if defined(USE_IWPRIV_RADIO_2G) || defined(USE_RT3352_MII)
    mlme_radio_rt(0);
    #else
    restart_wifi_rt(0, 0);
    #endif
    is_radio_changed = 1;
    }
    }
    if (is_radio_changed && !manual)
    logmessage("WiFi scheduler", "2.4GHz radio: %s", (radio_on) ? "ON" : "OFF");
    return is_radio_changed;
    }
    int
    control_guest_wl(int guest_on, int manual)
    {
    int is_ap_changed = 0;
    #if BOARD_HAS_5G_RADIO
    const char *ifname_ap = IFNAME_5G_GUEST;
    int radio_on = get_enabled_radio_wl();
    int i_mode_x = get_mode_radio_wl();
    // check WDS only, ApCli only or Radio disabled (force or by schedule)
    if ((guest_on) && (i_mode_x == 1 || i_mode_x == 3 || !radio_on || !is_interface_up(IFNAME_5G_MAIN)))
    {
    return 0;
    }
    if (guest_on)
    {
    if (!is_interface_up(ifname_ap)) {
    wif_control(ifname_ap, 1);
    is_ap_changed = 1;
    }
    br_add_del_if(IFNAME_BR, ifname_ap, 1);
    wif_control_m2u(1, ifname_ap);
    }
    else
    {
    if (is_interface_up(ifname_ap)) {
    wif_control(ifname_ap, 0);
    is_ap_changed = 1;
    }
    br_add_del_if(IFNAME_BR, ifname_ap, 0);
    }
    if (is_ap_changed)
    restart_guest_lan_isolation();
    if (is_ap_changed && !manual)
    logmessage("WiFi scheduler", "5GHz guest AP: %s", (guest_on) ? "ON" : "OFF");
    #endif
    return is_ap_changed;
    }
    int
    control_guest_rt(int guest_on, int manual)
    {
    int is_ap_changed = 0;
    const char *ifname_ap = IFNAME_2G_GUEST;
    int radio_on = get_enabled_radio_rt();
    int i_mode_x = get_mode_radio_rt();
    #if defined(USE_RT3352_MII)
    int is_ap_mode = get_ap_mode();
    #endif
    // check WDS only, ApCli only or Radio disabled (force or by schedule)
    if ((guest_on) && (i_mode_x == 1 || i_mode_x == 3 || !radio_on || !is_interface_up(IFNAME_2G_MAIN)))
    {
    return 0;
    }
    if (guest_on)
    {
    if (!is_interface_up(ifname_ap)) {
    wif_control(ifname_ap, 1);
    is_ap_changed = 1;
    }
    #if defined(USE_RT3352_MII)
    if (!is_ap_mode)
    br_add_del_if(IFNAME_BR, IFNAME_INIC_GUEST_VLAN, 1);
    #else
    br_add_del_if(IFNAME_BR, ifname_ap, 1);
    wif_control_m2u(0, ifname_ap);
    #endif
    }
    else
    {
    if (is_interface_up(ifname_ap)) {
    wif_control(ifname_ap, 0);
    is_ap_changed = 1;
    }
    #if defined(USE_RT3352_MII)
    if (!is_ap_mode)
    br_add_del_if(IFNAME_BR, IFNAME_INIC_GUEST_VLAN, 0);
    #else
    br_add_del_if(IFNAME_BR, ifname_ap, 0);
    #endif
    }
    if (is_ap_changed)
    restart_guest_lan_isolation();
    if (is_ap_changed && !manual)
    logmessage("WiFi scheduler", "2.4GHz guest AP: %s", (guest_on) ? "ON" : "OFF");
    return is_ap_changed;
    }
    static void
    ebtables_filter_guest_ap(const char *wifname, int is_aband, int i_need_dhcp)
    {
    if (i_need_dhcp) {
    /* drop all IPv4 traffic to router host (exclude DHCPv4) */
    doSystem("ebtables -A %s -i %s -p IPv4 --ip-protocol ! %s -j %s",
    "INPUT", wifname, "udp", "DROP");
    doSystem("ebtables -A %s -i %s -p IPv4 --ip-protocol %s --ip-destination-port ! %d -j %s",
    "INPUT", wifname, "udp", 67, "DROP");
    } else {
    /* drop all traffic to router host */
    doSystem("ebtables -A %s -i %s -j %s",
    "INPUT", wifname, "DROP");
    }
    /* drop forwards between 2.4/5Ghz AP wifs */
    #if BOARD_HAS_5G_RADIO
    if (is_aband) {
    #if defined(USE_RT3352_MII)
    doSystem("ebtables -A %s -i %s -o %s -j %s", "FORWARD", wifname, IFNAME_INIC_GUEST_VLAN, "DROP");
    #else
    doSystem("ebtables -A %s -i %s -o %s -j %s", "FORWARD", wifname, IFNAME_2G_MAIN, "DROP");
    doSystem("ebtables -A %s -i %s -o %s -j %s", "FORWARD", wifname, IFNAME_2G_GUEST, "DROP");
    #endif
    } else {
    doSystem("ebtables -A %s -i %s -o %s -j %s", "FORWARD", wifname, IFNAME_5G_MAIN, "DROP");
    doSystem("ebtables -A %s -i %s -o %s -j %s", "FORWARD", wifname, IFNAME_5G_GUEST, "DROP");
    }
    #endif
    }
    void
    restart_guest_lan_isolation(void)
    {
    int bp_isolate, is_need_ebtables = 0;
    int is_ap_mode = get_ap_mode();
    const char *rt_ifname_guest = IFNAME_2G_GUEST;
    #if BOARD_HAS_5G_RADIO
    const char *wl_ifname_guest = IFNAME_5G_GUEST;
    bp_isolate = 0;
    if (is_interface_up(wl_ifname_guest)) {
    if (nvram_wlan_get_int(1, "guest_lan_isolate")) {
    if (!is_ap_mode)
    bp_isolate = 1;
    else
    is_need_ebtables |= 0x10;
    }
    }
    brport_set_param_int(wl_ifname_guest, "isolate_mode", bp_isolate);
    #endif
    bp_isolate = 0;
    if (is_interface_up(rt_ifname_guest)) {
    if (nvram_wlan_get_int(0, "guest_lan_isolate")) {
    if (!is_ap_mode)
    bp_isolate = 1;
    else
    is_need_ebtables |= 0x01;
    }
    }
    #if defined(USE_RT3352_MII)
    rt_ifname_guest = IFNAME_INIC_GUEST_VLAN;
    if (is_ap_mode)
    is_need_ebtables &= ~0x01;
    #endif
    brport_set_param_int(rt_ifname_guest, "isolate_mode", bp_isolate);
    if (!is_ap_mode)
    return;
    if (is_need_ebtables) {
    int i_need_dhcp = is_dhcpd_enabled(1);

    module_smart_load("ebtable_filter", NULL);
    doSystem("ebtables %s", "-F");
    doSystem("ebtables %s", "-X");
    #if BOARD_HAS_5G_RADIO
    if (is_need_ebtables & 0x10)
    ebtables_filter_guest_ap(wl_ifname_guest, 1, i_need_dhcp);
    #endif
    if (is_need_ebtables & 0x01)
    ebtables_filter_guest_ap(rt_ifname_guest, 0, i_need_dhcp);
    }
    else if (is_module_loaded("ebtables")) {
    doSystem("ebtables %s", "-F");
    doSystem("ebtables %s", "-X");

    module_smart_unload("ebt_ip", 0);
    module_smart_unload("ebtable_filter", 0);
    module_smart_unload("ebtables", 0);
    }
    }
    int
    manual_toggle_radio_rt(int radio_on)
    {
    if (!get_enabled_radio_rt())
    return 0;
    if (radio_on < 0) {
    radio_on = !is_radio_on_rt();
    } else {
    if (is_radio_on_rt() == radio_on)
    return 0;
    }
    notify_watchdog_wifi(0);
    logmessage(LOGNAME, "Perform manual toggle %s radio: %s", "2.4GHz", (radio_on) ? "ON" : "OFF");
    return control_radio_rt(radio_on, 1);
    }
    int
    manual_toggle_radio_wl(int radio_on)
    {
    #if BOARD_HAS_5G_RADIO
    if (!get_enabled_radio_wl())
    return 0;
    if (radio_on < 0) {
    radio_on = !is_radio_on_wl();
    } else {
    if (is_radio_on_wl() == radio_on)
    return 0;
    }
    notify_watchdog_wifi(1);
    logmessage(LOGNAME, "Perform manual toggle %s radio: %s", "5GHz", (radio_on) ? "ON" : "OFF");
    return control_radio_wl(radio_on, 1);
    #else
    return 0;
    #endif
    }
    int
    manual_change_radio_rt(int radio_on)
    {
    if (get_enabled_radio_rt() == radio_on)
    return 0;
    if (radio_on) {
    notify_watchdog_wifi(0);
    usleep(300000);
    }
    nvram_wlan_set_int(0, "radio_x", radio_on);
    logmessage(LOGNAME, "Perform manual %s %s %s", (radio_on) ? "enable" : "disable", "2.4GHz", "radio");
    return control_radio_rt(radio_on, 1);
    }
    int
    manual_change_radio_wl(int radio_on)
    {
    #if BOARD_HAS_5G_RADIO
    if (get_enabled_radio_wl() == radio_on)
    return 0;
    if (radio_on) {
    notify_watchdog_wifi(1);
    usleep(300000);
    }
    nvram_wlan_set_int(1, "radio_x", radio_on);
    logmessage(LOGNAME, "Perform manual %s %s %s", (radio_on) ? "enable" : "disable", "5GHz", "radio");
    return control_radio_wl(radio_on, 1);
    #else
    return 0;
    #endif
    }
    int
    manual_change_guest_rt(int radio_on)
    {
    if (get_enabled_guest_rt() == radio_on)
    return 0;
    if (radio_on) {
    notify_watchdog_wifi(0);
    usleep(300000);
    }
    nvram_wlan_set_int(0, "guest_enable", radio_on);
    logmessage(LOGNAME, "Perform manual %s %s %s", (radio_on) ? "enable" : "disable", "2.4GHz", "AP Guest");
    return control_guest_rt(radio_on, 1);
    }
    int
    manual_change_guest_wl(int radio_on)
    {
    #if BOARD_HAS_5G_RADIO
    if (get_enabled_guest_wl() == radio_on)
    return 0;
    if (radio_on) {
    notify_watchdog_wifi(1);
    usleep(300000);
    }
    nvram_wlan_set_int(1, "guest_enable", radio_on);
    logmessage(LOGNAME, "Perform manual %s %s %s", (radio_on) ? "enable" : "disable", "5GHz", "AP Guest");
    return control_guest_wl(radio_on, 1);
    #else
    return 0;
    #endif
    }
    int
    timecheck_wifi(int is_aband, const char *nv_date, const char *nv_time1, const char *nv_time2)
    {
    #define DOW_MASK_SUN (1 << 0)
    #define DOW_MASK_MON (1 << 1)
    #define DOW_MASK_TUE (1 << 2)
    #define DOW_MASK_WED (1 << 3)
    #define DOW_MASK_THU (1 << 4)
    #define DOW_MASK_FRI (1 << 5)
    #define DOW_MASK_SAT (1 << 6)
    time_t now;
    struct tm *tm;
    char *aDate, *aTime1, *aTime2;
    int i, current_min, current_dow, schedul_dow, iTime1B, iTime1E, iTime2B, iTime2E;
    aDate = nvram_wlan_get(is_aband, nv_date);
    aTime1 = nvram_wlan_get(is_aband, nv_time1);
    aTime2 = nvram_wlan_get(is_aband, nv_time2);
    if (strlen(aDate) != 7 || strlen(aTime1) != 8 || strlen(aTime2) != 8)
    return 1;
    if (strcmp(aDate, "1111111")==0 &&
    strcmp(aTime1, "00002359")==0 &&
    strcmp(aTime2, "00002359")==0)
    return 1;
    // Mon..Fri time
    iTime1B = ((aTime1[0]-'0')*10 + (aTime1[1]-'0'))*60 + (aTime1[2]-'0')*10 + (aTime1[3]-'0');
    iTime1E = ((aTime1[4]-'0')*10 + (aTime1[5]-'0'))*60 + (aTime1[6]-'0')*10 + (aTime1[7]-'0');
    // Sat, Sun time
    iTime2B = ((aTime2[0]-'0')*10 + (aTime2[1]-'0'))*60 + (aTime2[2]-'0')*10 + (aTime2[3]-'0');
    iTime2E = ((aTime2[4]-'0')*10 + (aTime2[5]-'0'))*60 + (aTime2[6]-'0')*10 + (aTime2[7]-'0');
    time(&now);
    tm = localtime(&now);
    current_min = tm->tm_hour * 60 + tm->tm_min;
    current_dow = 1 << tm->tm_wday;
    schedul_dow = 0;
    for(i=0; i<7; i++){
    if (aDate[i] == '1')
    schedul_dow |= (1 << i);
    }
    /* Saturday */
    if (current_dow & DOW_MASK_SAT)
    {
    if (schedul_dow & DOW_MASK_SAT)
    {
    if (iTime2B < iTime2E)
    {
    if (current_min >= iTime2B && current_min <= iTime2E)
    return 1;
    }
    else
    {
    if (current_min >= iTime2B)
    return 1;

    /* Check Friday -> Saturday after midnight (special check after workweek) */
    if ((schedul_dow & DOW_MASK_FRI) && (iTime1B < iTime1E) && (current_min <= iTime2E))
    return 1;
    }
    }

    /* Check cross-night from Friday */
    if ((schedul_dow & DOW_MASK_FRI) && (iTime1B >= iTime1E) && (current_min <= iTime1E))
    return 1;
    }
    else /* Sunday */
    if (current_dow & DOW_MASK_SUN)
    {
    if (schedul_dow & DOW_MASK_SUN)
    {
    if (iTime2B < iTime2E)
    {
    if (current_min >= iTime2B && current_min <= iTime2E)
    return 1;
    }
    else
    {
    if (current_min >= iTime2B)
    return 1;
    }
    }

    /* Check cross-night from Saturday */
    if ((schedul_dow & DOW_MASK_SAT) && (iTime2B >= iTime2E) && (current_min <= iTime2E))
    return 1;
    }
    else /* Monday */
    if (current_dow & DOW_MASK_MON)
    {
    if (schedul_dow & DOW_MASK_MON)
    {
    if (iTime1B < iTime1E)
    {
    if (current_min >= iTime1B && current_min <= iTime1E)
    return 1;
    }
    else
    {
    if (current_min >= iTime1B)
    return 1;

    /* Check Sunday -> Monday after midnight (special check after weekend) */
    if ((schedul_dow & DOW_MASK_SUN) && (iTime2B < iTime2E) && (current_min <= iTime1E))
    return 1;
    }
    }

    /* Check cross-night from Sunday */
    if ((schedul_dow & DOW_MASK_SUN) && (iTime2B >= iTime2E) && (current_min <= iTime2E))
    return 1;
    }
    else /* Tuesday..Friday */
    {
    if (schedul_dow & current_dow)
    {
    if (iTime1B < iTime1E)
    {
    if (current_min >= iTime1B && current_min <= iTime1E)
    return 1;
    }
    else
    {
    if (current_min >= iTime1B)
    return 1;
    }
    }

    /* Check cross-night from previous day */
    if ((schedul_dow & (current_dow >> 1)) && (iTime1B >= iTime1E) && (current_min <= iTime1E))
    return 1;
    }
    return 0;
    }

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Ezeket a mappákat mikor hozza létre? Ha már kész vagy már a gyártás elején megcsinálja?

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Bocsi miután végzett akkor hozza létre.

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Hallod az 57u asus firmware-ra tudsz hajítani egy linket honnét tom lekapni?

    Köszi. Most már jövök egy pár sörrel tudom.

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Köszi.

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Ez ami kódot beraktál ez az asus melyik file-ában van?

    Ez van a mienkben:

    # CONFIG_MT76X2_AP_LED is not set
    CONFIG_MT76X2_AP_LED_SOFT=y
    CONFIG_MT76X2_AP_LED_SOFT_GPIO=15

    # AP MODE MediaTek MT7603E PCIe Wireless driver
    #
    # CONFIG_MT76X3_AP_LED is not set
    CONFIG_MT76X3_AP_LED_SOFT=y
    CONFIG_MT76X3_AP_LED_SOFT_GPIO=14

    Nagyon nem ugyanaz a kernel..

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Ja megvan a hiba:
    Ez az MT lófax ja nem ugyanaz... Csak kérdés miként lehetne átírni,hogy jó legyen...

    1200GU --> MT7621

    ASUS --> MT7620

    Kernelt kéne cserélni?? Azt már én nem merem.. Vagy nem igaz nincs valami gebassz rá..

    [ Szerkesztve ]

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    És nem lehet a két kernelt összébb hozni? Mármint kompatibilisebb legyen a konfigjuk?

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Akkor ez megdaglesz akta lesz..:(

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Vagy áthozni az ujabba azt a funkciót?

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

  • Vtmk

    csendes tag

    Szia a wifiled funkcióban tudnál segíteni asus rt ac 57u padavanban?

    Tanulok mindig. Okulok - Szerelek. --> nrg_52 Ez csak az aláírásom. Nem mindig sikerülhet az életben amit szeretnél. De ha közel vagy hozzá már fél siker. Nekem egy célom volt a család. És megkaptam. Ezen felül már csak grátisz az élet.

Hozzászólok Aktív témák