Projekt "3ginfo"
Informacja o statusie połączenia 3G
Ostatnia zmiana: 2013-04-30 08:54

1. Wymagania
2. Instalacja
3. Konfiguracja
 3.1. Limit danych
 3.2. Lista stacji BTS
4. Testy
 4.1. Informacja tekstowa
 4.2. Strona WWW
 4.3. Informacje diagnostyczne
 4.4. Siła sygnału
5. Problemy
6. Modemy sprawiające problemy
7. Lista testowanych modemów
8. Historia zmian

Celem projektu jest graficzna wizualizacja statusu połączenia 3G (komórkowego) przez stronę www. Poniżej zaprezentowano przykładowy zrzut ekranu:



Sam projekt w całości napisany został jako skrypty shella i wykorzystuje komponenty standardowo dostępne w normalnej instalacji OpenWrt. Nie jest zależny od konkretnej platformy sprzętowej więc powinien działać na każdym urządzeniu wspieranym przez OpenWrt, zależy za to od kilku zewnętrznych pakietów.
Działa z większością modemów GSM na USB oraz telefonami podłączonymi na kablu USB.

UWAGA UWAGA UWAGA

Jeżeli po uruchomieniu są problemy z wyświetlaniem danych - proszę po odpowiednim ustawieniu urządzenia (patrz konfiguracja) wykonać program

    # 3ginfo-test

a następnie to co wypisał na ekranie przesłać na mój adres email: "cezary (at) eko.one.pl" z informacją o nazwie i typie modemu. Dziękuję.
Wymagania
Program wymaga do działania urządzenia potrafiącego zwracać informacje przy pomocy komend AT. Ponieważ zwykle taki modem wykorzystywany jest także do połączenia sieciowego, wymagane jest istnienie drugiego interfejsu ("diagnostycznego") który umożliwi komunikację z modemem niezależnie od nawiązanego połączenia.
Lista modemów na których testowano projekt znajduje się na dole dokumentu. Nie koniecznie musi działać na innych urządzeniach. Nie wszystkie urządzenia mogą zwracać także użyteczne informacje (np. E170 nie wspiera profilu UMTS QoS), w związku z tym część parametrów może nie być dostępna.
Instalacja
Należy zainstalować pakiet 3ginfo:

    # opkg update
    # opkg install 3ginfo
    # /etc/init.d/3ginfo enable
    # /etc/init.d/3ginfo start

Plik można zainstalować także "ręcznie", dostępny jest moim repozytorium pakietów: http://ecco.selfip.net/attitude_adjustment/ar71xx/packages/

Jeżeli chcemy mieć obsługę SMSów należy dodatkowo zainstalować pakiet gnokii

    # opkg install gnokii

Jeżeli chcemy mieć obsługę kodów USSD należy dodatkowo zainstalować pakiet ussd159

    # opkg install ussd159

Do poprawnego działania niezbędne są też odpowiednie sterowniki do modemu. W ogólnym przypadku wystarczy

    # opkg install kmod-usb-serial kmod-usb-serial-option

