FAQ с выжимкой публичных источников про Huawei E3372h на маке/линуксе · GitHub

gist og image Новости

Предварительная подготовка

Есть две разновидности прошивок: Stick и HiLink. С прошивкой Stick модем будет видеться AT-модемом, для подключения к интернету нужно «дозваниваться». С HiLink-прошивкой модем представляется сетевой картой Ethernet, и не требует настроек в ОС.

По умолчанию, модем находится в режиме HiLink, такой типа роутер, с красивым веб-интерфейсом.

$ lsusb | grep Huawei
Bus 001 Device 010: ID 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcard
# Здесь 12d1 это идентификатор производителя а 1506 это режим сетевой карты.
# Если не 1506, то надо переключить.
sudo minicom -D /dev/ttyUSB0
AT^NVWREX=50502,0,128,8F 29 FF 8E A8 CA 34 89 78 73 18 BA 9E F5 9C 64 0B A4 DB 81 DC 03 45 6E 72 DA EC 6A 0C 7C 90 65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8B 8C F4 B5 AF 0C F2 2C FE E0 F4 46 9C CF 47 95 36 71 1F 1C BF 05 7F 84 AB A9 F2 92 89 33 3C 12 01 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
AT^DATALOCK="00000000"
AT^CIMEI="#############"

Balong Flash / Прошивка под mac, linux, windows

Для прошивки под Linux используется утилита balong_flash.

В отличие от Linux, нa Macintosh адрес, скорее всего, будет не /dev/ttyUSB0, а /dev/tty.HUAWEIMobile-Diag.

Достоверно узнать адрес устройства можно с помощью команды ls /dev | grep HUA.

$ ./balong_flash -h Утилита предназначена для прошивки модемов на чипсете Balong V7
./balong_flash [ключи] <имя файла для загрузки или имя каталога с файлами> Допустимы следующие ключи:
-p <tty> - последовательный порт для общения с загрузчиком (по умолчанию /dev/ttyUSB0)
-n - режим мультифайловой прошивки из указанного каталога
-g# - установка режима цифровой подписи (-gl - описание параметров)
-m - вывести карту файла прошивки и завершить работу
-e - разобрать файл прошивки на разделы без заголовков
-s - разобрать файл прошивки на разделы с заголовками
-k - не перезагружать модем по окончании прошивки
-r - принудительно перезагрузить модем без прошивки разделов
-f - прошить даже при наличии ошибок CRC в исходном файле

Pupdatewiz Flash / Прошивка под windows

Распаковать архив, поместить нужную прошивку (.exe или .bin) в папку с командным файлом go.cmd и запустить его.

About hilink

Package hilink is a Go package for working with Huawei Hilink devices (ie,
3G/4G modems and WiFi access devices).

About stick and hilink firmware versions

Huawei modems with older firmware (circa 2022 and older) are commonly referred
to as «stick» devices. These devices can sometimes be flashed with the newer
«hilink» firmware versions, however as I only have one hardware revision
available to me, I cannot definitely say which can or cannot be flashed.

For reference, all «stick» firmware starts with «21.» and all hilink firmware
starts with «22.» While some people have had success with getting the stick
firmware to work properly with Linux, I personally have not been successful
doing that. Additionally, those who have reported getting the stick firmware to
work, have reported significantly lower than 4G speeds.

The primary difference between «stick» and «hilink» firmware, is that the stick
firmware exposes standard serial ports to the host that work as standard
modems. These also have a standard tty interface that one can access and
control the internals.

The «hilink» firmware instead provides a standard USB
ethernet device, with its own subnett’d network and exposes a web interface for
controlling the software over the ethernet device. By default, that network
provides standard DHCP and is configured to issue addresses in the range of
192.168.8.100-200.

Note that a hilink device can be put into «debug» mode which then exposes a
number of standard /dev/ttyUSB* that can then be used to send AT commands.
This can be done by using this API or by using the usb_modeswitch command
line tool. Please see Go ref or
the usb_modeswitch manpage.

Information on huawei stick and hilink devices

Because the documentation available for the E3372h-153 is so poor, especially
for the version that I have (M150-2, identified by the «HardwareVersion» of
CL2E3372HM), and very little is available in English, I have decided for
posterity to record my notes on installing modified firmware here.

Installation

Install in the normal way:

Megafon m150-2 (aka e3372h-153, aka hw rev. cl2e3372hm)

The Huawei E3372h-153 device is a 4G LTE USB modem that works with with all
international 4G frequencies. The same hardware is sold as a «stick» model and
a «hilink» model — please see the comments above. Other companies may
distribute this same hardware version under other names, and will usually be
labeled a E3372h-153 device.

If it is sold as a «stick» model (sometimes listed on the packaging as a
E3372s) then it will have the older firmware, and will need to be flashed /
updated. Additionally, the stock firmware is missing many useful features, and
should be flashed to a modified firmware version.

Notes

This was built for interfacing with a Huawei E3370h-153 (specifically a Megafon
M150-2) device, popular in Europe and Asia. It was flashed using a custom
firmware and WebUI that enables the extra features.

Here is the relevant information taken from the API using the
hinfo tool:

Nvram

В модеме имеется хранилище различной конфигурационной информации — NVRAM. Оно организовано в виде набора записей переменной длины. Каждая запись имеет номер — от 0 до 65535, но не все номера записей физически присутствуют в модеме.
Чтобы узнать длину конкретной записи, используется команда:

at^nvrdlen=<item>
at^nvrdlen=8268
^NVRDLEN: 12

Посмотреть содержимое конкретной записи можно командой:

at^nvrdex=<item>,<offset>,<len>

Пример:

at^nvrdex=8268,0,12
^NVRD: 8268,0,12,01 00 00 00 01 00 00 00 0A 00 00 00

Tl;dr

Что я сделал, чтобы подружить модем с антенной?

  1. Взял стоковый модем, запустил виртуалку 2022 года с WindowsXP (песочницу), там уже были дрова Huawei, но в Мобильном ассистенте общаться с модемом не удалось.
  2. Скачал c 4pda Pupdatewiz и подходящую прошивку.
  3. Запустил Pupdatewiz — вуаля!

После прошивки стало:

Device name:	E3372
Serial number:	G4################
IMEI:	###############
Hardware version:	CL2E3372HM
Software version:	22.333.01.00.00
Web UI version:	17.100.13.112.03 (17.100.13.01.03_Mod1.12)
LAN MAC address:	BA:AB:DE:AD:BE:EF
  1. Выключил винду, на маке использовал mode_switch и переключил модем на вечный debug mode.
  2. Снова загрузил винду, в ней стал доступен Терминал.exe.

Вот этими командами восстанавливается убитая в ходе прошивки имеюшка. Тут как повезет либо AT^CIMEI, либо AT^NVWREX. Первая команда, как я понял, не всегда доступна, для успешного использования в второй надо предварительно воспользоваться утилитой imei_converter и вместо нулей записать то что надо. Команда AT^INFORBU нужна имхо для применения долгосрочной записи в NVRAM.

AT^CIMEI="###############"
AT^NVWREX=0,0,16,08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
AT^INFORBU
AT^RESET

Код imei_converter.c приведен ниже:

  1. На фоне модем плевался мне подобными сообщениями в терминал:
^RSSI:26
^HCSQ:"LTE",61,51,146,22
^RSSI:24
^HCSQ:"LTE",56,51,151,22 CREG: 1,"#####","#########"

Последнее событие — событие IMSI Attach.

Usage

To use the Go API, please see the full API information on
Go ref.

There is a convenient command line tool, hlcli that makes
working with the API extremely easy:

Usb modeswitching

Occassionally when a hilink device is plugged in, the Linux kernel/udev does
not recognize it, and does not properly put the device into hilink mode. The
latest versions of usb_modeswitch are able to deal with this:

$ sudo usb_modeswitch -v 12d1 -p 1f01 -V 12d1 -P 14dc -J

Поиск базовых станций сотовой связи

Данный модем обладает уникальным свойством — он умеет делать поиск всех окружающих базовых станций (БС). Причем не только БС оператора вставленной в него симкарты, а вообще все БС всех операторов, сигнал от которых достигает антенны модема. Для каждой найденной БС выводится ее CID и уровень принимаемого от нее сигнала.

Если в округе имеется сигнал LTE, то следует перевести модем в режим 2G3G командой AT^SYSCFGEX=»0201″,3FFFFFFF,1,2,800C5,, или в настройках веб-интерфейса.
Также обратите внимание, что эту команду можно ввдить только через порт управления (PCUI). Если ее ввести через порт, предназначенный для установки РРР-соединения (modem), то команда будет выдавать пустой ответ (просто ОК и все).

Формат команды:
AT^NETSCAN=num,level,mode
num — число находимых БС, от 1 до 20. Если будет найдено больше num БС, то станции с самым слабым сигналом будут исключены из списка
level — минимальный уровень сигнала БС, включаемых в список. Задается в дБ, от -110 (самый низкий уровень)

Пример команды:

at^netscan=20,-108,1
^NETSCAN: 10638,,,1e7e,250,02,0,-78,8b77,400000
^NETSCAN: 10687,,,1e7e,250,02,0,-79,d5c8,400000
^NETSCAN: 10662,,,1e7e,250,02,0,-82,8ade,400000
^NETSCAN: 10587,,,4cf8,250,20,0,-105,d4fc,400000
^NETSCAN: 10563,,,4cf8,250,20,0,-106,d4f9,400000

В этом примере заказывается поиск 3G БС с уровнем сигнала не ниже -108 дБ. Результат выдается в виде списка, отсортированного по уровню сигнала. Самая верхняя БС — самая мощная, нижняя — самая слабая. Формат элемента списка:

^NETSCAN: 10638,,,1e7e,250,02,0,-78,8b77,400000
1e7e - LAC станции
250 - MCC (Россия)
02 - MNC (В данном случае - МТС).
0 - хотел бы я сам знать что это, из дизассемблированного кода я так и не понял смысла этого поля.
-78 - уровень сигнала данной БС
8b77 - CID станции
400000 - диапазнон, в котором принимается сигнал БС (как в команде ^syscfgex).

Показатели качества принимаемого сигнала

Значения параметровRSSISINR (Ec/Io)
Отличные-30…-50 dBm30 dB и выше
Хорошие-50…-70 dBmот 20 dB до 30 dB
Удовлетворительные-70…-85 dBmот 10 dB до 20 dB
Плохие-85…-110 dBmменее 10 dB

Оцените статью
Huawei Devices