使用USSD的GSM USB调制解调器的平衡


8

我可以使用一些工具或命令来发送USSD代码,以检查USB调制解调器(移动宽带加密狗)中GSM SIM卡的余额和数据余额吗?

Answers:


7

以下是一些具有USSD余额检查支持的应用程序:

预付经理

预付经理

预付费管理器是GNOME桌面的小程序,可让您检查并充值GSM移动预付费SIM卡的余额。它是一个简单而简约的应用程序,具有USSD余额检查和充值功能。但另一方面,它是一个过时的应用程序,很长一段时间没有收到任何新更新。而且,如果不支持您的提供商,则必须按照其主页的说明手动进行配置。要安装,请单击此处:

Ubuntu软件上的Prepaid Manager App

或运行以下命令:

sudo apt install prepaid-manager-applet

调制解调器管理器GUI

调制解调器管理器GUI

调制解调器管理器GUI是管理和监视基于移动网络的调制解调器的完整解决方案。它包含许多功能,而USSD支持只是其中之一。有关功能的完整列表,请访问其官方主页。要安装,请单击此处:

Ubuntu软件上的调制解调器管理器GUI应用

或运行以下命令:

sudo apt install modem-manager-gui

V移动宽带

V移动宽带

V Mobile Broadband是由Vodafone的开源Betavine Connection Manager团队改写为与Network Manager兼容的,用于Linux 的原始Vodafone Mobile Connect软件。不幸的是,目前看来它并没有得到非常积极的维护,并且在Ubuntu仓库中也没有。但是,您可以尝试从源代码构建项目。查看他们的GitHub页面

警告v-mobile-broadband取决于wader,它将取代Ubuntu的默认设置modemmanager。因此,如果您在使用新设置时遇到问题并决定卸载v-mobile-broadband,请不要忘记重新安装modemmanager软件包。


资料来源


V移动宽带:14年12月12日:错误:W:无法获取ppa.launchpad.net/crass/v-mobile-broadband/ubuntu/dists/trusty / ... 404未找到。放弃了吗
常绿

@evergreen不,该项目还没有结束,PPA仍在为12.04LTS “ Precise”推送更新。但是,尚未对14.04LTS “ Trusty”进行更新。
HEXcube 2014年

不幸的是,这些作品都不适合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/ttyUSB1。将AT在第二个命令atinout的命令只是让显示的副作用,应后已经到达了不请自来的USSD答案sleep

对于查询余额需要操作USSD菜单的情况:也可以使用atinout请参见此答案


1

您可以使用包来做modem-manager-gui。但仅适用于13.10。在其他版本中,您必须使用软件包在Terminal中进行管理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,则可能意味着您尚未停止Modem Manager,请参见上文)

然后输入:

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语音通话的唯一方法……)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.