ale zależy to od konkretnego modelu modemu i być może trzeba zainstalować także kmod-usb-serial-sierrawireless lub kmod-usb-acm. Zobacz także wsparcie dla modemów GSM w OpenWrt.
Konfiguracja
Plik konfiguracyjny zawarty jest w /etc/config/3ginfo. Możliwe opcje do ustawienia:
  • device - opcjonalny, interfejs diagnostyczny modemu USB. Wartość pusta powoduje automatycznie wykrycie i przypisane pierwszego znalezionego portu (UWAGA: niekoniecznie jest to poprawny port, bo np. dla Huawei wykorzystywany jest jako port do połączenia).
  • http_port - opcjonalny, port na którym będzie nasłuchiwał demon www (domyślnie :81)
  • pincode - opcjonalny, kod PIN do karty SIM
  • clf - opcjonalny, link do pliku z listą stacji BTS, pobraną z serwisu http://btsearch.pl (plik w formacie CLF 3.0 - HEX)
  • script - opcjonalny, skrypt realizujący pobranie danych o pozostałym limicie, obecnie dostępne są:
    cyfrowy_polsat: bieżące zużycie na postawie danych ze strony Cyfrowego Polsatu
    mbank: mBank na kartę
    ofnk: Orange Free na Kartę
    ofnk2: Orange Free na Kartę (dla modemów zwracających wyniki w kodach hex - MF100)
    play_fresh: Play Fresh z Pakietami Internetowymi
    play_fresh2: Play Fresh z Pakietami Internetowymi (dla modemów zwracających wyniki w kodach hex - MF100)
    play_fresh_pdu: Play Fresh z Pakietami Internetowymi (dekodowanie wiadomości w PDU)
    tmobile_pdu: Blueconnect na kartę (dekodowanie wiadomości w PDU)
  • qos - opcjonalny, jeżeli zostanie ustawiony na 1 to skrypt może wyświetlać informacje o wynegocjowanej prędkości ze stacja bazową (o ile modem to wspiera). UWAGA: z niewiadomych powodów wartość ta dziwnie narasta i może być źle sygnalizowana przez modem.
  • language - opcjonalny, możliwość wyboru języka interfejsu (o ile istnieją odpowiednie pliki językowe). Obecnie obsługiwane języki: Polski (pl), Angielski (en)
Opcje pincode można zostawić pustą o ile zostanie ona podana poprawnie w odpowiedniej sekcji pliku /etc/config/network. Należy ją zignorować, jeżeli karta SIM nie ma kodu PIN.

Jeżeli opcja device jest pusta (lub jej nie ma) program automatycznie wykryje pierwszy port na którym jest możliwa komunikacja z modemem i zapisze go w pliku konfiguracyjnym. Nie zawsze może to być właściwy port, w przypadku złego wykrycia lub w przypadku podłączenia większej ilości modemów właściwy port można ustawić poleceniami

    # uci set 3ginfo.@3ginfo[0].device=/dev/ttyUSB1
    # uci commit 3ginfo

podając oczywiście odpowiednie urządzenie. Zwykle powinno podawać się ostatni z interfejsów należących do urządzenia (przykład: jeżeli modem zapewnia ttyUSB0, ttyUSB1 oraz ttyUSB2 podajemy ten ostatni, czyli /dev/ttyUSB2 - nie jest to niestety regułą).
UWAGA: Jeżeli korzystasz z systemu z kernelem 2.4 to urządzenie może nazywać się /dev/usb/tts/1!

Dla urządzeń korzystających ze sterowników HSO powinno się podać /dev/ttyHSx (w zależności od posiadanego urządzenia), dla urządzeń CDC ACM zwykle jest to /dev/ttyACM0. Za "x" należy oczywiście podstawić odpowiedni numer interfejsu.

Aby program poprawnie działał, modem MUSI być zarejestrowany w sieci operatora. W przypadku kart posiadających kod PIN należy albo zdefiniować sekcję w pliku network i podać prawidłowy kod PIN, lub zdefiniować opcję pincode w pliku 3ginfo.
Ustawienie kodu pin:

    # uci set 3ginfo.@3ginfo[0].pincode=1234
    # uci commit 3ginfo

Limit danych
Po ustawieniu w/w opcji na głównym ekranie pojawi się link do podstrony z możliwością sprawdzenia pozostałego limitu danych.

UWAGA: Operatorzy często zmieniają sposób odczytu danych czy polecenie jakim można to wykonać. Więc podane skrypty niekoniecznie muszą jeszcze działać, zależy od operatora.

Bluconnect na kartę
Wersja dla modemów z kodowaniem PDU

    # uci set 3ginfo.@3ginfo[0].script=tmobile_pdu
    # uci commit 3ginfo

Cyfrowy Polsat

    # uci set 3ginfo.@3ginfo[0].script=cyfrowy_polsat
    # uci commit 3ginfo

Pobierana jest zawartość strony http://www.cyfrowypolsat.pl/internet/biezace-zuzycie/
Wynikiem jest napis typu:

    Okres rozliczeniowy: 2010-11-21 - 2010-12-21
    SUMA OPLAT: 0,00 zł z VAT

    Aktywne pakiety:
    Pakiet Promocyjny: pozostalo 2.9 GB z 200.0 MB wazne do 2010-12-21.

