Xiaomi AX3000T прошивка OpenWrt
Технарий1. Подготовить OpenWrt
Скачать из официального каталога OpenWrt:
OpenWrt 25.12.5 — MediaTek Filogic (https://downloads.openwrt.org/releases/25.12.5/targets/mediatek/filogic/)
Нужны два файла:
openwrt-25.12.5-mediatek-filogic-xiaomi_mi-router-ax3000t-initramfs-factory.ubi
openwrt-25.12.5-mediatek-filogic-xiaomi_mi-router-ax3000t-squashfs-sysupgrade.bin
Для безопасности проверить SHA-256 каждого файла по официальному sha256sums.

2. Подключить роутер
Соединить ПК с любым LAN-портом AX3000T.
Произвести первоначальную настройку роутера, до момента когда установите пароль Admin.
На первом этапе роутер имеет адрес:
192.168.31.1
XMiR-Patcher должен работать с этим адресом.
3. Запустить XMiR-Patcher
Скачать и распаковать XMiR-Patcher.
Из папки запустить файл !START.bat
Запустить его и:
1 - Set IP-address

Затем:
2 - Connect to device (install exploit)


4. Сразу сделать полный backup
В XMiR-Patcher выбрать:
4 - Create full backup


Completed!

Проверить backup
Командой
Get-ChildItem .\backups\mtd*.bin | Select-Object Name,Length

В каталоге backups должны появиться как минимум файлы как на скрине ниже и если это уже не первый такой роутер, то в папке с бэкапом старый бэкап переименуется с расширением .old и создастся новый актуальный:

5. Подключаемся root по SSH
Если с этого же ПК ранее подключались из PowerShell по SSH на адрес 192.168.31.1, то вероятно получите такую ошибку (SSH-ключ хоста изменился):

Нужно удалить старую запись именно для 192.168.31.1.
Самый простой вариант
В PowerShell выполни:
ssh-keygen -R 192.168.31.1

После этого снова:
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa root@192.168.31.1
SSH снова спросит:
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Введи:
yes

Снова подключаемся, пароль root

В результате должны увидеть ssh консоль BusyBox:

6. Проверить модель и активный слот
На роутере:
cat /proc/cmdline
Для нашего случая должно быть:
firmware=0

Также:
cat /proc/mtd
В стоке должны присутствовать:
mtd8 ... "ubi"
mtd9 ... "ubi1"
То есть:
mtd8 = текущий активный слот
mtd9 = второй слот

mtd8 ... "ubi"
mtd9 ... "ubi1"
Для RD23
Было:
firmware=0
Поэтому OpenWrt записываем в:
/dev/mtd9
! Это критически важный момент. Не копируйте /dev/mtd9 вслепую на другую конфигурацию. Сначала обязательно смотрите firmware=
7. Передать factory-образ на роутер
Скопировать initramfs-factory.ubi в /tmp.
Из PowerShell:
scp -O -o HostKeyAlgorithms=+ssh-rsa "C:\Users\Public\Xiaomi AX3000T\openwrt-25.12.5-mediatek-filogic-xiaomi_mi-router-ax3000t-initramfs-factory.ubi" root@192.168.31.1:/tmp/
Параметр:
-O
нужен для старого SCP-протокола
И:
-o HostKeyAlgorithms=+ssh-rsa
потому что Xiaomi предлагает только старый ssh-rsa
Вводим пароль root и ждём пока закачается прошивка на роутер:

После копирования проверить по SSH в консоли роутера:
ls -lh /tmp/*factory*.ubi

Вводим две команды:
wc -c /tmp/*factory*.ubi
и:
cat /proc/cmdline
Первую команду нужно выполнить, чтобы получить точный размер файла в байтах. Вторую — чтобы перед записью ещё раз подтвердить, что у нас:
firmware=0

10354688 bytes
Это соответствует опубликованному размеру factory-образа 10 112 KiB:
10 112 × 1024 = 10 354 688 bytes.
Также подтверждено:
firmware=0
mtd8 = ubi ← текущая рабочая stock-система
mtd9 = ubi1 ← второй слот
Выполнить:
ubinfo

ubi0
ubi1
Выполняем первую запись
Выполнить только эту команду:
ubiformat /dev/mtd9 -y -f /tmp/*mediatek-filogic-xiaomi_mi-router-ax3000t-initramfs-factory.ubi

flashing eraseblock 78 -- 100 % complete
formatting eraseblock 271 -- 100 % complete
и вернул приглашение. Критических ошибок нет.
Очень важно
После:
mtd9
будет изменён.
Но:
mtd8
останется нетронутым, то есть текущая работающая stock-система физически останется в другом слоте.
Именно поэтому мы перед этим проверяли:
firmware=0
И теперь, прежде чем менять boot-флаги, выполнить:
echo $?
Должно быть:
0

После этого выполнить:
nvram set boot_wait=on
nvram set uart_en=1
nvram set flag_boot_rootfs=1
nvram set flag_last_success=1
nvram set flag_boot_success=1
nvram set flag_try_sys1_failed=0
nvram set flag_try_sys2_failed=0
nvram commit

Но пока не выполнять перезагрузку роутера!
После nvram commit выполнить:
nvram get flag_boot_rootfs
nvram get flag_last_success
nvram get flag_boot_success
nvram get flag_try_sys1_failed
nvram get flag_try_sys2_failed

1
1
1
0
0
И только если значения именно такие, перезагружаем командой reboot.

После перезагрузки роутера потеряете соединение с 192.168.31.1, т.к. OpenWrt использует 192.168.1.1
Это ожидаемый переход со стока на OpenWrt.
После загрузки проверим сначала:

и SSH:
ssh root@192.168.1.1
соответственно опять будет ругаться на ключи:

снова подключаемся, видим консоль OpenWrt:

Пока не устанавливаем пакеты, не меняем U-Boot и не перезагружаем роутер.
Вводим:
cat /proc/cmdline
cat /proc/mtd
ubinfo
df -h

cat /proc/mtd
ubinfo
df -h
Необходимо проверить что:
firmware=1 mtd=ubi1
То есть роутер действительно загрузился из второго UBI-слота, куда мы записали factory-образ.
А также:
mtd8: 02200000 ... "ubi_kernel"
mtd9: 04e00000 ... "ubi"
Это уже разметка временного OpenWrt, а не стока. ubinfo показывает 0, потому что initramfs сейчас работает из RAM и постоянный UBI не подключён.
Оф. мануал OpenWrt говорит именно после этого этапа загрузить squashfs-sysupgrade.bin в /tmp и выполнить sysupgrade -n
Следующий этап — постоянный OpenWrt
Нам нужен файл:
openwrt-25.12.5-mediatek-filogic-xiaomi_mi-router-ax3000t-squashfs-sysupgrade.bin
Сохраним:
C:\Users\Public\Xiaomi AX3000T\
Проверим SHA-256
В PowerShell:
Get-FileHash "C:\Users\Public\Xiaomi AX3000T\openwrt-25.12.5-mediatek-filogic-xiaomi_mi-router-ax3000t-squashfs-sysupgrade.bin" -Algorithm SHA256

Загружаем файл на роутер:

В консоли роутера выполни:
ls -lh /tmp/*sysupgrade*.bin
wc -c /tmp/*sysupgrade*.bin
sha256sum /tmp/*sysupgrade*.bin

Теперь постоянная прошивка
Выполни одну команду:
sysupgrade -n /tmp/openwrt-25.12.5-mediatek-filogic-xiaomi_mi-router-ax3000t-squashfs-sysupgrade.bin
sysupgrade проверит образ, запишет постоянную OpenWrt-систему и инициирует перезагрузку.
SSH-сессия оборвётся — это нормально.
Увидите:

После перезагрузки
Ждём пару минут и пробуем:
ssh root@192.168.1.1

После успешного подключения — ничего не настраиваем.
Сначала выполним:
cat /proc/cmdline
cat /proc/mtd
df -h
ubinfo

cat /proc/mtd
df -h
ubinfo
Что мы должны увидеть:
1. Роутер загрузился из постоянной системы:
firmware=0 mtd=ubi
После предыдущего initramfs было:
firmware=1 mtd=ubi1
То есть загрузчик вернулся к штатному firmware=0, а OpenWrt теперь работает из постоянного UBI.
2. Появился нормальный overlay:
/dev/ubi0_1 60.7M 48.0K 57.5M 0% /overlay
У нас примерно 57.5 MiB свободного пространства для установки пакетов и конфигурации.
3. UBI теперь действительно подключён:
Count of UBI devices: 1
Present UBI devices: ubi0
Временный initramfs ранее показывал:
Count of UBI devices: 0
Теперь есть полноценный ubi0.
4. Разметка соответствует stock layout:
mtd8 0x02200000 ubi_kernel
mtd9 0x04e00000 ubi
Теперь можем пользоваться полноценной OpenWrt.