Bilans modemu GSM USB za pomocą USSD


8

Czy są jakieś narzędzia lub polecenia, których mogę użyć do wysłania kodów USSD w celu sprawdzenia równowagi i bilansu danych karty SIM GSM w moim modemie USB (mobilny klucz szerokopasmowy)?

Odpowiedzi:


7

Oto niektóre aplikacje z obsługą sprawdzania salda USSD:

Menedżer opłacony z góry

Menedżer opłacony z góry

Prepaid Manager to aplet dla GNOME Desktop, który pozwala sprawdzać i uzupełniać saldo przedpłaconych kart SIM GSM. Jest to prosta i minimalistyczna aplikacja z sprawdzaniem salda USSD i doładowaniem. Ale z drugiej strony, jest to bardzo przestarzała aplikacja i od dawna nie otrzymała żadnych nowych aktualizacji. A jeśli Twój dostawca nie jest obsługiwany, musisz go ręcznie skonfigurować zgodnie z opisem na stronie głównej . Aby zainstalować, kliknij tutaj:

Aplikacja Prepaid Manager w oprogramowaniu Ubuntu

Lub uruchom następujące polecenie:

sudo apt install prepaid-manager-applet

Interfejs graficzny menedżera modemu

Interfejs graficzny menedżera modemu

Modem Manager GUI to kompletne rozwiązanie do zarządzania i monitorowania modemów mobilnych w sieci. Zawiera wiele funkcji, a obsługa USSD jest tylko jedną z nich. Aby uzyskać pełną listę funkcji, odwiedź ich oficjalną stronę główną . Aby zainstalować, kliknij tutaj:

Aplikacja GUI Modem Manager w oprogramowaniu Ubuntu

Lub uruchom następujące polecenie:

sudo apt install modem-manager-gui

V Mobilny Internet szerokopasmowy

V Mobilny Internet szerokopasmowy

V Mobile Broadband to oryginalne oprogramowanie Vodafone Mobile Connect dla systemu Linux, przepisane w celu zachowania zgodności z Network Managerem przez zespół Open Source firmy Betodine Connection Manager firmy Vodafone. Niestety, obecnie nie wydaje się, aby był bardzo aktywnie utrzymywany i nie jest dostępny w repozytoriach Ubuntu. Możesz jednak spróbować szczęścia, budując projekt ze źródła. Sprawdź ich stronę GitHub .

Ostrzeżenie : v-mobile-broadbandzależy od tego wader, co zastępuje domyślną wersję Ubuntu modemmanager. Jeśli więc napotkasz problemy z nową instalacją i zdecydujesz się odinstalować v-mobile-broadband, nie zapomnij ponownie zainstalować modemmanagerpakietu.


Źródła


V Mobilne połączenie szerokopasmowe: 12 grudnia 14: błąd: W: Nie można pobrać ppa.launchpad.net/crass/v-mobile-broadband/ubuntu/dists/trusty/… 404 Nie znaleziono. Czy to się poddało?
zimozielony

@evergreen Nie, projekt nie jest martwy, ponieważ PPA nadal wypycha aktualizacje 12.04LTS „Precise” . Jednak nie został jeszcze zaktualizowany do wersji 14.04LTS „Trusty” i nowszych .
HEXcube,

Niestety, żaden z tych nie działa od 16.04 i wyżej
Anwar

3

W gammutym celu można użyć narzędzia wiersza polecenia . Jeśli kod USSD, aby uzyskać saldo, to (powiedzmy) * 901 #, należy wykonać:

gammu getussd "*901#"

Aby uzyskać instrukcje dotyczące instalacji i konfiguracji oraz więcej szczegółów, zobacz tutaj .


1

Możesz użyć poleceń AT bezpośrednio, aby sprawdzić saldo za pomocą USSD. W tym celu użyć dowolnego terminala szeregowego program, który pozwala komunikować się z modemem bezpośrednio ( putty, minicometc.).

Wybrałem, atinoutponieważ ładnie zintegrowało się z wierszem poleceń. Najpierw zainstaluj:

sudo apt-get install ruby-ronn;
git clone git://git.code.sf.net/p/atinout/code atinout;
cd atinout;
make;
sudo checkinstall make install;

Następnie, jeśli korzystasz z ModemManager (domyślny w Ubuntu Linux), być może będziesz musiał go najpierw wyłączyć, aby umożliwić atinoutdostęp do modemu:

sudo stop modemmanager;

