ModemManager (およびそのコマンド ライン クライアント インターフェイスmmcli ) は、現在、Linux で USSD および USSD メニューと対話するための最も洗練された、最高品質のソリューションであるように思えます。
インストール (Debian / Ubuntu Linux で):
sudo apt-get install modemmanager modem-manager-gui
使用法(マンページに従う):
モデムの一覧表示: mmcli -L
. これにより、次のようなモデム デバイス パスが表示/org/freedesktop/ModemManager1/Modem/12
され、その末尾の番号を使用して-m
、次のコマンドのオプションの後に使用するモデムを指定できます。
モデムの属性を表示しています: mmcli -m 12
。
モデムの有効化 (USSD で使用する前に必要):mmcli -m 12 -e
USSD セッションの開始。たとえば、Ncellの場合、このコマンドはメインの USSD メニューを表示します。mmcli -m 12 --3gpp-ussd-initiate="*100#"
USSDメニューへの対応。セッションが開始された後、次のようなコマンドを使用して応答できます。ここではオプションを使用しています1
。mmcli -m 12 --3gpp-ussd-respond="1"
指定されたモデムの USSD セッションをキャンセルしています: mmcli -m 12 --3gpp-ussd-cancel
。
すべての USSD セッション (使用可能なすべてのモデム) のステータスの取得: mmcli --3gpp-ussd-status
.
ほとんどのハードウェアでは、これは説明どおりに正しく、すぐに機能するはずです。
(ただし、私のハードウェアでは、mmcli
バグのためにこれまで使用できませんでした。すべての USSD 関連のコマンドmmcli
は応答しerror: modem not unlocked yet
、ロックが有効になっmmcli -m 12 | grep " lock"
ていることを示しsim-pin2
ます。しかし、そうではありません (つまり、ロックを無効にしてこれを乗り越えることができませんでした) . そして、それが有効になったとしても、そのロックは USSD の使用を制限しません (それはむしろ、特定の番号への発信を制限するためのものです). したがって、ここからこの過度のテスト条件を削除し、自分でコンパイルして、もう一度テストしてください… .)