HiLink API Huawei - Dyskusja

Kwestie techniczne, konfiguracja i rozwiązywanie problemów z modemami GSM (GPRS, EDGE, UMTS, HSDPA i HSUPA).

Moderator: Moderatorzy

Awatar użytkownika
VipeRsan
Specjalista bezprzewodowy-junior
Posty: 174
Rejestracja: 2014-11-19, 14:24
Lokalizacja: Tarnów

Re: HiLink API Huawei - Dyskusja

Post autor: VipeRsan »

Najprościej? Wgrać oprogramowanie zawierające odblokowane ADB :P

Droga trudniejsza... pfff nie testowana, ale o ile dobrze zrozumiałem to co jest na 4pda dla modemu E3372s (dla innych modemów może być inaczej, a na pewno jest inaczej dla E3372h) polega na:

!!!UWAGA!!!: metoda nie testowana i nie odpowiadam, jak modem po zastosowaniu niniejszej instrukcji zostanie cegiełką!!!
  1. Odblokować powłokę linuxową "A" (istnieje jeszcze powłoka "C" systemu VxWorks) za pomocą:

    Kod: Zaznacz cały

    AT^SPWORD="hasło"
    AT^SHELL=2
    AT^RESET
    Gdzie hasło to kod wygenerowany algorytmem 201 z odwrotnego IMEI (wpisanego od ostatniej do pierwszej cyfry). Powinno to odblokować 6 portów szeregowych w linuxie widzianych jako ttyUSB0 do ttyUSB5, gdzie 0 - to konsola AT, 1 - konsola VxWorks, 2 - konsola Linuxa, 5 - log DSP(?)

    Do tych komend może być potrzebne odblokowane najpierw zaawansowanych funkcji AT za pomocą:

    Kod: Zaznacz cały

    AT^DATALOCK="hasło1"
    gdzie hasło1 to kod wygenerowany za pomocą algorytmu 201 z IMEI.
  2. W konsoli Linuxa odpalamy ADB:

    Kod: Zaznacz cały

    /sbin/adbd
  3. Teraz możemy połaczyć się z modemem po ADB:

    Kod: Zaznacz cały

    adb connect 192.168.8.1
    adb remount
    adb shell
  4. I edytujemy plik /system/etc/autorun.sh robimy to za pomocą edytora vi uruchamiając go w sposób:

    Kod: Zaznacz cały

    busybox vi /etc/autorun.sh
    i dodajemy na końcu pliku:

    Kod: Zaznacz cały

    /sbin/adbd &
    lub nie znajac vi możemy użyć:

    Kod: Zaznacz cały

    echo "/sbin/adbd &" >>/system/etc/autorun.sh
    W tym miejscu można również od razu uruchomić demona telnet dodając do autoruna:

    Kod: Zaznacz cały

    busybox telnetd -l /system/bin/sh
O ile nie napisali tego na forum ruskim przy tej instrukcji, to z doświadczenia wiem, że do edycji plików trzeba odblokować do zapisu daną partycję. W tym celu zaraz po połączeniu się za pomocą ADB sprawdzamy stan partycji /system poleceniem:

Kod: Zaznacz cały

mount
co wypluje:

Kod: Zaznacz cały

rootfs / rootfs rw,relatime 0 0
/dev/block/mtdblock12 /modem_log yaffs2 rw,relatime 0 0
/dev/block/mtdblock17 /online yaffs2 rw,relatime 0 0
/dev/block/mtdblock3 /mnvm2:0 yaffs2 rw,relatime 0 0
tmpfs /dev tmpfs rw,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/mtdblock15 /system yaffs2 ro,relatime 0 0
/dev/block/mtdblock16 /data yaffs2 rw,relatime 0 0
/dev/block/mtdblock13 /app yaffs2 ro,relatime 0 0
/dev/block/mtdblock14 /app/webroot jffs2 ro,relatime 0 0
/dev/block/mtdblock18 /root yaffs2 rw,relatime 0 0
Jak widać /system jest tylko do odczytu (ro) na urządzeniu /dev/block/mtdblock15

Robimy więc przemontowanie do zapisu:

Kod: Zaznacz cały

mount -o remount,rw /dev/block/mtdblock15 /system
Po zakończonych zmianach z powrotem przywracamy tylko do odczytu:

Kod: Zaznacz cały

mount -o remount,ro /dev/block/mtdblock15 /system
EDIT:
Wpisania pierwszych komend AT trzeba modem przełączyć w tryb debug za pomocą wejścia pod adres modemu: http://192.168.8.1/html/switchDebugMode.html
Co również odblokuje parę portów szeregowych, z czego jeden będzie portem AT.