Orange Free na Kartę

    # uci set 3ginfo.@3ginfo[0].script=ofnk
    # uci commit 3ginfo

Wersja dla modemów z kodowaniem tekstowym wiadomości, zwracających dane w postaci kodów HEX (np. ZTE MF100)

    # uci set 3ginfo.@3ginfo[0].script=ofnk2
    # uci commit 3ginfo

Wykonywane jest to poleceniem ussd *101*01#. Wynikiem jest napis typu:

    Pozostalo Ci 1035,6 darmowych MB z bonusu za doladowanie waznych do 01.12.2013r. oraz 287,1 MB w ramach Twojej kwoty na koncie glownym waznych do 30.11.2013r.

Plugin wykorzystuje kodowanie IRA, powinno więc działać na większości modemów.
Play Fresh z Pakietami Internetowymi
Dostępne są trzy wersje pluginów

Wersja dla modemów z kodowaniem PDU

    # uci set 3ginfo.@3ginfo[0].script=play_fresh_pdu
    # uci commit 3ginfo

Wersja dla modemów z kodowaniem tekstowym wiadomości

    # uci set 3ginfo.@3ginfo[0].script=play_fresh
    # uci commit 3ginfo

Wersja dla modemów z kodowaniem tekstowym wiadomości, zwracających dane w postaci kodów HEX (np. ZTE MF100)

    # uci set 3ginfo.@3ginfo[0].script=play_fresh2
    # uci commit 3ginfo

Wykonywane jest to następującą metodą. Wynikiem jest napis typu:

    "Promocyjne MB : 22 MB wazne do 2011-08-19 23:59"

Lista stacji BTS
3ginfo potrafi wyświetlać informacje o BTS do którego jest podłączony modem. Aby to było możliwe należy najpierw pobrać listę stacji ze strony http://btsearch.pl/nobbimonitor.php zaznaczając opcje jak poniżej:



lub wybierając tylko interesujące nas dane (np. tylko Plus i Mazowieckie). Plik należy umieścić na routerze (uwaga: po zaznaczeniu wszystkich parametrów plik może się nie zmieścić do wewnętrznej pamięci flash routera, warto go umieścić np. na karcie SD w modemie), a następnie skonfigurować odpowiednią opcję:

    # uci set 3ginfo.@3ginfo[0].clf='/mnt/sda1/26001.clf'
    # uci commit 3ginfo

Testy

Informacja tekstowa
Wystarczy uruchomić program

    # 3ginfo

aby wyświetlić informacje w postaci tekstowej. Przykładowy wynik:

    root@OpenWrt:# 3ginfo
    Status: Rozlaczony
    Operator: Plus
    Tryb pracy: UMTS
    Sila sygnalu: 41%
    Urzadzenie: huawei E17X
    MCC MNC: 260 01
    LAC: 2B22 (11042)
    LCID: - (-)
    RNC: - (-)
    CID: A2BF (41663)
    CSQ: 13
    RSSI: -87 dBm

Strona WWW
Program dynamicznie generuje stronę www przy pomocy której można odczytać parametry połączenia. Strona obsługiwana jest przez osobny proces serwera www nasłuchującego na porcie 81, czyli można odwołać się do niej wpisują w przeglądarkę adres routera z podanym portem, np. http://192.168.1.1:81.



