Евгений Музыченко

Previous Entry Share Next Entry
Не было у бабы хлопот, купила баба новый маршрутизатор :)
emuzychenko
Купив весной LTE-модем Huawei E3272 для подключения в деревне к "истинно безлимитной" Yota, я после этого развил бурную активность по подключению - купил тарелку ТриколорТВ, выписал из Воронежа LTE-облучатель BOF-4G, закупил в радиомагазине горсть переходников. Побаловался с тарелкой на втором этаже у окна, наводя на искитимскую БС по пингам, увидел скорость в районе 5 Мбит/с, и уже начал было радоваться, как прочитал в городском форуме возмущенные вопли пользователей Yota на урезание скорости скачивания торрентов. :) Одновременно МТС поднял месячную квоту на "Безлимит-VIP" до 60 Гб. А поскольку Yota привлекала исключительно своей "истинной безлимитностью" для скачивания фильмов - надобность в ней резко отпала. Тарелку решено было пустить на спутниковое ТВ, а облучатель с модемом я забросил в ящик до лучших времен.

Доступ в Интернет у меня в деревне уже третий год обеспечивает маршрутизатор Sapido RB-1842 с модемом Huawei E176G. С E3272 он работать не может по причине вполне дурацкой последовательности команд инициализации, поменять которую можно только переделкой прошивки, документации по которой нигде нет, а поддержка Sapido не хочет давать даже общего формата, чтоб хоть понять, где там контрольные суммы. У E176G потолок 7.2 Мбит/с, реальная скорость никогда не поднималась выше 5, так что я искренне полагал, что 5 Мбит/с - это все, на что способны местные БС всех трех провайдеров.

Неделю назад интереса ради запустил на телефоне с МТС Ookla Speedtest, и очень удивился, увидев результат в 10 Мбит/с. :) Достал из ящика модем, воткнул в ноутбук, запустил тест на нем - 20 Мбит/с. :) Модем оказался двухканальным (DC-HSDPA+). Разумеется, после этого я уже не мог терпеть скорость в 5 Мбит/с, и полез в каталоги смотреть более другой маршрутизатор. Покупать пафосный ZyXEL Keenetic смыла не было, его Lite-версия чересчур обгрызена, а вот модели TP-Link в последнее время вполне достойны, несмотря на скромные цены. В форумах народ активно хвалил TL-MR3220 V2.0, на него без проблем ставится OpenWRT, а когда я увидел его в каталоге e2e4 за 860 рублей, да еще в наличии в бердском пункте выдачи - устоять уже никак не смог. :)

Притащив железяку домой, первым делом обнаружил, что блок питания у нее на 9 В, что слегка расстроило, поскольку все Sapido питаются от 5 В, и мой RB-1842 запитан от Power Bank'а, играющего роль UPS. Потом вспомнил, что почти все (или вообще все) современные SoC, на которых делаются все эти устройства, работают максимум от 3.3 В, и воткнул в гнездо пятивольтовый штекер (разумеется, проверив предварительно полярность). Агрегат бодро завелся, не показав ни малейших признаков недовольства. Обнаглев, я воткнул ему в USB-гнездо модем через USB-измеритель, который показал 4.55 В и стал тревожно мигать (это ниже минимально допустимого предела для USB), однако модем завелся не менее бодро, и даже перешел в режим 3G, разве что маршрутизатор не сумел установить соединение. Но тут я уже знал, что всего-то нужно зафиксировать модем в режиме экспорта последовательных интерфейсов через AT^SETPORT - после этого соединение поднялось. Правда, скорости в 20 Мбит/с я там не обнаружил - максимум 15-18, но при перестановке в ноутбук двадцати тоже не получалось, так что списал это на удачное время прошлого измерения.

И тут (внезапно!) в полный рост встал вопрос о контроле остатка трафика. В Sapido есть родная, хоть и недокументированная, страница для подачи консольных команд и просмотра результатов, а также для быстрой загрузки любых файлов в /tmp, что позволяет закинуть туда любой скрипт и тут же его выполнить. Сергей Подстригайло любезно поделился своими скриптами для получения баланса, отправки USSD-запроса и просмотра SMS, так что узнавание остатков занимало около минуты без разрыва соединения. Перспектива каждый раз рвать соединение, переставлять модем из маршрутизатора в ноутбук, запускать Mobile Partner и т.п., неслабо раздражала. Поначалу я собирался поставить на маршрутизатор базовую OpenWRT, в которой нет web-интерфейса, но обнаружил, что для TL-MR3220 есть сборка ROOter/Huntsmann с интерфейсом LuCI и даже поддержкой SMS, и пошел сразу скачивать ее.

