M100 3 4pda: Страница не найдена — Заметки Дебианщика

Содержание

ZTE MF823 (Мегафон M100-3). Полезные советы.

Всем привет … Этот пост скорее всего будет немного сумбурным и посвящен модему ZTE MF823, а именно, его мегафоновской версии Мегафон M100-3. Здесь я расскажу о некоторых его «секретах», которые, надеюсь, будут полезны не только любителям «поковыряться» в прошивках, но и обычным пользователям. Но для начала — давайте разберемся, что же мы имеем в мегафоновской версии? По-умолчанию после установки драйверов на модем со встроенного CDROM модем устанавливается как RNDIS устройство. Т.е. как сетевой девайс имеющий IP адрес 192.168.0.1, у ПК же появляется отдельный сетевой интерфейс в сетевых подключениях — Remote NDIS based Internet Sharing Device.

Фактически ZTE MF823 — это устройство на базе Linux, т.е. полноценная железка с web-интерфейсом (к слову, у него есть даже ADB как в Android). Однако, при попытке зайти на http://192.168.0.1/ мы получаем ошибку — Access Error: Site or Page Not Found, что свидетельствует о том, что web-интерфейс в мегафоновской версии модема отсутствует (по-крайней мере в так было в доставшемся мне экземпляре).

Давайте разберемся, как все-таки добавить web-интерфейс в этот модем.

Восстанавливаем web-интерфейс Мегафон М100-3


Для начала возьмем PuTTy и через Telnet зайдем на модем. Т.е. зайдем на 192.168.0.1:23:

Логин и пароль: root и zte9x15 соответственно. После попадания в консоль запускаем FTP Server (да, да, там есть и такой):

tcpsvd -u root:root -vE 0.0.0.0 21 ftpd -w / &
После этого подключаемся к 192.168.0.1 любым FTP клиентом и в /usr/zte_web/web/ заливаем распакованное содержимое архива — megafon_m100-3_web.7z (архив естественно нужно распаковать на ПК и содержимое папки web из архива залить в /usr/zte-web/web/)

И при входе в web-интерфейс по 192.168.0.1 видим следующую картинку:

Все. Web-интерфейс у модема теперь есть и рулить им можно непосредственно из него.

Чуть позже я опишу здесь другие интересные «находки» … а то уже светает ))

Factory Mode

Переход в данный режим осуществляется с помощью команды:

Т. е. достаточно перейти по этой ссылке и модем уйдет в Factory Mode, в котором «проявятся» несколько COM-портов модема, включая диагностический. Драйвера для этого режима можно найти тут — ZTEDrvSetup.zip. Модем должен ответить так: {«result»:»FACTORY:ok»}. В результате, модем будет переключен в другой режим (PID = 0016). Следите в ДУ за установкой драйверов. В результате, должно появиться 3 устройства — ZTE Diagnostics Interface, ZTE Proprietary USB Modem и ZTE NMEA Device.

Для возврата в обычный режим — необходимо подключиться терминалом (в качестве терминального клиента можно использовать Putty) к порту на котором находится модем и ввести команду AT+ZCDRUN=F

. После чего переподключить модем. 

На режиме Factory Mode — я остановлюсь чуть позже.

Кстати, переключиться в этот же режим из консоли Linux можно с помощью:

echo 2 > /sys/class/android_usb/android0/debug_enable (при этом интерфейс RNDIS также пропадает, т.е. модем становится недоступным по 192.168. 0.1)

Другое

http://192.168.0.1/goform/goform_get_cmd_process?cmd=imei — узнать IMEI модема.

Кстати, с помощью goform_get_cmd_process и параметра в cmd можно получить не только IMEI, но еще и следующие параметры (разбираться что к чему относится пока нет времени, поэтому просто списоком):

HTTPSHARE_GETCARD_VALUE,  get_loginfo,  station_list,  simcard_status,  current_network,  ConnectionMode,  vdf_configuration,  router_diagnostics,  wifi_settings,  login_status,  battery_status,  device_diagnostics,  network_location,  HTTPSHARE_AUTH_GET,  HTTPSHARE_GETCARD_NAME,  HTTPSHARE_GETCARD_VALUE,  client_ip_address,  UpgradeToolInfo,  battery_value,  pbm_data_info,  pbm_data_total,  pbm_capacity_info,  sms_page_data,  sms_data_total,  sms_parameter_info,  sms_cmd_status_info,  sms_capacity_info,  sms_status_rpt_data,  sms_data_class0,  cb_data_total,  cb_msg_total_num,  ussd_data_info,  get_device_mode,  get_user_mac_addr,  pack_size_info,  new_version_state,  current_upgrade_state,  upgrade_result,  if_has_select,  update_info,  GetUpgAutoSetting,  upg_roam_switch

Разблокировка с помощью NCK кода

Бытует довольно распространенное мнение, что для модемов ZTE кодов разблокировки не существует, и что они, якобы, разблокируются только перепрошивкой. По-крайней мере так написано в шапке одной известной темы на популярном форуме 4pda.ru, да и на некоторых других ресурсах.

Собственно это видео снималось лишь для того, чтобы развеять этот миф. Производитель (ZTE) предусмотрел штатную возможность разблокировки своих устройств с помощью уникального NCK кода. И все это работает, в чем вы и сможете убедиться в данном видео. Для примера мной был взят модем Мегафон М100-3 (ZTE MF823), на видео хорошо видно, как мы вводим код разблокировки в web-интерфейс (также его можно было ввести с помощью AT-команды — AT+ZNCK=»code») — после чего модем успешно работает с симкой МТС.


H Модем Huawei E3272 (Мегафон M100-4, МТС 824F, 824FT, Билайн E3272 HiLink) — всё что хотелось и не хотелось знать в черновиках

В основном про модем и про работу в разных ОС с интимными подробностями.
Режимы работы: HiLink, NCM (NDIS), modem (RAS).
Что и зачем нужно крутить в Windows и FreeBSD для того чтобы завёлся.
E3276 — тоже касается, железо аналогичное, прошивки совместимы.


E3272 модемом можно назвать с натяжкой — понимает AT команды с некоторыми прошивками, начинка там вполне роутерная.
Ещё и MicroSD кардридер в подарок.

Кладовая знаний по этому модему тут: 4pda.ru/forum/index.php?showtopic=508842&st=3440
В первой части много ссылок на 4PDA потому что там расписано всё в подробностях, а упомянуть об этом важно прежде чем переходить к тому что я накопал.

Режимы работы

HiLink — прошивка 22.*, так же шьётся отдельно веб интерфейс. Модем определяется как сетевой адаптер подключённый к сети, в которой есть роутер с NAT, DHCP сервер и Web сервер — это всё модем. Модем сам подключается, сам раздаёт адреса и сам NAT-ит.
В веб интерфейсе можно смотреть уровень сигнала, читать SMS и отправлять USSD запросы. (не во всех веб интерфейсах это доступно)

Минусы: если брать «белый» IP адрес то в этом режиме входящие подключения так же не будут работать; возможно что модему не хватит ресурсов для того чтобы задействовать доступную пропускную способность.

Modem — прошивка 21.*, (он же RAS) модем внутри себя эмулирует PPP сервер на COM порте. Нужно по «старинке» создавать подключение и «дозваниваться».
В таком режиме у меня наблюдались флуктуации пинга: 25+-4 мс. И в этом режиме у меня нагрузка на систему при замерах скорости была выше.
Уровень сигнала и прочее доступно через AT команды.

NCM — прошивка 21.*, модем виден в системе как сетевой интерфейс и COM порт для управления.
Ещё этот режим называют NDIS, тк модем эмулирует стандартный сетевой адаптер, драйвера на который есть во многих ОС из коробки.
Это наиболее интересный, на мой взгляд, режим работы модема.
Можно получить «белый» IP адрес прямо на сетевой интерфейс системы по DHCP, пинги не прыгают как в режиме модема, нагрузки на систему не заметно.

CARDLOCK=«666666» (цифры у каждого свои).
Прошивки
Мегафоновской оригинальной прошивки нет в инете в свободном доступе, но есть близкие по номеру версии от других операторов.
Прошивки на 22.* — это HiLink режим работы, к ней в комплект нужен WebUI (веб интерфейс).
Прошивки на 21.* — это Modem+NCM режими работы, к ней в комплект можно шить (но не обязательно) Dashboard (образ компакт диска для виртуального CD-ROM).
Перешиваться 2122 нужно строго по инструкции из шапки.
Драйвера ставить нужно по одному разу для 21 и 22 прошивок, потом это не требуется, тк венда их сохраняет и ставит автоматом.

Прошивки есть для разных моделей: 153, 210, 927 и тп. Разные модели работают на разных частотах/каналах

Hint: Если прошить мегафоновский модем прошивкой от МТС светодиод начнёт светится красным вместо зелёного, вероятно есть и какие то другие последствия, поскольку мегафон модель 153 а мтс 210.

