web-dev-qa-db-ja.com

USSDを使用したGSM USBモデムのバランス

USBモデム(モバイルブロードバンドドングル)でGSM SIMカードのバランスとデータバランスを確認するためにUSSDコードを送信するために使用できるツールまたはコマンドはありますか?

8
GunJack

これらは、USSDバランスチェックをサポートするアプリです。

プリペイドマネージャー

Prepaid Manager

プリペイドマネージャーは、GSMモバイルプリペイドSIMカードの残高を確認して追加できるGNOMEデスクトップ用のアプレットです。これは、USSDのバランスチェックとtopupを備えたシンプルでミニマルなアプリです。しかし、一方で、非常に古いアプリケーションであり、長い間新しいアップデートを受け取っていません。また、プロバイダーがサポートされていない場合、 their homepage で説明されているように、プロバイダーを手動で構成する必要があります。インストールするには、ここをクリックしてください:

Prepaid Manager App on Ubuntu Software

または、次のコマンドを実行します。

Sudo apt install prepaid-manager-applet

モデムマネージャーGUI

Modem Manager GUI

Modem Manager GUIは、モバイルネットワークベースのモデムを管理および監視するための完全なソリューションです。これには非常に多くの機能が含まれており、USSDサポートはそれらの1つにすぎません。機能の完全なリストについては、 彼らの公式ホームページ をご覧ください。インストールするには、ここをクリックしてください:

Modem Manager GUI App on Ubuntu Software

または、次のコマンドを実行します。

Sudo apt install modem-manager-gui

Vモバイルブロードバンド

V Mobile Broadband

Vモバイルブロードバンドは、元のVodafone Mobile ConnectLinux向けに書き換えられたソフトウェアですVodafoneのオープンソースBetavine Connection ManagerチームによるNetwork Managerとの互換性がある。残念ながら、現時点ではあまり積極的に保守されていないようで、Ubuntuリポジトリでは利用できません。ただし、ソースからプロジェクトを構築する運を試すこともできます。 GitHubページ を確認してください。

警告v-mobile-broadbandは、Ubuntuのデフォルトのwaderを置き換えるmodemmanagerに依存します。したがって、新しいセットアップで問題が発生し、v-mobile-broadbandをアンインストールすることにした場合は、modemmanagerパッケージを再インストールすることを忘れないでください。


ソース

7
HEXcube

この目的には、コマンドラインユーティリティ gammu を使用できます。残高を取得するUSSDコードが(たとえば)* 901#の場合、次を実行します。

gammu getussd "*901#"

インストールおよび構成の手順および詳細については、 こちらを参照

3
tanius

パッケージmodem-manager-guiでそれらを行うことができます。ただし、13.10でのみ使用可能です。他のバージョンでは、ターミナルでそれらをパッケージmodemmanagerで管理する必要があります。

Ubuntu 13.10を使用している場合:

Sudo apt-get install modem-manager-gui modemmanager

Ubuntuの他のバージョンでは、アプリケーションprepaid-manager-appletでそれを行うことができます

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

ATコマンドを直接使用して、USSD経由で残高を照会できます。そのためには、モデムと直接通信できるシリアル端末プログラム(PuTTYminicomなど)を使用します。

atinout を選択したのは、コマンドラインとうまく統合されたためです。最初にインストールします:

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

次に、ModemManager(Ubuntu Linuxのデフォルト)を使用する場合、まずatinoutがモデムにアクセスできるように、それを無効にする必要があります。

Sudo stop modemmanager;

ここで、残高照会のUSSDコードをネットワーク(たとえば、* 901#)に送信して結果を表示するには、次のコマンドを使用します。

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

これは、モデムが/dev/ttyUSB1にあることを前提としています。 2番目のATコマンドのatinoutコマンドは、副作用として表示される未承諾のUSSD回答を取得するためのもので、sleepの後に到着するはずです。

残高を照会するにはUSSDメニューを操作する必要があります。これは、atinoutこの回答を参照 でも可能です。

1
tanius

私にとっては、ModemManagerベースのソリューションとgammuの両方が、複数行のUSSD応答で正しく機能しません。例えば私のオペレーターにはUSSDコマンド*104#があり、それに応答します:

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

最初の役に立たない行You have:だけを見るのは残念です。

最後に、picocomと手動のATコマンドによる回避策を見つけました。したがって、残高を確認するたびに、次のことを行う必要があります。

まず、モデムマネージャーを停止します。

$ Sudo stop modemmanager

ここで、モデムポートを知る必要があります。私の場合、/dev/ttyACM0です。

ポートがわからない場合は、これを試してください:

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

そして、Mobile Broadband Modemでエントリを探します。例えば。私の出力は次のようになります。

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

適切なポートを取得する方法の詳細については、次のリンクを参照してください: https://Gist.github.com/heyalexej/cc6c97b1ea42736b3ff7

次に、picocomを使用してポートに接続します。

$ Sudo picocom /dev/ttyACM0

次のようなものが表示されるはずです。

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

(この*EMRDY: 1が表示されない場合、おそらくモデムマネージャーを停止していないことを意味します。上記を参照してください)

次に入力してください:

AT+CUSD=1,"*104#"

そして、数秒後に返信が返されるはずです。返信は複数行になる場合があります。

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

",15

OK

Picocomを終了するには、次を使用します Ctrl-ACtrl-X

そして、モデムマネージャを再度起動します。

$ Sudo start modemmanager
0
Dmitry Frank

Linuxコマンドラインツール gsm-ussd を使用して、USSDコードを送信し、回答を取得し、さらに USSDメニューをナビゲートできます (それは安定していなかった/私にとっては使用可能ではなかった).

インストールと構成の詳細な手順については、 こちら を参照してください。インストール用に提供されているバージョン0.4 Debianパッケージは、 最新のdevブランチバージョン です。

残高を取得するUSSDコードが(たとえば)* 901#で、モデムが/dev/ttyUSB1の場合、これを実行して単純なUSSDコードを送信し、ネットワークの回答を表示します(メニューは表示されません)。

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

UbuntuのデフォルトModemManagerのコマンドラインクライアント mmcli を使用して、USSDコードを送信し、応答を取得できます。

  1. モデムをリストすることから始めます:mmcli -L。これにより、/org/freedesktop/ModemManager1/Modem/0のようなモデムデバイスパスが表示されます。最後の数字はモデムのインデックスです。覚えておいてください。

  2. モデムを有効にします(モデムのインデックスが0であると仮定):mmcli -m 0 -e

  3. USSDリクエストを送信し、回答を表示します。ネットワークオペレーターの残高を取得するUSSDコードが* 901#であると仮定すると、コマンドは次のようになります。

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

残高を照会するにはUSSDメニューを操作する必要があります。これはmmcliでも可能です。 this answer を参照してください。

0
tanius