USBモデム(モバイルブロードバンドドングル)でGSM SIMカードのバランスとデータバランスを確認するためにUSSDコードを送信するために使用できるツールまたはコマンドはありますか?
これらは、USSDバランスチェックをサポートするアプリです。
プリペイドマネージャーは、GSMモバイルプリペイドSIMカードの残高を確認して追加できるGNOMEデスクトップ用のアプレットです。これは、USSDのバランスチェックとtopupを備えたシンプルでミニマルなアプリです。しかし、一方で、非常に古いアプリケーションであり、長い間新しいアップデートを受け取っていません。また、プロバイダーがサポートされていない場合、 their homepage で説明されているように、プロバイダーを手動で構成する必要があります。インストールするには、ここをクリックしてください:
または、次のコマンドを実行します。
Sudo apt install prepaid-manager-applet
Modem Manager GUIは、モバイルネットワークベースのモデムを管理および監視するための完全なソリューションです。これには非常に多くの機能が含まれており、USSDサポートはそれらの1つにすぎません。機能の完全なリストについては、 彼らの公式ホームページ をご覧ください。インストールするには、ここをクリックしてください:
または、次のコマンドを実行します。
Sudo apt install modem-manager-gui
Vモバイルブロードバンドは、元のVodafone Mobile ConnectLinux向けに書き換えられたソフトウェアですVodafoneのオープンソースBetavine Connection ManagerチームによるNetwork Managerとの互換性がある。残念ながら、現時点ではあまり積極的に保守されていないようで、Ubuntuリポジトリでは利用できません。ただし、ソースからプロジェクトを構築する運を試すこともできます。 GitHubページ を確認してください。
警告:v-mobile-broadband
は、Ubuntuのデフォルトのwader
を置き換えるmodemmanager
に依存します。したがって、新しいセットアップで問題が発生し、v-mobile-broadband
をアンインストールすることにした場合は、modemmanager
パッケージを再インストールすることを忘れないでください。
パッケージ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
ATコマンドを直接使用して、USSD経由で残高を照会できます。そのためには、モデムと直接通信できるシリアル端末プログラム(PuTTY
、minicom
など)を使用します。
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
、 この回答を参照 でも可能です。
私にとっては、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
Linuxコマンドラインツール gsm-ussd
を使用して、USSDコードを送信し、回答を取得し、さらに USSDメニューをナビゲートできます (それは安定していなかった/私にとっては使用可能ではなかった).
インストールと構成の詳細な手順については、 こちら を参照してください。インストール用に提供されているバージョン0.4 Debianパッケージは、 最新のdevブランチバージョン です。
残高を取得するUSSDコードが(たとえば)* 901#で、モデムが/dev/ttyUSB1
の場合、これを実行して単純なUSSDコードを送信し、ネットワークの回答を表示します(メニューは表示されません)。
gsm-ussd -m /dev/ttyUSB1 "*901#"
UbuntuのデフォルトModemManagerのコマンドラインクライアント mmcli
を使用して、USSDコードを送信し、応答を取得できます。
モデムをリストすることから始めます:mmcli -L
。これにより、/org/freedesktop/ModemManager1/Modem/0
のようなモデムデバイスパスが表示されます。最後の数字はモデムのインデックスです。覚えておいてください。
モデムを有効にします(モデムのインデックスが0であると仮定):mmcli -m 0 -e
USSDリクエストを送信し、回答を表示します。ネットワークオペレーターの残高を取得するUSSDコードが* 901#であると仮定すると、コマンドは次のようになります。
mmcli -m 0 --3gpp-ussd-initiate="*901#"
残高を照会するにはUSSDメニューを操作する必要があります。これはmmcli
でも可能です。 this answer を参照してください。