AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 658081
Accepted
tanius
tanius
Asked: 2015-08-09 05:36:53 +0800 CST2015-08-09 05:36:53 +0800 CST 2015-08-09 05:36:53 +0800 CST

如何使用 Ubuntu 预订和使用 Ncell SIM 卡的 Internet 包?

  • 772

我有一张Ncell(尼泊尔手机公司)SIM 卡,我想在基于 Ubuntu 的笔记本电脑的内置 3G 调制解调器(“Gobi 2000”硬件)中使用它。

该卡使用 Ncell 的“正常”资费,而不是Ncell Connect。因此,我无法预订便宜的、永不过期的 Ncell Connect 数据包,但想使用Daily Internet Packs,这似乎是下一个最便宜和最灵活的选择。

问题:如何使用任何选项在 Ubuntu 下使用笔记本中的 SIM 卡成功预订这些包?(例如 USSD 菜单选项,或 Ncell Ecare,需要短信确认)

理想情况下,该解决方案应尽可能自动化,并防止我在 Daily Internet Pack 的容量用完时遇到更昂贵的数据速率。

modem
  • 2 2 个回答
  • 1779 Views

2 个回答

  • Voted
  1. Best Answer
    tanius
    2015-08-09T05:42:30+08:002015-08-09T05:42:30+08:00

    经过多次试验,以下是我迄今为止最好的解决方案。

    解决方案:使用 atiout 通过 USSD 菜单预订

    USSD 被移动网络运营商用于响应式服务菜单——请参阅关于 USSD 的维基百科。通过带有 SIM 卡的计算机通过Ncell 的*17123#USSD菜单进行预订是最舒适的选择。

    由于专用 USSD 客户端软件对我不起作用(见下文),我使用原始 AT 命令。为此,我将首先安装atiout,这是一个用于使用 AT 命令的小型命令行实用程序:

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

    然后,我可以将它与 AT USSD 命令一起使用,例如,预订 40 MB 的 Daily Internet Pack。这是完整的成绩单。调制解调器用 确认您的命令后OK,等待几秒钟,然后按Enter显示 USSD 应答(届时应该已经到达)。然后按Ctrl+C终止atinout(^C在成绩单中),然后重新启动。

    $ sudo stop modemmanager
    stop: Unknown instance:
    
    $ atinout - /dev/ttyUSB1 -
    AT+CUSD=1,"*17123#",15
    OK
    +CUSD: 1,"1.) 1 day Pack 
    3.) Facebook Pack 
    4.) 7 Day Pack  
    6.)  30 Day Pack 
    8.) Unlimited Pack  
    Note: 
    Back:* Top:#",15
    ^C
    
    $ atinout - /dev/ttyUSB1 -
    AT+CUSD=1,"1",15
    OK
    +CUSD: 1,"1.Light 6 MB Rs 6 
    2.Light 12 MB Rs 9 
    3.Medium 18 MB Rs 12 
    4.Heavy 40 MB Rs 20 
    5.Deactivate 
    Note: 
    Back:* Top:#",15
    ^C
    
    $ atinout - /dev/ttyUSB1 -
    AT+CUSD=1,"4",15
    OK
    +CUSD: 1,"1.One time Activations 
    2.Auto Renewal Activations 
    Note: 
    Back:* Top:#",15
    ^C
    
    $ atinout - /dev/ttyUSB1 -
    AT+CUSD=1,"1",15
    OK
    +CUSD: 0,"Dear Customer, your 40 MB pack with 24 hours validity 
    is currently processing and will be activated within 10 min. ",15
    ^C
    

    您可以将以上内容组合成一个脚本(假设现在您不必重试任何命令;这AT只是为了显示 USSD 答案):

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

    (注意,这个脚本使用了一种技术来避免管道字符。)

    故障排除

    连续多个 AT+CUSD 命令。出于某种原因,我的3G modem(Gobi 2000),在90%的情况下,只有一个AT+CUSD可以成功执行,然后atinout必须重新启动。为了防止困难,在上面的过程中,我们atinout在上面的成绩单中每次都简单地重新启动。这不会结束 USSD 会话(一个“打开的”USSD 菜单)。

    如果调制解调器没有用 OK 应答。在进行上述记录时,请注意调制解调器使用“OK”确认每个命令。如果没有,请重新启动并重atinout试。如果这没有帮助,请重新开始整个过程​​。如果这没有帮助,您的调制解调器可能处于异常状态。重置它,或者让计算机经历一个挂起/恢复周期。

    一般使用 AT 命令。有关在 Linux 下使用 AT 命令与调制解调器通信的更多详细信息,请参阅此答案。

    预订 Daily Internet Pack 失败时。Ncell Ecare 网站将在没有错误消息的情况下失败并再次显示服务列表,而不是输入 SMS 确认代码的成功消息。如果您仍然有一个活跃的每月(或每周?) Internet 包,就会发生这种情况。即使它没有留下任何数据平衡。您可以检查一下,如有必要,请在此处取消包。然而对我来说,即使在取消套餐后,通过短信查询数据余额也会返回“亲爱的客户,您的每月帐户中还剩下 [...] MB 数据,这些数据将过期 [...]。” 而且仍然无法预订 Daily Internet Pack。我将不得不等到到期日。也许尝试将 SIM 卡放入手机并通过 USSD 代码预订第一个 Daily Internet Pack(拨打*17123#并按照屏幕上的菜单进行操作。)

    未来的改进

    自动化。使用上述解决方案,我们必须手动导航菜单,如果出现问题,请重试。有待改善。

    自动重新预订。理想情况下,此解决方案将包括在数据余额不足时自动(重新)预订。这可以通过 Ncell 警告短信和/或流量监控来检测。这不会在自然过期时自动预订新套餐,而是随后使用状态图标通知用户她正在以昂贵的价格浏览。

    当数据余额用完时收到通知。如果是这样,我们将不需要向 SIM 卡转移有限的金额,但可以转移大量金额并在遇到昂贵的费率时收到警告(例如任务栏中的红色大图标)。为此至少有两种方法:

    在活动数据连接期间获取 Ncell 通知短信。Ncell 在数据余额不足时发送它。请参阅上面的要点wvdial等。这是如何工作的。它不适用于NetworkManager开箱即用的 gammu,因为它会占用两个调制解调器控制通道。

    限制数据流量。 NTM将是一个候选工具,但它目前没有设置具有确切开始时间的一次性包数据限制的功能。

    替代 USSD 客户端软件(不适合我)

    Ubuntu Linux 下有专门的 USSD 客户端,但由于各种原因它们对我不起作用(我的 3G 调制解调器硬件:Gobi 2000)。但是,通过一些调试,您可能会让它们工作。some 的用法在这个问题和这个问题中有更详细的处理。

    名单,最有前途的候选人排在第一位:

    • mmcli。ModemManager 及其命令行客户端mmcli似乎是很棒的软件,也是完成此任务的最佳选择。有关如何使用USSD 菜单导航的信息,请参阅StackOverflow 上的此答案。mmcli但是,在解决了Ncell SIM卡上的always-on PIN2 lock问题后(解决方案与此类似),mmcli仍然会拒绝通过Gobi 2000 3G调制解调器发送USSD命令,由于一个错误(因为调制解调器使用USSD与其他客户端软件成功地):

      $ sudo apt-get install libqmi-utils
      $ sudo qmicli -d /dev/cdc-wdm0 --dms-uim-verify-pin=PIN2,0000
      $ sudo qmicli -d /dev/cdc-wdm0 --dms-uim-get-pin-status
      $ mmcli -m 0 -e  # Index as found via mmcli -L
      $ mmcli -m 0 --3gpp-ussd-initiate="*100#"
      error: Modem has nn USSD capabilities.
      
    • gsm-ussd。 gsm-ussd是一个专门用于发送 USSD 代码的命令行实用程序,它可以操作 USSD 菜单(请参阅此答案中的操作方法)。不过,对于 Ncell,我能够发送 USSD 代码并获得答案,但无法操作 USSD 菜单。会出现各种不一致的报错信息,我没有去查是我的硬件问题,gsm-ussd问题还是Ncell对USSD的实现。

    • 伽穆。 gammu是一个可以发送USSD代码的Linux命令行实用程序,但是根据this question,它还不能使用USSD菜单。python-gammu包含一个service_numbers.py旨在启用此功能的脚本。虽然它对我不起作用。

    • ofono. 与 ModemManager [来源ofono]具有相似的用途和界面,只是它是为 Ubuntu Touch(可以在手机上运行)制作的。它的主要界面是 DBus,但是你可以使用它的测试用例命令行工具来发送 USSD 命令和操作 USSD 菜单(示例,更多示例)。然而,它似乎需要一个(无线电接口层守护进程)实现才能运行,而且只能在实际手机上使用。开始时,会抱怨无法连接到,而且我找不到要在普通 Ubuntu Linux 安装上安装的软件。rildofonodrildrild

    • ussdq。 ussdq是另一个用于 Linux 的小实用程序,它包含操作 USSD 菜单的功能。然而,自 2013 年以来,它不再积极开发,并且编译它有点费力(它使用 Gambas2 框架,但最近的 Ubuntu Linux 版本只包含 Gambas3 的包)。

    • 1
  2. tanius
    2015-08-09T05:36:53+08:002015-08-09T05:36:53+08:00

    另请参阅我的其他答案,我认为这是更好的答案。

    解决方案:通过 Ncell Ecare 网站预订

    通过 USSD 命令预订是最舒适的解决方案(请参阅我的其他答案)。但是,如果由于某种原因它对您不起作用,这里还有另一种不太舒服但可行的选择。

    1. 将 25 NPR 转移到计算机的 SIM 卡中。您想同时购买 Daily Internet Packs 的次数不限。最快和最舒适的方法是从您的地址簿中拨打相应的 USSD 代码*17122*<980… mobile number>*25#[来源]。价格包括 1.25 NPR 的传输费用,以及以 20 NPR 预订 40MB Daily Internet Pack 时增加的税费。

    2. 用手机创建一个wifi热点。并将计算机连接到它,或者使用现有的 wifi 连接(如果可用)。

    3. 在Ncell Ecare上预订一次性“40 MB Heavy”每日互联网包。可以连续预订多个,数据量会聚合。您必须使用短信收到的确认码来确认第一次预订。例如获取该短信如下:

      1. 执行gammu deletesms 0 1(假设您不需要插槽 1 中存储的 SMS)为传入的 SMS 腾出空间。会在第一个可用空间(这里保证1个)收到,但如果SIM卡上的20-30个存储空间全部用完,则不会收到。

      2. 在Ncell Ecare网站的预订流程中点击“发送短信”。

      3. 执行gammu getsms 0 1以获得确认短信。

      4. 在 Ncell Ecare 网站上输入确认码。

    4. 通过移动数据使用互联网,直到它停止工作。

    5. 通过余额检查确认余额已用完。简而言之:

      gammu deletesms 0 1 && \
      gammu sendsms TEXT 9909 -text "status" && \
      sleep 10 && \
      gammu getsms 0 1
      

      如果它无法正常工作,请断开您的移动宽带连接(一些连接管理器会占用两个调制解调器控制通道,而不会留下一个gammu)。

    6. 重复。

    故障排除

    简化 Ncell Ecare 的登录。经常使用Ncell Ecare 网站会让人感到不舒服,因为它会阻止浏览器保存登录数据,阻止复制和粘贴用于粘贴到密码字段,此外,在登录表单上有一个验证码。解决方案:

    1. 如果使用 Firefox,请安装Autofill Forms插件。

    2. 然后访问 Ncell 登录页面,右键单击一个字段并选择“将完整表格添加为配置文件……”。

    3. 在配置文件创建对话框中,将匹配的站点规则修改为(?:ecare\.ncell\.com\.np:9443),并输入您的用户名和密码值。

    4. 复制该配置文件并将其调整为您拥有的其他 SIM 卡。

    5. 从现在开始,要登录,请右键单击登录页面上除表单字段外的任意位置,然后选择“自动填写表单 →”。

    6. (可选)要允许粘贴到密码字段,请安装FoxReplace Firefox 插件并为 URLhttps://ecare.ncell.com.np:9443/nser/index.do?method=init设置“用于输入和输出的 HTML”选项集的规则以及将文本替换为空的操作onkeydown="keyDownForbidCopyPaste(passwordIn)。

    7. (可选)如果你真的想摆脱验证码解决,解决验证码问题,你可以使用Rumola 浏览器插件。但是请注意,验证码解决将花费 0.013 美元,因为它涉及(至少有时)人工处理。他们的验证码自动搜索功能不适用于 Ncell Ecare 登录表单。相反,右键单击验证码文本字段并选择“使用此字段输入验证码”。然后双击进入该字段让 Rumola 解决验证码。在此过程中,使用上面的“自动表单填写”步骤填写剩余的登录信息。

    Ncell Ecare 网站显示 WSOD时的解决方案。WSOD = 白屏死机。访问该网站时,您只会在浏览器中看到一个白色的内容区域。这是他们的 Web 应用程序中的一个错误,当登录到 Ncell Ecare 时遇到 Internet 连接失败时会触发该错误。要解决此问题,至少有以下选项:

    • 删除为Ncell Ecare登录存储的缓存和cookies,重新进入登录页面,重新登录。

    • 切换到不同的Multifox配置文件(对于 Firefox)或MultiLogin配置文件(对于 Chrome),然后重新加载页面。

    另请参阅我的其他答案。

    未来可能的改进

    使用移动宽带连接预订套餐。一旦我发现如何在数据连接处于活动状态时接收确认码短信(用于在 Ncell Ecare 网站预订数据包),这将起作用。不适用于NetworkManager开箱即用的 Linux 和 gammu,因为网络管理器将获取两个调制解调器控制通道,而不会为gammu. 断开连接、获取 SMSgammu然后重新连接的替代方法也不起作用,因为 Ncell 然后强制注销,这也会使 SMS 确认代码无效。有人报告说使用wvdialinstead of NetworkManagerto connect 修复了这个 [ source ]。

    在通知中自动获取短信。与上述步骤一样,它需要一种在活动数据连接期间使用 SMS 的方法。通过 Ncell Ecare 网站预订 Internet Pack 时,它会显示确认短信,并将其移动到硬盘以保持 SIM 卡存储空间空闲以接收新的短信。与使用手动命令从 SIM 卡获取确认短信的当前提案相比,这将加快流程。

    通过 Ncell Ecare 预订,无需短信确认。会大大简化流程,因为可以使用电脑的移动宽带连接来预订互联网套餐。需要 Ncell 操作。

    通过 Ncell Ecare 网站预订,无需强制注销。就像不需要短信确认一样,会简化很多过程,因为可以使用电脑的移动宽带连接,将其关闭以获取短信,然后再次打开将确认码输入Ncell Ecare。目前这将强制注销,这也会使确认代码无效。

    通过允许管理外部 SIM 卡的 Ncell 应用程序进行预订。在这种情况下,Ncell 应用程序将允许管理多张 SIM 卡,而不需要手机中的其他 SIM 卡。原则上类似于 Ncell Ecare 网站。同样,需要 Ncell 采取行动。

    另请参阅我的其他答案。

    非工作替代品

    在智能手机浏览器中通过 Ncell Ecare 网站进行预订。试过了,但由于某种原因无法使用智能手机登录该网站。登录按钮什么都不做。此外,由于该网站不适合移动设备,因此通过 wifi 热点连接在计算机上预订似乎更舒服。

    安装Ncell 应用程序两次。有多种方法可以下载和修改任何 Android,以便您可以安装它两次(我将此解决方案用于 Ncell 应用程序)。我希望它能让我使用两个不同的帐户登录,同时管理我的手机和计算机的 SIM 卡。但是,Ncell APP 的登录依赖于 SIM 卡检测,您不能使用它来管理不在场的 SIM 卡。

    在模拟器中通过 Ncell 应用程序进行预订。你可以在像 OpenBox 这样的虚拟机中运行 Android 和 Ncell 应用程序,但很难伪造 SIM 卡检测到它。

    • 0

相关问题

  • 如何使用罗杰斯诺基亚 CS-18 火箭棒?

  • 如何使用“Huwaei Ec1260”调制解调器连接互联网?

  • 无法使用 gnome-ppp 连接调制解调器 ( /dev/ttySL0 ) - 拨号连接 [关闭]

  • 如何解决 D-Link DWM-152(HSDPA USB 调制解调器)检测不足的问题?

  • Ubuntu 中的科胜讯调制解调器

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve