Bilanciamento del modem USB GSM utilizzando USSD

Ci sono alcuni strumenti o comandi che posso usare per inviare i codici USSD per il controllo del saldo e il bilanciamento dei dati della scheda SIM GSM nel mio modem USB (dongle a banda larga mobile)?

Queste sono alcune app con supporto per il controllo del bilanciamento USSD:

Responsabile prepagato

Prepaid Manager

Prepaid Manager è un’applet per il desktop GNOME che consente di controllare e ricaricare il saldo delle carte SIM prepagate mobili GSM. È un’app semplice e minimalista con il controllo del bilanciamento USSD e il topup è tutto ciò che fa. Ma il rovescio della medaglia, è un’applicazione datata e non ha ricevuto nuovi aggiornamenti da molto tempo. E se il tuo provider non è supportato, dovrai configurarlo manualmente come descritto nella loro homepage . Per installare, clicca qui:

Prepaid Manager App on Ubuntu Software

Oppure esegui il seguente comando:

sudo apt install prepaid-manager-applet 

GUI di Modem Manager

Modem Manager GUI

La GUI di Modem Manager è una soluzione completa per gestire e monitorare i modem basati su rete mobile. Ha un sacco di funzioni e il supporto USSD è solo uno di questi. Per un elenco completo delle funzionalità, visita la loro homepage ufficiale . Per installare, clicca qui:

Modem Manager GUI App on Ubuntu Software

Oppure esegui il seguente comando:

 sudo apt install modem-manager-gui 

V Mobile Broadband

V Mobile Broadband

V Mobile Broadband è il software Vodafone Mobile Connect originale per Linux riscritto per essere compatibile con Network Manager dal team di Betavine Connection Manager open source di Vodafone. Sfortunatamente, al momento non sembra essere mantenuto molto triggersmente e non è disponibile nei repository di Ubuntu. Tuttavia, puoi tentare la fortuna costruendo il progetto dalla fonte. Dai un’occhiata alla loro pagina GitHub .

Attenzione : v-mobile-broadband dipende dal wader , che sostituisce il modemmanager predefinito di modemmanager . Pertanto, se si verificano problemi con la nuova configurazione e si decide di disinstallare v-mobile-broadband , non dimenticare di reinstallare il pacchetto modemmanager .


fonti

  • In Ubuntu esiste un’applicazione come “Huawei Mobile Partner” per i modem dongle a banda larga?

È ansible utilizzare l’utilità della riga di comando gammu per questo scopo. Se il codice USSD per ottenere il tuo saldo è (diciamo) * 901 #, devi eseguire:

 gammu getussd "*901#" 

Per istruzioni di installazione e configurazione e maggiori dettagli, vedere qui .

Puoi farli con il pacchetto modem-manager-gui . Ma è disponibile solo per 13.10. In altre versioni devi gestirli in Terminal con il pacchetto modemmanager .

Se sei in Ubuntu 13.10:

 sudo apt-get install modem-manager-gui modemmanager 

In altre versioni di Ubuntu puoi farlo con l’applicazione prepaid-manager-applet

 sudo apt-get install prepaid-manager-applet 

È ansible utilizzare lo strumento da riga di comando di Linux gsm-ussd per inviare i codici USSD, ottenere risposte e persino navigare nei menu USSD (anche se non era stabile / utilizzabile per me).

Per istruzioni dettagliate sull’installazione e la configurazione, vedere qui . Il pacchetto Debian versione 0.4 offerto per l’installazione è l’ ultima versione del ramo dev .

Se il codice USSD per ottenere il tuo saldo è (diciamo) * 901 # e il tuo modem è /dev/ttyUSB1 dovresti eseguirlo per inviare un semplice codice USSD e visualizzare la risposta della rete (non risultante in un menu):

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