Wyświetlane informacje:
  • status połączenia: połączony/rozłączony - (pojawia się tylko jeżeli została zdefiniowana odpowiednia sekcja w /etc/config/network)
  • czas połączenia, ilość danych wysłanych i odebranych w sesji (pojawia się tylko jeżeli została zdefiniowana odpowiednia sekcja w /etc/config/network)
  • operator: nazwa operatora
  • tryb pracy: standard telefonii komórkowej (GPRS/EDGE/UMTS/HSDPA/HSPA/HSPA+/LTE/CDMA)
  • siła sygnału: w skali procentowej (liczone liniowo wg CSQ: 0 - 0%, 31 - 100%)
  • wizualny wskaźnik siły sygnału - kolorowany wg schematu:
    0 - 29%: czerwony (-113:-95 dBm)
    30 - 45%: pomarańczowy (-93:-85 dBm)
    46 - 61%: żółty (-83:-75 dBm)
    62 - 100%: zielony (-73:-51 dBm)
  • przycisk do podstrony z możliwością wysłania SMS (pojawia się tylko w przypadku instalacji pakietu gnokii)
  • przycisk do podstrony z możliwością wysłania kodów USSD (pojawia się tylko w przypadku instalacji pakietu ussd159)
  • przycisk do podstrony z możliwością sprawdzenia pozostałego limitu danych (po zdefiniowaniu odpowiedniego parametru w konfiguracji)
  • przycisk z możliwością odświeżenia zawartości
  • przycisk z możliwością nawiązania/rozłączenia połączenia (pojawia się tylko jeżeli została zdefiniowana odpowiednia sekcja połączenia w /etc/config/network)
oraz informacje szczegółowe po rozwinięciu
  • siła sygnału: wynik CSQ - czyli to co jest odczytywane bezpośrednio z modemu
  • siła sygnału: wynik RSSI w dBm
  • profil UMTS QoS: maksymalne możliwe wynegocjowane ze stacją bazową pasmo pobierania oraz wysyłania. Wyświetlany jest tylko jeżeli dany modem obsługuje to polecenie, połączenie jest aktywne oraz została włączona odpowiednia opcja konfiguracyjna.
  • międzynarodowy identyfikator MCC oraz MNC
  • LAC - postać hex i dziesiętna
  • LCID - tzw. długi CID - postać hex i dziesiętna
  • RNC - postać hex i dziesiętna
  • CID - postać hex i dziesiętna, z linkiem do strony http://btsearch.pl z możliwością wyszukania BTSa
  • nazwa lokalizacji która jest jednocześnie linkiem, po kliknięciu wyświetla się Google Maps z zaznaczoną lokalizacją
  • nazwa urządzenia: producent i model
Informacje diagnostyczne

    # 3ginfo-test

Siła sygnału
Dostępna jest także podstrona prezentująca samą siłę sygnału. Dane automatycznie odświeżane są co 3s. Adres podstrony: http://192.168.1.1:81/signal.html.
Problemy
  • wyświetla się "Brak urządzenia /dev/ttyUSB2!"
Brak poprawnie podanego urządzenia w /etc/config/3ginfo, system nie widzi modemu, ten port jest zajęty przez inny proces lub modem nie jest przełączony w odpowiedni tryb pracy.
  • brak wyświetlania danych - same kreski
Podane urządzenie w pliku konfiguracyjnym nie jest poprawnym interfejsem do modemu, modem nie odpowiada na tym interfejsie, ten port jest zajęty przez inny proces lub aktualnie nawiązanie jest połączenie.
  • wyświetlana jest tylko część informacji
Oznacza to tylko tyle, że modem nie jest kompatybilny ze wszystkimi poleceniami i wymaga innego sposobu komunikacji. Zobacz uwagę na początku dokumentu.
Modemy sprawiające problemy
  • Sierra Wireless 309, C855, C889
Na interfejsie diagnostycznym zwracana jest tylko siła sygnału. Więc albo mamy aktywne połączenie i tylko siłę sygnału albo mamy wyświetlanie wszystkich informacji o sieci.
  • Samsung GT-Y3100
Dostępny jest tylko jeden interfejs. Albo mamy na nim połączenie albo informacje o sieci. Dodatkowo niepoprawnie zwracana jest wartość CID (zawsze 0).
  • Vodafone K3760
Nie poprawnie zwracane echo poleceń. Po każdym znaku występuje sekwencja 0xDEADBEEF (ang. Dead Beef) oznaczający problem z wewnętrznym firmware modemu. Co ciekawsze problemu tego nie ma na nowszych wersjach kernela linuksowego.
  • Huawei E3276