Oczywiście instrukcja jest dla modemu E3372s typu HiLink.
It is I, Leclerc :cfaniak:
Drop z modowanym fw i sw do modemów Huawei >>TU<< (uwaga dostęp może być zablokowany przez Dropa :( )
Dysk Googlowy z modowanym fw i sw do modemów Huawei >>TU<<
penknife
Stały użytkownik forum
Posty: 92
Rejestracja: 2014-06-12, 06:30
Lokalizacja: G-cko

Re: HiLink API Huawei - Dyskusja

Post autor: penknife »

do VipeRsan oraz osób mogących testować API:
czy skrypty JS przy korzystaniu z API HiLink nie wysyłają po cichu referer URL (adresu strony, która wykonuje zapytanie)?
Awatar użytkownika
VipeRsan
Specjalista bezprzewodowy-junior
Posty: 174
Rejestracja: 2014-11-19, 14:24
Lokalizacja: Tarnów

Re: HiLink API Huawei - Dyskusja

Post autor: VipeRsan »

Tzn? Bo nie bardzo rozumiem co rozumiesz pod "referer URL (adresu strony, która wykonuje zapytanie)"? Możesz jaśniej albo podać jakiś przykład?
It is I, Leclerc :cfaniak:
Drop z modowanym fw i sw do modemów Huawei >>TU<< (uwaga dostęp może być zablokowany przez Dropa :( )
Dysk Googlowy z modowanym fw i sw do modemów Huawei >>TU<<
penknife
Stały użytkownik forum
Posty: 92
Rejestracja: 2014-06-12, 06:30
Lokalizacja: G-cko

Re: HiLink API Huawei - Dyskusja

Post autor: penknife »

Jako przykład mogę podać TP-Link MR-3420 v2, gdzie w nowszym oprogramowaniu przy zapytaniu rozłączającym/łączącym modem 3G/4G należy dodać do argumentów wget/curl adres strony, która to zleciła, ażeby ktoś/coś niepowołany nie miał możliwości wykonania polecenia. Wówczas taki wpis wygląda mniej więcej tak:

Kod: Zaznacz cały

wget --referer http://adres_routera/ścieżka_strony_wywołującej --user Nazwa_Użytkownika --password Hasło_Uzytkownika http://adres_routera/ścieżka_polecenia
Jeśli tuż za wget wstawisz "-d" zostaną wypisane przyjmowane argumenty.
"http://adres_routera/ścieżka_strony_wywołującej" -pełny adres strony, na której nastąpiło np. kliknięcie na przycisk/łącze połącz/rozłącz/reset.

Jeśli już kolega rozpisał API HiLink-ów, dobrze by było zerknąć czy właśnie dodatkowo nie lecą do modemu jakieś adresy referer z JS w nagłówku zapytania (może tu tkwić problem z uzyskaniem tokena z konsoli w nowszych wersjach API).
Awatar użytkownika
VipeRsan
Specjalista bezprzewodowy-junior
Posty: 174
Rejestracja: 2014-11-19, 14:24
Lokalizacja: Tarnów

Re: HiLink API Huawei - Dyskusja

Post autor: VipeRsan »

Nie referery nie są potrzebne w HiLink API. Przynajmniej nie zauważyłem ich potrzeby. W pierwotnym opisie jaki zrobiłem bazując na opisie Chaddy'ego były wykorzystywane refy w np w SMSach, ale jak przeglądnąłem JS i sprawdziłem u siebie okazało się, że nie trzeba ich stosować.

Niestety nie mam modemu który używa nowszego oprogramowania (chodzi o firmware, a nie WebUI), więc nie sprawdzę co jest problemem.

Zresztą poniżej masz kod JS z API WebUI w wersji 17 pobierający dane:

Kod: Zaznacz cały

// urlstr : URL of the Restful interface.
// callback_func : Callback function to handle response, this callback function
// have one parameter
// callback_func($xml) - $xml : a jQuery XML object which is successfully get
// from getAjaxData.
// options.sync
// options.timout
// options.errorCB
function getAjaxData(urlstr, callback_func, options) {
    var myurl = AJAX_HEADER + urlstr + AJAX_TAIL;
    var isAsync = true;
    var nTimeout = AJAX_TIMEOUT;
    var errorCallback = null;

    if (options) {
        if (options.sync) {
            isAsync = (options.sync == true) ? false : true;
        }
        if (options.timeout) {
            nTimeout = parseInt(options.timeout, 10);
            if (isNaN(nTimeout)) {
                nTimeout = AJAX_TIMEOUT;
            }

        }
        errorCallback = options.errorCB;
    }

    var headers = {};
    if(!($.isArray(g_requestVerificationToken))) {
        headers['__RequestVerificationToken'] = g_requestVerificationToken;
    }

    $.ajax({
        async: isAsync,
        headers: headers,
        //cache: false,
        type: 'GET',
        timeout: nTimeout,
        url: myurl,
        //dataType: ($.browser.msie) ? "text" : "xml",
        error: function(XMLHttpRequest, textStatus) {
            try {
                if (jQuery.isFunction(errorCallback)) {
                    errorCallback(XMLHttpRequest, textStatus);
                }
                log.error('MAIN : getAjaxData(' + myurl + ') error.');
                log.error('MAIN : XMLHttpRequest.readyState = ' + XMLHttpRequest.readyState);
                log.error('MAIN : XMLHttpRequest.status = ' + XMLHttpRequest.status);
                log.error('MAIN : textStatus ' + textStatus);
            } catch (exception) {
                log.error(exception);
            }
        },
        success: function(data) {
            log.debug('MAIN : getAjaxData(' + myurl + ') sucess.');
            log.trace(data);
            var xml;
            if (typeof data == 'string' || typeof data == 'number') {
                if((-1 != this.url.indexOf('/api/ussd/get') )&&( -1 != data.indexOf("content"))) {
                    data = smsContentDeleteWrongChar(data);
                }
                if (!window.ActiveXObject) {
                    var parser = new DOMParser();
                    xml = parser.parseFromString(data, 'text/xml');
                } else {
                    //IE
                    xml = new ActiveXObject('Microsoft.XMLDOM');
                    xml.async = false;
                    xml.loadXML(data);
                }
            } else {
                xml = data;
            }
            var ret = xml2object($(xml));
            if('error' == ret.type) {
                if(ERROR_WRONG_SESSION_TOKEN == ret.error.code) {
                    log.error('Main: getajax'+ this.url +'session token error');
                    gotoPageWithoutHistory(HOME_PAGE_URL);
                    return;
                }

                if(ERROR_WRONG_SESSION == ret.error.code) {
                    log.error('Main: getajax'+ this.url +'session  error');
                    gotoPageWithoutHistory(HOME_PAGE_URL);
                    return;
                }
            }
            if('error' == ret.type && ERROR_WRONG_TOKEN == ret.error.code) {
                getAjaxToken();
                getAjaxData(urlstr, callback_func, options);
            } else if (typeof callback_func == 'function') {
                callback_func($(xml));
            } else {
                log.error('callback_func is undefined or not a function');
            }
        }
    });
}
I zapisujace dane:

Kod: Zaznacz cały

// urlstr : URL of the Restful interface.
// xml: xml string to be submit to server.
// callback_func : Callback function to handle response, this callback function
// have one parameter
// callback_func($xml) - $xml : a jQuery XML object which is successfully get
// from getAjaxData.
// options.sync
// options.timout
// options.errorCB
function saveAjaxData(urlstr, xmlDate, callback_func, options) {
    var myurl = AJAX_HEADER + urlstr + AJAX_TAIL;
    var isAsync = true;
    var nTimeout = AJAX_TIMEOUT;
    var errorCallback = null;

    if (options) {
        if (options.sync) {
            isAsync = (options.sync == true) ? false : true;
        }
        if (options.timeout) {
            nTimeout = parseInt(options.timeout, 10);
            if (isNaN(nTimeout)) {
                nTimeout = AJAX_TIMEOUT;
            }
        }
        errorCallback = options.errorCB;
    }

    var headers = {};
    if($.isArray(g_requestVerificationToken)) {
        if(g_requestVerificationToken.length > 0) {
            headers['__RequestVerificationToken'] = g_requestVerificationToken[0];
            g_requestVerificationToken.splice(0, 1);
        } else {
            setTimeout( function () {
                saveAjaxData(urlstr, xmlDate, callback_func, options);
            }, 50);
            return;
        }

    } else {
        headers['__RequestVerificationToken'] = g_requestVerificationToken;
    }

    $.ajax({
        async: isAsync,
        headers: headers,
        //cache: false,
        type: 'POST',
        timeout: nTimeout,
        url: myurl,
        // dataType: ($.browser.msie) ? "text" : "xml",
        data: xmlDate,
        error: function(XMLHttpRequest, textStatus) {
            try {
                if("12030" == XMLHttpRequest.status || "12031" == XMLHttpRequest.status || "12019" == XMLHttpRequest.status || "400" == XMLHttpRequest.status) {
                    saveAjaxData(urlstr, xmlDate, callback_func, options);
                    return;
                } else if(jQuery.isFunction(errorCallback)) {
                    errorCallback(XMLHttpRequest, textStatus);
                }
                log.error('MAIN : saveAjaxData(' + myurl + ') error.');
                log.error('MAIN : XMLHttpRequest.readyState = ' + XMLHttpRequest.readyState);
                log.error('MAIN : XMLHttpRequest.status = ' + XMLHttpRequest.status);
                log.error('MAIN : textStatus' + textStatus);
            } catch (exception) {
                log.error(exception);
            }
        },
        success: function(data) {
            log.debug('MAIN : saveAjaxData(' + myurl + ') success.');
            log.trace(data);
            var xml;
            if (typeof data == 'string') {
                if (-1 != this.url.indexOf('/api/sms/sms-list') && -1 != data.indexOf('Messages')) {
                    data = smsContentDeleteWrongChar(data);
                }
                if (!window.ActiveXObject) {
                    var parser = new DOMParser();
                    xml = parser.parseFromString(data, 'text/xml');
                } else {
                    //IE
                    xml = new ActiveXObject('Microsoft.XMLDOM');
                    xml.async = false;
                    xml.loadXML(data);
                }
            } else {
                xml = data;
            }
            var xml_ret = xml2object($(xml));
            if(typeof xml_ret.error != 'undefined' && -1 == this.url.indexOf('/api/user/session')) {
                if(xml_ret.error.code == ERROR_SYSTEM_NO_RIGHTS && current_href != "home") {
                    gotoPageWithoutHistory(HOME_PAGE_URL);
                    return;
                }
                if(ERROR_VOICE_BUSY == xml_ret.error.code) {
                    gotoPageWithoutHistory(VOICE_BUSY_URL);
                    return;
                }

                if(ERROR_WRONG_TOKEN == xml_ret.error.code) {
                    getAjaxToken();
                    saveAjaxData(urlstr, xmlDate, callback_func, options);
                    return;
                }

                if(ERROR_WRONG_SESSION_TOKEN == xml_ret.error.code) {
                    log.error('Main: saveAjaxDate'+ this.url +'session token error');
                    gotoPageWithoutHistory(HOME_PAGE_URL);
                    return;
                }

                if(ERROR_WRONG_SESSION == xml_ret.error.code) {
                    log.error('Main: saveAjaxDate'+ this.url +'session  error');
                    gotoPageWithoutHistory(HOME_PAGE_URL);
                    return;
                }
            } else if(isAjaxReturnOK(xml_ret) && -1 != this.url.indexOf('/api/user/login')) {
                log.debug('Main: login success, empty token list');
                if($.isArray(g_requestVerificationToken)) {
                    g_requestVerificationToken = [];
                }
            }

            if (typeof callback_func == 'function') {
                callback_func($(xml));
            } else {
                log.error('callback_func is undefined or not a function');
            }
        },
        complete: function(XMLHttpRequest, textStatus) {
            var headers = XMLHttpRequest.getAllResponseHeaders();
            if(headers.indexOf('__RequestVerificationTokenone') > 0) {
                g_requestVerificationToken.push(getTokenFromHeader(headers, '__RequestVerificationTokenone'));
                if(headers.indexOf('__RequestVerificationTokentwo') > 0) {
                    g_requestVerificationToken.push(getTokenFromHeader(headers, '__RequestVerificationTokentwo'));
                }
            } else if(headers.indexOf('__requestverificationtokenone') > 0) {
                g_requestVerificationToken.push(getTokenFromHeader(headers, '__requestverificationtokenone'));
                if(headers.indexOf('__requestverificationtokentwo') > 0) {
                    g_requestVerificationToken.push(getTokenFromHeader(headers, '__requestverificationtokentwo'));
                }
            } else if(headers.indexOf('__RequestVerificationToken') > 0) {
                g_requestVerificationToken.push(getTokenFromHeader(headers, '__RequestVerificationToken'));
            } else if(headers.indexOf('__requestverificationtoken') > 0) {
                g_requestVerificationToken.push(getTokenFromHeader(headers, '__requestverificationtoken'));
            } else {
                log.error('MAIN: saveAjaxData can not get response token');
            }
        }
    });
}
Pobranie tokena to odwołanie się do funkcji Get z odpowiednim adresem API:

Kod: Zaznacz cały

function getAjaxToken() {
    var meta = $("meta[name=csrf_token]");
    var i = 0;

    if(meta.length > 0) {
        g_requestVerificationToken = [];
        for(i; i < meta.length; i++) {
            g_requestVerificationToken.push(meta[i].content);
        }
    } else {
        getAjaxData('api/webserver/token', function($xml) {
            var ret = xml2object($xml);
            if ('response' == ret.type) {
                g_requestVerificationToken = ret.response.token;
            }
        }, {
            sync: true
        });
    }
}
A tu przykładowo jedna z mniejszych funkcji czyli switch_mode przełączająca modem w tryb debug/project:

Kod: Zaznacz cały

function switch_mode(value)
{
    var request = {
        mode: value    
    };
    
    var xmlstr = object2xml("request", request);
    saveAjaxData("api/device/mode", xmlstr, function($xml){
        var ret = xml2object($xml);
        if (isAjaxReturnOK(ret)) 
        {
            closeWindow();
        }
        
    }); 
}

Ja tu nigdzie nie widzę potrzeby referera, ale mogę się mylić tym bardziej, że nie zagłębiałem się w dokumentację jquery.

CGI jest zaimplementowane, ale da się wykorzystać tylko jedną funkcję switch_mode, gdzie wykorzystywana jest powyższa funkcja Send, która jak widać sama troszczy się o token.
It is I, Leclerc :cfaniak:
Drop z modowanym fw i sw do modemów Huawei >>TU<< (uwaga dostęp może być zablokowany przez Dropa :( )
Dysk Googlowy z modowanym fw i sw do modemów Huawei >>TU<<
penknife
Stały użytkownik forum
Posty: 92
Rejestracja: 2014-06-12, 06:30
Lokalizacja: G-cko

Re: HiLink API Huawei - Dyskusja

Post autor: penknife »

czytając powyższy kod:
1) ciekawe co zawiera zmienna: AJAX_HEADER
2) ciekawe z czym się je tokeny :__RequestVerificationTokenone i __RequestVerificationTokentwo
Awatar użytkownika
VipeRsan
Specjalista bezprzewodowy-junior
Posty: 174
Rejestracja: 2014-11-19, 14:24
Lokalizacja: Tarnów

Re: HiLink API Huawei - Dyskusja

Post autor: VipeRsan »

penknife pisze:czytając powyższy kod:
1) ciekawe co zawiera zmienna: AJAX_HEADER
Nic ciekawego. Zdefiniowana jest jako:

Kod: Zaznacz cały

var AJAX_HEADER = '../';
penknife pisze:2) ciekawe z czym się je tokeny :__RequestVerificationTokenone i __RequestVerificationTokentwo
Najstarsi górale nie wiedzą :P Ale raczej nie jest to związane z problemem.

Z tego co udało mi się zorientować pobranie tokena na nowym oprogramowaniu wskazuje na nowy błąd nr 125002, która to wartość wskazuje na zmienną ERROR_WRONG_SESSION co wskazywałoby znowu pfff... utratę logowania (przynajmniej jedynie co i się kojarzy to api/user/session, ale tego nie sprawdzi na starszym oprogramowaniu)? I jeśli tak to jaki miałby być ten login? Na pewno część tego nowego API to /api/user/login, ale na razie nie zagłębiałem się aż tak bardzo w zmiany. Może kiedyś jak znajdę trochę więcej wolnego czasu :P

Kolejną nową zmienną błędu nr 125003 jest ERROR_WRONG_SESSION_TOKEN... ciekawe czym się to miałoby różnić od błędu nr 125001 - ERROR_WRONG_TOKEN.
It is I, Leclerc :cfaniak:
Drop z modowanym fw i sw do modemów Huawei >>TU<< (uwaga dostęp może być zablokowany przez Dropa :( )
Dysk Googlowy z modowanym fw i sw do modemów Huawei >>TU<<
penknife
Stały użytkownik forum
Posty: 92
Rejestracja: 2014-06-12, 06:30
Lokalizacja: G-cko

Re: HiLink API Huawei - Dyskusja

Post autor: penknife »

Zamiast szukać tego w kodzie JS, można by po prostu podsłuchać jak przeglądarka rozmawia z modemem.
Awatar użytkownika
VipeRsan
Specjalista bezprzewodowy-junior
Posty: 174
Rejestracja: 2014-11-19, 14:24
Lokalizacja: Tarnów

Re: HiLink API Huawei - Dyskusja

Post autor: VipeRsan »

Potrzeba do tego modemu z oprogramowaniem na którym nie można odczytać tokena (i każdego innego API), bo raczej nie ma sensu podsłuchiwać modemu który nie ma zabezpieczonego API.
It is I, Leclerc :cfaniak:
Drop z modowanym fw i sw do modemów Huawei >>TU<< (uwaga dostęp może być zablokowany przez Dropa :( )
Dysk Googlowy z modowanym fw i sw do modemów Huawei >>TU<<
Awatar użytkownika
VipeRsan
Specjalista bezprzewodowy-junior
Posty: 174
Rejestracja: 2014-11-19, 14:24
Lokalizacja: Tarnów

Re: HiLink API Huawei - Dyskusja

Post autor: VipeRsan »

Prawdopodobnie rozwiązaniem problemu nowszego softu, gdzie nie da się pobrać tokena i występuje błąd sesji rozwiązaniem jest api/webserver/SesTokInfo. Przynajmniej na tyle, na ile udało mi się ustalić z Cezarym.
It is I, Leclerc :cfaniak:
Drop z modowanym fw i sw do modemów Huawei >>TU<< (uwaga dostęp może być zablokowany przez Dropa :( )
Dysk Googlowy z modowanym fw i sw do modemów Huawei >>TU<<
kolopeter
Początkujący użytkownik forum
Posty: 16
Rejestracja: 2009-10-27, 20:00
Lokalizacja: szczecin

Re: HiLink API Huawei - Dyskusja

Post autor: kolopeter »

witam.
Jak wygenerować kod algorytmem 201?
ja akurat bawie się modemem e8278s-602, ale zasada taka sama pewnie jak tu.
Ogólnie chcę uruchomić ussd. uruchomiłem funkcje typu diagnostyka, zapisywanie configa, język, ale niestety ussd nie jest w stanie wysłać zapytania,każde z błędem. Operuje na firmwarze z otwartym juz telnetem, przerobionym przez rosjan,ale chciałbym spróbować na firmwarze i webui od anglikow. Może tam jest mniej namieszane...
Chyba ,ze ktoś wie jak dobrać się do firmware , tak jak robią to Rosjanie.
edit:
czy to nie przez przypadek nowy algorytm dla huawei, tylko ,ze imei wpisujemy od konca ?
Awatar użytkownika
VipeRsan
Specjalista bezprzewodowy-junior
Posty: 174
Rejestracja: 2014-11-19, 14:24
Lokalizacja: Tarnów

Re: HiLink API Huawei - Dyskusja

Post autor: VipeRsan »

USSD wysyłasz na 3G czy LTE? Na LTE USSD nie zadziała. Musisz mieć albo tryb "preferowane LTE" (LTE->3G), albo po prostu 3G.

Co do algorytmu v201 to kalkulator stworzył forth32@4pda ew na moim dropie.

v201 z odwrotnego IMEI (wpisanego od końca) służy w E3372s do odblokowania konsoli A. v201 z normalnie wpisanego IMEI służy w E3372s do odblokowania zaawansowanych komend AT.
It is I, Leclerc :cfaniak:
Drop z modowanym fw i sw do modemów Huawei >>TU<< (uwaga dostęp może być zablokowany przez Dropa :( )
Dysk Googlowy z modowanym fw i sw do modemów Huawei >>TU<<
kolopeter
Początkujący użytkownik forum
Posty: 16
Rejestracja: 2009-10-27, 20:00
Lokalizacja: szczecin

Re: HiLink API Huawei - Dyskusja

Post autor: kolopeter »

no niestety .. sprobowalem kazda kombinacje z numerami z odwrotnego imeia i normalnego .
AT^DATALOCK="hasło1" wchodzi numer v2 z komunikatem ok, AT^SPWORD="hasło" zas kazdy z errorem. AT^SHELL=2 nie wchodzi , ale za to wchodzi 0 i 1. tez czytam rosyjskie fora ,ale w zasadzie wszystko wraca do ww komend i http://192.168.1.1/html/switchDebugMode.html , ktore zamyka mi przegladarke (IE i firefoxa, ale opery nie zamyka) bez komuniaktu. ech , jakies pomysly ?
rozlozenie firmware- poleglem :)
xyy333
Stały użytkownik forum
Posty: 90
Rejestracja: 2008-12-03, 20:06
Lokalizacja: Gdańsk

Re: HiLink API Huawei - Dyskusja

Post autor: xyy333 »

Vipersan, na twoim Dropie w aplikacji na windows jest virus - virustotal daje 20/50
danish1162
Początkujący użytkownik forum
Posty: 2
Rejestracja: 2015-05-01, 15:08
Lokalizacja: pakistan

Re: HiLink API Huawei - Dyskusja

Post autor: danish1162 »

sir script is not working please help me regarding e5377
tosiek pisze:VipeRsan, dziękuję za dokumentację API! Przydała mi się do przełączania opornego modemu HiLink i zmianie go na zwykły.

Przełączanie modemu HiLink w zwykły tryb (port diag i pc ui)
Jeżeli modem po wejściu na poniższe adresy nie zmienia trybu pracy i nie pokazują się nowe urządzenia

Kod: Zaznacz cały

project mode:
http://192.168.1.1/html/switchProjectMode.html
http://192.168.8.1/html/switchProjectMode.html

debug mode:
http://192.168.1.1/html/switchDebugMode.html
http://192.168.8.1/html/switchDebugMode.html 
to WEBUI nie wysyła tokena, który jest wymagany do zmiany tych ustawień. (webui nie współpracuje z obecna wersją oprogramowania). Napisałem skrypt, który pobiera token i przełącza w odpowiedni tryb.

Instrukcja:
  • zacznij od instalacji sterowników stąd: http://www.bez-kabli.pl/viewtopic.php?p=501323#501323
  • instalujemy Mobile Broadband HL Service (ta usługa przełącza HiLinka w systemach windows w tryb karty sieciowej RNDIS) znajduje się na napędzie instalowanym przez modem lub link: http://www.mediafire.com/download/6n64k ... BrServ.zip
  • Pobieramy skrypt: http://www.mediafire.com/download/c3cfv ... itcher.zip (lub z załącznika)
  • Uruchamiamy plik switcher.bat
  • Podłączamy modem i czekamy aż otworzy się przeglądarka. Zapamiętujemy adres modemu.
  • Wracamy do skryptu i wybieramy adres modem (wpisujemy liczbę 1 dla 192.168.1.1 lub 2 dla 192.168.8.1). Enter.
  • Wybieramy tryb przełączenia (liczba 1 lub 2):
    1 - DEVICE_MODE_PROJECT_MODE
    2 - DEVICE_MODE_DEBUG_MODE
    Enter.
    Enter jeżeli widać token (ciąg liczb)
  • Zainstalują się nowe urządzenia (niżej przykład dla project mode):

    Kod: Zaznacz cały

    FC - PC UI Interface - USB\VID_12D1&PID_1442&MI_00
    FC - Application Interface - USB\VID_12D1&PID_1442&MI_01
    
W trybie project mode możemy przełączyć na tryb pracy jak zwykły modem.
Trzeba wysłać polcenie AT na port com urządzenia o nazwie :

Kod: Zaznacz cały

AT^U2DIAG=0
powrót do HiLink:

Kod: Zaznacz cały

AT^U2DIAG=119


W trybie hilink debug można wgrywać oprogramowanie od zwykłego modemu (TCPU) oraz dasboard (UTPS) do obsługi zwykłego modemu. Potrzebne będą sterowniki dostępne wyżej.


źródła:
wget: http://users.ugent.be/~bpuype/wget/
informacje o trybach pracy modemów HiLink: http://tjworld.net/wiki/Huawei/E3131UsbHspa
api webui hilink: http://forum.jdtech.pl/Watek-hilink-api ... zen-huawei
przełączanie w tryb modemu: http://forum.jdtech.pl/Watek-huawei-e31 ... u-na-stale
modyfikacja sterowników: http://4pda.ru/forum/index.php?showtopi ... ry28148805
kolopeter
Początkujący użytkownik forum
Posty: 16
Rejestracja: 2009-10-27, 20:00
Lokalizacja: szczecin

Re: HiLink API Huawei - Dyskusja

Post autor: kolopeter »

trick dla e8278 USSD jakby ktos potrzebowal
tools:adbfileexplorer
firmware:E8278Update_21.261.67.00.105.exe,Update_WEBUI13.100.03.02.03, E8278Update_21.261.67.00.778_ADB_TLN_01
1 instalujemy E8278Update_21.261.67.00.778_ADB_TLN_01,Update_WEBUI13.100.03.02.03
2 programikiem adbfileexplorer sciagamy i edytujemy jakims edytorem : /app/webroot/WebApp/common/config/ussd/config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<!-- 特性开关,默认关闭 -->
<enable>1</enable>
<ussd_encode>1</ussd_encode>
</config>
4.wgrywamy spowrotem adbfileexplorerem config.xml
5 instalujemy E8278Update_21.261.67.00.105.exe
6 i teraz dopiero sie logujemy
mozna takze zmienic: plik .../global/languagelist.xml jezyki i w .../global/config.xml ustawic kilka rzeczy jak: diagnostic, save and restore config , ussd -bo pierwsze 3 opcje dla niego sa bezuzyteczne...
sorki ,ze tu pisze,ale komus musialem sie pochwalic :) bo juz chyba 3 dzien nad tym siedze. niestety obslugi stk nie udalo mi sie uruchomic na tym sofcie.


edit
wracajac do tematu adbd
u mnie pomoglo to :
AT^DATALOCK="???_?????????????"
AT^NVWR=33,4,2,0,0,0
AT^RESET
widze,ze
AT^SHELL?
Odpowiedź:
AT^SHELL?

^SHELL:2

OK

ale adb nie jest odpalone na modemie. niestety i tu poleglem.
zastanawiam sie jak rosjanie dali sobie rade z crc dla upgrade wizarda.
meczy mnie ten temat :) moze jakis program do wrzucania plikow bin, bo tego sobie troszke zedytowalem, ale nie mam czym wrzucic, bo wszystkie flashery sa do starszych modemow
Awatar użytkownika
VipeRsan
Specjalista bezprzewodowy-junior
Posty: 174
Rejestracja: 2014-11-19, 14:24
Lokalizacja: Tarnów

Re: HiLink API Huawei - Dyskusja

Post autor: VipeRsan »

xyy333 pisze:Vipersan, na twoim Dropie w aplikacji na windows jest virus - virustotal daje 20/50
:/ Dzięki za info. Jednak obstawiam, że jest to mimo wszystko fałszywy alarm związany z wysoką heurystyką danych programów, które wykrywają mechanizm keygena (większość... nazwijmy to patchy ;) ma fałszywe alarmy :P ). Tym bardziej, że nie ma jednoznacznie określonego typu wirusa (każdy program podaje praktycznie co innego).
kolopeter pisze:trick dla e8278 USSD jakby ktos potrzebowal
tools:adbfileexplorer
firmware:E8278Update_21.261.67.00.105.exe,Update_WEBUI13.100.03.02.03, E8278Update_21.261.67.00.778_ADB_TLN_01
...
5 instalujemy E8278Update_21.261.67.00.105.exe
Eeee... zainstalowałeś fw z adb i telnetem i potem się go pozbyłeś?
kolopeter pisze:edit
wracajac do tematu adbd
u mnie pomoglo to :
AT^DATALOCK="???_?????????????"
AT^NVWR=33,4,2,0,0,0
AT^RESET
widze,ze
AT^SHELL?
Odpowiedź:
AT^SHELL?

