This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
hardware:huawei:e3272 [2015/05/12 16:27] – [Конфигурация модема] root | hardware:huawei:e3272 [2022/02/04 18:25] – removed - external edit (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Модем Huawei E3272 (Мегафон M100-4, МТС 824F, 824FT, Билайн E3272 HiLink) ====== | ||
- | E3276 - тоже касается, | ||
- | |||
- | {{: | ||
- | |||
- | E3272 модемом можно назвать с натяжкой - понимает AT команды с некоторыми прошивками, | ||
- | Ещё и MicroSD кардридер в подарок.\\ | ||
- | |||
- | Кладовая знаний по этому модему тут: http:// | ||
- | В первой части много ссылок на 4PDA потому что там расписано всё в подробностях, | ||
- | |||
- | |||
- | ===== Режимы работы ===== | ||
- | ==== HiLink ==== | ||
- | прошивка 22.*, так же шьётся отдельно веб интерфейс. Модем определяется как сетевой адаптер подключённый к сети, в которой есть роутер с NAT, DHCP сервер и Web сервер - это всё модем. Модем сам подключается, | ||
- | В веб интерфейсе можно смотреть уровень сигнала, | ||
- | Минусы: | ||
- | |||
- | ==== Modem ==== | ||
- | прошивка 21.*, (он же **RAS**) модем внутри себя эмулирует PPP сервер на COM порте. Нужно по " | ||
- | В таком режиме у меня наблюдались флуктуации пинга: 25+-4 мс. И в этом режиме у меня нагрузка на систему при замерах скорости была выше.\\ | ||
- | Уровень сигнала и прочее доступно через AT команды.\\ | ||
- | |||
- | ==== NCM ==== | ||
- | прошивка 21.*, модем виден в системе как сетевой интерфейс и COM порт для управления.\\ | ||
- | Ещё этот режим называют **NDIS**, тк модем эмулирует стандартный сетевой адаптер, | ||
- | Это наиболее интересный, | ||
- | Можно получить " | ||
- | В винде в этом режиме он работает практически как WiFi: в списке доступных сетей показывает сеть оператора, | ||
- | |||
- | |||
- | ===== Разблокировка ===== | ||
- | см шапку топика: | ||
- | всё делаем в точности, | ||
- | Код вводил командой: | ||
- | |||
- | |||
- | ===== Прошивки ===== | ||
- | Мегафоновской оригинальной прошивки нет в инете в свободном доступе, | ||
- | Прошивки на 22.* - это HiLink режим работы, | ||
- | Прошивки на 21.* - это Modem+NCM режими работы, | ||
- | Перешиваться 21< | ||
- | Драйвера ставить нужно по одному разу для 21 и 22 прошивок, | ||
- | |||
- | Прошивки есть для разных моделей: | ||
- | |||
- | **Hint**: Если прошить мегафоновский модем прошивкой от МТС светодиод начнёт светится красным вместо зелёного, | ||
- | |||
- | Большая коллекция прошивок: | ||
- | http:// | ||
- | и \\ | ||
- | http:// | ||
- | |||
- | |||
- | **Восстановление работоспособности**\\ | ||
- | Опять же отсылаю на 4pda, метод " | ||
- | Я замыкал контакт пока модем не отдавал в систему свои COM порты и дальше шил обычную прошивку.\\ | ||
- | Некоторые говорят что такое для них не срабатывает а вот флешер от хуавея помогает.\\ | ||
- | Мне приходилось его восстанавливать 2-3 раза после AT^SETPORT с неправильной последовательностью, | ||
- | |||
- | |||
- | ===== Как это работает ===== | ||
- | ==== Windows ==== | ||
- | Тут всё просто и без подробностей.\\ | ||
- | |||
- | === Сценарий 1 - плывём по течению === | ||
- | Вставили модем, подождали пока он прогрузится, | ||
- | |||
- | === Сценарий 2 - плывём правильно === | ||
- | Скачиваем дрова из инета (да, без инета их скачать не получится, | ||
- | После установки модем увидит новые устройства. (скорее всего модем, сетевой адаптер, | ||
- | Если служба: | ||
- | {{: | ||
- | Щёлкаем подключится, | ||
- | Софт от ОПСОСа смысла ставить не вижу, всё делается средствами системы и через сайт ОПСОСа.\\ | ||
- | |||
- | **Hint**: В целях безопасности, | ||
- | {{: | ||
- | |||
- | === Сценарий HiLink === | ||
- | Ближе ко второму случаю, | ||
- | HiLink прошивку я поставил, | ||
- | <spoiler title=" | ||
- | |||
- | |||
- | ==== EDGE, 3G, LTE ==== | ||
- | Текущий режим смотреть в конект манагере или через терминал послать команду: | ||
- | < | ||
- | ^SYSINFOEX: | ||
- | |||
- | Настроить что использовать - аналогично, | ||
- | |||
- | |||
- | ==== USSD ==== | ||
- | В терминале набрать (через порт модема точно работает): | ||
- | < | ||
- | AT+CUSD=1," | ||
- | В ответ придёт пачка кодов, видимо сообщение в юникоде.\\ | ||
- | Вероятно есть какой то софт, который умеет делать тоже самое по нажатию кнопки.\\ | ||
- | |||
- | |||
- | ===== Как это работает на самом деле ===== | ||
- | Дальше хардкор, | ||
- | |||
- | ==== Конфигурация модема ==== | ||
- | Команда: | ||
- | Отправлять в COM порт для управления или в то что винда/ | ||
- | Отправить можно взяв софт из шапки в 4PDA или Putty или cu -l / | ||
- | |||
- | В ответ можно получить какой то из вариантов: | ||
- | < | ||
- | AT^SETPORT=" | ||
- | AT^SETPORT=" | ||
- | AT^SETPORT=" | ||
- | |||
- | Для того чтобы узнать какой код что означает служит команда: | ||
- | < | ||
- | ^SETPORT:1: 3G MODEM | ||
- | ^SETPORT:2: 3G PCUI | ||
- | ^SETPORT:3: 3G DIAG | ||
- | ^SETPORT:5: 3G GPS | ||
- | ^SETPORT:A: BLUE TOOTH | ||
- | ^SETPORT: | ||
- | ^SETPORT: | ||
- | ^SETPORT: | ||
- | ^SETPORT: | ||
- | ^SETPORT: | ||
- | ^SETPORT: | ||
- | ^SETPORT: | ||
- | Модель 153 - GPS - Я тоже было раскатал губу, но это, похоже, | ||
- | |||
- | Модель 210\\ | ||
- | < | ||
- | ^SETPORT:1: 3G MODEM | ||
- | ^SETPORT:2: 3G PCUI | ||
- | ^SETPORT: | ||
- | ^SETPORT: | ||
- | ^SETPORT: | ||
- | ^SETPORT: | ||
- | ^SETPORT: | ||
- | ^SETPORT: | ||
- | ^SETPORT: | ||
- | ^SETPORT: | ||
- | ^SETPORT: | ||
- | ^SETPORT: | ||
- | но это не " | ||
- | Как минимум есть модели/ | ||
- | |||
- | Итак,\\ | ||
- | AT^SETPORT=" | ||
- | AT^SETPORT=" | ||
- | AT^SETPORT=" | ||
- | Первый - два кода (до точки с запятой) описывают какие устройства будут видны системе до того как драйвер отправит код переключения режима, | ||
- | **FF** - означает что модем сразу переходит в рабочий режим.\\ | ||
- | **A1, A2** - у меня сводился к **A1** - только CD-ROM.\\ | ||
- | |||
- | **Пример**: | ||
- | Время переключения конфигурации - примерно 2 секунды.\\ | ||
- | |||
- | **Пример**: | ||
- | |||
- | **ВАЖНО!!!**\\ | ||
- | Если мы меняем конфигурацию модема, | ||
- | Иначе модем не сможет инициализироваться и придётся его восстанавливать.\\ | ||
- | |||
- | |||
- | ==== С точки зрения ОС ==== | ||
- | idProduct - это PID устройства, | ||
- | VID - идентификатор производителя одинаковый, | ||
- | |||
- | Для начальной конфигурации **A1**:\\ | ||
- | idProduct = **0x14fe** - с родной прошивкой меги (21.*, модель 153 скорее всего для всех них)\\ | ||
- | idProduct = **0x155b** - с прошивкой МТС (21.*, модель 210)\\ | ||
- | При этом система видит только один CD-ROM. Если прошит дашборд то его можно примонтировать и там будут файлы.\\ | ||
- | |||
- | |||
- | === Переключение режима === | ||
- | Для продолжения работы < | ||
- | Это не только хуавей такой, многие модемы так же работают.\\ | ||
- | |||
- | В венде код отправляет драйвер, | ||
- | В Linux пользуются программой usb_modeswitch (насчёт драйверов которые это умеют я ничего не знаю).\\ | ||
- | Во FreeBSD можно воспользоваться usb_modeswitch либо это в может сделать драйвер u3g (если его заботливо пропатчить, | ||
- | Пример: | ||
- | |||
- | |||
- | === Коды переключение режима === | ||
- | В интернете нашлось три разных кода:\\ | ||
- | 1. 555342431234567800000000000000**11060000000000000000000000000000**\\ | ||
- | 2. 555342431234567800000000000000**11062000000100000000000000000000**\\ | ||
- | 3. 555342431234567800000000000000**11062000000101000100000000000000**\\ | ||
- | (555342431234567800000000000000 - это коды обёртка для SCSI, насколько я понял, в u3g оно генерируется на лету и код в исходнике начинается с 0x11, 0x06).\\ | ||
- | |||
- | |||
- | === Различия поведения с разными кодами === | ||
- | **Код 1: 11060000000000000000000000000000**\\ | ||
- | Похоже старый код инициализации.\\ | ||
- | На данный момент именно он прописан в u3g драйвере FreeBSD.\\ | ||
- | |||
- | Прошивка 153-21.470.05.00.00 (вроде как самая свежая) вообще не принимает этот код и похоже зависает!\\ | ||
- | |||
- | Остальные (210-21.436.11.00.143_Russia+MTS, | ||
- | idProduct = **0x1c1e** | ||
- | |||
- | при этом все устройства идут со стандартными идентификаторами, | ||
- | **usbconfig dump_all_config_desc** | ||
- | < | ||
- | .... | ||
- | bInterfaceClass = 0x0002 | ||
- | bInterfaceSubClass = 0x0002 | ||
- | bInterfaceProtocol = 0x00ff | ||
- | ...</ | ||
- | Эти идентификаторы известны как стандартные и подхватываются стандартные дрова типа if_cdce во FreeBSD или аналогичный в линухе, | ||
- | |||
- | Ещё к побочным эффектам можно отнести что команда: | ||
- | AT^SETPORT: | ||
- | хотя должна\\ | ||
- | AT^SETPORT: | ||
- | и под вендой она выдаёт правильно, | ||
- | Больше похоже на то, что этот код использовался раньше, | ||
- | |||
- | |||
- | **Код 2: 11062000000100000000000000000000**\\ | ||
- | **Код 3: 11062000000101000100000000000000**\\ | ||
- | **Режим FF** (это который через SETPORT настраивается)\\ | ||
- | Код 3 - похоже самый " | ||
- | |||
- | PID получается: | ||
- | idProduct = **0x1506**\\ | ||
- | |||
- | А вот устройства уже\\ | ||
- | **usbconfig dump_all_config_desc** | ||
- | < | ||
- | ... | ||
- | bInterfaceClass = 0x00ff | ||
- | bInterfaceSubClass = 0x0002 | ||
- | bInterfaceProtocol = 0x0061 | ||
- | ...</ | ||
- | где, **bInterfaceProtocol** - содержит номер устройства из строки инициализации (см AT^SETPORT=? | ||
- | bInterfaceClass = 0x00ff - означает специфичные для вендора значения, | ||
- | В линухе только недавно сделали отдельный драйвер: | ||
- | |||
- | |||
- | === FreeBSD === | ||
- | Всё что выше и ниже пришлось раскопать чтобы написать патч и понять почему с оригинальной прошивкой от меги работало а с новой универсальной уже нет, и почему с прошивкой от МТС заработало после добавления идентификаторов устройства.\\ | ||
- | |||
- | Можно накатить патч: https:// | ||
- | Здесь обсуждение: | ||
- | А здесь видно что он и где меняет: | ||
- | |||
- | **if_cdce.c**: | ||
- | |||
- | **u3g.c**: выкидываем кусок неиспользуемых констант, | ||
- | |||
- | **umodem.c**: | ||
- | |||
- | **usb_msctest.c**: | ||
- | |||
- | **usbdevs**: | ||
- | |||
- | Увы, но самое важное: | ||
- | Притом это касается не только E3272 но и как минимум E3276 и скорее всего других моделей.\\ | ||
- | |||
- | |||
- | ==== Настройка под FreeBSD ==== | ||
- | === NCM режим === | ||
- | Это для модемов со старой прошивкой, | ||
- | Для МТС не сработает без патча.\\ | ||
- | Модем эмулирует ethernet адаптер и DHCP сервер.\\ | ||
- | |||
- | < | ||
- | kldload if_cdce | ||
- | </ | ||
- | подключить модем\\ | ||
- | < | ||
- | dhclient ue0 | ||
- | / | ||
- | |||
- | === Modem режим === | ||
- | Это не оптимальный режим, поскольку модем эмулирует PPP сервер, | ||
- | |||
- | Устанавливаем mpd5 из портов, | ||
- | < | ||
- | make install | ||
- | make clean | ||
- | cp / | ||
- | |||
- | Создаём такой файл: "/ | ||
- | < | ||
- | ### | ||
- | |||
- | |||
- | 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 / | ||
- | #set modem speed 921600 | ||
- | set modem watch -cd | ||
- | set modem watch -dsr | ||
- | set modem var $DialPrefix " | ||
- | set modem var $Telephone " | ||
- | set modem var $InitString " | ||
- | 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</ | ||
- | / | ||
- | Запускаем: | ||
- | |||
- | |||
- | ==== Тесты ==== | ||
- | Сравнил работу в режимах NDIS (NCM) и RAS (modem) под FreeBSD.\\ | ||
- | Методика: | ||
- | wget качал в 8 потоков один и тот же файл в /dev/null\\ | ||
- | Сервер с файлом в этом же городе, | ||
- | |||
- | Скорость получилась примерно одинаковой: | ||
- | |||
- | === NDIS (NCM) === | ||
- | Пинг стабильно (более менее) держится и ниже, нагрузки на систему (E8500 - это вам не задохлик роутер на ARM/mips) не заметно вообще.\\ | ||
- | ping:\\ | ||
- | < | ||
- | 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) === | ||
- | Пинг скачет и несколько выше, нагрузка на систему заметна, | ||
- | ping:\\ | ||
- | < | ||
- | 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</ | ||