Большая коллекция прошивок:
unlock4modem. SETPORT с неправильной последовательностью, об этом ниже.

Как это работает
Windows
Тут всё просто и без подробностей.
Сценарий 1: плывём по течению
Вставили модем, подождали пока он прогрузится, система увидела CD-ROM, можно поставить от туда софт оператора, при его установке дрова поставятся автоматом.
Сценарий 2: плывём правильно
Скачиваем дрова из инета (да, без инета их скачать не получится, а без дров туда не попасть 🙂 ), хотя бы из шапки в 4PDA и поставим их самостоятельно.
После установки модем увидит новые устройства. (скорее всего модем, сетевой адаптер, COM порт и кардридер)
Если служба: «Автонастройка WWAN» запущена, то щёлкаем по значку с сетями, там будет «Подключение через адаптер широкополосной мобильной связи» а под ним название нашего ОПСОСа и уровень сигнала, по виду всё как с WiFi.

Щёлкаем подключится, оно спросит APN (для мегафона: internet), имя пользователя и пароль (для мегафона можно пустые), и всё, инет есть.
Софт от ОПСОСа смысла ставить не вижу, всё делается средствами системы и через сайт ОПСОСа.
Hint: В целях безопасности, настоятельно рекомендую зайти в свойства адаптера: «Подключение через адаптер широкополосной мобильной связи» и снять галочки с клиента и службы доступа к файлам.
Сценарий HiLink
Ближе ко второму случаю, максимум поставить дрова, остальное сделается автоматом.
HiLink прошивку я поставил, посмотрел и снёс, подробностей не помню.
Увы

Как только я увидел 192.168.1.1 в качестве шлюза по умолчанию и DNS сервера, зашёл и узрел веб интерфейс с минимум инфы и настроек, мне вспомнился мой первый ADLS модем DSL-300T, примерно такого же содержания, который держал максимум 100 соединений через себя в режиме «роутера». И хотя прошло 8 лет, железо уже совсем другое, но ассоциации с ограниченным функционалом никуда не делись.

EDGE, 3G, LTE
Текущий режим смотреть в конект манагере или через терминал послать команду:
AT^SYSINFOEX
^SYSINFOEX:1,0,1,255,,3,«WCDMA»,41,«WCDMA»

Настроить что использовать — аналогично, + см топик 4PDA. SETPORT=»…;….» должна содержать коды в порядке возрастания!
Иначе модем не сможет инициализироваться и придётся его восстанавливать.

С точки зрения ОС
idProduct — это PID устройства, так драйвер отличает разные устройства одного производителя.
VID — идентификатор производителя одинаковый, 0x12d1 — для хуавея.

Для начальной конфигурации A1:
idProduct = 0x14fe — с родной прошивкой меги (21.*, модель 153 скорее всего для всех них)
idProduct = 0x155b — с прошивкой МТС (21.*, модель 210)
При этом система видит только один CD-ROM. Если прошит дашборд то его можно примонтировать и там будут файлы.

Переключение режима
Для продолжения работы вставьте 5 долларов в дисковод А требуется отправить в модем специальный код.
Это не только хуавей такой, многие модемы так же работают.

В венде код отправляет драйвер, заботливо написанный хуавеем.
В Linux пользуются программой usb_modeswitch (насчёт драйверов которые это умеют я ничего не знаю).
Во FreeBSD можно воспользоваться usb_modeswitch либо это в может сделать драйвер u3g (если его заботливо пропатчить, см ниже).
Пример: usb_modeswitch -v 0x12d1 -V 0x12d1 -p 0x14fe -P 0x14fe -M 55534243123456780000000000000011060000000000000000000000000000

Коды переключение режима

В интернете нашлось три разных кода:
1. 55534243123456780000000000000011060000000000000000000000000000
2. 55534243123456780000000000000011062000000100000000000000000000
3. 55534243123456780000000000000011062000000101000100000000000000
(555342431234567800000000000000 — это коды обёртка для SCSI, насколько я понял, в u3g оно генерируется на лету и код в исходнике начинается с 0x11, 0x06).
Различия поведения с разными кодами
Код 1: 11060000000000000000000000000000
Похоже старый код инициализации.
На данный момент именно он прописан в u3g драйвере FreeBSD.

Прошивка 153-21.470.05.00.00 (вроде как самая свежая) вообще не принимает этот код и похоже зависает!

