Роутер 4271 руб.
После покупки мной ноутбука с поддержкой технологии Wi-Fi 6, захотелось обновить имеющийся роутер, не поддерживающий данный вид беспроводной сети. После анализа рынка было выбрано данное устройство по определенным параметрам, которые и описываются в статье.
В статье будет описан процесс установки альтернативной прошивки OpenWrt на устройство и замер на ней скоростных характеристик беспроводного подключения с рекордным для меня линком в 2400Мбит/сек.
Введение
Несмотря на то, что на сайте есть подробный обзор международной версии данного роутера Xiaomi AX3200 (модель RB01) (я рекомендую ознакомиться с ним, чтобы обогатиться информацией о технологиях беспроводной связи последних поколений), я купил китайскую версию Xiaomi Redmi AX6S (модель RB03), т.к. она дешевле. Следует заметить, что обе модели имеют идентичную аппаратную начинку, но разные прошивки с завода.
Путем длительных изысканий рынка роутеров на предмет продукта с качественной поддержкой OpenWrt, наличия современных технологий и при этом доступной цены, была выбрана данная модель. Я пошел на компромисс в виде отсутствия USB порта, но, судя по 6 летнему опыту использования роутера Xiaomi Mi mini с прошивкой Padavan, USB порт мне так и не понадобился, поэтому я решил не переплачивать за лишнюю функциональность.
Технические характеристики
Модель: Redmi AX6S / AX3200M
Процессор: MediaTek MT7622BV (2 х 1.35GHz)
SOC Wlan: MediaTek MT7622B, MediaTek MT7915E
ОЗУ: — 256МБ
ПЗУ: — 128МБ NAND
Сеть: 2.4ГГЦ (800Мбит/с) 4x4mimo, 40 МГц и 256-QAM, 5ГГц (2402Мбит/с) 4x4mimo, 80 МГц и 256-QAM. С OpenWRT доступно 4х4mimo 160Мгц
Антенны: 6 несъемные
Стандарт протокола: 802.11g/n/ac/ax
Порт: LAN х 3 1Гбит/с, WAN 1Гбит/с
Дополнительно: 2х двухцветных LED индикатора (оранжевый/синий), 1x кнопка перезапуска, 1х кнопка Mesh
Питание: 12V/1.5A
Размеры: 320*320*55mm
Вес: 980 г
Комплект поставки
Качество упаковки роутера не позволяет усомниться в надежности транспортировки.
Блок питания 12В, 1.5А — вилка, разумеется, китайская.
Описание установки OpenWrt
Это Wiki OpenWrt по нашему устройству. Методология установки альтернативной прошивки на наше устройство состоит в прошивке squashfs-factory образа посредством подключения через telnet. Если telnet недоступен, его надо добыть, поставив специальную прошивку через web-интерфейс.
С ax3200 все сложнее — там telnet добывается UART-подключением к плате устройства, либо посредством другого Xiaomi роутера с поддержкой mesh.
Процедура установки OpenWrt
1) Если в вашем устройстве telnet включен с завода, переходите к пункту 3 (подключите роутер и перейдите по ссылке, чтобы проверить, доступен ли telnet — IP роутера 192.168.31.1).
2) Если в вашем устройстве не включен telnet с завода и оно является Redmi AX6s (RB03 моделью), telnet можно включить, прошив «закрытую бета прошивку» miwifi_rb03_firmware_stable_1.2.7_closedbeta.bin. (MD5: 5eedf1632ac97bb5a6bb072c08603ed7). Но имейте в виду, что это не подходит для Xiaomi AX3200 (RB01 model), который не имеет telnet с завода. Для получения telnet на этом устройстве существуют UART и mesh способы.
3) Скачайте эту программу под Python и сохраните под именем unlock_pwd.py. Потом запустите программу (предварительно установив Python с официального сайта), выполнив команду
python3 unlock_pwd.py <S/N>
где <S/N> это серийный номер вашего устройства (смотреть на дне корпуса устройства). В ответ программа вернет пароль root, который нам пригодится позже.
4) Качаем putty и открываем telnet-сессию на нашем устройстве по адресу 192.168.31.1.

Должно появиться следующее окно приветствия:

nvram set ssh_en=1
nvram set uart_en=1
nvram set boot_wait=on
nvram set flag_boot_success=1
nvram set flag_try_sys1_failed=0
nvram set flag_try_sys2_failed=0
nvram commit
6) Переименуйте файл openwrt-mediatek-mt7622-xiaomi_redmi-router-ax6s-squashfs-factory.bin, который мы предварительно скачали, в factory.bin.
7) На компьютере, в папке, где лежит factory.bin, выполните команду:
python -m http.server

cd /tmp
wget http://<IP address of your computer>:8000/factory.bin
mtd -r write factory.bin firmware
9) После прошивки устройство автоматически перезагрузится уже с прошивкой OpenWrt и назначенным адресом 192.168.1.1.
10) Если устройство перезагружается в прошивку с завода, нужно открыть telnet-сессию снова и подать следующие команды
nvram set ssh_en=1
nvram set uart_en=1
nvram set boot_wait=on
nvram set flag_boot_success=1
nvram set flag_try_sys1_failed=0
nvram set flag_try_sys2_failed=0
nvram set "boot_fw1=run boot_rd_img;bootm"
nvram commit
Потом повторить п.8, прошив OpenWrt снова.
Разбираемся с OpenWrt. Мощности и нюансы законодательства РФ.
Итак, по адресу 192.168.1.1 нас встречает веб-интерфейс Luci, в котором интуитивно понятно настраивается PPPoE-подключение и сети Wi-Fi. На всякий случай вот мануал с картинками.


Сразу оговорюсь, что не буду нарушать закон РФ относительно мощности радиочастот гражданского применения и буду тестировать роутер только в пределах разрешенных частот и мощностей, однако, стоит отметить, что его потенциальная мощность выходит далеко за разрешенные нашим законодательством пределы.
Разрешенные мощности для устройств wi-fi регламентируются следующим документом Госкомиссии по радиочастотам (см. Приложение 2). Откуда узнаем, что максимальная ЭИИМ для wi-fi 2.4ГГц (2400-2483,5 МГц) составляет 100мВт (20дБм), а для 5ГГц (5150-5350 МГц, 5650-5850 МГц) — 200мВт (23дБм).
Также есть ограничение, связанное с DFS и RADAR (вот хорошая статья про стандарты с наглядными иллюстрациями):
недоступны каналы в диапазоне UNII-2 Extended 100, 104, 108, 112, 116, 120, 124, 128
недоступно использование 160МГц в диапазоне UNII-2 Extended (114 канал)
Если рассуждать логически, то для соблюдения законодательства нам остается использовать 32-64 и 128-165 каналы (хотя для региона RU разрешены 36-165 каналы).
Опять-таки, есть нюансы, связанное с DFS и RADAR для частот 5ГГц (согласно хорошей статье):
Лучшие каналы для 5 ГГц
- с шириной 20Мгц: любой доступный канал
- с шириной 40Мгц: без DFS 36, 40, 44, 48, 149, 153, 157, 161 | DFS 52, 56, 60, 64 | DFS и RADAR 100, 104, 108, 112, 116, 120, 124, 128, 132, 136
- с шириной 80Мгц: без DFS 40, 44, 48, 149, 157 | DFS 52, 56 | DFS и RADAR 100, 104, 108, 112, 116, 120, 124, 128
- с шириной 160Мгц: без DFS 40, 44, 48 | DFS 52, 56 | DFS и RADAR 108, 112, 116, 120
Не рекомендованные каналы
- данные каналы у многих производителей сниженную мощность сигнала: без DFS 36, 161 | DFS 64 | DFS и RADAR 140, 144
Если вы выбрали канал с DFS, то подключение к нему произойдет не сразу, а только после сканирования эфира на наличие радиолокационного сигнала и в случае неуспеха соединение не произойдет.
Наша задача взять непрерывный блок каналов, которое устройство займет целиком без фрагментирования. Отсюда получаем, что нам нужен 36 канал. Это поясняет следующий рисунок.


Тестирование реальной пропускной способности Wi-Fi 5ГГц
Тестировать буду утилитой iperf3, поднимая сервер на роутере и запуская тест на ноутбуке Acer Nitro AN515-46 и телефоне Xiaomi Note 11 (spesn), разнося которые от роутера на расстояние:
1) Прямой видимости на расстоянии 5м
2) За бетонной стеной на расстоянии 10м
3) За двумя бетонными стенами на расстоянии 20м
Итак, разрешаем в OpenWrt подключение по SSH и подключаемся к роутеру (из-под виндового powershell это можно сделать командой
ssh -p 22 -l root 192.168.1.1

opkg update
opkg install iperf3
поднимаем сервер iperf3
iperf3 -s
Acer Nitro AN515-46
1) Прямой видимости на расстоянии 5м


Xiaomi Note 11 (spesn) (соединяется на скорости 433Мбит/сек, ширина канала 80МГц)
1) Прямой видимости на расстоянии 5м



Тестирование реальной пропускной способности Wi-Fi 2.4ГГц
Тестировать буду только телефоном Xiaomi Note 11 (spesn), разнося его от роутера на расстояние:
1) Прямой видимости на расстоянии 5м
2) За бетонной стеной на расстоянии 10м
3) За двумя бетонными стенами на расстоянии 20м
Xiaomi Note 11 (spesn) (соединяется на скорости 150Мбит/сек, ширина канала 40МГц)
1) Прямой видимости на расстоянии 5м



Выводы
Тестирование скорости показало, что открытые драйвера Wi-Fi для чипсетов нашего роутера хорошо отлажены и поддерживают все доступные технологии. Конечно, можно собрать OpenWrt с проприетарными драйверами MTK и протестировать скорости и затухания, но это уже совсем другая история.
Роутером я очень доволен — за месяц активных экспериментов не было ни зависаний, ни перегревов, ни глюков на данной прошивке. OpenWrt на нем будут поддерживать еще лет 10 гарантированно, поэтому настоятельно рекомендую искать скидки на данный продукт (на 4pda встречал людей, которым удалось купить его на Озоне за 3200 руб).
Ссылки по теме:
1) Офф Wiki Openwrt (с мануалом по инсталляции на английском) openwrt.org/toh/xiaomi/ax3200
2) Тема на 4pda (с альтернативными, более сложными способами получения доступа SSH на стандартной прошивке) 4pda.to/forum/index.php?showtopic=1033757

