Saldo do modem USB GSM usando USSD

8

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

GunJack
fonte

Respostas:

7

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

Gerente pré-pago

Gerente pré-pago

O Gerenciador pré-pago é um miniaplicativo para o GNOME Desktop que permite verificar e completar o saldo dos cartões SIM pré-pagos móveis GSM. É um aplicativo simples e minimalista, com verificação e recarga de saldo USSD sendo tudo o que faz. Mas, por outro lado, é um aplicativo muito antigo e não recebe novas atualizações há muito tempo. E se o seu provedor não for suportado, você deverá configurá-lo manualmente, conforme descrito na página inicial . Para instalar, clique aqui:

Aplicativo Gerenciador Pré-pago no Software Ubuntu

Ou execute o seguinte comando:

sudo apt install prepaid-manager-applet

GUI do Modem Manager

GUI do Modem Manager

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

Aplicativo GUI do Modem Manager no Ubuntu Software

Ou execute o seguinte comando:

sudo apt install modem-manager-gui

V Banda larga móvel

V Banda larga móvel

V Mobile Broadband é o software Vodafone Mobile Connect original para Linux, reescrito para ser compatível com o Network Manager pela equipe Betavine Connection Manager da Vodafone, de código aberto. Infelizmente, ele 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 sorte criando o projeto a partir da fonte. Confira a página do GitHub .

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


Fontes

HEXcube
fonte
V Banda larga móvel: 12-Dez-14: erro: W: Falha ao buscar ppa.launchpad.net/crass/v-mobile-broadband/ubuntu/dists/trusty/… 404 Não encontrado. É desistido?
evergreen
@evergreen Não, o projeto não está morto porque o PPA ainda envia atualizações para 12.04LTS "Precise" . No entanto, ainda não foi atualizado para 14.04LTS "Trusty" .
HEXcube
Infelizmente, nenhum deles funciona para 16,04 e superior
Anwar
3

Você pode usar o utilitário de linha de comando gammupara esse fim. 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, consulte aqui .

tanius
fonte
1

Você pode usar os 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 modem ( putty, minicometc.).

Eu escolhi atinoutporque ele se integrava perfeitamente à linha de comando. Primeiro você o 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;

Então, se você usa o ModemManager (o padrão no Ubuntu Linux), pode ser necessário desativá-lo primeiro para permitir o atinoutacesso ao modem:

sudo stop modemmanager;

Agora, para enviar um código USSD para consulta de saldo à rede (por exemplo, * 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 esteja em /dev/ttyUSB1. O ATcomando no segundo atinoutcomando é apenas para obter a resposta USSD não solicitada exibida como um efeito colateral, que deveria ter chegado após o sleep.

No caso de consultar sua balança exigir a operação de um menu USSD: isso também é possível atinout, consulte esta resposta .

tanius
fonte
1

Você pode fazê-los com o pacote modem-manager-gui. Mas está disponível apenas para 13.10. Em outras versões, você precisa gerenciá-los 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
Mateo
fonte
0

Você pode usar a ferramenta de linha de comando do Linux gsm-ussdpara enviar códigos USSD, obter respostas e até navegar nos menus USSD (embora isso não fosse estável / utilizável para mim).

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

Se o código USSD para obter seu saldo for (digamos) * 901 # e seu modem for, /dev/ttyUSB1você o executará 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#"
tanius
fonte
0

Você pode usar o mmclicliente de linha de comando do ModemManager padrão do Ubuntu para enviar um código USSD e obter a resposta:

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

  2. Habilite o modem (assumindo que o índice do seu 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#"
    

No caso de consultar sua balança exigir a operação de um menu USSD: isso também é possível mmcli, consulte esta resposta .

tanius
fonte
Em 16.04, o comando retorna issoerror: couldn't initiate USSD session: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.Unsupported: Operation not supported.'
Anwar
0

Para mim, as duas soluções baseadas no ModemManager e gammunão funcionam corretamente com a resposta USSD multilinha; por exemplo, meu operador possui 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 o picocomcomando AT manual. Portanto, toda vez que quero verificar meu saldo, tenho que fazer o seguinte:

Primeiro, pare o Modem Manager:

$ sudo stop modemmanager

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

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

for n in `ls /sys/class/*/*{ACM,wdm}*/device/interface`;do echo $(echo $n|awk -F '/' '{print $5}') : $(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 obter mais informações sobre como obter a porta correta, consulte este link: https://gist.github.com/heyalexej/cc6c97b1ea42736b3ff7

Em seguida, use picocom para conectar-se à 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ê isso *EMRDY: 1, provavelmente significa que 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
Dmitry Frank
fonte
-1

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

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

chat SMS|interface3|ussd|*901#

É claro que existem soluções mais simples nas outras respostas, 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…).

tanius
fonte