Как забронировать и использовать интернет-пакеты для SIM-карты Ncell, используя Ubuntu?
У меня есть SIM-карта Ncell (непальская компания сотовой связи), которую я хочу использовать во встроенном 3G-модеме (аппаратное обеспечение "Gobi 2000") в моем ноутбуке на основе Ubuntu.
Карта использует "нормальный" тариф Ncell, а не NcellConnect. Соответственно, я не могу забронировать дешевые, никогда не истекающие пакеты данных NcellConnect, но хочу использовать ежедневные интернет-пакеты, которые, кажется, являются следующим самым дешевым и наиболее гибким вариантом.
Вопрос: Как использовать любую из опций, чтобы успешно забронировать эти пакеты под Ubuntu с SIM-картой в ноутбуке? (например, пункт меню USSD или Ncell Ecare, для которого требуется подтверждение по SMS)
В идеале решение должно быть максимально автоматизировано, а также предотвращать использование более дорогих скоростей передачи данных, когда объем Daily Internet Pack исчерпан.
2 ответа
После долгих экспериментов, следующее мое лучшее решение до сих пор.
Решение: используйте atinout для бронирования через USSD меню
USSD используется операторами мобильных сетей для адаптивных сервисных меню - см. Википедию по USSD. Бронирование через Ncell's *17123#
USSD меню через компьютер, на котором установлена SIM-карта, является наиболее удобным вариантом.
Поскольку специализированное программное обеспечение клиента USSD у меня не работает (см. Ниже), я использую необработанные AT-команды. Для этого я сначала установлю небольшую утилиту командной строки atinout для использования 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, например, для заказа ежедневного пакета Internet Internet 40 МБ. Вот полная стенограмма. После того, как модем подтвердит вашу команду с 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 модемом (Gobi 2000) в 90% случаев только один AT+CUSD
может быть успешно выполнен, то atinout
должен быть перезапущен. Чтобы избежать трудностей, в процессе выше мы перезапускаем atinout
просто каждый раз в стенограмме выше. Это не завершает сеанс USSD ("открытое" меню USSD).
Если модем не отвечает с помощью OK. При выполнении вышеуказанной расшифровки, убедитесь, что каждая команда подтверждена модемом "ОК". Если нет, перезапустите atinout
и попробуй еще раз. Если это не поможет, начните весь процесс заново. И если это не поможет, ваш модем может быть в странном состоянии. Сбросьте его или просто дайте компьютеру пройти цикл приостановки / возобновления.
Использование AT-команд в целом. Для получения дополнительной информации о связи с модемом с использованием AT-команд в Linux см. Этот ответ.
При бронировании ежедневного интернет-пакета происходит сбой. На веб-сайте Ncell Ecare произойдет сбой без сообщения об ошибке и снова отобразится список услуг вместо сообщения об успешном завершении формы для ввода кода подтверждения SMS. Это условие возникает, если у вас все еще есть активный ежемесячный (или также еженедельный?) Интернет-пакет. Даже если от него не осталось баланса данных. Вы можете проверить это и при необходимости отменить пакет здесь. Однако для меня, даже после отмены пакета, запрос баланса данных с помощью SMS вернет сообщение "Уважаемый клиент, у вас осталось […] МБ данных в вашей ежемесячной учетной записи, срок действия которой истекает […]". и было все еще невозможно заказать Ежедневный Интернет-пакет. Я бы подождал до истечения срока годности. Возможно, попробуйте вставить SIM-карту в телефон и закажите первый ежедневный Интернет-пакет с помощью USSD-кода (наберите номер *17123#
и следуйте экранному меню.)
Будущие улучшения
Автоматизация. При использовании вышеуказанного решения мы должны перемещаться по меню вручную и повторить попытку, если что-то пойдет не так. Могло быть лучше.
Автоматическое повторное бронирование. В идеале это решение должно включать автоматическое (повторное) бронирование, когда баланс данных становится низким. Это можно обнаружить с помощью предупреждающего SMS-сообщения Ncell и / или мониторинга трафика. Это не будет автоматически бронировать новый пакет, когда он истечет естественным образом, но затем уведомит пользователя значком статуса, который он просматривает с дорогой ценой.
Получать уведомления, когда баланс данных заканчивается. Если это так, мы не будем требовать перевода ограниченных сумм на SIM-карту, но можем перевести большую сумму и будут предупреждены (например, большим красным значком на панели задач), когда столкнутся с высокой скоростью. Для этого есть как минимум два способа:
Получение SMS-уведомлений Ncell при активном подключении к данным. Ncell отправляет его, когда баланс данных заканчивается. Смотрите пункт выше на wvdial
и т.д. как это может работать. Не работает с NetworkManager
и гамму из коробки, так как он захватывает оба канала управления модемом.
Ограничение трафика данных. NTM был бы подходящим инструментом для этого, но в настоящее время у него нет функции для установки ограничений на одноразовые данные пакета с точным временем запуска.
Альтернативное клиентское программное обеспечение USSD (у меня не работает)
Под Ubuntu Linux есть выделенные USSD-клиенты, но они не работают для меня по разным причинам (мое модемное оборудование 3G: Gobi 2000). Однако при некоторой отладке вы можете заставить их работать. Использование некоторых рассматривается более подробно в этом вопросе и в этом вопросе.
Список с самыми перспективными кандидатами:
mmcli. ModemManager и его клиент командной строки
mmcli
Казалось бы, отличное программное обеспечение и лучшая ставка для этой задачи. Посмотрите этот ответ на StackOverflow о том, как использоватьmmcli
для навигации по USSD меню. Однако после решения проблемы с постоянно включенной блокировкой PIN2 на SIM-картах Ncell (решение, подобное этому),mmcli
все равно будет отказываться от отправки команд USSD через 3G-модем Gobi 2000 из-за ошибки (поскольку модем успешно использует 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 или реализацией USSD от Ncell.Gammu.
gammu
утилита командной строки Linux, которая может отправлять USSD-коды, но в соответствии с этим вопросом она пока не может использовать USSD-меню.python-gammu
содержит скриптservice_numbers.py
это должно позволить это. Это не сработало для меня, хотя.ofono.
ofono
имеет то же назначение и интерфейс, что и ModemManager [ source ], только то, что он сделан для Ubuntu Touch (который может работать на мобильных телефонах). Его основным интерфейсом является DBus, но вы можете использовать инструменты командной строки тестового примера для отправки USSD-команд и управления USSD-меню ( примеры, дополнительные примеры). Тем не менее, кажется, нужноrild
(Radio Interface Layer Daemon), чтобы функционировать, и это будет доступно только на реальных мобильных телефонах. При запуске,ofonod
будет жаловаться на невозможность подключения кrild
и не смог найтиrild
установить на обычную установку Ubuntu Linux.ussdq.
ussdq
Еще одна небольшая утилита для Linux, которая включает в себя функцию для работы с USSD-меню. Тем не менее, он больше не находится в активной разработке с 2013 года, и его компиляция является небольшим усилием (в нем используется среда Gambas2, но последние версии Ubuntu Linux включают пакеты только для Gambas3).
Смотрите также мой другой ответ, который я считаю лучшим.
Решение: бронируйте через сайт Ncell Ecare
Бронирование по USSD-командам является наиболее удобным решением (см. Мой другой ответ). Но если это по какой-то причине не работает, вот другая, менее удобная, но работающая альтернатива.
Передайте 25 NPR на SIM-карту компьютера. Столько раз, сколько вы хотите купить ежедневные интернет-пакеты одновременно. Самый быстрый и удобный способ для этого - набрать соответствующий код USSD.
*17122*<980… mobile number>*25#
[ источник] из вашей адресной книги. Цена включает плату за перевод в размере 1,25 NPR и налоги, добавленные при бронировании ежедневного интернет-пакета на 40 МБ за 20 NPR.Создайте точку доступа Wi-Fi с телефона. И подключите компьютер к нему, или используйте существующее соединение Wi-Fi, если доступно.
Забронируйте одноразовые ежедневные интернет-пакеты "40 MB Heavy" на Ncell Ecare. Вы можете забронировать несколько из них подряд, и объем данных будет агрегирован. Вам нужно будет подтвердить первое бронирование с помощью кода подтверждения, полученного по SMS. Получите это SMS, например, следующим образом:
казнить
gammu deletesms 0 1
(при условии, что вам не нужно хранить SMS в слоте 1), чтобы освободить место для входящего SMS. Он будет получен в первом свободном месте (здесь гарантировано 1), но не будет получен, если все 20-30 мест хранения на SIM-карте израсходованы.Нажмите "Отправить SMS" в процессе бронирования на сайте Ncell Ecare.
казнить
gammu getsms 0 1
получить подтверждение смс.Введите код подтверждения на веб-сайте Ncell Ecare.
Используйте Интернет через мобильные данные, пока он не перестанет работать.
Подтвердите, что баланс закончился с проверкой баланса. Короче:
gammu deletesms 0 1 && \ gammu sendsms TEXT 9909 -text "status" && \ sleep 10 && \ gammu getsms 0 1
Отключите мобильное широкополосное соединение, если оно не работает иначе (некоторые диспетчеры соединений захватывают оба канала управления модемом, не оставляя ни одного для
gammu
).Повторение.
Поиск проблемы
Упрощение входа в Ncell Ecare. Пользоваться веб-сайтом Ncell Ecare часто неудобно, поскольку он предотвращает сохранение данных для входа в браузер, предотвращает использование копирования и вставки для вставки в поле пароля и, кроме того, в форме входа есть капча. Решение:
Если вы используете Firefox, установите дополнение Autofill Forms.
Затем перейдите на страницу входа в Ncell, щелкните правой кнопкой мыши в поле и выберите "Добавить полную форму как профиль…".
В диалоге создания профиля измените соответствие правила сайта так, чтобы оно соответствовало
(?:ecare\.ncell\.com\.np:9443)
и введите свои значения для имени пользователя и пароля.Скопируйте этот профиль и адаптируйте его для других имеющихся у вас SIM-карт.
С этого момента, чтобы войти в систему, щелкните правой кнопкой мыши в любом месте страницы входа, кроме поля формы, и выберите "Автозаполнение форм →".
(Необязательно) Чтобы разрешить вставку в поле пароля, установите дополнение FoxReplace Firefox и настройте правило для URL
https://ecare.ncell.com.np:9443/nser/index.do?method=init
с установленным параметром "HTML для ввода и вывода" и действием для замены текстаonkeydown="keyDownForbidCopyPaste(passwordIn)
ни с чем.(Необязательно) Если вы действительно хотите избавиться от решения проблемы с капчей, решите проблему с ней, вы можете использовать аддон браузера Rumola. Однако обратите внимание, что решение с использованием капчи обойдется с ними в 0,013 доллара США, так как оно включает (по крайней мере, иногда) человеческую обработку. Их автоматический поиск капч не работает для формы входа Ncell Ecare. Вместо этого щелкните правой кнопкой мыши в текстовом поле и выберите "Использовать это поле для ввода кода". Затем дважды щелкните в поле, чтобы позволить Rumola решить капчу. Пока это происходит, используйте шаг "Автозаполнение" сверху, чтобы заполнить оставшиеся данные для входа.
Решение, когда веб-сайт Ncell Ecare показывает WSOD. WSOD = белый экран смерти. При посещении веб-сайта вы увидите только белую область содержимого в вашем браузере. Это ошибка в их веб-приложении, которая возникает при сбое подключения к Интернету при входе в Ncell Ecare. Чтобы исправить это условие, есть как минимум следующие варианты:
Удалите кэш и файлы cookie, сохраненные для входа в систему Ncell Ecare, снова перейдите на страницу входа и снова войдите в систему.
Переключитесь на другой профиль Multifox (для Firefox) или MultiLogin (для Chrome) и перезагрузите страницу.
Также см. Мой другой ответ.
Возможные будущие улучшения
Использование мобильного широкополосного соединения для бронирования пакета. Это сработает, как только я узнаю, как получить код подтверждения SMS (для бронирования пакета данных на веб-сайте Ncell Ecare), когда подключение для передачи данных активно. Не работает с линуксом NetworkManager
и гамму из коробки, потому что сетевой менеджер захватит оба канала управления модемом, не оставляя ни одного для gammu
, Альтернатива отключения, получения СМС с gammu
и затем повторное подключение также не работает, потому что Ncell вызывает принудительный выход из системы, и это также делает недействительным код подтверждения SMS. Кто-то сообщил, что используя wvdial
вместо NetworkManager
подключить исправил этот [ источник].
Получи СМС автоматически, в уведомлениях. Как и вышеописанные шаги, для работы с SMS требуется способ работы с активным подключением к данным. При бронировании интернет-пакета через веб-сайт Ncell Ecare будет отображаться подтверждающее SMS-сообщение, и оно будет перемещено на жесткий диск, чтобы освободить место на SIM-карте для приема новых SMS-сообщений. Это ускорит процесс по сравнению с текущим предложением с ручной командой для получения SMS-подтверждения с SIM-карты.
Бронирование через Ncell Ecare без смс-подтверждения. Это значительно упростит процесс, так как можно использовать мобильное широкополосное соединение компьютера для бронирования интернет-пакета. Необходимо действие Ncell.
Бронирование через сайт Ncell Ecare без принудительного выхода. Это сильно упростит процесс, так как вам не нужно подтверждение по SMS, так как можно использовать мобильное широкополосное соединение компьютера, отключить его, чтобы получить SMS, а затем снова включить, чтобы ввести код подтверждения в Ncell Ecare. В настоящее время это приведет к выходу из системы, что также приведет к аннулированию кода подтверждения.
Бронирование через приложение Ncell, позволяющее управлять внешними SIM-картами. В этом случае приложение Ncell позволит управлять несколькими SIM-картами без необходимости физического использования других SIM-карт в телефоне. В принципе, как на сайте Ncell Ecare. Опять же, нужны действия Ncell.
Также см. Мой другой ответ.
Нерабочие альтернативы
Бронирование через веб-сайт Ncell Ecare в браузере смартфона. Попробовал это, но по какой-то причине не смог зайти на этот сайт со смартфона. Кнопка входа в систему просто ничего не сделает. Кроме того, поскольку этот веб-сайт не подходит для мобильных устройств, бронирование на компьютере через точку доступа Wi-Fi кажется более удобным.
Установка приложения Ncell дважды. Есть способы, как загрузить и изменить любой Android, чтобы вы могли установить его дважды (я использовал это решение для приложения Ncell). Я надеялся, что это позволит мне войти в систему с двумя разными учетными записями, параллельно управляя SIM-картой моего телефона и компьютера. Однако вход в приложение Ncell зависит от обнаружения SIM-карты, вы не можете использовать его для управления отсутствующей SIM-картой.
Бронирование через приложение Ncell в симуляторе. Вы можете запустить Android и приложение Ncell на виртуальной машине, такой как OpenBox, но подделать обнаружение SIM-карты будет сложно.