Teraz, aby wysłać kod USSD dla zapytania o saldo do sieci (powiedzmy, * 901 #) i wyświetlić wynik, użyłbyś tego polecenia:

atinout - /dev/ttyUSB1 - < <(echo "AT+CUSD=1,\"*901#\",15") && sleep 4 && \
atinout - /dev/ttyUSB1 - < <(echo "AT");

Zakłada się, że modem jest w stanie /dev/ttyUSB1. ATPoleceń w drugim atinoutpolecenia jest tylko, aby uzyskać niezamówionych odpowiedź USSD wyświetlany jako efekt uboczny, który powinien przybył po sleep.

W przypadku, gdy zapytanie o saldo wymaga obsługi menu USSD: jest to również możliwe atinout, patrz: ta odpowiedź .


1

Możesz to zrobić za pomocą pakietu modem-manager-gui. Ale jest dostępny tylko dla 13.10. W innych wersjach musisz nimi zarządzać w Terminalu z pakietem modemmanager.

Jeśli korzystasz z systemu Ubuntu 13.10:

sudo apt-get install modem-manager-gui modemmanager

W innych wersjach Ubuntu możesz to zrobić za pomocą aplikacji prepaid-manager-applet

sudo apt-get install prepaid-manager-applet

0

Możesz użyć narzędzia wiersza poleceń Linuksa, gsm-ussdaby wysyłać kody USSD, uzyskiwać odpowiedzi, a nawet poruszać się po menu USSD (chociaż nie było to dla mnie stabilne / użyteczne).

Szczegółowe instrukcje instalacji i konfiguracji znajdują się tutaj . Pakiet 0.4 Debiana oferowany tam do instalacji jest najnowszą wersją oddziału deweloperskiego .

Jeśli kod USSD, aby uzyskać saldo, to (powiedzmy) * 901 #, a modem jest /dev/ttyUSB1, wykonaj to, aby wysłać prosty kod USSD i wyświetlić odpowiedź sieci (bez wyświetlania menu):

gsm-ussd -m /dev/ttyUSB1 "*901#"

0

Możesz użyć mmcliklienta wiersza poleceń domyślnego ModemManager Ubuntu, aby wysłać kod USSD i uzyskać odpowiedź:

  1. Zacznij od listy modemy: mmcli -L. Spowoduje to wyświetlenie ścieżki modemu /org/freedesktop/ModemManager1/Modem/0. Liczba na końcu to indeks modemu, pamiętaj o tym.

  2. Włącz modem (zakładając, że indeks modemu wynosi 0): mmcli -m 0 -e

  3. Wyślij żądanie USSD i wyświetl odpowiedź. Zakładając, że kod USSD operatora sieci w celu uzyskania równowagi wynosi * 901 #, polecenie wyglądałoby następująco:

    mmcli -m 0 --3gpp-ussd-initiate="*901#"
    

W przypadku, gdy zapytanie o saldo wymaga obsługi menu USSD: jest to również możliwe mmcli, patrz: ta odpowiedź .


16.04 polecenie zwraca toerror: couldn't initiate USSD session: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.Unsupported: Operation not supported.'
Anwar

0

Dla mnie oba rozwiązania oparte na ModemManager i gammunie działają poprawnie z wielowierszową odpowiedzią USSD; np. mój operator ma polecenie USSD *104#, na które odpowiada coś takiego:

You have:
2.07 GB of traffic, valid until N
47 minutes

To rozczarowujące, aby zobaczyć tylko pierwszy bezużyteczny wiersz: You have:.

W końcu znalazłem obejście picocomi ręczne polecenie AT. Dlatego za każdym razem, gdy chcę sprawdzić saldo, muszę wykonać następujące czynności:

Najpierw zatrzymaj Modem Manager:

$ sudo stop modemmanager

Teraz musisz znać swój port modemu; w moim przypadku tak jest /dev/ttyACM0.

Jeśli nie znasz swojego portu, spróbuj tego:

for n in `ls /sys/class/*/*{ACM,wdm}*/device/interface`;do echo $(echo $n|awk -F '/' '{print $5}') : $(cat $n);done

I poszukaj wpisu za pomocą Mobile Broadband Modem. Np. Moje dane wyjściowe wyglądają następująco:

ttyACM0 : F5521gw Mobile Broadband Modem
ttyACM1 : F5521gw Mobile Broadband Data Modem
ttyACM2 : F5521gw Mobile Broadband GPS Port
cdc-wdm0 : F5521gw Mobile Broadband Device Management
cdc-wdm1 : F5521gw Mobile Broadband USIM Port

Aby uzyskać więcej informacji na temat uzyskania właściwego portu, zobacz ten link: https://gist.github.com/heyalexej/cc6c97b1ea42736b3ff7

Następnie użyj picocom, aby połączyć się z portem:

$ sudo picocom /dev/ttyACM0

Powinieneś zobaczyć coś takiego:

picocom v1.7

port is        : /dev/ttyACM0
flowcontrol    : none
baudrate is    : 9600
parity is      : none
databits are   : 8
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv
imap is        : 
omap is        : 
emap is        : crcrlf,delbs,

Terminal ready

*EMRDY: 1

(jeśli tego nie widzisz *EMRDY: 1, prawdopodobnie oznacza to, że nie zatrzymałeś Modem Managera, patrz wyżej)

Następnie wprowadź:

AT+CUSD=1,"*104#"

Po kilku sekundach powinieneś otrzymać odpowiedź, która może być wieloliniowa:

+CUSD: 0,"You have:
2.07 GB of traffic, valid until N
47 minutes

",15

OK

Aby wyjść z Picocom, użyj Ctrl-A Ctrl-X

I uruchom ponownie menedżera modemu:

$ sudo start modemmanager

-1

Możesz używać wirtualnego rozwiązania PBX typu open source FreeSwitch wraz z jego rozszerzeniem GSMopen do wysyłania poleceń USSD [ źródło ].

Na przykład, jeśli kod USSD w celu uzyskania salda wynosi (powiedzmy) * 901 #, należy wykonać:

chat SMS|interface3|ussd|*901#

Oczywiście w innych odpowiedziach są prostsze rozwiązania, ale na wypadek, gdybyś mimo to używał GSMopen (… na przykład, ponieważ jest to jedyny sposób wykonywania połączeń głosowych GSM pod Linuksem…).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.