È ansible utilizzare il client della riga di comando mmcli del mmcli predefinito di Ubuntu per inviare un codice USSD e ottenere la risposta:

  1. Inizia elencando i tuoi modem: mmcli -L . Questo mostrerà un percorso del dispositivo del modem come /org/freedesktop/ModemManager1/Modem/0 . Il numero alla fine è l’indice del modem, ricordalo.

  2. Abilita il modem (supponendo che l’indice del modem sia 0): mmcli -m 0 -e

  3. Invia la richiesta USSD e visualizza la risposta. Supponendo che il codice USSD del proprio operatore di rete per ottenere il saldo sia * 901 #, il comando sarebbe:

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

Per il caso in cui l’interrogazione della tua bilancia richiede l’utilizzo di un menu USSD: questo è ansible anche con mmcli , vedi questa risposta .

È ansible utilizzare i comandi AT direttamente per interrogare il saldo tramite USSD. Per questo, utilizza qualsiasi programma di terminale seriale che ti permetta di comunicare direttamente con il tuo modem ( putty , minicom ecc.).

Ho scelto atinout perché si integrava bene con la riga di comando. Per prima cosa lo installi:

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

Quindi, se si utilizza ModemManager (l’impostazione predefinita in Ubuntu Linux), potrebbe essere necessario disabilitarla prima di consentire a atinout di accedere al modem:

 sudo stop modemmanager; 

Ora, per inviare un codice USSD per la query di saldo alla rete (ad esempio, * 901 #) e visualizzare il risultato, si utilizzerà questo comando:

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

Ciò presuppone che il tuo modem sia in /dev/ttyUSB1 . Il comando AT nel secondo comando atinout serve solo per visualizzare la risposta USSD non richiesta come un effetto collaterale, che dovrebbe essere arrivato dopo il sleep .

Per il caso in cui l'interrogazione del saldo richiede l'utilizzo di un menu USSD: questo è anche ansible con atinout , vedere questa risposta .

Per me, sia le soluzioni basate su gammu che il gammu non funzionano correttamente con la risposta USSD multilinea; per esempio il mio operatore ha un comando USSD *104# , a cui risponde qualcosa del tipo:

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

È deludente vedere solo la prima linea inutile: You have:

Finalmente ho trovato una soluzione alternativa con picocom e comando AT manuale. Quindi ogni volta che voglio controllare il mio saldo, devo fare quanto segue:

Per prima cosa, ferma Modem Manager:

 $ sudo stop modemmanager 

Ora, devi conoscere la tua porta modem; nel mio caso, è /dev/ttyACM0 .

Se non conosci la tua porta, prova questo:

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

E cerca la voce con Mobile Broadband Modem . Ad esempio il mio output appare come segue:

 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 

Per ulteriori informazioni su come ottenere la porta giusta, vedere questo link: https://gist.github.com/heyalexej/cc6c97b1ea42736b3ff7

Quindi, usa picocom per connetterti alla tua porta:

 $ sudo picocom /dev/ttyACM0 

Dovresti vedere qualcosa di simile a questo:

 picocom v1.7 port is : /dev/ttyACM0 flowcontrol : none baudrate is : 9600 parity is : none databits are : 8 escape is : Ca 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 

(se non vedi questo *EMRDY: 1 , probabilmente significa che non hai fermato Modem Manager, vedi sopra)

Quindi inserire:

 AT+CUSD=1,"*104#" 

E dopo alcuni secondi, dovresti ottenere la tua risposta, che può essere multilinea:

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

Per uscire da picocom, usare Ctrl-A Ctrl-X

E avvia nuovamente il gestore modem:

 $ sudo start modemmanager 

È ansible utilizzare la soluzione PBX virtuale open source FreeSwitch insieme alla sua estensione GSMopen per inviare comandi USSD [ origine ].

Ad esempio, se il codice USSD per ottenere il tuo saldo è (diciamo) * 901 #, devi eseguire:

 chat SMS|interface3|ussd|*901# 

Ci sono soluzioni più semplici nelle altre risposte, naturalmente, ma nel caso in cui si usi comunque GSMopen (… ad esempio perché è l’unico modo per effettuare chiamate vocali GSM sotto Linux …).