Прошивка модема huawei e3372h
Содержание:
4. Полезные и интересные АТ-команды и настройка конфигурации модема
NVRAM
В модеме имеется хранилище различной конфигурационной информации — NVRAM. Оно организовано в виде набора записей переменной длины. Каждая запись имеет номер — от 0 до 65535, но не все номера записей физически присутствуют в модеме.
Чтобы узнать длину конкретной записи, используется команда:
— номер записи. В ответ модем выдает ее длину:
Посмотреть содержимое конкретной записи можно командой:
— смещение от начала записи до интересующего нас фрагмента (0 — с начала)
— длина выводимого фрагмента, должна быть не больше полной длины записи минус смещение.
Пример:
Поиск базовых станций сотовой связи
Данный модем обладает уникальным свойством — он умеет делать поиск всех окружающих базовых станций (БС). Причем не только БС оператора вставленной в него симкарты, а вообще все БС всех операторов, сигнал от которых достигает антенны модема. Для каждой найденной БС выводится ее CID и уровень принимаемого от нее сигнала. Это позволяет выбрать оператора с наивысшим уровнем сигнала, а также выбрать конкретную БС для наведения на нее внешней антенны. Единственный недостаток данного модема — он умеет искать только БС 2G и 3G. LTE-соты искать он не умееет.
Если в округе имеется сигнал LTE, то следует перевести модем в режим 2G3G командой AT^SYSCFGEX=»0201″,3FFFFFFF,1,2,800C5,, или в настройках веб-интерфейса.
Также обратите внимание, что эту команду можно ввдить только через порт управления (PCUI). Если ее ввести через порт, предназначенный для установки РРР-соединения (modem), то команда будет выдавать пустой ответ (просто ОК и все).
Формат команды:
AT^NETSCAN=num,level,mode
num — число находимых БС, от 1 до 20
Если будет найдено больше num БС, то станции с самым слабым сигналом будут исключены из списка
level — минимальный уровень сигнала БС, включаемых в список. Задается в дБ, от -110 (самый низкий уровень) до -47 (самый высокий уровень). Станции с уровнем сигнала меньше level в список включаться не будут.
mode — тип БС. 0 -поиск 2G-станций, 1 — поиск 3G-станций.
Пример команды:
В этом примере заказывается поиск 3G БС с уровнем сигнала не ниже -108 дБ. Результат выдается в виде списка, отсортированного по уровню сигнала. Самая верхняя БС — самая мощная, нижняя — самая слабая. Формат элемента списка:
По результатам данного примера можно сделать вывод, что самый сильный сигнал в данной местности — у МТС, а антенну надо направлять на БС с CID=8b77 LAC=1e7e. Координату БС можно посмотреть на сайте xinit.ru.
2. Balong Flash / Прошивка под mac, linux, windows
Для прошивки под Linux используется утилита balong_flash.
- https://github.com/forth32/balongflash (Программа для прошивки модемов фирмы Huawei на чипсете Balong v7)
- https://github.com/forth32/balong-fbtools (Утилиты для работы с flash модемов на платформе Balong)
- https://github.com/forth32/balong-usbdload (Утилита для аварийной USB-загрузки модемов на чипсете Balong V7)
- https://github.com/forth32/balong-nvtool (Утилита для обработки образов NVRAM устройств на чипсете Hisilicon Balong)
В отличие от Linux, нa Macintosh адрес, скорее всего, будет не , а .
Достоверно узнать адрес устройства можно с помощью команды .
TL;DR
Что я сделал, чтобы подружить модем с антенной?
- Взял стоковый модем, запустил виртуалку 2015 года с WindowsXP (песочницу), там уже были дрова Huawei, но в Мобильном ассистенте общаться с модемом не удалось.
- Скачал c 4pda Pupdatewiz и подходящую прошивку.
- Запустил Pupdatewiz — вуаля!
После прошивки стало:
- Выключил винду, на маке использовал mode_switch и переключил модем на вечный debug mode.
- Снова загрузил винду, в ней стал доступен Терминал.exe.
Вот этими командами восстанавливается убитая в ходе прошивки имеюшка. Тут как повезет либо , либо . Первая команда, как я понял, не всегда доступна, для успешного использования в второй надо предварительно воспользоваться утилитой imei_converter и вместо нулей записать то что надо. Команда нужна имхо для применения долгосрочной записи в NVRAM.
Код imei_converter.c приведен ниже:
#include <stdio.h> #include <string.h> int main(int argc, const char *argv[]) { int i; const size_t imei_length = 15; if (argc == 2 && strlen(argv) == imei_length) { for (i = ; i < imei_length; i++) { printf("0%i ", argv - '0'); } printf("00"); return ; } else { printf("Usage: imei_converter imei\n"); return -1; } }
- На фоне модем плевался мне подобными сообщениями в терминал:
Последнее событие — событие IMSI Attach.
- Но под виндой сидеть было грустно. После перепрошивки на маке/линуксе можно сделать telnet 192.168.8.1 и засылать AT-команды в либо просто слушать
Первый способ — если не нужен интерактив
Второй способ — двухсторонний обмен с модемом, он не очень удобен, т.к. обычно происходит много событий.
Наиболее удобная для меня система — слушать события в отдельном терминале, а в другом кидать команды:
- RSRP, SINR и все-все-все
RSRP – средний уровень сигнала принимаемого с базовой станции оператора. Измеряется по логарифмической шкале в дБм (dBm) и отображается в виде отрицательных значений. Чем значение ближе к нулю, тем выше уровень принимаемого сигнала. Например, значение сигнала RSRP равное -65 dBm, намного лучше, чем значение -97 dBm.
SINR — отношение уровня полезного сигнала к уровню шума (соотношение сигнал/шум). Измеряется в дБ (dB). Чем выше данное значение, тем лучше качество сигнала. При значениях SINR ниже 0 скорость подключения будет очень низкой, т.к. это означает, что в принимаемом сигнале шума больше, чем полезной части.
Считается, что параметр сигнал\шум (SINR) в ряде случаев может быть важнее, чем уровень сигнала. При SINR в интервале 15-20 (dB) модем выдаст все, на что способна данная БС, даже при посредственном, около -70…-80 dBm, уровне RSRP, если сама БС окажется не перегружена в момент тестирования.
Показатели качества принимаемого сигнала
Значения параметров | RSSI | SINR (Ec/Io) |
---|---|---|
Отличные | -30…-50 dBm | 30 dB и выше |
Хорошие | -50…-70 dBm | от 20 dB до 30 dB |
Удовлетворительные | -70…-85 dBm | от 10 dB до 20 dB |
Плохие | -85…-110 dBm | менее 10 dB |