Новая прошивка завелась без проблем, очень понравился web-интерфейс - без наворотов, но очень удобный и функциональный. Есть страницы AT-команд и SMS, однако нет поддержки USSD. Это не страшно - USSD-команду можно подать через AT+CUSD, предварительно выполнив AT^USSDMODE=0 (E3272/E3276 работают в "старом" режиме USSD).

Выдал AT+CUSD=1,"*111*217#",15, получил ответ "ожидайте SMS с результатом" (закодированное в UCS2), открыл страницу SMS, несколько раз обновил - тишина. Подождал несколько минут, повторил команду - то же самое. Полез в документацию на Huawei, нашел команду запроса списка всех сообщений AT+CMGL=4, выдаю - результата вообще нет, даже сообщения типа OK/ERROR. Попробовал с параметрами 0, 2 и 3 (соответственно, непрочитанные, неотправленные и отправленные сообщения) - нормально выдает OK, поскольку таковых нет.

Полез в консоль, обнаружил, что в прошивке нет никакого FTP - загрузить скрипт, соответственно, нечем. Линуксоид из меня никакущий, искать/устанавливать/настраивать подходящий пакет было лень, единственный альтернативный способ, который я знаю - запускать "cat - > /tmp/xxx.sh", и пастить текст скрипта в окно PuTTY. Закинул туда скрипт для Sapido - он обломался. Наставил в скрипте промежуточных echo - увидел, что из модема постоянно лезут куски левых AT-команд и результаты их выполнения, пропихнуть между которыми нужную последовательность своих команд практически невозможно.

Принялся искать в файлах прошивки команды, которые наблюдал в выводе - обнаружил их в скриптах для gcom (comgt). Сам gcom там запускается скриптами getsig/sigstop, первый из которых постоянно висит на выполнении, а второй посылает ему сигналы, по которым первый скрипт берет данные из какого-либо файла, что-нибудь с ними делает, а результат складывает в другой файл. В частности, раз в несколько секунд там запускается тот самый gcom, опрашивающий модем на предмет параметров связи (уровень сигнала, код оператора, режим соединения и т.п.), которые затем парсятся и складываются в файл, откуда их забирает соответствующая страница web-интерфейса.

Удивившись, как при таком подходе другая страница выполняет заданные AT-команды, полез копать дальше, и обнаружил, что введенная команда записывается в файл /tmp/cmd.at, а полученные из модема ответы gcom складывает в /tmp/result.at. Стало понятно, отчего команды, поданные через web-интерфейс, выполняются порой по полминуты - до них очередь доходит не раньше, чем закончится очередной цикл получения состояния модема.

Запихал в cmd.at для пробы пару обычных команд - выполняются нормально. Запихал AT+CMGL=4 - такая же фигня, как из web-интерфейса - cmd.at пропадает, result.at остается пустым. После нескольких итераций заметил, что в /tmp плодятся файлы gcom.XXX.core - то есть, gcom аварийно валится на приеме ответов.

Тогда удалил все SMS из памяти (AT+CMGD=0,4), запросил остатки через USSD - о, чудо, на SMS-странице появилось одно SMS в списке полученных. :) Дата/время нормальные, отправитель - МТС (кириллицей), а тело пустое, из нескольких нечитаемых символов. Но теперь уже для AT+CMGL=4, поданной через интерфейс, корректно отобразился ответ из двух частей в PDU/UCS2, которые после расшифровки посредством SmsTools3 Converter превратились в нормальный русский текст. Однако, системный SMS-интерфейс все-таки работает неправильно - команда удаления убирает только одну часть составного сообщения, и SMS продолжает висеть в списке принятых, так что приходится удалять его вручную через AT+CMGD.

Чтобы не возиться с раскодировкой, переключил SMS и USSD в 7-разрядную латиницу (*105*21#, *105*10#, *105*12#), и вдобавок запретил разбивку сообщений (*105*51#). Эффект лишь частичный - хоть теперь и читаются без раскодировки ответы USSD-команд, SMS об остатках все равно приходят в PDU/UCS2.

Поскольку настоящие мазохисты идут до победного, и в ноутбук я модем для запроса остатков не переставлял, сегодня я впервые узнал остаток трафика с 7 июля, когда "Безлимит-VIP" переключился на новый месяц. :) Оказалось, мы за неделю высосали аж 30 Гб из 60, отведенных на месяц. Как это получилось - ума не приложу, днем скачивали всего несколько гигабайт, остальное - ночью. То ли у кого-то из гостей, которые здесь тусовались все выходные, на телефоне/планшете был запущен торрент-клиент, то ли у МТС поломался ночной режим.

Заодно скачал себе набор для кросс-компиляции под ARM/MIPS - Sourcery Codebench Lite. Дойдут руки - попишу что-нибудь под эти встроенные линуксы. :)

?

Log in

No account? Create an account