^SHELL:2

OK

ale adb nie jest odpalone na modemie. niestety i tu poleglem.
zastanawiam sie jak rosjanie dali sobie rade z crc dla upgrade wizarda.
meczy mnie ten temat :) moze jakis program do wrzucania plikow bin, bo tego sobie troszke zedytowalem, ale nie mam czym wrzucic, bo wszystkie flashery sa do starszych modemow
Shell=2 odpala konsolę linuxa na na jednym z portów COM więc musisz się połączyć z modemem na danym porcie i tam odpalić adb (działa do restartu modemu), a następnie wyedytować już za pomocą shella adb plik autorun.sh co powinno mniej więcej wyglądać tak jak napisałem wcześniej (nie jestem pewien tej instrukcji ;) bo to tłumaczenie z języka którego ni w ząb nie czaję :P )
It is I, Leclerc :cfaniak:
Drop z modowanym fw i sw do modemów Huawei >>TU<< (uwaga dostęp może być zablokowany przez Dropa :( )
Dysk Googlowy z modowanym fw i sw do modemów Huawei >>TU<<
kolopeter
Początkujący użytkownik forum
Posty: 16
Rejestracja: 2009-10-27, 20:00
Lokalizacja: szczecin

Re: HiLink API Huawei - Dyskusja

Post autor: kolopeter »

pozbylem , bo na tamtym zestawie USSD nie dziala , zas po tym co napisalem dziala , jak powinien. kazdy ma swoje potrzeby :)
np E8278s_603_Update_21.265.55.01.1293 z E8278s_603_Update_WEBUI_13.100.11.06.1293 obsluguje STK , ktorego na innym zestawie nie udalo sie uruchomic.
co do adb, albo jestem glupi,albo glupi :)
jesli dobrze Cie zrozumielem, to odpalam np. putty na serial com9 i powinienem dostac sie do shela. problem jest taki ,ze polaczylem sie , ale leca tylko DSFLOWRPT i w zaden sposob nie moge dostac sie do konsoli. oczywiscie tylko jeden com istnieje ... PC UI Interface
Awatar użytkownika
VipeRsan
Specjalista bezprzewodowy-junior
Posty: 174
Rejestracja: 2014-11-19, 14:24
Lokalizacja: Tarnów