Xiaomi Mi Router 3 — это беспроводной маршрутизатор 802.11ac + bgn AC1200 на базе MediaTek MT7620A SoC. В плате имеется три порта Ethernet и два радиомодуля (один на базе SoC 2,4 ГГц 802.11bgn и один на базе MT7612E 5 ГГц 802.11ac, оба 2 × 2 MiMo).
К последовательному порту маршрутизатора можно получить доступ с помощью контактов TTL. Требуется преобразователь уровня напряжения (например, ключ TTL-USB CP2102 GND-GND, TX-RX, RX-TX). Не подключайте шнур 3.3В к последовательным контактам.
Запись в консоль отключена на заводской U-Boot и доступа только при первой загрузке OpenWrt; после этого она отключается прошивкой.
Я использовал Putty на Windows 10, подключение через COM порт, например: COM9
Настройки соединения: TTL voltage, 115200 bps, COMX.
Для активации записи в консоль нужно ввести следующие команды:
nvram set uart_en=1 nvram commit
root@XiaoQiang:/# cat /proc/mtd dev: size erasesize name mtd0: 08000000 00020000 "ALL" mtd1: 00040000 00020000 "Bootloader" mtd2: 00040000 00020000 "Config" mtd3: 00040000 00020000 "Bdata" mtd4: 00040000 00020000 "Factory" mtd5: 00040000 00020000 "crash" mtd6: 00040000 00020000 "crash_syslog" mtd7: 00080000 00020000 "reserved0" mtd8: 00400000 00020000 "kernel0" mtd9: 00400000 00020000 "kernel1" mtd10: 02000000 00020000 "rootfs0" mtd11: 02000000 00020000 "rootfs1" mtd12: 03600000 00020000 "overlay"
U-Boot 1.1.3 (Apr 15 2016 — 17:46:32)
Board: Ralink APSoC DRAM: 128 MB
Power on memory test. Memory size= 128 MB…OK!
relocate_code Pointer at: 87fb8000
enable ephy clock…done. rf reg 29 = 5
SSC disabled.
!!! nand page size = 2048, addr len=4
..============================================
Ralink UBoot Version: 4.2.S.1
———————————————
ASIC 7620_MP (Port5<->None)
DRAM_CONF_FROM: Auto-detection
DRAM_TYPE: DDR2
DRAM component: 1024 Mbits
DRAM bus: 16 bit
Total memory: 128 MBytes
Flash component: NAND Flash
Date:Apr 15 2016 Time:17:46:32
============================================
icache: sets:512, ways:4, linesz:32 ,total:65536
dcache: sets:256, ways:4, linesz:32 ,total:32768
##### The CPU freq = 580 MHZ ####
estimate memory size =128 Mbytes
Please choose the operation:
1: Load system code to SDRAM via TFTP.
2: Load system code then write to Flash via TFTP.
3: Boot system code via Flash (default).
4: Entr boot command line interface.
9: Load Boot Loader code then write to Flash via TFTP.
3: System Boot system code via Flash.
Booting System 2
..ranand_erase_write: offs:40000, count:20000
.Done!
done
## Booting image at bc600000 …
Image Name: MIPS OpenWrt Linux-2.6.36
Image Type: MIPS Linux Kernel Image (lzma compressed)
Data Size: 2284520 Bytes = 2.2 MB
Load Address: 80000000
Entry Point: 80000000
…………………………….. Verifying Checksum … OK
Uncompressing Kernel Image … OK
commandline uart_en=0 factory_mode=0 mem=128m
No initrd
## Transferring control to Linux (at address 80000000) …
## Giving linux memsize in MB, 128
Starting kernel …
LINUX started…
THIS IS ASIC
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 2.6.36 (jenkins@JenkinsServer) (gcc version 4.6.3 20120201 (prerelease) (Linaro GCC 4.6-2012.02) ) #1 Fri Apr 15 17:59:34 CST 2016
[ 0.000000]
[ 0.000000] The CPU feqenuce set to 580 MHz
[ 0.000000] PCIE: bypass PCIe DLL.
[ 0.000000] PCIE: Elastic buffer control: Addr:0x68 -> 0xB4
[ 0.000000] disable all power about PCIe
[ 0.000000] CPU revision is: 00019650 (MIPS 24Kc)
[ 0.000000] Software DMA cache coherency
[ 0.000000] Determined physical RAM map:
[ 0.000000] memory: 08000000 @ 00000000 (usable)
[ 0.000000] User-defined physical RAM map:
[ 0.000000] memory: 08000000 @ 00000000 (usable)
[ 0.000000] Initrd not found or empty — disabling initrd
[ 0.000000] Zone PFN ranges:
[ 0.000000] Normal 0x00000000 -> 0x00008000
[ 0.000000] Movable zone start PFN for each node
[ 0.000000] early_node_map[1] active PFN ranges
[ 0.000000] 0: 0x00000000 -> 0x00008000
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
[ 0.000000] Kernel command line: console=ttyS1,115200n8 root=/dev/ram0 uart_en=0 factory_mode=0 mem=128m
[ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.000000] Primary instruction cache 64kB, VIPT, , 4-waylinesize 32 bytes.
[ 0.000000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[ 0.000000] Writing ErrCtl register=00078fdb
[ 0.000000] Readback ErrCtl register=00078fdb
[ 0.000000] allocated 655360 bytes of page_cgroup
[ 0.000000] please try ‘cgroup_disable=memory’ option if you don’t want memory cgroups
[ 0.000000] Memory: 123760k/131072k available (3348k kernel code, 7312k reserved, 1028k data, 868k init, 0k highmem)
[ 0.000000] SLUB: Genslabs=7, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] NR_IRQS:128
[ 0.000000] console [ttyS1] enabled
[ 0.010000] Calibrating delay loop… 385.84 BogoMIPS (lpj=1929216)
[ 0.220000] pid_max: default: 32768 minimum: 301
[ 0.220000] Mount-cache hash table entries: 512
[ 0.220000] Initializing cgroup subsys cpuacct
[ 0.230000] Initializing cgroup subsys memory
[ 0.230000] Initializing cgroup subsys net_cls
[ 0.230000] devtmpfs: initialized
[ 0.240000] NET: Registered protocol family 16
[ 0.240000] RALINK_GPIOMODE = 121b1c
[ 0.240000] RALINK_GPIOMODE = 101b1c
[ 0.440000] PPLL_CFG1=0xe6c000
[ 0.450000] MT7620 PPLL lock
[ 0.450000] PPLL_DRV =0x80080504
[ 0.650000] Deassert the PCIE0 RESET.
[ 0.650000] start PCIe register access
[ 1.150000] RALINK_RSTCTRL = 2400000
[ 1.160000] RALINK_CLKCFG1 = 75afffc0
[ 1.160000]
[ 1.160000] *************** MT7620 PCIe RC mode *************
[ 1.660000] PCIE0 enabled
[ 1.670000] init_rt2880pci done
[ 1.670000] bio: create slab <bio-0> at 0
[ 1.680000] SCSI subsystem initialized
[ 1.680000] usbcore: registered new interface driver usbfs
[ 1.680000] usbcore: registered new interface driver hub
[ 1.690000] usbcore: registered new device driver usb
[ 1.690000] pci 0000:00:00.0: BAR 0: can’t assign mem (size 0x80000000)
[ 1.700000] pci 0000:00:00.0: BAR 8: assigned [mem 0x20000000-0x200fffff]
[ 1.700000] pci 0000:00:00.0: BAR 9: assigned [mem 0x20100000-0x201fffff pref]
[ 1.710000] pci 0000:00:00.0: BAR 1: assigned [mem 0x20200000-0x2020ffff]
[ 1.710000] pci 0000:00:00.0: BAR 1: set to [mem 0x20200000-0x2020ffff] (PCI address [0x20200000-0x2020ffff]
[ 1.720000] pci 0000:01:00.0: BAR 0: assigned [mem 0x20000000-0x200fffff 64bit]
[ 1.720000] pci 0000:01:00.0: BAR 0: set to [mem 0x20000000-0x200fffff 64bit] (PCI address [0x20000000-0x200fffff]
[ 1.730000] pci 0000:01:00.0: BAR 6: assigned [mem 0x20100000-0x2010ffff pref]
[ 1.730000] pci 0000:00:00.0: PCI bridge to [bus 01-01]
[ 1.740000] pci 0000:00:00.0: bridge window [io disabled]
[ 1.740000] pci 0000:00:00.0: bridge window [mem 0x20000000-0x200fffff]
[ 1.750000] pci 0000:00:00.0: bridge window [mem 0x20100000-0x201fffff pref]
[ 1.750000] BAR0 at slot 0 = 0
[ 1.760000] bus=0x0, slot = 0x0
[ 1.760000] res[0]->start = 0
[ 1.760000] res[0]->end = 0
[ 1.760000] res[1]->start = 20200000
[ 1.770000] res[1]->end = 2020ffff
[ 1.770000] res[2]->start = 0
[ 1.770000] res[2]->end = 0
[ 1.770000] res[3]->start = 0
[ 1.780000] res[3]->end = 0
[ 1.780000] res[4]->start = 0
[ 1.780000] res[4]->end = 0
[ 1.780000] res[5]->start = 0
[ 1.790000] res[5]->end = 0
[ 1.790000] bus=0x1, slot = 0x0
[ 1.790000] res[0]->start = 20000000
[ 1.790000] res[0]->end = 200fffff
[ 1.800000] res[1]->start = 0
[ 1.800000] res[1]->end = 0
[ 1.800000] res[2]->start = 0
[ 1.800000] res[2]->end = 0
[ 1.810000] res[3]->start = 0
[ 1.810000] res[3]->end = 0
[ 1.810000] res[4]->start = 0
[ 1.810000] res[4]->end = 0
[ 1.820000] res[5]->start = 0
[ 1.820000] res[5]->end = 0
[ 1.820000] Switching to clocksource MIPS
[ 1.830000] NET: Registered protocol family 2
[ 1.830000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 1.840000] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
[ 1.850000] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
[ 1.850000] TCP: Hash tables configured (established 4096 bind 4096)
[ 1.860000] TCP reno registered
[ 1.860000] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 1.870000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 1.870000] NET: Registered protocol family 1
[ 2.570000] RT3xxx EHCI/OHCI init.
[ 2.580000] msgmni has been set to 241
[ 2.580000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
[ 2.590000] io scheduler noop registered (default)
[ 2.600000] RALINK_REG_PIO7140DATA b0000670 = 0
[ 2.700000] RALINK_REG_PIO7140DATA b0000670 = 2000000
[ 2.710000] Ralink gpio driver initialized
[ 2.710000] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[ 2.720000] serial8250: ttyS0 at MMIO 0x10000500 (irq = 37) is a 16550A
[ 2.720000] serial8250: ttyS1 at MMIO 0x10000c00 (irq = 12) is a 16550A
[ 2.730000] init reset module!
[ 2.740000] brd: module loaded
[ 2.740000] !!! nand page size = 2048, addr len=4
[ 2.750000] ra_nand_init: alloc 1350, at 87fd0000 , btt(87fd10c0, 100), ranfc_mtd:87fd11c0
[ 2.760000] Creating 13 MTD partitions on «ra_nfc»:
[ 2.760000] 0x000000000000-0x000008000000 : «ALL»
[ 2.790000] 0x000000000000-0x000000040000 : «Bootloader»
[ 2.800000] 0x000000040000-0x000000080000 : «Config»
[ 2.810000] 0x000000080000-0x0000000c0000 : «Bdata»
[ 2.810000] 0x0000000c0000-0x000000100000 : «Factory»
[ 2.820000] 0x000000100000-0x000000140000 : «crash»
[ 2.820000] 0x000000140000-0x000000180000 : «crash_syslog»
[ 2.830000] 0x000000180000-0x000000200000 : «reserved0»
[ 2.840000] 0x000000200000-0x000000600000 : «kernel0»
[ 2.840000] 0x000000600000-0x000000a00000 : «kernel1»
[ 2.850000] 0x000000a00000-0x000002a00000 : «rootfs0»
[ 2.850000] 0x000002a00000-0x000004a00000 : «rootfs1»
[ 2.860000] 0x000004a00000-0x000008000000 : «overlay»
[ 2.870000] rdm_major = 253
[ 2.870000] SMACCR1 — : 0x000034ce
[ 2.870000] SMACCR0 — : 0x004b3cc1
[ 2.880000] Ralink APSoC Ethernet Driver Initilization. v3.0 256 rx/tx descriptors allocated, mtu = 1500!
[ 2.890000] SMACCR1 — : 0x000034ce
[ 2.890000] SMACCR0 — : 0x004b3cc1
[ 2.900000] PROC INIT OK!
[ 2.900000] PPP generic driver version 2.4.2
[ 2.900000] PPP MPPE Compression module registered
[ 2.910000] NET: Registered protocol family 24
[ 2.910000] PPTP driver version 0.8.5
[ 2.920000] ehci_hcd: USB 2.0 ‘Enhanced’ Host Controller (EHCI) Driver
[ 3.040000] rt3xxx-ehci rt3xxx-ehci: Ralink EHCI Host Controller
[ 3.050000] rt3xxx-ehci rt3xxx-ehci: new USB bus registered, assigned bus number 1
[ 3.090000] rt3xxx-ehci rt3xxx-ehci: irq 18, io mem 0x101c0000
[ 3.110000] rt3xxx-ehci rt3xxx-ehci: USB 0.0 started, EHCI 1.00
[ 3.110000] hub 1-0:1.0: USB hub found
[ 3.120000] hub 1-0:1.0: 1 port detected
[ 3.120000] ohci_hcd: USB 1.1 ‘Open’ Host Controller (OHCI) Driver
[ 3.150000] rt3xxx-ohci rt3xxx-ohci: RT3xxx OHCI Controller
[ 3.150000] rt3xxx-ohci rt3xxx-ohci: new USB bus registered, assigned bus number 2
[ 3.160000] rt3xxx-ohci rt3xxx-ohci: irq 18, io mem 0x101c1000
[ 3.230000] hub 2-0:1.0: USB hub found
[ 3.230000] hub 2-0:1.0: 1 port detected
[ 3.240000] usbcore: registered new interface driver cdc_acm
[ 3.240000] cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters
[ 3.250000] Initializing USB Mass Storage driver…
[ 3.260000] usbcore: registered new interface driver usb-storage
[ 3.260000] USB Mass Storage support registered.
[ 3.270000] usbcore: registered new interface driver usbserial
[ 3.270000] USB Serial support registered for generic
[ 3.280000] usbcore: registered new interface driver usbserial_generic
[ 3.290000] usbserial: USB Serial Driver core
[ 3.290000] USB Serial support registered for pl2303
[ 3.300000] usbcore: registered new interface driver pl2303
[ 3.300000] pl2303: Prolific PL2303 USB to serial adaptor driver
[ 3.310000] USB Serial support registered for TI USB 3410 1 port adapter
[ 3.320000] USB Serial support registered for TI USB 5052 2 port adapter
[ 3.320000] usbcore: registered new interface driver ti_usb_3410_5052
[ 3.330000] ti_usb_3410_5052: v0.10:TI USB 3410/5052 Serial Driver
[ 3.340000] Software Watchdog Timer: 0.07 initialized. soft_noboot=0 soft_margin=60 sec (nowayout= 0)
[ 3.340000] u32 classifier
[ 3.350000] input device check on
[ 3.350000] Actions configured
[ 3.350000] Netfilter messages via NETLINK v0.30 with ipset netlink.patch.
[ 3.360000] nf_conntrack version 0.5.0 (1933 buckets, 7732 max)
[ 3.370000] xt_time: kernel timezone is -0000
[ 3.370000] GRE over IPv4 demultiplexor driver
[ 3.380000] ip_tables: (C) 2000-2006 Netfilter Core Team, Type=Restricted Cone
[ 3.390000] TCP cubic registered
[ 3.390000] NET: Registered protocol family 10
[ 3.400000] NET: Registered protocol family 17
[ 3.400000] L2TP core driver, V2.0
[ 3.400000] PPPoL2TP kernel driver, V2.0
[ 3.410000] L2TP netlink interface
[ 3.410000] 802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
[ 3.420000] All bugs added by David S. Miller <davem@redhat.com>
[ 3.440000] Freeing unused kernel memory: 868k freed
[ 3.530000] Loading essential drivers…
[ 3.530000] Press Ctrl+C to enter RAMFS…
[ 4.550000] Check for USB recovery…
[ 4.580000] Bringup the system…
[ 4.590000] flag_boot_rootfs=1 mounting /dev/mtd11
[ 4.600000] UBI: attaching mtd11 to ubi0
[ 4.600000] UBI: physical eraseblock size: 131072 bytes (128 KiB)
[ 4.610000] UBI: logical eraseblock size: 126976 bytes
[ 4.610000] UBI: smallest flash I/O unit: 2048
[ 4.620000] UBI: VID header offset: 2048 (aligned 2048)
[ 4.620000] UBI: data offset: 4096
[ 4.780000] UBI: max. sequence number: 2
[ 4.790000] UBI: attached mtd11 to ubi0
[ 4.790000] UBI: MTD device name: «rootfs1»
[ 4.800000] UBI: MTD device size: 32 MiB
[ 4.800000] UBI: number of good PEBs: 256
[ 4.810000] UBI: number of bad PEBs: 0
[ 4.810000] UBI: max. allowed volumes: 128
[ 4.820000] UBI: wear-leveling threshold: 4096
[ 4.820000] UBI: number of internal volumes: 1
[ 4.830000] UBI: number of user volumes: 1
[ 4.830000] UBI: available PEBs: 0
[ 4.840000] UBI: total number of reserved PEBs: 256
[ 4.840000] UBI: number of PEBs reserved for bad PEB handling: 4
[ 4.850000] UBI: max/mean erase counter: 2/1
[ 4.850000] UBI: image sequence number: 1481461889
[ 4.860000] UBI: background thread «ubi_bgt0d» started, PID 80
UBI device number 0, total 256 LEBs (32505856 bytes, 31.0 MiB), available 0 LEBs (0 bytes), LEB size 126976 bytes (124.0 KiB)
[ 4.950000] UBIFS: mounted UBI device 0, volume 0, name «system»
[ 4.950000] UBIFS: mounted read-only
[ 4.960000] UBIFS: file system size: 30093312 bytes (29388 KiB, 28 MiB, 237 LEBs)
[ 4.960000] UBIFS: journal size: 9023488 bytes (8812 KiB, 8 MiB, 72 LEBs)
[ 4.970000] UBIFS: media format: w4/r0 (latest is w4/r0)
[ 4.980000] UBIFS: default compressor: zlib
[ 4.980000] UBIFS: reserved for root: 0 bytes (0 KiB)
config core ‘version’
# ROM ver
option ROM ‘2.11.20’
# channel
option CHANNEL ‘stable’
# hardware platform R1AC or R1N etc.
option HARDWARE ‘R3’
# CFE ver
option UBOOT ‘1.0.2’
# Linux Kernel ver
option LINUX ‘0.1.12’
# RAMFS ver
option RAMFS ‘0.1.12’
# SQUASHFS ver
option SQAFS ‘0.1.12’
# ROOTFS ver
option ROOTFS ‘0.1.12’
#build time
option BUILDTIME ‘Fri, 15 Apr 2016 17:43:41 +0800’
#build timestamp
option BUILDTS ‘1460713422’
#build git tag
option GTAG ‘commit dec2379967c2b44760bc6bab36c584cf58e06ae4’
mount: mounting proc on /proc failed: Device or resource busy
mount: mounting sysfs on /sys failed: Device or resource busy
[ 5.760000] Raeth v3.0 (Tasklet,SkbRecycle)
[ 5.760000]
[ 5.760000] phy_tx_ring = 0x07ef6000, tx_ring = 0xa7ef6000
[ 5.760000]
[ 5.760000] phy_rx_ring0 = 0x07ef7000, rx_ring0 = 0xa7ef7000
[ 5.760000] SMACCR1 — : 0x000034ce
[ 5.760000] SMACCR0 — : 0x004b3cc1
[ 5.790000] ESW: Link Status Changed — Port4 Link UP
[ 5.790000] CDMA_CSG_CFG = 81000000
[ 5.790000] GDMA1_FWD_CFG = 20710000
— preinit —
Fri Apr 15 17:59:34 UTC 2016
— regular preinit —
[ 5.950000] UBI: attaching mtd12 to ubi1
[ 5.960000] UBI: physical eraseblock size: 131072 bytes (128 KiB)
[ 5.960000] UBI: logical eraseblock size: 126976 bytes
[ 5.970000] UBI: smallest flash I/O unit: 2048
[ 5.970000] UBI: VID header offset: 2048 (aligned 2048)
[ 5.980000] UBI: data offset: 4096
[ 6.230000] UBI: max. sequence number: 586
[ 6.240000] UBI: attached mtd12 to ubi1
[ 6.250000] UBI: MTD device name: «overlay»
[ 6.250000] UBI: MTD device size: 54 MiB
[ 6.260000] UBI: number of good PEBs: 432
[ 6.260000] UBI: number of bad PEBs: 0
[ 6.270000] UBI: max. allowed volumes: 128
[ 6.270000] UBI: wear-leveling threshold: 4096
[ 6.280000] UBI: number of internal volumes: 1
[ 6.280000] UBI: number of user volumes: 1
[ 6.290000] UBI: available PEBs: 0
[ 6.290000] UBI: total number of reserved PEBs: 432
[ 6.300000] UBI: number of PEBs reserved for bad PEB handling: 8
[ 6.300000] UBI: max/mean erase counter: 2/1
[ 6.310000] UBI: image sequence number: 520187673
[ 6.310000] UBI: background thread «ubi_bgt1d» started, PID 149
UBI device number 1, total 432 LEBs (54853632 bytes, 52.3 MiB), available 0 LEBs (0 bytes), LEB size 126976 bytes (124.0 KiB)
[ 6.360000] UBIFS: recovery needed
[ 6.420000] UBIFS: recovery completed
[ 6.420000] UBIFS: mounted UBI device 1, volume 0, name «data»
[ 6.430000] UBIFS: file system size: 52187136 bytes (50964 KiB, 49 MiB, 411 LEBs)
[ 6.440000] UBIFS: journal size: 2666496 bytes (2604 KiB, 2 MiB, 21 LEBs)
[ 6.440000] UBIFS: media format: w4/r0 (latest is w4/r0)
[ 6.450000] UBIFS: default compressor: lzo
[ 6.450000] UBIFS: reserved for root: 2464926 bytes (2407 KiB)
/lib/preinit.sh: line 1: jffs2_not_mounted: not found
— init —
[ 7.080000] ra2880stop()…Done
[ 7.100000] Free TX/RX Ring Memory!
init started: BusyBox v1.19.4 (2016-04-15 17:38:14 CST)
Please press Enter to activate this console. rcS S boot: INFO: rc script run time limit to 65 seconds.
[ 8.040000] tntfs: module license ‘Commercial. For support email ntfs-support@tuxera.com.’ taints kernel.
[ 8.050000] Disabling lock debugging due to kernel taint
[ 8.090000] Tuxera NTFS driver 3015.1.29 [Flags: R/W MODULE].
[ 8.190000] Tuxera FAT 12/16/32 driver version 3014.1.24 [Flags: R/W MODULE].
[ 8.250000] tun: Universal TUN/TAP device driver, 1.6
[ 8.260000] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
[ 8.280000] Mirror/redirect action on
[ 8.550000] GRE over IPv4 tunneling driver
[ 8.780000] ipt: xt_cgroup_MARK installed ok.
[ 8.850000] ip_set: protocol 6
[ 9.140000] sstack_init
[ 10.430000] <— RTMPAllocTxRxRingMemory, Status=0
[ 10.440000] <— RTMPAllocAdapterBlock, Status=0
[ 11.980000] <— RTMPAllocTxRxRingMemory, Status=0
[ 12.000000] <— RTMPAllocAdapterBlock, Status=0
[ 12.000000] pAd->CSRBaseAddress =0xc1180000, csr_addr=0xc1180000!
[ 12.010000] <dbg> MAC_CSR0=1986146304, RtmpChipOpsHook
[ 12.020000] <dbg> dev idx = 1!
[ 12.020000] <dbg> get_dev_config_idx pAd->MACVersion = 76623000, pAd->ChipID = 76120044
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: INFO: loading exist /etc/config/network.
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: config interface ‘loopback’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option ifname ‘lo’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option proto ‘static’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option ipaddr ‘127.0.0.1’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option netmask ‘255.0.0.0’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: config interface ‘lan’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option ifname ‘eth0.1’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option type ‘bridge’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option proto ‘static’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option ipaddr ‘192.168.31.1’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option netmask ‘255.255.255.0’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: config interface ‘wan’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option ifname ‘eth0.2’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option proto ‘dhcp’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: config interface ‘ifb’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option ifname ‘ifb0’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: config interface ‘ready’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option proto ‘static’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option ipaddr ‘169.254.29.1’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option netmask ‘255.255.255.0’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: config interface ‘guest’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option ifname ‘eth0.3’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option type ‘bridge’
Sat Apr 16 01:59:40 CST 2016 netconfig[405]: option proto ‘static’
Sat Apr 16 01:59:41 CST 2016 netconfig[405]: option ipaddr ‘192.168.32.1’
Sat Apr 16 01:59:41 CST 2016 netconfig[405]: option netmask ‘255.255.255.0’
[ 14.540000] Raeth v3.0 (Tasklet,SkbRecycle)
[ 14.550000]
[ 14.550000] phy_tx_ring = 0x061ed000, tx_ring = 0xa61ed000
[ 14.550000]
[ 14.550000] phy_rx_ring0 = 0x07f78000, rx_ring0 = 0xa7f78000
[ 14.550000] SMACCR1 — : 0x000034ce
[ 14.550000] SMACCR0 — : 0x004b3cc1
[ 14.570000] CDMA_CSG_CFG = 81000000
[ 14.580000] GDMA1_FWD_CFG = 20710000
[ 14.640000] device eth0.3 entered promiscuous mode
[ 14.640000] device eth0 entered promiscuous mode
[ 14.660000] br-guest: port 1(eth0.3) entering learning state
[ 14.660000] br-guest: port 1(eth0.3) entering learning state
[ 14.690000] device eth0.1 entered promiscuous mode
[ 14.730000] br-lan: port 1(eth0.1) entering learning state
[ 14.730000] br-lan: port 1(eth0.1) entering learning state
[ 15.400000] <dbg> MAC_CSR0=1986146304, rtmp_asic_top_init
[ 15.550000] Set_Bsd_Proc 7412 Bsd 0
[ 16.660000] br-guest: port 1(eth0.3) entering forwarding state
[ 16.730000] br-lan: port 1(eth0.1) entering forwarding state
[ 19.460000] <==== rt28xx_init, Status=0
[ 24.950000] device wl0 entered promiscuous mode
[ 24.960000] br-lan: port 2(wl0) entering learning state
[ 24.960000] br-lan: port 2(wl0) entering learning state
[ 25.540000] Set_Bsd_Proc 7083 Bsd 0
[ 26.960000] br-lan: port 2(wl0) entering forwarding state
[ 28.930000] <==== rt28xx_init, Status=0
[ 28.940000] 0x1300 = 00064320
[ 33.620000] device wl1 entered promiscuous mode
[ 33.630000] br-lan: port 3(wl1) entering learning state
[ 33.630000] br-lan: port 3(wl1) entering learning state
[ 35.630000] br-lan: port 3(wl1) entering forwarding state
[ 39.850000] device wl3 entered promiscuous mode
[ 39.850000] br-guest: port 2(wl3) entering learning state
[ 39.860000] br-guest: port 2(wl3) entering learning state
rcS S calling: /etc/rc.d/S20network boot: WARNING: EXITCODE=0, execute too slow, 28 >= 15: /etc/rc.d/S20network boot
[ 41.860000] br-guest: port 2(wl3) entering forwarding state
Sat Apr 16 02:00:18 CST 2016 boot_check[5080]: INFO: Wireless OK
[ 65.030000] Enabling Ralink HW NAT Module …
[ 65.040000] Ralink HW NAT Module Enabled!
[ 68.480000] tcpproxy_init, succeed!
[ 73.250000] xqfp: forward hooks init success!
[ 73.250000] xqfp:pre hooks init success!
[ 73.260000] xqfp:extend init success!
[ 73.260000] xqfp: module init success!
rcS S boot: INFO: rcS S boot timing 62 seconds.
Sat Apr 16 02:00:42 CST 2016 INFO: rcS S boot timing 62 seconds.
rcS S boot: system type(R3/2): SQUASH/3
Sat Apr 16 02:00:42 CST 2016 system type(R3/2): SQUASH/3
rcS S boot: ROOTFS: ubi0_0 on / type ubifs (ro,noatime,bulk_read,no_chk_data_crc,compr=zlib)
Sat Apr 16 02:00:42 CST 2016 ROOTFS: ubi0_0 on / type ubifs (ro,noatime,bulk_read,no_chk_data_crc,compr=zlib)
mknod: /dev/gpio: File exists
Sat Apr 16 02:00:43 CST 2016 boot_check[7406]: Booting up finished.
Рекомендуется провести даунгрейд до http://bigota.miwifi.com/xiaoqiang/rom/r3/miwifi_r3_all_55ac7_2.11.20.bin (for this & a presumption that you understand the STOK bit otherwise read from miwifi_mini)
ШАГИ
* http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/web/home#router * http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/xqnetwork/set_wifi_ap?ssid=Xiaomi&encryption=NONE&enctype=NONE&channel=1%3Bnvram%20set%20ssh%5Fen%3D1%3B%20nvram%20commit * http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/xqnetwork/set_wifi_ap?ssid=Xiaomi&encryption=NONE&enctype=NONE&channel=1%3Bsed%20%2Di%20%22%3Ax%3AN%3As%2Fif%20%5C%5B%2E%2A%5C%3B%20then%5Cn%2E%2Areturn%200%5Cn%2E%2Afi%2F%23tb%2F%3Bb%20x%22%20%2Fetc%2Finit.d%2Fdropbear * http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/xqnetwork/set_wifi_ap?ssid=Xiaomi&encryption=NONE&enctype=NONE&channel=1%3B%2Fetc%2Finit.d%2Fdropbear%20start * http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/xqsystem/set_name_password?oldPwd=<OLD_PASSWORD>&newPwd=<NEW_PASSWORD>
Теперь у вас должен быть доступ по ssh:
ssh root@192.168.31.1
Теперь можно «ре-активировать» COM-порт (необходима перезагрузка):
nvram set uart_en=1 nvram set flag_last_success=1 nvram set boot_wait=on nvram commit
Инструкция: https://4pda.ru/forum/index.php?showtopic=736801&st=19100#entry68306060
Как прошить PandoraBox OpenWrt
Все необходимые файлы загружены сюда https://mega.nz/#F!WY0FiTIS!Cl_Dzm4yhzrQZFazYG3i8Q
Для будущих обновлений прошивок / bootloader(загрузчиков) https://downloads.pangubox.com or http://downloads.pangubox.cn
Инструкция по прошивке
-
получаем ssh/dropbear доступ по инструкции выше
-
скачиваем pandorabox bootloader и скидываем / делаем wget в папку /tmp на устройстве
-
что мы делаем в ssh:
cd /tmp mtd write pb-boot-xiaomi3-20180726-0d8505f.img Bootloader reboot
(если по вышеуказанной ссылке вы найдёте другой(обновленный) bootloader, используйте его)
-
подождите 4-5 минут после ребута
-
отключаем роутер по питанию, удерживаем кнопку RESET, затем включаем роутер и отпускаем кнопку через 2~3 секунды, роутер будет медленно мигать жёлтым индикатором
-
заходим на 192.168.1.1*, мы увидим страницу обновления прошивки PandoraBox. Выбираем нашу прошивку pandorabox (*-sysupgrade.bin) и загружаем её.
-
доступ к PandoraBox OpenWrt через 192.168.1.1*, стандартный пароль “admin”. Здесь можно сменить язык прошивки на автоматический или выбрать свой вручную.
Возврат на стоковую(оригинальную) прошивку
* ВНИМАНИЕ! АВТОР ПЕРЕВОДА НЕ СОВЕТУЕТ ПОЛЬЗОВАТЬСЯ ДАННЫМ МЕТОДОМ. В ДАННОМ СЛУЧАЕ ЕСТЬ ВОЗМОЖНОСТЬ ПРЕВРАТИТЬ РОУТЕР В КИРПИЧ
Для начала надо прошить наш bootloader и kernel0 обратно в изначальное состояние. Но тут имеется подвох, раздел bootloader(загрузчика) заблокирован в прошивке pandorabox и любой другой нормальной прошивке OpenWrt. Хорошие новости в том, что я скомпилировал прошивку OpenWrt с разблокированным разделом bootloader для MI-R3. Вы найдёте её по ссылке указанной выше (mega).
-
заходим на страницу обновления прошивки pandorabox как и в прошлый раз(see 5,6 above)
-
логинимся на url 192.168.1.1, без пароля — просто нажимаем LOGIN, устанавливаем пароль и активируем ssh (вы можете использовать эту прошивку как «ванильную» OpenWrt)
-
переносим / делаем wget необходимых файлов (Bootloader.bin & kernel0.bin) в папку /tmp на устройстве
-
что делаем в ssh:
cd /tmp mtd write Bootloader.bin Bootloader mtd write kernel0.bin kernel0_rsvd reboot
-
снова подключаемся по ssh
fw_setenv flag_try_sys2_failed 1 reboot
-
вскоре после ребута роутер начнёт мигать красным индикатором (это означает, что устройство находится в recovery mode)
-
форматируем любую флешку под fat32, загружаем на неё стоковую прошивку и переименовываем файл в « miwifi.bin »
-
зажимаем кнопку RESET на 1~2 сек пока мигание индикатора красным светом не превратиться в мигание жёлтым
-
ждём 4-5min, и теперь роутер доступен по адресу 192.168.31.1
Оригинальный пост находится здесь https://forum.openwrt.org/t/xiaomi-mi-wifi-3-support/2252/685
Если ваш MI-R3 превратился в “кирпич”, но всё еще остался доступ для записи в COM-порт, то у вас есть возможность восстановить его из этого состояния.
-
Отключите роутер по питанию, если он был ранее включён
-
Сохраните kernel0.bin со ссылки here на TFTP сервер (Автор самого поста использовал solarwinds для windows 10, переместил kernel0.bin в папку C:\TFTP-Root\)
-
Запускаем Solaris TFTP Server
-
Переименованную прошивку 2.11.20 в firmware.bin (DEV rom Xiaomi) и помещаем флешку форматированную под FAT32 и подключаем её к роутеру
-
Подключаем чип CP2102 к плате: GND к GND / TX к RX / RX к TX — перекрестно, затем подключаем шнур питания к роутеру.
-
Во время загрузки роутера выбираем опцию 1 “Load system code to SDRAM via TFTP.”
-
Выбираем IP для роутера и вводим IP-адрес TFTP сервера
-
Введите имя файла ( kernel0.bin )
-
Дождитесь перезагрузки роутера
-
Когда вы увидите на экране что-то подобное следующему, зажмите кнопку RESET до тех пор пока LED не загорится жёлтым, через некоторое время роутер сам вернётся на сток:
[ 4.550000] Check for USB recovery... [ 4.580000] Both systems are corrupted... Entering recovery mode starting pid 81, tty '': '/etc/rcS' Press reset button to enter USB recovery
-
В момент когда красный индикатор замигает зажмите кнопку RESET на 3 секунду и отпустите, свет индикатора сменится на оранжевый
-
Дождитесь автоматической загрузки прошивки
-
Продолжить в терминале putty
-
Нажмите Enter для входа в root@XiaoQiang:/#
Видео: Xiaomi Mi WiFi 3 Router Unboxing and Teardown

Unfortunately, due to Xiaomi’s restrictive bootloader which locks you out from the serial console (!) after first boot, if you totally brick every OS and Kernel partition on this device without enabling the serial console, and the bootloader doesn’t pick up the recovery image off a thumb drive, there’s no easy way to get the device back up and running again.
However, it is possible to install an easily-programmable SPI flash module to bring your router back to life, by way of the SOIC-8 sized pad in the middle of the PCB, and a few configuration jumpers.
The location of the pads should be fairly obvious (marked FN1 FN2), and there is a silkscreened white dot on the PCB to indicate the proper direction to install the SPI chip.
Make sure you install a compatible bootloader on the SPI chip (such as the Xiaomi Mini version of the WRTNode or Breed bootloader, others may work but have not been tested)
The MT7620A SoC used in the Xiaomi Router 3 uses hardware straps to encode a binary number, determining what device to boot from, as in the datasheet:
| Straps | Configuration | Description |
|---|---|---|
| SPI_MOSI, SPI_CLK, TXD2, GPIO0 | CHIP_MODE[3:0] | A vector to set chip function/test/debug modes. In non test/debug operation, 1: Normal mode (boot from ROM+NAND flash 4 cycle address/2 KB page size) 2: Normal mode (boot from SPI 3-byte Addr) 3: Normal mode (boot from SPI 4-byte Addr) |
By default, the Xiaomi Router 3 has the four straps configured as follows:
SPI_MOSI (R135) - 0 (tied to ground) SPI_CLK (R127) - 0 (tied to ground) TXD2 (R139) - 0 (tied to ground) GPIO0 (R124) - 1 (pulled up via 4.7kO resistor)
To boot the router from an installed SPI flash chip, two modifications need to be performed:
-
Move the 4.7kO resistor, or short with a solder bridge, R139 to the adjacent R137 pads. This sets TXD2 to 1.
-
Move the 4.7kO resistor, or short with a solder bridge, R124 to the adjacent R126 pads. This sets GPIO0 to 0.
The router’s new boot configuration should be 0010 (binary 2), and should a compatible bootloader be installed on the SPI chip it should boot right up.
If you have installed a 16MB SPI chip, the Xiaomi Mini firmware images should be compatible out of the box. Should you install a smaller or larger capacity chip, you may have to adjust the Device Tree definition for your device at target/linux/ramips/dts/MIWIFI-MINI.dts and recompile your kernel from source.
Роутер Xiaomi 4a — это недорогое и популярное устройство, которое обеспечивает беспроводное подключение к Интернету. Однако, оригинальная прошивка у роутера может быть ограничена в функциональности. Установка OpenWrt, прошивки с открытым исходным кодом, может значительно расширить возможности роутера. В этой статье мы рассмотрим подробный гайд о том, как установить OpenWrt на роутер Xiaomi 4a.
Шаг 1: Подготовка
Перед установкой OpenWrt необходимо выполнить некоторые предварительные действия:
- Убедитесь, что у вас есть доступ к роутеру Xiaomi 4a.
- Скачайте последнюю версию прошивки OpenWrt для роутера Xiaomi 4a с официального сайта OpenWrt.
- Обновите оригинальную прошивку роутера до последней доступной версии.
Шаг 2: Подключение к роутеру
- Подключите компьютер к роутеру с помощью Ethernet-кабеля.
- Откройте веб-браузер и введите IP-адрес роутера Xiaomi 4a (обычно 192.168.31.1) в адресную строку.
- Введите имя пользователя и пароль для входа в веб-интерфейс роутера Xiaomi 4a. По умолчанию они «admin».
Шаг 3: Установка прошивки OpenWrt
- В веб-интерфейсе роутера найдите раздел, отвечающий за обновление прошивки (обычно он называется «System» или «Настройки»).
- Выберите опцию «Обновить прошивку» или «Обновление firmware».
- Найдите загруженный файл прошивки OpenWrt на вашем компьютере и загрузите его на роутер Xiaomi 4a.
- Дождитесь завершения процесса установки прошивки.
- После завершения установки, произойдет автоматическая перезагрузка роутера.
Шаг 4: Первоначальная настройка OpenWrt
- После перезагрузки, подключитесь к роутеру Xiaomi 4a с помощью Ethernet-кабеля или беспроводного подключения.
- Откройте веб-браузер и введите IP-адрес роутера Xiaomi 4a (обычно 192.168.1.1) в адресной строке.
- Введите имя пользователя и пароль для входа в веб-интерфейс OpenWrt (по умолчанию они оба «root»).
- После успешного входа, вам будет предложено изменить пароль администратора. Рекомендуется изменить пароль для повышения безопасности.
- Произведите необходимые настройки, например, настройку сети или беспроводного подключения, в соответствии с вашими потребностями.
Шаг 5: Проверка работоспособности
- Проверьте подключение к Интернету, установив соединение с вашим провайдером Интернета.
- Протестируйте беспроводное подключение, подключив устройства к сети Wi-Fi, созданной роутером Xiaomi 4a с прошивкой OpenWrt.
Поздравляем! Теперь у вас установлена прошивка OpenWrt на роутер Xiaomi 4a. Вы можете наслаждаться расширенными возможностями и дополнительными функциями, предоставляемыми OpenWrt.
Установка OpenWRT и FreeRADIUS на роутер Xiaomi R3P [ Xiaomi Mi WiFi router Pro(r3p) ]
C настройкой WiFi WPA2-Enterprise с запущенными на роутере FreeRADIUS (для предоставления индивидуальных ключей WPA2-Enterprise), SQLite (для хранения этих ключей) и SQLite Web Admin (для удобного редактирования учётных записей пользователей)
Также вы можете установить OpenWRT на любой другой роутер и настроить WPA2-Enterprise по инструкциям с пункта: 5. Первая полноценная настройка прошивки и далее.
ОГЛАВЛЕНИЕ
1. Краткий обзор основных характеристик роутера
2. Первая настройка роутера
3. Подготовка роутера к установке кастомных прошивок
4. Установка кастомной прошивки
- 4.1. Переход от прошивки Xiaomi к базовой прошивке OpenWRT
- 4.2. Обновление ядра (или восстановление роутера из состояния кирпича)
- 4.3. Установка новой прошивки роутера
5. Первая полноценная настройка прошивки
6. Установка FreeRADIUS и поднятие WPA2-Enterprise
7. Установка и подключение SQLite и SQLite-web для контроля учётных записей пользователей
⚠️ Warning ⚠️
Прежде всего рекомендую ознакомиться с оглавлением, так как эту инструкцию могут читать разные люди: кто-то только купил роутер, кто-то уже удалил базовую прошивку, а кто-то уже «ОКИРПИЧИЛ» это чудо Китайского Роутеростроения 
P.S. Для тех, кто тут только за восстановлением кирпича (да, это сделать проще, чем кажется), вам сюда: 4.2. Восстановление роутера из состояния кирпича
Автор постарался написать инструкцию таким образом, чтобы смог разобраться даже ещё больший ламер, чем автор. несмотря на это автор открыт к критике, исправлению и модификации инструкций.
Вы делаете все описанные ниже действия на свой страх и риск. Автор не несёт ответственности за возможный выход вашего роутера из строя, а так же за прекращение поддержки базовых пакетов роутера (отсылка к тем, кто пытался нормально настроить freeradius, который не имеет обратной совместимости даже среди версий одного релиза). У Автора не было перебоев электропитания непосредственно во время прошивки роутера (не во время установки пакетов), но даже если они или любые критические поломки базовых пакетов случатся у вас, не переживайте, всегда можно прошить ядро заново через UART: 4.2. Восстановление роутера из состояния кирпича
1. Краткий обзор основных характеристик роутера
Характеристики роутера позволяют запускать на нём даже полноценные web сервисы:
| Параметр | Значение |
|---|---|
| Класс Wi-Fi | AC2600 |
| Максимальная скорость и стандарты 2.4 ГГц | 802.11 b/g/n, 800 Мбит/сек |
| Максимальная скорость и стандарты 5 ГГц | 802.11 AC/b/g/n, 1733 Мбит/сек |
| Скорость LAN порта | 1000 Мбит/сек |
| Центральный процессор | MT7621A MIPS Dual Core 880MHz (4 потока) |
| Встроенная память | 256M SLC Nand Flash |
| Оперативная память | 512MB DDR3-1200 |
| Процессор Wi-Fi | MediaTek MT7615E |
2. Первая настройка роутера
Если вы включаете роутер впервые, тогда он раздаст открытый WiFi с названием Xiaomi_XXXX_XXXX
Подключаетесь к этому WiFi и переходите по адресу 192.168.31.1
Автоматически откроется страница http://192.168.31.1/cgi-bin/luci/web/init/hello
Гугл переводчик переводит это как:
[текст] Пожалуйста, прочтите «Пользовательское лицензионное соглашение» и выберите, соглашаться ли
[галочка] Присоединяйтесь к «Программе улучшения взаимодействия с пользователем»
Лично я галочку снял
Нажимаем большую синюю кнопку и попадаем в меню первой настройки роутера
Или же, если в роутер не воткнут кабель с интернетом (перекинул на ноут, чтобы переводить китайский)
Выбираем верхний режим работы и попадаем в меню выше
Логично, что тут выбирается имя сети WiFi (SSID) и её пароль, тут я галочку не снял (отвечает за какие-то настройки firewall. нам всё равно прошивку стирать, так что не важно) и нажал большую синюю кнопку.
Тут выбирается пароль к админке этой прошивке. Если нажмёте галочку, тогда будет выбран тот же пароль, что и для WiFi. В чём разница между «Семья», «Компания» и «Подгоняет» я не понял, ну и не важно, пусть будет по умолчанию («Семья»), нам ещё не долго пользоваться этой прошивкой.
Снова нажимаем большую синюю кнопку.
Ждём загрузки роутера. На нём оранжевая лампочка сменится синей, когда всё завершится. Кстати, роутер ещё умеет мигать красным, если вы попытаетесь прошить его через USB такой прошивкой, которую он принципиально не может скушать.
Думаю, тут очевидно, куда нажимать. Только не забудьте подключиться к новой Wi-Fi сети )
Попадаем в такое меню. Здесь вводим пароль от роутера и нажимаем стрелочку. При первом входе роутер предложит провести некоторые настройки. Там есть синяя кнопка. НЕ НАЖИМАЙТЕ НА НЕЁ . Вместо этого нажмите на подчёркнутый текст под кнопкой. Это пропустит гайд по этой прошивке. Прокликайте по свободным местам, чтобы пройти навязанное введение в интерфейс прошивки. Всё, с этого момента можно приступать к настройке роутера для установки кастомных прошивок.
3. Подготовка роутера к установке кастомных прошивок
Часть инструкций в этой главе была взята с открытого источника: https://openwrt.org/toh/xiaomi/xiaomi_r3p_pro
Во-первых, загрузите Xiaomi «прошивку разработчика» с http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/r3p/miwifi_r3p_firmware_daddf_2.13.65.bin
Или воспользуйтесь его копией на github miwifi_r3p_firmware_daddf_2.13.65.bin, ведь его могут убрать из открытых источников.
Далее по кабелю подключаемся или WiFi к роутеру и переходим на http://192.168.31.1
Войдите в систему и найдите страницу, на которой вы можете обновить прошивку (найдите большую желтую точку с «i» внутри).
Здесь выбираете обновление прошивки вручную.
Вы увидите номер версии маршрутизатора, а внизу есть кнопка, где вы можете загрузить файл.
Загрузите miwifi_r3p_firmware_daddf_2.13.65.bin (прошивка для разработчиков), нажмите синюю кнопку и подождите несколько минут.
Далее будет предложено стереть все пользовательские настройки. Лично я поставил галочку и стёр. И вам рекомендую так поступить, ведь не известно, какие ещё новые прошивки будут устанавливаться в роутеры с завода, и как они будут совместимы с данными старой прошивки. Остаётся только ждать окончания прошивки — загорится синяя лампочка.
Запомните, что наша последующая задача — получить персональный (там пароли к ssh индивидуальные) upgrade роутера с ssh с сайта xiaomi.
Если вы впервые устанавливаете прошивку разработчика на роутер, тогда вам будет показано это окно. Если же этого окна нет, и вместо него идёт сразу окно с входом в админку, тогда ничего страшного, просто идём дальше по инструкции. Для настройки роутера вам потребуется специальное приложение. Установите приложение Android «Mi Wi-Fi» из https://play.google.com/store/apps/details?id=com.xiaomi.router на свой телефон / планшет (есть также приложение для iOS).
Откройте приложение «Mi Wi-Fi», затем войдите в свою учетную запись Xiaomi (Если у вас её нет, то сначала создайте на сайте https://www.mi.com/).
Маршрутизатор будет обнаружен и добавлен в вашу учетную запись (при условии, что вы подключены к WiFi роутера в режиме 2.4G, а порт WAN маршрутизатора подключен к Интернету). Нажимаем «Настроить роутер», в следующем меню выбираем пароль и настройка завершена.
На этом этапе лично у меня всегда зависает приложение, хотя я подключился к нужному WiFi, но да не важно, закрываем его, но не удаляем, оно нам ещё понадобится.
Обязательно подключаемся к нашему Wi-Fi и переходим в http://192.168.31.1
Нас там встретит уже знакомое меню с логином. Входим в админку, пропускаем лишнее знакомство с прошивкой уже НАЖАТИЕМ на синюю кнопку.
На ПК зайдите на сайт https://d.miwifi.com/rom/ssh и войдите в свою учетную запись Xiaomi. Вы попадете на страницу, на которой должны отображаться ваш роутер, пароль root и кнопка загрузки. Нажмите кнопку, чтобы получить miwifi_ssh.bin и сохранить пароль. (Если страница загрузки с перенаправлением http://d.miwifi.com/rom/ssh?userId=SOME_NUMBER не работает, попробуйте ввести «http://» вместо «https://» перед «d.miwifi.com» и наоборот)
Если новый роутер появился, тогда вы просто везунчик. Если же ваше везение на моём уровне, регистрация роутера не прошла успешно.
Открываем приложение «Mi Wi-Fi». Если вы войдёте в учётную запись Xiaomi, то вам будет доступен интерфейс, в верхней части которого будет выпадающее меню. Нажимаем на него, а потом нажимаем на «Добавить роутер». Снова подчеркну, что важно быть подключенным к нужному роутеру по WiFi в режиме 2.4G. Появится картинка с предложением «Выполнить сопряжение роутера». Соглашаемся. Нас попросят ввести пароль администратора. Если вы шли по моим инструкциям, то это тот же пароль к WiFi. После правильного спряжения роутер отобразится в списке ваших устройств, а сайт https://d.miwifi.com/rom/ssh выдаст в списке ваш роутер после всё тех же манипуляций с «https://».
Находим нужный роутер в списке и сохраняем куда-нибудь пароль от пользователя root — те 8 символов после слова root и иероглифов. После чего нажимаем на соответствующую кнопку справа.
Принимаем соглашение, которое было переведено специально для вас. И должно начаться скачивание… Ага, должно. Придётся снова посвапать «http://» и «https://» и загрузка начнётся. Результатом будет файл: miwifi_ssh.bin
На этом этапе вам понадобится флешка с файловой системой FAT32 (ЭТО ВАЖНО!). Если у вас такой нет, тогда форматните какую-нибудь флешку в этом формате. Не мне вам рассказывать, что при форматировании файлы стираются, поэтому сделайте их резервную копию на компьютере, если они вам нужны. Если вы пользователь windows 10, тогда вам могут понадобится отдельные программы для форматирования разделов. Лично я воспользовался программой guiformat, но за неё не ручаюсь, поэтому можете скачать любую на свой выбор.
После чего нужно скопировать файл miwifi_ssh.bin в корень флешки (на этой флешке не должно быть папок, только один этот файл).
Отключите питание маршрутизатора, вставьте USB-накопитель в маршрутизатор, нажмите и удерживайте кнопку сброса (рекомендуется со скрепкой, хотя лично я использовал иголку и шило), включите маршрутизатор (удерживая перезагрузку). Когда маршрутизатор начнет мигать желтым (пройдёт секунд 10-12), отпустите кнопку сброса. Подождите, пока маршрутизатор не перезагрузится, и у вас (наконец…) не будет доступа по SSH.
Далее необходимо либо по кабелю, либо по WiFi подключиться к роутеру.
Проверить наличие доступа в windows 10 (и в популярных дистрибутивах linux) можно очень просто, там из коробки идёт ssh client. Если у вас другая версия Windows без ssh клиента, поставьте его отдельно.
Пишем:
ssh root@192.168.31.1
После чего у нас попросят пароль. Вводим тот самый пароль, что мы записывали и мы в роутере, готовы ставить прошивки.
Если же вы увидели нечто подобное (Windows 10), вам нужно удалить все предыдущие сессии из файла:
C:\Users\{YOUR_USERNAME}\.ssh\known_hosts
После чего вы можете прописать ssh root@192.168.31.1 и увидеть успешный вход в систему.
С этого момента начинается не самая безопасная зона. Да, в этой прошивке от xiaomi нет ничего опасного, но у вас уже буквально есть возможность стереть ядро. Если же вы каким-то образом умудрились всё сломать на этой прошивке, тогда вам поможет пункт 4.1
4. Установка кастомной прошивки
4.1. Переход от прошивки Xiaomi к базовой прошивке OpenWRT
Вытаскиваем флешку из роутера, она нам понадобится.
Для тех, кто начал читать с этого момента — она должна быть формата FAT32 (ЭТО ВАЖНО!)
Скачиваем прошивку OpenWRT: openwrt-ramips-mt7621-xiaomi_mir3p-squashfs-factory.bin
Далее копируем файл в корень нашей флешки так, чтобы на флешке остался только он. Xiaomi там создаст кучу файлов, просто удалите их и скопируйте файл.
Вставляем флешку в роутер. И в консоли ssh root@192.168.31.1 пишем (команды лучше вводить по очереди, чтобы не было проблем -ash):
cd /extdisks/sd* — может отличаться, если вы вытащите и вставите флешку, но cd* должно перейти в любую версию.
mv openwrt-ramips-mt7621-xiaomi_mir3p-squashfs-factory.bin factory.bin — сокращаем имя файла прошивки.
nvram set flag_try_sys1_failed=1
nvram set flag_try_sys2_failed=0
nvram set flag_boot_success=0
nvram commit
dd if=factory.bin bs=1M count=4 | mtd write - kernel1
mtd erase rootfs0
mtd erase rootfs1
mtd erase overlay
dd if=factory.bin bs=1M skip=4 | mtd write - rootfs0
reboot
После этих команд адрес роутера должен измениться с 192.168.31.1 на 192.168.1.1 и команда ssh будет выглядеть ssh root@192.168.1.1
Что интересно, по умолчанию он для пользователя root отсутствует, установить его можно в web gui или через passwd root внутри консоли ssh, но если открыть адрес 192.168.1.1 в браузере, ничего не произойдёт, ведь не установлен пакет web gui.
Если же вы увидели нечто подобное при попытке подключиться по ssh (Windows 10), вам нужно удалить все предыдущие сессии из файла:
C:\Users\{YOUR_USERNAME}\.ssh\known_hosts
После чего вы можете прописать ssh root@192.168.1.1 и увидеть успешный вход в систему.
Далее устанавливаем web gui, чтобы можно было продолжить работу в нём.
opkg update
opkg install luci
4.2. Обновление ядра (или восстановление роутера из состояния кирпича)
Этот пункт является обязательным для всех. Если у вас не подходящая версия ядра, тогда sysupgrade из 4.3 приведёт только к неработоспособности роутера как роутер (WiFi раздаёт, но интернет не видит, а также не работает web gui и ssh).
Важно отметить, что гарантия на роутер теряется уже после разборки роутера, для проверки этого на нём предусмотрен один болт с наклейкой.
Конечно можно полностью разобрать корпус, выкрутив из под прорезиненных ножек 4 болта,
Выковыряв ножом с боков пластиковые вставки,
И достать плату роутера (с огромным радиатором)…
Но зачем нам все эти сложности, ведь нам нужен только доступ к UART разъёму?
Просто отключаем роутер от питания, аккуратно ножом поддеваем правую пластиковую стенку,
Теперь у нас есть доступ к разъёму. Можно даже к нему подпаять провода, нам нужны RX, TX и GND. Питание на 3.3 v не трогаем.
Но я не хочу паять плату, поэтому просто подсоединю кабель к роутеру и к UART-Serial конвертору, но вам рекомендую припаять.
Напряжение TX и RX должно быть 3.3 вольта (ЭТО ВАЖНО!)
Вам потребуется терминал для Serial порта. На linux это делается одной командой, но пользователи Windows могут скачать putty с официального сайта или же по ссылке на моём гите: putty
Запускаем приложение. Выбираем слева снизу «Serial», далее настраиваем всё, как на картинке. COM порт выбираем согласно вашему конвертору.
Его можно найти в диспетчере устройств.
Если у вас запускается приложение на windows, но при подключение оно просто выдаёт звук и ничего не делает (у меня такое случалось), тогда перейдите в директорию с распакованным putty.exe и выполните:
.\putty.exe -serial COM4 -sercfg "115200,8,n,1," — только введите ваш COM порт вместо COM4.
Откроется окно последовательного порта. После чего подаём питание на роутер и вылавливаем момент, когда появится меню «Please choose the operation»
Тут нажимаем 2 в окне с последовательным портом. Далее выполняем то, что систему запрашивает. IP адреса рекомендую не менять, а имя файла нужно ввести своё (далее будет обозначено) и НЕ нажимать ввод. Сначала нужно подключиться по ethernet кабелю к роутеру на поднять DHCP.
Для этого нужно открыть «Сетевые подключения», найти ваш проводной адаптер. Правая кнопка мыши, его свойства…
Там нужно выбрать пункт «IP версии 4…», его свойства, а далее выбрать «Использовать следующий IP-адрес» и настроить всё, как в образце. После чего покликать по кнопкам «ОК». Поздравляю, у вас DHCP и ваш новый адрес 192.168.1.3, а адрес роутера остался 192.168.1.1.
Прошивка ядра осуществляется через TFTP. Программа для поднятия TFTP сервера
Для начала нам нужен файл ядра openwrt-ramips-mt7621-xiaomi_mir3p-initramfs-kernel.bin
Сохраняем этот файл в удобное место, например, «C:\router». Для удобства я переименую файл «openwrt-ramips-mt7621-xiaomi_mir3p-initramfs-kernel.bin» в «linux.bin». Это то самое ядро, которое у нас просит сейчас роутер.
Выключаем Wi-Fi и оставляем только одно подключение — по тому кабелю с DHCP. Настраиваем путь к нашей папке «C:\router», выбираем нужный «Server interface» — должен быть нашим IP в собственном DHCP. Программа TFTP сервера запущена автоматически.
Переходим в окно последовательного порта и проверяем данные. Если адреса и имя верные, нажимаем Enter и начнётся процесс загрузки.
Если процесс загрузки идёт хорошо, вы увидите такую картину. Мне удалось прошить ядро без разбора корпуса и пайки.
Кстати, не забудьте выключить DHCP, для этого перейдите в уже знакомое меню «Сетевые подключения» и смените режим работы на «Получать IP-адрес автоматически».
Вместе с этим ядром идёт несколько базовых пакетов, но это далеко не конечная прошивка. Далее требуется скачать файл с обновлением для этого ядра. Он настроит файловую систему. openwrt-ramips-mt7621-xiaomi_mir3p-squashfs-sysupgrade.bin
Проходим процесс авторизации без пароля (просто нажимаем «Войти») и быстро переходим в «System» -> «Backup / Flash Firmware» -> Выбираете файл (выбираем наш openwrt-ramips-mt7621-xiaomi_mir3p-squashfs-sysupgrade.bin) -> «Flash image…», НЕ снимая галочку с «Keep settings», это важно.
Откровенно говоря, эта прошивка нам нужна только для того, чтобы были смонтированы правильно системные разделы. Иначе места для установки даже базовых пакетов для конфигурации разделов буквально не будет (ставить будет некуда), а в комплекте такие приложения не идут.
В этом меню нажимаем «Proceed» и процесс загрузки начнётся. Через минуту у вас будет вполне рабочая конфигурация роутера на OpenWRT с проблемным WiFi и протоколами безопасности. Далее требуется пропатчить сборку кастомной прошивкой в пункте 4.3.
4.3. Установка новой прошивки роутера
Данная прошивка взята с комментария на 4pda: https://4pda.ru/forum/index.php?showtopic=810698&st=5440#entry92890464
В ней настроено и сконфигурировано всё для функционирования драйверов для wifi, а также расширенных протоколов безопасности.
Ссылка на клон на гите: OpenWRT-19.07.1-MiR3P-sysupgrade.bin
Скачиваем и обновляемся. Для этого входим в роутер 192.168.1.1 и логинимся (по умолчанию пароль пустой)
Переходим «System» -> «Backup / Flash Firmware»
После этого нажимаем «Flash image…»
Далее нажимаем «Browse…», выбираем файл «OpenWRT-19.07.1-MiR3P-sysupgrade.bin» и нажимаем Upload, снимая галочку с «Keep settings», это важно. Мы хотим сконфигурированную систему с интернетом на наших разделах файловой системы.
После загрузки получаем предупреждение о версии: «xiaomi,mir3p» != «xiaomi,mir-3p». Фактически же это один и тот же роутер, так что нажимаем галочку на «Force upgrade», повторно загружаем файл и нажимаем «Continue», а в следующем меню «Proceed».
Важно, чтобы сейчас у вас не отключили свет, ведь иначе вам потребуется сначала пройти пункт 4.2, а потом пройти 4.3 сначала. Процесс загрузки может занять продолжительное время.
После завершения загрузки, вам будет доступен web gui, ssh и ещё много пакетов. Уже на этом этапе можно закончить, ведь WiFi работает, а протоколы безопасности установлены, а файловая система настроена, но зачем нам на таком крутом роутере какой-то там WPA2-PSK, если, помимо WPA3, мы можем поднять настоящий шедевр безопасности — WPA2-Enterprise.
Важно добавить, что иногда на этом этапе случается ошибка с сетью, из-за которой интернет не работает через кабель. Для её решения просто перезагрузите роутер, больше такая ошибка не возникнет.
P.S. пароль от пользователя root в той прошивке — «1234567890»
5. Первая полноценная настройка прошивки
Эх, люблю этот интерфейс 
Входим в систему, пароль по умолчанию — «1234567890» (без кавычек). И нам лучше сразу поменять пароль на удобный нам. Для этого переходим в «Система» -> «Управление» -> «Пароль маршрутизатора»
Там всё просто — устанавливаем пароль от роутера на свой вкус важно, что это не пароль от WiFi. Это пароль от пользователя root и от админки на роутере
Теперь можно поменять имя машины роутера. Рекомендую выбрать имя, совпадающее с именем WiFi.
Далее настраиваем DHCP, чтобы не возникало проблем с перенаправлением при длительном стриминге данных.
Сначала с этим расширим область выделяемых адресов, меняя маску подсети на 255.0.0.0 и применяем («Сохранить и применить…»).
Аренду начинаем с «192.0.0.0», а заканчиваем «256^3», что равно «16777216». Время аренды ставим на «infinite». Снова применяем настройки («Сохранить и применить…»).
Адрес роутера менять с «192.168.1.1» не рекомендуется, так как из-за этого сеть (конкретно интернет, а не локалка) отваливается у смартфонов samsung точно, может, вообще у всех смартфонов тоже.
После чего выключаем Adblock. И, да, в этот роутер встроен Adblock, KMS сервер, NAS и многое другое. Проблема в том, что Adblock может порезать скорость общения с сетью, хотя и работает просто прекрасно, скрывает рекламу, а сайты думают, что Adblock не установлен, и не выкидывают просьбу его отключить. Отключается он достаточно просто. В выключенном состоянии на кнопке должно быть написано «Включить«.
Только после отключения требуется перезагрузить роутер и убедиться, что статус «Состояние Adblock» будет пустым. Почему-то просто так сервис не хочет выключаться.
Далее нам нужно настроить конфигурацию WiFi, заодно и проверим, как работает WiFi. По большей части, в этой прошивке уже всё настроено, но вы можете покопаться и поменять всё на свой вкус.
Внимание, если вы собираетесь проходить пункт 6. Установка FreeRADIUS и поднятие WPA2-Enterprise, тогда можете пропустить конфигурацию именно WiFi, нажать «Сохранить и применить…» и подключиться к роутеру по ssh root@192.168.1.1, но важно, чтобы вы выбрали правильно имя машины роутера, ведь оно и будет в дальнейшем именем WiFi.
В меню «Сеть» -> «WiFI» можно настроить WiFi. Необходимо выставить всё, как на фото (часть настроек взята с https://4pda.ru/forum/index.php?showtopic=810698&st=3200#entry82315996)
Сначала настроем 2.4 G (не забудьте нажать «сохранить»)
Потом 5 G
После установки настроек, применяем их кнопкой: «Сохранить и применить…»
Также важно добавить, что если вы устанавливаете всё для использования с WPA2-Enterprise, требуется выключить «802.11w Management Frame» и включить «Разрешить использование стандарта 802.11b». Если же вы устанавливаете прошивку на Xiaomi R3P, setup.ash сделает это в дальнейшем за вас.
На этом этапе можно вылезти из красивого web gui и погрузиться в консоль, а ля настоящий программист. (ну или почти :p) Напоминаю, что делается это через ssh root@192.168.1.1, а пароль — тот самый пароль от админки web gui.
Поздравляю, мы в роутере. Теперь можно приступить к установке пакетов.
6. Установка FreeRADIUS и поднятие WPA2-Enterprise
Далее важно понимать, есть ли у нас интернет или нет. Да, он настроен, но поблизости может просто не быть кабеля с интернетом, поэтому установку пакетов решено сделать максимально удобной. Тем не менее, если вы устанавливаете всё на другой роутер, для вас создан отдельный файл установки. Работоспособность не гарантирую, но попытаться стоит.
Если у вас есть интернет, вы можете сделать opkg update , но для корректной установки всех пакетов локально не рекомендуется это делать. Если же вы уже случайно это сделали… То придётся заново делать всё с пункта 4.3…
Необходимо скачать репозиторий (ветка master) на свой компьютер OpenWRT-Xiaomi-WiFi-R3P-FreeRADIUS и распаковать его, либо вы можете склонировать этот репозиторий, только к таком случае придётся клонировать ещё и неприлично большую папку .git (200+ МБ, взявшихся из неоткуда).
git clone https://github.com/ITMO-lab/OpenWRT-Xiaomi-WiFi-R3P-FreeRADIUS.git OpenWRT-Xiaomi-WiFi-R3P-FreeRADIUS-master
Переносим папку на флешку в корень. Желательно, чтобы флешка была с файловой системой fat-32, но моя ntfs тоже смонтировалась, пусть и поругалась немного. Как же работать с флешкой? Очень просто — вставляем в единственный usb порт и пишем продуманную команду:
cd; umount USB; rm -rf USB; mkdir USB; mount /dev/sda1 USB/
Теперь у вас есть директория, куда смонтирована флешка. Далее процесс установки будет максимально простым. Если у вас Xiaomi R3P, впишите в консоль:
cd; cd USB/OpenWRT-Xiaomi-WiFi-R3P-FreeRADIUS-master; ash setup.ash
Если же у вас другой роутер, убедитесь, что у вас есть интернет соединение и впишите:
cd; cd USB/OpenWRT-Xiaomi-WiFi-R3P-FreeRADIUS-master; ash setup_online.ash
Только помните, если у вас другой роутер, вас самостоятельно придётся настраивать WiFi в web gui — подключать к нему сервер RADIUS. По умолчанию он запускается на 192.168.1.1 с дефолтными портами, а его secret отобразится в консоли.
Сохраните FREERADIUS3_SECRET и FREERADIUS3_ROOT_PASSWORD, эти значения понадобятся.
root и FREERADIUS3_ROOT_PASSWORD — это имя пользователя и пароль учётной записи администратора, которые останутся у вас независимо от того, что вы меняете в базе данных. Также можно поменять или добавить дефолтные учётные записи в /etc/freeradius3/mods-config/files/authorize
FREERADIUS3_SECRET же нужен для обращения к RADIUS серверу, но скрипт уже всё подставил в нужное место. Вам только остаётся сохранить значения где-то в блокноте и прописать:
reboot
После перезагрузки WiFi будет настроен в режиме wpa2-enterprise с единственной учётной записью root с паролем FREERADIUS3_ROOT_PASSWORD. Можете протестировать. У меня по умолчанию запускается сервис radiusd, если это у вас не случилось, вам придётся снова зайти на роутер и запустить RADIUS сервер:
service radiusd stop; radiusd -X
Это позволит отследить запросы и увидеть процесс авторизаций. Вместо ручного запуска программ в будущем будет использован сервис service radiusd enable / start, но пока его включать не стоит — это помешает последующей установке.
7. Установка и подключение SQLite и SQLite-web для контроля учётных записей пользователей
После перезагрузки роутера флешка размонтировалась, поэтому заново монтируем её.
cd; umount USB; rm -rf USB; mkdir USB; mount /dev/sda1 USB/
Прежде всего нужно выключить сервис radiusd:
service radiusd stop
Теперь, неожиданно, нужно установить sqlite. Если у вас Xiaomi R3P, пропишите в консоли:
cd; cd USB/OpenWRT-Xiaomi-WiFi-R3P-FreeRADIUS-master; opkg --nodeps --force-maintainer --force-depends --force-reinstall --force-overwrite --force-downgrade install pkgs/sqlite/*.ipk
Если же у вас другой роутер:
opkg update; opkg --force-maintainer --force-depends --force-reinstall --force-overwrite --force-downgrade install libedit sqlite3-cli libsqlite3*
И выполняем скрипт настройки sqlite. Он идентичен для всех роутеров, если только freeradius снова не сломают совместимость.
cd; cd USB/OpenWRT-Xiaomi-WiFi-R3P-FreeRADIUS-master
rm -rf /etc/freeradius3/sqlite_rad.db
cp pkgs/sqlite/schema.sql /etc/freeradius3/mods-config/sql/main/sqlite/schema.sql
cp pkgs/sqlite/queries.conf /etc/freeradius3/mods-config/sql/main/sqlite/queries.conf
sqlite3 /etc/freeradius3/sqlite_rad.db < /etc/freeradius3/mods-config/sql/main/sqlite/schema.sql
ln -s /etc/freeradius3/mods-available/sql /etc/freeradius3/mods-enabled/sql
После чего нужно отредактировать файл /etc/freeradius3/mods-enabled/sql (например, в nano), чтобы он имел следующий вид.
...
sql {
...
dialect = "sqlite"
...
driver = "rlm_sql_sqlite"
...
sqlite {
filename = "/etc/freeradius3/sqlite_rad.db"
# busy_timeout = 200 Просто важно закомментить.
bootstrap = "${modconfdir}/${..:name}/main/sqlite/schema.sql"
}
...
}
...
Можно тестировать, но сначала нужно создать какого-либо пользователя:
sqlite3 /etc/freeradius3/sqlite_rad.db
Откроется sqlite3-cli, в котором нужно добавить в бд пользователя:
insert into radcheck values ('1','user','Cleartext-Password',':=','12345678');
Проверить корректность вызова команды можно с помощью:
select * from radcheck;
Должна быть напечатана строка «1|user|Cleartext-Password|:=|12345678».
Далее выходим из sqlite-cli, для этого можно ввести в консоли:
.quit
Для тестирования нам понадобится снова запустить radiusd:
radiusd -X
После чего пытаемся зайти в WiFi с логином user и паролем 12345678. Если всё прошло успешно, тогда я рад за вас, ведь вам не пришлось тратить на настройку системы столько же времени, сколько потратил я. Можете удалить тестового пользователя, но я это сделаю далее через Web-SQLite-Admin. И, да, для применения изменений в базе данных не нужно перезапускать сервис.
Устанавливаю sqlite-web — простой сервис для администрирования SQLite. Важно отметить, что текущая версия, 0.3.6, имеет уязвимость безопасности, и я уже предложил исправление через pull-request. Если исправление на момент прочтения одобрили (скорее всего, тогда версия изменится на 0.3.7+), можете установить пакет через:
pip3 install sqlite-web — после этого обязательно проверьте версию.
Если же его не одобрили, тогда используем мой форк и устанавливаем пакет с исправлением угрозы безопасности. Его также можно сначала скачать на флешку, а потом смонтировать на роутере и установить, но после пункта 6. Установка FreeRADIUS и поднятие WPA2-Enterprise на роутере уже установлен git и git-http:
git clone https://github.com/ITMO-lab/sqlite-web.git
cd sqlite-web
pip3 install -r requirements.txt
python3 setup.py install
Тестовый запуск ни к чему хорошему не приведёт из-за одной фичи данного сервиса. Сначала нам нужно выключить использование webbrowser в единственном месте. Эта либа запускает в вашем браузере страницу SQLite-web. Только вот проблема в том, что ВнУтРи РоУтЕрА нет ни браузера, ни окружения рабочего стола, так что нам такие функции без надобности. Для исправления этого недоразумения открываем файл /usr/lib/python3.7/site-packages/sqlite_web/sqlite_web.py или /usr/lib/python3.7/site-packages/sqlite_web-0.3.6-py3.7.egg/sqlite_web/sqlite_web.py и редактируем его общей командой, так как он точно один:
nano /usr/lib/python3.7/site-packages/sqlite_web*/sqlite_web/sqlite_web.py
import webbrowser - удаляем
...
def open_browser_tab(host, port): - удаляем всю функцию, ибо зачем она нам?
...
...
if options.browser: - удаляем обе строчки.
open_browser_tab(options.host, options.port) - они находятся в конце файла.
После этого без перезапуска (достоинство python) можем проверить работу SQLite-web:
sqlite_web /etc/freeradius3/sqlite_rad.db -H 192.168.1.1 -p 8000
Он должен запуститься на http://192.168.1.1:8000/. После этого мы можем посмотреть учётные записи:
И даже добавить свою, введя SQL запрос вида INSERT INTO "radcheck" VALUES ({N},{USERNAME},'Cleartext-Password',':=',{PASSWORD}):
После чего изменения отобразятся в таблице:
Теперь остаётся только сделать из sqlite_web сервис, чтобы он запускался автоматически в фоне при старте системы, но такой сервис уже создан, и для его установки нужно прописать (если вы перезапускались, смонтируйте флешку заново):
cd; cd USB/OpenWRT-Xiaomi-WiFi-R3P-FreeRADIUS-master
cp pkgs/sqlite/sqlite_web /etc/init.d/sqlite_web
chmod 755 /etc/init.d/sqlite_web
cd
Теперь необходимо поменять пароль от SQLite-web, для этого отредактируйте строку procd_set_param env SQLITE_WEB_PASSWORD=»iloveyou» в /etc/init.d/sqlite_web и поменяйте значение SQLITE_WEB_PASSWORD на ваш пароль:
nano /etc/init.d/sqlite_web
После чего можно запустить все сервисы:
service sqlite_web enable
service sqlite_web start
service radiusd enable
service radiusd start
Через некоторое время сервер запустится и, я вас поздравляю, у вас есть возможность управлять учётными записями пользователей http://192.168.1.1:8000/
(last update: 08-Mar-2021)
OpenWrt is an embedded operating system based on Linux. You will get full power of Linux in your home router. OpenWrt has a lot of powerful features that default firmware doesn’t offer.
There are several OpenWrt based firmwares for Xiaomi Mi Router 3. Among of them, PandoraBox and X-Wrt work very well in Xiaomi Mi Router 3. However, PandoraBox is discontinued. Means Mi Router 3 might not get any latest update from PandoraBox. So right now, installing X-Wrt firmware for Mi Router 3 will be better choice. It also supports latest software packages from OpenWrt repository.
Before continuing the firmware installation, let’s see what OpenWrt offers beside the default Xiaomi’s Chinese firmware:
- Supports ALL kinds of popular VPN protocols. (OpenVPN, L2TP, PPTP…)
- Torrent client. You don’t need to always power up your PC for downloading/seeding the big torrent files anymore. Your router will work as a low powered Seedbox.
- Run various servers. You can run a web server, a proxy server, IRC server and more!
- Using QoS (quality of service) which handles the packets travelling through your router. You can prioritize certain types of traffic with QoS. This is my favorite use case as I can reduce the lag while gaming by properly configuring the QoS.
- Capture the network traffic. You can capture the network traffic by using various network tools and analyze that traffic later. Useful to the network admin
- Real time accurate bandwidth monitoring and throttling.
- Monitor internet connectivity
- Ad blocking
- Print server
- DNSCrypt (only possible in X-Wrt firmware)
and much much more. OpenWrt’s software repositories contain other packages that extends more functionality.
NOTE: There is no mobile app to control OpenWrt firmware as Xiaomi firmware does. Also, it is not easy to configure OpenWrt firmware. You need to have absolute patience and troubleshooting capability in order to configure it like the way you want. Also, if you are not a techie person, I will not recommend you to proceed.
Disclaimer
I will not take any responsibility if you brick your router by incorrectly following this tutorial. Though I’ve tested every steps several times and successfully install OpenWrt on my Xiaomi Router. I’ve bricked my router many times in order to find the right steps :p
Some basic knowledge of Linux commands and SSH are necessary.
Note: if you brick your router, please follow Recovering from softbrick
If still not solved, please post your issue to the support forum. I will suggest you to take your time and read this support forum from the beginning. It holds lots of useful information regarding flashing and recovering.
Let’s begin (bricking or succeeding? :p )
What you need:
- Xiaomi Mi WiFi Router 3 (2 100Mbps non gigabit LAN ports)
2. LAN Cable - USB Drive
- Enough time
- Brain/common sense
Step 1: Downgrading the official Xiaomi firmware to dev build
1.1. First, assuming that you are using official Xiaomi firmware. Backup your settings if you needed. Now, we need to downgrade to the dev build in order to enable SSH service. So download dev firmware from here:
1.2. Put downloaded “miwifi_r3_all_55ac7_2.11.20.bin” file on FAT/FAT32 formatted USB drive and rename it to “miwifi.bin” (without quote)
1.3. Power off the router and plug the USB into the router. Now hold the reset button and power it up until the yellow led starts flashing. A solid blue will appear after a few moments. We just flashed the dev firmware. Remove the USB.
Step 2: Download firmware & preparing the flash file
For PandoraBox firmware:
2.1. Download the firmware file from here
2.2. Download Pandorabox boot file from here
2.3. Put “pb-boot-xiaomi3-20180726-0d8505f.img” file (boot file) to your FAT/FAT32 formatted USB drive
**For X-Wrt firmware:
** 2.4. Download kernel1.bin & rootfs0.bin for “Xiaomi Mi Router R3” from here
2.5. Put both files to your FAT/FAT32 formatted USB drive
Step 3: Turning on SSH on Router
3.1. Connect your router through wifi with a default password.
3.2. Go to http://miwifi.com or http://192.168.31.1 and setup your router as usual.
3.3. Login to admin panel. Look at the url bar.
3.4. In url bar, after “stok=”, copy the code.
3.5 Replace the code in the below url and visit that url
http://miwifi.com/cgi-bin/luci/;stok=<STOK>/api/xqnetwork/set_wifi_ap?ssid=Xiaomi&encryption=NONE&enctype=NONE&channel=1%3Bnvram%20set%20ssh%5Fen%3D1%3B%20nvram%20commit
3.6. If your wifi disconnect, then connect again. Follow 3.3 and 3.4 step again
3.7. Replace the code in below url and visit that url
http://miwifi.com/cgi-bin/luci/;stok=<STOK>/api/xqnetwork/set_wifi_ap?ssid=Xiaomi&encryption=NONE&enctype=NONE&channel=1%3Bsed%20%2Di%20%22%3Ax%3AN%3As%2Fif%20%5C%5B%2E%2A%5C%3B%20then%5Cn%2E%2Areturn%200%5Cn%2E%2Afi%2F%23tb%2F%3Bb%20x%22%20%2Fetc%2Finit.d%2Fdropbear
3.8. You will probably disconnect again. Reconnect and follow 3.3 and 3.4 steps.
3.9. Replace the code in below url and visit that url
http://miwifi.com/cgi-bin/luci/;stok=<STOK>/api/xqnetwork/set_wifi_ap?ssid=Xiaomi&encryption=NONE&enctype=NONE&channel=1%3B%2Fetc%2Finit.d%2Fdropbear%20start
3.10. Again (one last time) you will be disconnected. Connect again and follow 3.3 and 3.4 steps.
3.11. Replace the code in below url and visit that url. BUT replace OLD_PASSWORD with your admin panel password (that you provided in step 3.2) and NEW_PASSWORD with your desire password
http://miwifi.com/cgi-bin/luci/;stok=<STOK>/api/xqsystem/set_name_password?oldPwd=OLD_PASSWORD&newPwd=NEW_PASSWORD
Step 4: Entering into SSH and flash firmwares:
4.0. Connect USB drive to router
4.1. Download and open PUTTY client
4.2. In SSH field, put your router IP address (192.168.31.1) and connect
4.3. Username is ‘root’ and password is NEW_PASSWORD
For PandoraBox
4.4. Issue below commands one by one:
cd /extdisks/sda1
cp pb-boot-xiaomi3-20180726-0d8505f.img /tmp
cd /tmp
mtd write pb-boot-xiaomi3-20180726-0d8505f.img Bootloader
reboot
4.5. Unplug the USB. Now wait until the led turns into blue
4.6. Power off the router (disconnect the power cable) and then hold the reset button then power up the router, release the reset button after 2/3 seconds after powering up. You will see breath style yellow led will glow
4.7. Connect your router through LAN cable. Cable will go from router’s LAN port (not internet/wan port) to your PC.
4.8. Now go to http://192.168.1.1 (while connected with LAN), you will see a PandoraBox firmware upgrade page. select your Pandorabox firmware (downloaded from step 2.1) and upload it. Router will be restarted when done.
4.9. Access the PandoraBox OpenWrt admin page by going http://192.168.1.1, default password is “admin”. Language is by default Chinese. Don’t panic if you don’t understand anything. Just go to the following link to change language.
4.10. Select language “Chinese” to “auto”
4.11. Save and apply (middle button at the very bottom)
For X-Wrt
(If you are already on PandoraBox firmware and want to upgrade to X-Wrt, jump to step 4.15)
4.12. Issue the below commands one by one (source: https://openwrt.org/toh/xiaomi/mir3)
nvram set flag_last_success=1
nvram set boot_wait=on
nvram set uart_en=1
nvram commit
cd /extdisks/sda1
mtd write x-wrt--ramips-mt7620-xiaomi_miwifi-r3-squashfs-kernel1.bin kernel1
mtd write x-wrt--ramips-mt7620-xiaomi_miwifi-r3-squashfs-rootfs0.bin rootfs0
reboot
4.13. After a few minutes, visit 192.168.15.1 and login with username: root, password: admin
4.14. To change firmware language to english, follow the instructions in the images:


Upgrade from PandoraBox to X-Wrt
If you are using PandoraBox and want to upgrade to X-Wrt, follow the below steps (source: https://openwrt.org/toh/xiaomi/mir3)
4.15. Download x-wrt——-ramips-mt7620-xiaomi_miwifi-r3-squashfs-breed-factory.bin file from here
4.16. Put the file in FAT/FAT32 formatted USB drive
4.17. Issue the below commands:
cd /extdisks/sda1
mtd write x-wrt-------ramips-mt7620-xiaomi_miwifi-r3-squashfs-breed-factory.bin firmware
reboot
Now follow 4.13 & 4.14
If it dosn’t work (blinking orange on boot):
4.18. Connect your router through LAN cable. Cable will go from router’s LAN port (not internet/wan port) to your PC.
4.19. Access 192.168.15.1 from browser
4.20. Upload “x-wrt——-ramips-mt7620-xiaomi_miwifi-r3-squashfs-breed-factory.bin” file and flash. Done
If you come this far, congratulation! You have successfully installed OpenWrt to your Xiaomi R3 router. Now configure internet connectivity.





























































