web-dev-qa-db-fra.com

Balance du modem USB GSM utilisant USSD

Existe-t-il des outils ou des commandes que je peux utiliser pour envoyer des codes USSD afin de vérifier le solde et le solde des données de la carte SIM GSM dans mon modem USB (dongle haut débit mobile)?

8
GunJack

Voici quelques applications prenant en charge le contrôle de solde USSD:

Gestionnaire prépayé

Prepaid Manager

Prepaid Manager est un applet pour le bureau GNOME qui vous permet de vérifier et de recharger le solde des cartes SIM prépayées pour téléphones mobiles GSM. Il s’agit d’une application simple et minimaliste dont le bilan et le complément USSD sont tout ce qu’il fait. Mais en revanche, il s’agit d’une application très ancienne et qui n’a reçu aucune nouvelle mise à jour depuis longtemps. Et si votre fournisseur n'est pas pris en charge, vous devrez le configurer manuellement comme décrit sur leur page d'accueil . Pour installer, cliquez ici:

Prepaid Manager App on Ubuntu Software

Ou exécutez la commande suivante:

Sudo apt install prepaid-manager-applet

Interface graphique du gestionnaire de modem

Modem Manager GUI

L'interface graphique de Modem Manager est une solution complète permettant de gérer et de surveiller les modems basés sur un réseau mobile. Il offre de nombreuses fonctionnalités et le support USSD n’est que l’une d’elles. Pour une liste complète des fonctionnalités, visitez leur page d'accueil officielle . Pour installer, cliquez ici:

Modem Manager GUI App on Ubuntu Software

Ou exécutez la commande suivante:

Sudo apt install modem-manager-gui

V haut débit mobile

V Mobile Broadband

V Mobile Broadband est le logiciel original de Vodafone Mobile Connect pour Linux réécrit en être compatible avec l'équipe Open Source Betavine Connection Manager de Network Manager by Vodafone. Malheureusement, il ne semble pas être très activement maintenu pour le moment et n'est pas disponible dans les dépôts Ubuntu. Cependant, vous pouvez tenter votre chance en construisant le projet à partir des sources. Découvrez leur page GitHub .

Avertissement : v-mobile-broadband dépend de wader, qui remplace le nom par défaut Ubuntu modemmanager. Donc, si vous rencontrez des problèmes avec la nouvelle configuration et décidez de désinstaller v-mobile-broadband, n'oubliez pas de réinstaller le paquet modemmanager.


Sources

7
HEXcube

Vous pouvez utiliser l'utilitaire de ligne de commande gammu à cette fin. Si le code USSD pour obtenir votre solde est (par exemple) * 901 #, vous exécuterez:

gammu getussd "*901#"

Pour des instructions d'installation et de configuration et plus de détails, voir ici .

3
tanius

Vous pouvez les faire avec le paquetage modem-manager-gui. Mais il n’est disponible que pour 13.10. Dans d'autres versions, vous devez les gérer dans Terminal avec le package modemmanager.

Si vous êtes dans Ubuntu 13.10:

Sudo apt-get install modem-manager-gui modemmanager

Dans d'autres versions d'Ubuntu, vous pouvez le faire avec l'application prepaid-manager-applet

Sudo apt-get install prepaid-manager-applet
1
user224082

Vous pouvez utiliser les commandes AT directement pour interroger votre solde via USSD. Pour cela, utilisez n’importe quel programme de terminal série vous permettant de communiquer directement avec votre modem (PuTTY, minicom etc.).

J'ai choisi atinout car cela s'intégrait bien à la ligne de commande. D'abord vous l'installez:

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

Ensuite, si vous utilisez ModemManager (la valeur par défaut sous Ubuntu Linux), vous devrez peut-être d'abord le désactiver pour permettre à atinout d'accéder à votre modem:

Sudo stop modemmanager;

Maintenant, pour envoyer un code USSD pour une requête de solde au réseau (par exemple, * 901 #) et afficher le résultat, utilisez la commande suivante:

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

Cela suppose que votre modem est à /dev/ttyUSB1. La commande AT dans la deuxième commande atinout sert simplement à afficher la réponse USSD non sollicitée en tant qu'effet secondaire, ce qui aurait dû arriver après le sleep.

Pour le cas où l'interrogation de votre balance nécessite l'utilisation d'un menu USSD: ceci est également possible avec atinout, voir cette réponse .

1
tanius

Pour moi, les solutions basées sur ModemManager et gammu ne fonctionnent pas correctement avec la réponse USSD multiligne; par exemple. mon opérateur a une commande USSD *104#, à laquelle il répond quelque chose comme:

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

Il est décevant de ne voir que la première ligne inutile: You have:.

Enfin, j'ai trouvé une solution de contournement avec picocom et une commande manuelle AT. Ainsi, chaque fois que je veux vérifier mon solde, je dois procéder comme suit:

Tout d’abord, arrêtez Modem Manager:

$ Sudo stop modemmanager

Maintenant, vous devez connaître le port de votre modem. dans mon cas, il s'agit de /dev/ttyACM0.

Si vous ne connaissez pas votre port, essayez ceci:

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

Et recherchez l'entrée avec Mobile Broadband Modem. Par exemple. ma sortie se présente comme suit:

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

Pour plus d'informations sur l'obtention du bon port, voir ce lien: https://Gist.github.com/heyalexej/cc6c97b1ea42736b3ff7

Ensuite, utilisez picocom pour vous connecter à votre port:

$ Sudo picocom /dev/ttyACM0

Vous devriez voir quelque chose comme ça:

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

(Si vous ne voyez pas ce *EMRDY: 1, cela signifie probablement que vous n'avez pas arrêté Modem Manager, voir ci-dessus)

Puis entrez:

AT+CUSD=1,"*104#"

Et après quelques secondes, vous devriez recevoir votre réponse, qui peut être multiligne:

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

",15

OK

Pour quitter picocom, utilisez Ctrl-ACtrl-X

Et relancez le gestionnaire de modem:

$ Sudo start modemmanager
0
Dmitry Frank

Vous pouvez utiliser l'outil de ligne de commande Linux gsm-ussd pour envoyer des codes USSD, obtenir des réponses et même naviguer dans les menus USSD (bien que ce ne soit pas stable/utilisable pour moi).

Pour des instructions détaillées sur l’installation et la configuration, voir ici . Le paquet Debian version 0.4 proposé ici pour l'installation est le dernière version de la branche dev .

Si le code USSD pour obtenir votre solde est (par exemple) * 901 # et que votre modem est /dev/ttyUSB1, vous exécuterez cette opération pour envoyer un simple code USSD et afficher la réponse du réseau (ne générant pas de menu):

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

Vous pouvez utiliser le client en ligne de commande mmcli du ModemManager par défaut d'Ubuntu pour envoyer un code USSD et obtenir la réponse:

  1. Commencez par lister vos modems: mmcli -L. Cela montrera un chemin de périphérique de modem comme /org/freedesktop/ModemManager1/Modem/0. Le numéro à la fin est l'index du modem, souvenez-vous-en.

  2. Activez le modem (en supposant que votre index de modem est 0): mmcli -m 0 -e

  3. Envoyez la demande USSD et affichez la réponse. En supposant que le code USSD de votre opérateur réseau pour obtenir le solde soit * 901 #, la commande serait:

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

Pour le cas où l'interrogation de votre balance nécessite l'utilisation d'un menu USSD: ceci est également possible avec mmcli, voir cette réponse .

0
tanius