Re: HiLink API Huawei - Dyskusja

Post autor: VipeRsan »

Pfff... Jak włączysz tryb debug to powinno być trochę więcej portów, z tego co pamiętam to chyba ok 3. Spróbuj odinstalować wszystko co masz do Huaweia i zainstalować sterowniki FcSerial z tematu Tośka (ten przyklejony).
It is I, Leclerc :cfaniak:
Drop z modowanym fw i sw do modemów Huawei >>TU<< (uwaga dostęp może być zablokowany przez Dropa :( )
Dysk Googlowy z modowanym fw i sw do modemów Huawei >>TU<<
kolopeter
Początkujący użytkownik forum
Posty: 16
Rejestracja: 2009-10-27, 20:00
Lokalizacja: szczecin

Re: HiLink API Huawei - Dyskusja

Post autor: kolopeter »

inny problem byl, ale dalem rade... dzieki za pomoc, bo z tym ,ze trzeba przez com wchodzic, to bym nie zgadl i nikt w sumie za bardzo o tym nie pisze. domyslna konfiguracja nie pozwala wejsc na konsole, ale ... mozna tak :):

Kod: Zaznacz cały

^SETPORT:A1,A2;12,16,A1,A2 ------czysty soft
AT^DATALOCK="pass code2 imei" ---huawei code calculator
AT^NVWR=33,4,2,0,0,0
AT^RESET
AT^SETPORT="A1,A2;2,3,5,16,12,13,14,A1,A2"
AT^RESET
shell serial: com25 3g gps interface
w shellu
mount    -sprawdzic ro
busybox sh
mount -o remount,rw /dev/block/mtdblock0 /system