Nie zwraca wszystkich użytecznych informacji.
Lista testowanych modemów
  • Huawei E156G
  • Huawei E169
  • Huawei E170
  • Huawei E173
  • Huawei E220
  • Huawei E1820
  • Huawei E182E
  • Huawei E367
  • Option Icon 225
  • Samsung GT-Y3100
  • Sierra Wireless C855/C885/C889/C307
  • ZTE MF100
  • ZTE MF668
... i wiele innych, testowanych przez użytkowników.
Historia zmian
  • 2013.04.30
- dodano możliwość automatycznego wykrywania urządzeń ACM
- dodano możliwość inne sposobu odczytu czasu połączenia
  • 2013.04.06
- modyfikacja skryptu odczytującego dane z modemu - powinny wyświetlać się szybciej
- mała modyfikacja skryptu limitu dla Orange Free na Kartę
  • 2013.02.14
- zmiany w sposobie obsługi technologii - powinny działać z modemami typu Huawei E122
  • 2013.01.06
- skrypt sprawdzający limit w mBank na kartę - pdu
- zmiany w kodzie obsługi modemów ZTE
  • 2012.12.09
- zmiana kodu sprawdzającego limit w Orange Free na Kartę (było: *100*1*2#, jest: *101*01#)
  • 2012.11.24
- skrypt sprawdzający limit w mBank na kartę
  • 2012.10.09
- ukończenie tłumaczeń programu, dochodzi dodatkowa opcja language
  • 2012.09.14
- automatyczne wykrywanie portu diagnostycznego
- modyfikacje przy odczycie profilu QoS
  • 2012.09.12
- skrypt sprawdzający limit w Orange Free na Kartę dla modemu MF100
  • 2012.09.11
- modyfikacja skryptu sprawdzającego limit w Orange Free na Kartę (obecnie jest tylko jedna wersja)
  • 2012.09.02
- przy braku operatora ma nie wyświetlać żadnych wartości
  • 2012.08.11
- uzupełnienie sprawdzania operatora dla modemów ZTE
  • 2012.08.05
- zastąpienie binarnego programu do konwersji PDU skryptem, dzięki czemu jest to bardziej uniwersalne
- lekka poprawa skryptów sprawdzających limit dla Play Fresh
  • 2012.07.30
- kolejne dostosowanie skryptów do bieżącej wersji Trunka (działa i Backfire i w Trunku)
- dodanie obsługi kodów USSD
  • 2012.07.24
- dostosowanie skryptów do bieżącej wersji Trunka (działa i Backfire i w Trunku)
  • 2012.06.23
- dodatkowy skrypt dla Blueconnect na kartę - PDU, autorstwa Krystiana Romaszewskiego
  • 2012.04.22
- przeniesienie informacji o operatorach do osobnego pliku, wyświetlanie MCC/MNC w każdym przypadku (o ile zostanie odczytany w modemu)
  • 2012.02.23
- dostosowanie skryptów do bieżącej wersji Trunka (działa i Backfire i w Trunku)
  • 2012.02.19
- wyświetlanie używanej technologii dla modemów Vodafone K3805-z (chip Icera)
  • 2011.10.06
- bardziej zaawansowanie wyszukiwanie sekcji połączenia w /etc/config/network, istotne dla systemów z kilkoma modemami GSM obsługiwanymi przez ten sam sterownik
  • 2011.09.16
- obsługa dodatkowego polecenia dla nowych modemów Huawei (wyświetlanie m.in. informacji o technologii LTE)
  • 2011.09.15
- wsparcie dla Cyfrowego Polsatu LTE
- dodatkowy skrypt dla Orange Free na Kartę - PDU
- zmiana nazwy pluginu na 3ginfo-plugin-pdu
  • 2011.09.03
- poprawa kodu js dla poprawnego działania z przeglądarką Chromium
- ujednolicenie wyglądu linków zewnętrznych
- nowa podstrona reprezentująca dynamicznie siłę sygnału
  • 2011.08.28
- bardziej zaawansowanie wyszukiwanie sekcji połączenia w /etc/config/network, istotne dla systemów z kilkoma modemami GSM
  • 2011.08.13
- dodatkowe polecenie pozwalające na sprawdzenie LAC/CID (niezbędne dla Aero2)
  • 2011.08.11
- poprawa skryptu uwzględniająca możliwość występowania w odpowiedzi modemu liter w różnych wielkościach
- dodatkowy skrypt sprawdzający limit dla Play Fresh
- dodatkowy plugin sprawdzający limit dla Play Fresh dla modemów odpowiadających w formacie PDU
- obsługiwany modem ZTE MF100
  • 2011.08.09
- aktualizacja skryptu sprawdzania limitu dla Pakietów Internetowych z Play Fresh
- dodano możliwość dekodowania wiadomości PDU
- drobne zmiany związane z Aero2
  • 2011.08.06
- bardziej poprawne wyświetlanie zawartości smsów na stronie
  • 2011.08.04
- dodano możliwość usuwania smsów z poziomu strony
  • 2011.08.03
- zmiany w skryptach, dodano możliwość wyświetlania lokalizacji po ręcznym pobraniu pliku z BTSami (patrz poniżej), po kliknięciu na nazwę wyświetla się lokalizacja w Google Maps.
  • 2011.07.16
- dodano nazwę sieci Aero2, wyświetlanie czasu trwania połączenia, ilości wysłanych i pobranych danych
  • 2011.05.20
- dodano do konfiguracji port nasłuchu demona www, dodano nazwę sieci T-Mobile (dawna Era)
  • 2011.05.14
- zmieniono mechanizm podania kodu PIN, wykrywania LCID/RNC, poprawki skryptu
  • 2011.02.01
- dostępna jest łatka do poprawnej obsługi Huawei K3765-HV. Jak ktoś chętny niech da znać (podziękowania dla Piotra Oleszczyka)
  • 2010.12.27
- sprawdzenie limitu dla Orange Free na Kartę
  • 2010.11.25
- wyświetlanie używanej technologii dla modemów Sierra Wireless, np Compass 889
- wyświetlanie używanej technologii dla modemów Novatel, np. Ovation MC990D
- sprawdzenie limitu dla Cyfrowego Polsatu
  • 2010.11.19
- dodanie opcji pincode do automatycznego rejestrowanie u operatora (odczytywana z konfiguracji sieci lub niezależnej opcji)
  • 2010.11.13
- wsparcie dla Cyfrowego Polsatu oraz modemów ZTE, np. MF668
  • 2010.11.04
- dodanie możliwości wyświetlania danych w postaci tekstowej
  • 2010.10.27
- dodanie wyświetlania informacji o RNC oraz Long CID
  • 2010.10.19
- dodanie wyświetlania nazwy urządzenia, uporządkowanie kodu w skryptach
  • 2010.10.18
- wsparcie dla urządzeń wykorzystujących sterowniki HSO - Option Icon 225 itp.
  • 2010.10.12
- uproszczenie podstawowego interfejsu, dodanie przycisku pozwalającego na połączenie/rozłączenie, przeniesienie większości informacji numerycznych do pozycji szczegółów.
  • 2010.10.05
- nowy interfejs z wykorzystaniem ajax: odczytywanie parametrów na bieżąco, odświeżanie tylko na żądanie, dodano status połączenia, wyświetlanie LAC/CID w postaci dziesiętnej po najechaniu myszą, możliwość wysyłania i odczytywania smsów.
  • 2010.09.19
- dodano możliwość sprawdzenia pozostałego limitu (MB) - obecnie tylko dla Play Fresh (Pakiety Internetowe 100MB/500MB/1GB)
  • 2010.09.01
- zmiana sposobu odpytywania urządzenia, wpływa na szybkość pobierania danych
- dodano szukanie lokalizacji wg krótkiego CID i operatora na portalu btsearch.org
  • 2010.08.30
- dodano prosty interfejs do wysyłania smsów (wymaga instalacji pakietu gnokii)
  • 2010.08.29
- wyświetlanie dodatkowych informacji: LAC/CID, Profil UMTS QoS (podziękowania dla Patryka Jabłońskigo!)
- zmiany w skryptach: oczyszczenie kodu, sprawdzenie istnienia urządzenia oraz poprawności zwracanych parametrów
- kolorowanie wskaźnika siły sygnału
  • 2010.08.28
- wersja początkowa