Balanço do Modem USB GSM usando USSD

8

Existem algumas ferramentas ou comandos que eu posso usar para enviar códigos USSD para verificar o saldo e o saldo de dados do cartão SIM GSM no meu modem USB (dongle de banda larga móvel)?

    
por GunJack 15.12.2013 / 22:58

8 respostas

7

Estes são alguns aplicativos com suporte para verificação de saldo USSD:

Gerente Pré-pago

Gerenciador Pré-pago é um applet para o GNOME Desktop que permite verificar e aumentar o saldo de cartões SIM pré-pagos móveis GSM. É um aplicativo simples e minimalista, com verificação de saldo USSD e topup sendo tudo o que faz. Mas por outro lado, é um aplicativo muito antigo e não recebeu novas atualizações há muito tempo. E se o seu provedor não for compatível, você terá que configurá-lo manualmente conforme descrito em sua homepage . Para instalar, clique aqui:

Ou execute o seguinte comando:

sudo apt install prepaid-manager-applet

GUI do Gerenciador de Modem

O Modem Manager GUI é uma solução completa para gerenciar e monitorar modems baseados em rede móvel. Ele contém muitos recursos e o suporte do USSD é apenas um deles. Para obter uma lista completa dos recursos, visite o sua página oficial . Para instalar, clique aqui:

Ou execute o seguinte comando:

sudo apt install modem-manager-gui

V Banda Larga Móvel

V Banda Larga Móvel é o software original do Vodafone Mobile Connect para o Linux reescrito para ser compatível com o Network Manager pela equipe open source Betavine Connection Manager da Vodafone. Infelizmente, isso não parece ser mantido ativamente no momento e não está disponível nos repositórios do Ubuntu. No entanto, você pode tentar a sua sorte construindo o projeto a partir da fonte. Confira sua página no GitHub .

Aviso : v-mobile-broadband depende de wader , que substitui o padrão modemmanager do Ubuntu. Portanto, se você encontrar problemas com a nova configuração e decidir desinstalar v-mobile-broadband , não se esqueça de reinstalar modemmanager package.

Fontes

  • No Ubuntu, existe uma aplicação como" Huawei Mobile Partner "para modems dongle de banda larga?
por HEXcube 26.03.2014 / 20:26
3

Você pode usar o utilitário de linha de comando gammu para essa finalidade. Se o código USSD para obter seu saldo for (digamos) * 901 #, você executaria:

gammu getussd "*901#"

Para instruções de instalação e configuração e mais detalhes, veja aqui .

    
por tanius 06.08.2015 / 14:48
1

Você pode fazê-las com o pacote modem-manager-gui . Mas só está disponível para 13.10. Em outras versões, você deve gerenciá-las no Terminal com o pacote modemmanager .

Se você estiver no Ubuntu 13.10:

sudo apt-get install modem-manager-gui modemmanager

Em outras versões do Ubuntu você pode fazer isso com o aplicativo prepaid-manager-applet

sudo apt-get install prepaid-manager-applet
    
por user224082 18.12.2013 / 14:01
0

Você pode usar a ferramenta de linha de comando gsm-ussd para enviar códigos USSD, obter respostas e até mesmo navegue pelos menus USSD (embora isso não tenha sido estável / utilizável para mim).

Para obter instruções detalhadas de instalação e configuração, consulte aqui . O pacote Debian versão 0.4 oferecido aqui para instalação é a versão mais recente do ramo dev .

Se o código USSD para obter seu saldo for (digamos) * 901 # e seu modem for /dev/ttyUSB1 , você executaria isso para enviar um código USSD simples e exibir a resposta da rede (não resultando em um menu):

gsm-ussd -m /dev/ttyUSB1 "*901#"
    
por tanius 08.08.2015 / 19:57
0

Você pode usar o cliente de linha de comando mmcli do ModemManager padrão do Ubuntu para envie um código USSD e receba a resposta:

  1. Comece listando seus modems: mmcli -L . Isso mostrará um caminho de dispositivo do modem como /org/freedesktop/ModemManager1/Modem/0 . O número no final é o índice do modem, lembre-se disso.

  2. Habilite o modem (supondo que o índice do modem seja 0): mmcli -m 0 -e

  3. Envie a solicitação USSD e exiba a resposta. Supondo que o código USSD da sua operadora de rede para obter o saldo seja * 901 #, o comando seria:

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

Para o caso de a consulta do seu saldo exigir a operação de um menu USSD: isso também é possível com mmcli , consulte esta resposta .

    
por tanius 08.08.2015 / 20:29
0

Você pode usar comandos AT diretamente para consultar seu saldo via USSD. Para isso, use qualquer programa de terminal serial que permita a comunicação direta com o seu modem ( putty , minicom etc.).

Eu escolhi atinout porque ele se integrou muito bem com a linha de comando. Primeiro você instala:

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

Em seguida, se você usar o ModemManager (o padrão no Ubuntu Linux), talvez seja necessário desativá-lo primeiro para permitir que atinout acesse seu modem:

sudo stop modemmanager;

Agora, para enviar um código USSD para consulta de saldo à rede (digamos, * 901 #) e exibir o resultado, você usaria este comando:

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

Isso pressupõe que seu modem está em /dev/ttyUSB1 . O comando AT no segundo comando atinout é apenas para obter a resposta USSD não solicitada exibida como um efeito colateral, que deveria ter chegado após o sleep .

Para o caso de a consulta do seu saldo exigir a operação de um menu USSD: isso também é possível com atinout , veja esta resposta .

    
por tanius 08.08.2015 / 20:17
0

Para mim, as soluções baseadas no ModemManager e gammu não funcionam corretamente com a resposta USSD de várias linhas; por exemplo. meu operador tem um comando USSD *104# , ao qual responde algo como:

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

É decepcionante ver apenas a primeira linha inútil: You have: .

Finalmente, encontrei uma solução alternativa com picocom e comando AT manual. Então toda vez que eu quero checar meu saldo, eu tenho que fazer o seguinte:

Primeiro, pare o Modem Manager:

$ sudo stop modemmanager

Agora, você precisa conhecer sua porta de modem; no meu caso, é /dev/ttyACM0 .

Se você não conhece sua porta, tente isto:

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

E procure a entrada com Mobile Broadband Modem . Por exemplo. minha saída é a seguinte:

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

Para mais informações sobre como obter a porta certa, consulte este link: link

Em seguida, use o picocom para se conectar à sua porta:

$ sudo picocom /dev/ttyACM0

Você deve ver algo assim:

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

(se você não vê este *EMRDY: 1 , isso provavelmente significa que você não parou o Modem Manager, veja acima)

Em seguida, digite:

AT+CUSD=1,"*104#"

E após alguns segundos, você deve receber sua resposta, que pode ser multilinha:

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

",15

OK

Para sair do picocom, use Ctrl-A Ctrl-X

E inicie o gerenciador de modem novamente:

$ sudo start modemmanager
    
por Dmitry Frank 10.08.2016 / 21:25
-1

Você pode usar a solução de código-fonte aberto virtual FreeSwitch juntamente com sua extensão GSMopen para enviar comandos USSD [ source ].

Por exemplo, se o código USSD para obter seu saldo for (digamos) * 901 #, você executaria:

chat SMS|interface3|ussd|*901#

Existem soluções mais simples nas outras respostas, é claro, mas no caso de você usar o GSMopen de qualquer maneira (… por exemplo, porque é a única maneira de fazer chamadas de voz GSM no Linux…).

    
por tanius 29.11.2015 / 18:39