vi /etc/autorun.sh
dodajemy:
else
	
/app/appautorun.sh


busybox telnetd -l /bin/sh

/sbin/adbd &

fi
mount -o remount,ro /dev/block/mtdblock0 /system

finish
at^setport="A1,A2;3,12,16"
AT^RESET
at^setport="A1,A2;12,16,A1,A2"
Odpowiedź: 
at^setport?

^SETPORT:A1,A2;12,16,A1,A2

OK
no i tu jeszcze troszke danych :

Kod: Zaznacz cały

^SETPORT:2: 3G PCUI
^SETPORT:3: 3G DIAG
^SETPORT:5: 3G GPS
^SETPORT:A: BLUE TOOTH
^SETPORT:16: NCM
^SETPORT:A1: CDROM
^SETPORT:A2: SD
^SETPORT:12: 4G PCUI
^SETPORT:13: 4G DIAG
^SETPORT:14: 4G GPS
a robilem to , bo nie wiem co chlopaki z zagranicy zrobili w firmwarze... od kilku dni szukam, jak rozlozyc instalatory firmware, jak obliczac crc(nikt sie nie chwali jak) i chyba najlatwiej od D strony
pozdro i dzieki... .znowu sie czlek czegos nauczyl :)
Awatar użytkownika
VipeRsan
Specjalista bezprzewodowy-junior
Posty: 174
Rejestracja: 2014-11-19, 14:24
Lokalizacja: Tarnów

Re: HiLink API Huawei - Dyskusja

Post autor: VipeRsan »

No dobra trochę się poświęciłem i wgrałem nowszy soft do swojego modemu dzięki czemu mogłem zgłębić trochę tajniki HilinkAPI dla nowszych fw (jak się zdaje dotyczy oprogramowania powyżej wersji 22.29x.xx.xxx). Postaram się całość zamieścić w głównym temacie przy okazji wprowadzić parę poprawek i dopisać parę nowych API wprowadzonych jak się zdaje wraz z WebUI 17, ale poniżej zamieszczę wzmiankę o głównej zmianie, która blokowała korzystanie z API HiLinka.

W nowym fw zmienia się kompletnie sposób weryfikacji komend API. Przedtem był to token pobierany z adresu /api/webserver/token. Obecnie jest to weryfikacja sesji.

Cezary z eko.one.pl, dla potrzeb 3ginfo, odpytując HiLinki z nowym fw robi myk w postaci pobrania ciasteczka ze strony głównej 192.168.8.1/html/home.html i następnie z komendami API przekazuje ciasteczko. Ciasteczko zawiera zmienną SessionID. Teoretycznie jest ok komendy działają i wszyscy sa szczęśliwi. A może jednak nie do końca, bo po pierwsze wymaga pobrania ciasteczka ze strony html, a po drugie jak spróbujemy pobrać listę sms'ów dostaniemy błąd sesji 125002 (powinien co prawda wystąpić błąd 125003, ale mniejsza o to) :/