Остальные (210-21. SETPORT:A1,A2;61,62,76,A1,A2
и под вендой она выдаёт правильно, что намекает что в венде данный код инициализации не используется.
Больше похоже на то, что этот код использовался раньше, и ещё некоторое время работал (до 153-21.470.05.00.00 или раньше), но потом хуавей отказалась от него, возможно из за каких то проблем с универсальными драйверами или ещё каких то причин.

Код 2: 11062000000100000000000000000000
Код 3: 11062000000101000100000000000000
Режим FF (это который через SETPORT настраивается)
Код 3 — похоже самый «новый», его я достал из самого свежего usb_modeswitch, а уж откуда они его взяли я не интересовался 🙂

PID получается:
idProduct = 0x1506

А вот устройства уже

usbconfig dump_all_config_desc

Interface 0

bInterfaceClass = 0x00ff
bInterfaceSubClass = 0x0002
bInterfaceProtocol = 0x0061


где, bInterfaceProtocol — содержит номер устройства из строки инициализации (см AT^SETPORT=?).
bInterfaceClass = 0x00ff — означает специфичные для вендора значения, а не стандартные как было в предыдущем случае — те нужен специальный драйвер.
В линухе только недавно сделали отдельный драйвер: huawei_cdc_ncm.
Во FreeBSD…
FreeBSD
Всё что выше и ниже пришлось раскопать чтобы написать патч и понять почему с оригинальной прошивкой от меги работало а с новой универсальной уже нет, и почему с прошивкой от МТС заработало после добавления идентификаторов устройства.

Можно накатить патч: bz-attachments.freebsd.org/attachment.cgi?id=145319
Здесь обсуждение: bugs.freebsd.org/bugzilla/show_bug.cgi?id=192345
А здесь видно что он и где меняет: bugs.freebsd.org/bugzilla/attachment.cgi?id=145319&action=diff

if_cdce.c: просто добавляем идентификаторы NCM устройств от хуавея

u3g.c: выкидываем кусок неиспользуемых констант, добавляем идентификаторы E3272 в список известных, макрос U3G_HUAWEI_IS_CDC чтобы не приставать к NCM устройствам от хуавея в этом драйвере, и два места в которых эта проверка выполняется, и ещё по мелочи. NDISDUP=1,1,«internet»’ > /dev/cuaU0.1
dhclient ue0
/dev/cuaU0.1 — управляющий порт NCM.

Modem режим
Это не оптимальный режим, поскольку модем эмулирует PPP сервер, а ОС занимается инкапсуляцией/декапсуляцией пакетов в/из PPP, всё это накладные расходы.

Устанавливаем mpd5 из портов, конфигурим и запускаем:
cd /usr/ports/net/mpd5
make install
make clean
cp /usr/local/etc/mpd5/mpd.script.sample /usr/local/etc/mpd5/mpd.script

Создаём такой файл:

/usr/local/etc/mpd5/mpd.conf
### MPD configuration file
###


startup:
	###set user foo bar admin
	###set user foo1 bar1

	###set console self 127.0.0.1 5005
	set console close
	#set console enable logging

	###set web self 0.0.0.0 5006
	set web close
	#set web enable auth

	set global disable one-shot tcp-wrapper

	log +auth -bund -ccp -chat +console -echo -ecp -frame -fsm -iface +ipcp -ipv6cp -lcp -link -phys -radius -rep
	#log +auth +bund +ccp +chat +console +echo +ecp +frame +fsm +iface +ipcp +ipv6cp +lcp +link +phys +radius +rep


default:
	load modem_client1


modem_client1:
	create bundle static BndModemCli1
	set bundle links L1
	set iface addrs 1. 1.1.1 2.2.2.2
	set iface route default
	set iface mtu 1500
	set iface idle 0
	set iface session 0
	set iface enable tcpmssfix
	set iface disable on-demand proxy-arp tee nat netflow-in netflow-out netflow-once
	set ipcp ranges 0.0.0.0/0 1.1.1.1/0
	set ipcp enable req-pri-dns req-sec-dns
	set ipcp no vjcomp req-pri-nbns req-sec-nbns
	create link static L1 modem
	set modem device /dev/cuaU0.0
	#set modem speed 921600
        set modem watch -cd
        set modem watch -dsr
	set modem var $DialPrefix "D"
	set modem var $Telephone "*99#"
	set modem var $InitString "+CGDCONT=1,\"IP\",\"internet\""
	set modem script DialPeer
	set modem idle-script Ringback
	set link action bundle BndModemCli1
	#set link mtu 1492
	#set link mru 1492
	set link fsm-timeout 2
	set link keep-alive 4 40
	set link max-redial 0
	set link redial-delay 8
	set link accept pap chap-md5 chap-msv2
	set link enable acfcomp protocomp magicnum check-magic
	set link no chap-msv1 eap incoming multilink shortseq passive callback no-orig-auth keep-ms-domain time-remain peer-as-calling report-mac
	#set link disable chap pap
	#set link accept chap pap
	#set link enable incoming
	set auth authname user
	set auth password password
	open

/dev/cuaU0. 0 — это порт модема.
Запускаем: /usr/local/etc/rc.d/mpd5 forcerestart
Тесты
Сравнил работу в режимах NDIS (NCM) и RAS (modem) под FreeBSD.
Методика: Москва, после полуночи 🙂
wget качал в 8 потоков один и тот же файл в /dev/null
Сервер с файлом в этом же городе, канал до него позволяет более 100 мегабит забирать, сам сервер тоже может 500+ легко для одного файла.

Скорость получилась примерно одинаковой: 7-8 мегабайт в секунду.

NDIS (NCM)
Пинг стабильно (более менее) держится и ниже, нагрузки на систему (E8500 — это вам не задохлик роутер на ARM/mips) не заметно вообще.
ping

64 bytes from xxx: icmp_seq=1 ttl=244 time=25.212 ms
64 bytes from xxx: icmp_seq=2 ttl=244 time=25.939 ms
64 bytes from xxx: icmp_seq=3 ttl=244 time=29.943 ms
64 bytes from xxx: icmp_seq=4 ttl=244 time=27.439 ms
64 bytes from xxx: icmp_seq=5 ttl=244 time=25.662 ms
64 bytes from xxx: icmp_seq=6 ttl=244 time=27. 778 ms
64 bytes from xxx: icmp_seq=7 ttl=244 time=28.916 ms
64 bytes from xxx: icmp_seq=8 ttl=244 time=27.233 ms
64 bytes from xxx: icmp_seq=9 ttl=244 time=24.446 ms
64 bytes from xxx: icmp_seq=10 ttl=244 time=29.356 ms
64 bytes from xxx: icmp_seq=11 ttl=244 time=25.392 ms
64 bytes from xxx: icmp_seq=12 ttl=244 time=27.369 ms
64 bytes from xxx: icmp_seq=13 ttl=244 time=25.578 ms
64 bytes from xxx: icmp_seq=14 ttl=244 time=27.748 ms

RAS (modem)
Пинг скачет и несколько выше, нагрузка на систему заметна, примерно 4-6% одного ядра. Такое походу не всем роутерам под силу.
ping

64 bytes from xxx: icmp_seq=0 ttl=244 time=33.971 ms
64 bytes from xxx: icmp_seq=1 ttl=244 time=27.066 ms
64 bytes from xxx: icmp_seq=2 ttl=244 time=28.687 ms
64 bytes from xxx: icmp_seq=3 ttl=244 time=23.930 ms
64 bytes from xxx: icmp_seq=4 ttl=244 time=26.412 ms
64 bytes from xxx: icmp_seq=5 ttl=244 time=25. 663 ms
64 bytes from xxx: icmp_seq=6 ttl=244 time=30.312 ms
64 bytes from xxx: icmp_seq=7 ttl=244 time=29.905 ms
64 bytes from xxx: icmp_seq=8 ttl=244 time=35.774 ms
64 bytes from xxx: icmp_seq=9 ttl=244 time=25.895 ms
64 bytes from xxx: icmp_seq=10 ttl=244 time=31.763 ms
64 bytes from xxx: icmp_seq=11 ttl=244 time=27.883 ms
64 bytes from xxx: icmp_seq=12 ttl=244 time=23.862 ms
64 bytes from xxx: icmp_seq=13 ttl=244 time=29.746 ms
64 bytes from xxx: icmp_seq=14 ttl=244 time=34.491 ms
64 bytes from xxx: icmp_seq=15 ttl=244 time=23.722 ms
64 bytes from xxx: icmp_seq=16 ttl=244 time=31.306 ms
64 bytes from xxx: icmp_seq=17 ttl=244 time=43.241 ms
64 bytes from xxx: icmp_seq=18 ttl=244 time=38.716 ms
64 bytes from xxx: icmp_seq=19 ttl=244 time=31.190 ms

M100 3 не определяется – Тарифы на сотовую связь