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


8

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

回答:


7

USSDバランスチェックをサポートするアプリは次のとおりです:

プリペイドマネージャー

プリペイドマネージャー

プリペイドマネージャーはGNOMEデスクトップ用のアプレットで、GSMモバイルプリペイドSIMカードの残高を確認してチャージできます。それはUSSDバランスチェックとトップアップがすべてのことであるシンプルでミニマルなアプリです。しかし、一方で、これは非常に時代遅れのアプリケーションであり、長い間新しい更新を受け取っていません。また、プロバイダーがサポートされていない場合は、プロバイダーのホームページに記載されているように手動で設定する必要があります。インストールするには、ここをクリックしてください:

Ubuntuソフトウェアのプリペイドマネージャーアプリ

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

sudo apt install prepaid-manager-applet

モデムマネージャGUI

モデムマネージャGUI

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

Ubuntuソフトウェア上のModem Manager GUIアプリ

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

sudo apt install modem-manager-gui

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

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

V Mobile Broadbandは、VodafoneのオープンソースBetavine Connection ManagerチームによってNetwork Managerと互換性を持つように書き直された、Linux用のオリジナルのVodafone Mobile Connectソフトウェアです。残念ながら、現時点ではあまり活発にメンテナンスされていないようで、Ubuntuリポジトリでは利用できません。ただし、ソースからプロジェクトを構築する運を試してみることもできます。チェックアウト彼らのGitHubのページを

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


出典


Vモバイルブロードバンド:14-Dec-14:エラー:W:ppa.launchpad.net/crass/v-mobile-broadband/ubuntu/dists/trusty/…404が 見つかりませんでした。あきらめますか?
エバーグリーン

@evergreenいいえ、プロジェクトは死んでいないので、PPAは12.04LTS "Precise"の更新をまだプッシュしています。ただし、14.04LTS 「Trusty」以降ではまだ更新されていません。
HEXcube

残念ながら、これらはいずれも16.04以降では機能しません
Anwar

3

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

gammu getussd "*901#"

インストールと構成の手順および詳細については、ここを参照してください


1

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/ttyUSB1AT第二中のコマンドatinoutのコマンドは、直後に到達すべき副作用として表示迷惑USSDの答えを得ることですsleep

あなたの残高を照会すると、USSDメニューを操作する必要がある場合のために:でこれもまた可能であるatinoutこの答えを参照してください


1

あなたはパッケージでそれらを行うことができます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

0

Linuxコマンドラインツールgsm-ussdを使用して、USSDコードを送信したり、回答を取得したり、USSDメニューをナビゲートしたりすることもできます(ただし、これは安定していない/私にとっては使用できませんでした)。

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

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

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

0

mmcliUbuntuのデフォルトのModemManagerのコマンドラインクライアントを使用して、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参照してください。


16.04では、コマンドはこれを返しますerror: couldn't initiate USSD session: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.Unsupported: Operation not supported.'
Anwar

0

私にとって、両方の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-A Ctrl-X

モデムマネージャーをもう一度起動します。

$ sudo start modemmanager

-1

オープンソースの仮想PBXソリューションFreeSwitchとその拡張GSMopenを使用して、USSDコマンドを送信できます[ source ]。

たとえば、残高を取得するUSSDコードが(たとえば)* 901#の場合、次のように実行します。

chat SMS|interface3|ussd|*901#

もちろん、他の回答にはより簡単な解決策がありますが、とにかくGSMopenを使用する場合(…たとえば、LinuxでGSM音声通話を行う唯一の方法だからです…)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.