Podgląd jak to robi stronka sms modemu HiLink wskaże, że przekazywany jest token, który pobierany jest z... nagłówka meta generowanego dynamicznie tej strony html (w zasadzie występują 2 nagłówki meta o nazwie csrf_token, ale uprzedzając pytania nie wiem czemu są dwa) :(

No dobra pytanie skąd bierze się SessionID i token sesji? Wygląda na to, że jest to zaszyte gdzieś w fw, bo przypadek sprawił, że znalazłem adres /api/webserver/SesTokInfo (próbowałem hexedytorem podejrzeć plik update'u ;) ). Wywołując to API na nowym fw dostajemy 2 zmienne.
  1. Informacje o identyfikatorze sesji - SesInfo która zawiera właśnie zmienną SessionID oraz
  2. Informację o tokenie sesji - TokInfo, który zawiera token.
Teraz trochę praktyki.
  1. Pobranie informacji o sesji:

    Kod: Zaznacz cały

    curl -X GET http://192.168.8.1/api/webserver/SesTokInfo
    da nam odpowieź:

    Kod: Zaznacz cały

    <?xml version="1.0" encoding="UTF-8"?>
    <response>
    <SesInfo>SessionID=gsU8x5ODj9CdzmYTG2pA5AUWnnQtHj0nbi4JuSGKfrK+siCdrFM1NBQu8Au6VpXgEm+8VtstHPIT55l74Z1UHmXcz7JBjQO2xMOYv+1PQkh8+BLIy6D6rOF34CB5R9s7</SesInfo>
    <TokInfo>c1w6RrxlvkKA0TzGnZmS9/uTCbHTtN9f</TokInfo>
    </response>
  2. Większość API (przynajmniej z części informacyjnej - GET) obsługuje się przekazując zmienną SesInfo jako ciasteczko. Można to zrobić na dwa sposoby:
    • po bożemu jak sama nazwa wskazuje czyli parametrem odpowiedzialnym za ciasteczko:

      Kod: Zaznacz cały

      curl -X GET http://192.168.8.1/api/device/signal --cookie "SessionID=gsU8x5ODj9CdzmYTG2pA5AUWnnQtHj0nbi4JuSGKfrK+siCdrFM1NBQu8Au6VpXgEm+8VtstHPIT55l74Z1UHmXcz7JBjQO2xMOYv+1PQkh8+BLIy6D6rOF34CB5R9s7" -H "Content-Type: text/xml"
    • lub przekazując jako nagłówek "Cookie":

      Kod: Zaznacz cały

      curl -X GET http://192.168.8.1/api/device/signal -H "Cookie: SessionID=gsU8x5ODj9CdzmYTG2pA5AUWnnQtHj0nbi4JuSGKfrK+siCdrFM1NBQu8Au6VpXgEm+8VtstHPIT55l74Z1UHmXcz7JBjQO2xMOYv+1PQkh8+BLIy6D6rOF34CB5R9s7" -H "Content-Type: text/xml"
  3. Niektóre API (część konfiguracyjna - POST) może dodatkowo wymagać podania tokena. Tak więc np. pobranie listy sms będzie wyglądało następująco (wersja z przekazaniem SessionID jako nagłówka):

    Kod: Zaznacz cały

    curl -X POST -d "<request><PageIndex>1</PageIndex><ReadCount>20</ReadCount><BoxType>1</BoxType><SortType>0</SortType><Ascending>0</Ascending><UnreadPreferred>0</UnreadPreferred></request>" http://192.168.8.1/api/sms/sms-list -H "Cookie: SessionID=gsU8x5ODj9CdzmYTG2pA5AUWnnQtHj0nbi4JuSGKfrK+siCdrFM1NBQu8Au6VpXgEm+8VtstHPIT55l74Z1UHmXcz7JBjQO2xMOYv+1PQkh8+BLIy6D6rOF34CB5R9s7" -H "__RequestVerificationToken: c1w6RrxlvkKA0TzGnZmS9/uTCbHTtN9f" -H "Content-Type: text/xml"
I jeszcze jedna uwaga... Token sesji i identyfikator sesji jest często zmieniany. Nie pamiętam w tej chwili konkretnych liczb, ale trzeba mieć to na uwadze. Stare API tokena /api/webserver/token zwykle podawało ten sam numer przez dość długi czas. Nowe API /api/webserver/SesTokInfo za każdym razem podaje inny wynik. Pewnie wynika to z szyfrowania, ale zbyt długo zastanawiając się nad komendami API dość szybko można odkryć, że dostaniemy w wyniku komendy błąd sesji 125002 (przeterminowany SessionID). Dlatego automatyzując działanie skryptów trzeba uwzględnić powyższe uwagi. Np plik wsadowy dla Windowsa można rozwiązać w ten sposób (wymaga narzędzi: curl, grep, cut):

Kod: Zaznacz cały

@ECHO OFF
rem przypisanie zmiennej modIPAdr adresu IP modemu
@SET modIPAdr=192.168.8.1

rem pobranie tokena oraz ID sesji i zapisanie do zmiennych
@curl -s -X GET http://%modIPAdr%/api/webserver/SesTokInfo > tmp.tmp
type tmp.tmp | grep SesInfo | cut -d ^> -f2 | cut -d ^< -f1 > tmp1.tmp
type tmp.tmp | grep TokInfo | cut -d ^> -f2 | cut -d ^< -f1 > tmp2.tmp
@del /A /F tmp.tmp

@SET /p sid= < tmp1.tmp
@del /A /F tmp1.tmp
@SET sid=Cookie: %sid%

@SET /p tok= < tmp2.tmp
@del /A /F tmp2.tmp
@SET tok=__RequestVerificationToken: %tok%

rem pobranie listy sms'ów
@curl -X POST -d "<request><PageIndex>1</PageIndex><ReadCount>20</ReadCount><BoxType>1</BoxType><SortType>0</SortType><Ascending>0</Ascending><UnreadPreferred>0</UnreadPreferred></request>" http://%modIPAdr%/api/sms/sms-list -H "%sid%" -H "%tok%" -H "Content-Type: text/xml"
@pause
It is I, Leclerc :cfaniak:
Drop z modowanym fw i sw do modemów Huawei >>TU<< (uwaga dostęp może być zablokowany przez Dropa :( )
Dysk Googlowy z modowanym fw i sw do modemów Huawei >>TU<<
mojo
Początkujący użytkownik forum
Posty: 1
Rejestracja: 2015-11-22, 21:55

Re: HiLink API Huawei - Dyskusja

Post autor: mojo »

Witam!
Nie che mi coś działać to podawanie pinu, sam soft z ADB na którym ponoć innym użytkownikom działa:

Kod: Zaznacz cały

E3372s-153_Update_22.286.03.00.00_ADB_TLN_01

Kod: Zaznacz cały

/dev/block/mtdblock15 /system yaffs2 rw,relatime 0 0

Kod: Zaznacz cały

/ # ifconfig
br0       Link encap:Ethernet  HWaddr 00:0D:87:8E:4B:AC
          inet addr:192.168.8.1  Bcast:192.168.8.255  Mask:255.255.255.0
cat /system/etc/pushpin.sh

Kod: Zaznacz cały

#!/system/bin/busybox sh
sleep 5

#wprowadz pin
PIN=1111

# pobranie adresu na jakim modem funkcjonuje, przy zalozeniu, ze modem jest urza       dzeniem br0 i adres jego zaczyna sie od 192
IPADDR=$(ifconfig br0 | grep 192 | cut -d ':' -f2 | cut -d ' ' -f1)

# pobranie tokena
TOKEN=$(wget -qO- http://$IPADDR/api/webserver/token | grep token | cut -d '>' -       f2 | cut -d '<' -f1)

# pobranie stanu SIM
SIMSTATE=$(wget -qO- http://$IPADDR/api/monitoring/converged-status --header
"__RequestVerificationToken: $TOKEN" --header "Content-Type: text/xml" | grep Si       mState | cut -d '>' -f2 | cut -d '<' -f1)

# jezeli SimState = 260 (wymagany PIN) wtedy wprowadzenie PINu
if [ $SIMSTATE == 260 ]; then
   wget -qO- http://$IPADDR/api/pin/operate --post-data="<request><OperateType>0       </OperateType>
<CurrentPin>$PIN</CurrentPin><NewPin></NewPin><PukCode></PukCode></request>" --h       eader
"__RequestVerificationToken: $TOKEN" --header "Content-Type: text/xml"
fi

Kod: Zaznacz cały

/ # ls -l /system/etc/pushpin.sh
-rwxrwxr-x    1 0        0              945 Nov 30 14:30 /system/etc/pushpin.sh
/ #
autorun zaś wygląda tak:
cat /etc/autorun.sh

Kod: Zaznacz cały

#!/system/bin/busybox sh

mkdir bin
ln -s /system/bin/sh /bin/sh

/system/sbin/NwInquire &

busybox echo 0 > /proc/sys/net/netfilter/nf_conntrack_checksum

#▒▒ݲ▒▒▒NV▒▒▒▒▒Dz▒▒߰汾▒▒▒▒ֻ▒▒wifi▒▒▒▒▒▒▒▒ȫӦ▒ã▒forgive me pls, no better method thou             ght
ecall bsp_get_factory_mode
#BEGIN DTS2013092201594 yaozhanwei 2013-05-25 modified for wifi factory mode
dmesg | /system/bin/busybox grep "+=+=+==factory_mode+=+=+=="
#END DTS2013092201594 yaozhanwei 2013-05-25 modified for wifi factory mode
if [ $? -eq 0 ]
then
        #BEGIN DTS2013092201594 yaozhanwei 2013-05-25 added for wifi factory mod             e
        /system/bin/wifi_brcm/exe/wifi_poweron_factory_43241.sh
        #END DTS2013092201594 yaozhanwei 2013-05-25 added for wifi factory mode
else
        /system/bin/insmod_ctf_ko.sh
        /app/appautorun.sh
        /sbin/adbd &
        busybox telnetd -l /bin/sh
#       /online/myautorun.sh
fi
/system/etc/pushpin.sh &

Kod: Zaznacz cały

/ # ls -l /etc/autorun.sh
-rwxrwxr-x    1 1009     1009           872 Nov 30 15:16 /etc/autorun.sh
/ #
jedyne co u mnie był nieco inaczej to :
/online/myautorun.sh -zakomentowalem
-brak fi w oryginalnym pliku -dopisałem

Mimo wszystko za każdym razem prosi o Pin...może ktoś widzi jakiś błąd, ponoć firmware z R nie działają w routerach ale ten nie podaje pinu nawet do kompa?[/quote]
Rawq
Początkujący użytkownik forum
Posty: 9
Rejestracja: 2014-09-01, 04:45
Lokalizacja: Legionowo

Re: HiLink API Huawei - Dyskusja

Post autor: Rawq »

Witam,

Mam problem z odczytaniem informacji o sygnale, http://192.168.8.1/api/device/signal
wyświetla się tylko "100002" czym to jest spowodowane?

Modem Huawei E5372
Krak09
Stały użytkownik forum
Posty: 60
Rejestracja: 2015-07-14, 20:22
Lokalizacja: Krakow

Re: HiLink API Huawei - Dyskusja

Post autor: Krak09 »

Zaloguj sie w najpierw w WebUI i i dopiero potem podaj komendę.
Rawq
Początkujący użytkownik forum
Posty: 9
Rejestracja: 2014-09-01, 04:45
Lokalizacja: Legionowo

Re: HiLink API Huawei - Dyskusja

Post autor: Rawq »

Jestem zalogowany, ale to nic nie zmienia.
Krak09
Stały użytkownik forum
Posty: 60
Rejestracja: 2015-07-14, 20:22
Lokalizacja: Krakow

Re: HiLink API Huawei - Dyskusja

Post autor: Krak09 »

bład 100002 - brak wsparcia w firmware lub błędny adres API
Rawq
Początkujący użytkownik forum
Posty: 9
Rejestracja: 2014-09-01, 04:45
Lokalizacja: Legionowo

Re: HiLink API Huawei - Dyskusja

Post autor: Rawq »

dzieki za upgrate się nie biorę, nie mam pewnego firmwaru a nie chce uwalić modemu.
hippi
Stały użytkownik forum
Posty: 65
Rejestracja: 2008-12-07, 23:06
Lokalizacja: północ

Re: HiLink API Huawei - Dyskusja

Post autor: hippi »

Potrzebuję aby połączenie modemowe było rozłączane automatycznie o zadanej porze i wznawiane i innej. Modem E3372 HiLink, router stoi na OpenWRT. W opisie http://www.bez-kabli.pl/viewtopic.php?t=42168 jest przykład na restart modemu ale nie wiem jak to zaadoptować do rozłączania/wznawiania połączenia, ba szczerze nawet nie wiem jak z tego skorzystać. Co to ADB już się dowiedziałem, próba połączenia z modemem poprzez telnet sie nie udaje (prawdopodobnie mam soft bez ADB i telnetu - ale to nie problem). Pewno potrzebny jest do tego jakiś skrypt ale niestety moja wiedza programistyczna jest =0. Byłby ktoś w stanie pomóc?
Huawei 5g cpe pro 2 (H122-373), 2xATK 504 + Cybertech LTE-A/4G MIMO, T-mobile/Orenżada 1,7km, RB912UAG-2HPnD + LTE6 - robi za WiFi i DHCP
dzejk
Guru bezprzewodowy
Posty: 7187
Rejestracja: 2014-10-17, 14:37
Lokalizacja: internet

Re: HiLink API Huawei - Dyskusja

Post autor: dzejk »

można pod openwrt, np. przez odcięcie zasilania usb, zależy od routera, poczytaj i tam napisz: http://eko.one.pl/forum/viewtopic.php?id=10450
hippi
Stały użytkownik forum
Posty: 65
Rejestracja: 2008-12-07, 23:06
Lokalizacja: północ

Re: HiLink API Huawei - Dyskusja

Post autor: hippi »

Dostałem odpowiedź od Cezarego, że muszę to zrobić przez skrypt i API.
Przejrzałem przed chwilą cały wątek http://www.bez-kabli.pl/viewtopic.php?t=42168 i jest opcja rozłączenia i łączenia połączenia: http://192.168.8.1/api/dialup/dial. Ale jak próbuje wpisać np wysyłanie sms-a (z przykładu) to dostaję błąd 125002 (125001 tyczy się tokena, a ten...). Poza tym gdzie mogę szukać firmware E3372Update_22.286.53.01.161_S_ADB_TLN_01.rar - dopbox VipeRsan jest chwilowo niedostępny...
Huawei 5g cpe pro 2 (H122-373), 2xATK 504 + Cybertech LTE-A/4G MIMO, T-mobile/Orenżada 1,7km, RB912UAG-2HPnD + LTE6 - robi za WiFi i DHCP
ODPOWIEDZ