Xiaomi AX3000T прошивка OpenWrt

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.

Проверяем SHA-256 у загруженного файла. Должно было совпасть с b5e075d74c6d74958d6e92800f52c6a2b73115948a71fcc63fdf77ca822517e8 , на момент когда вы будете скачивать, может быть другая сумма, файл и т.д., подгоняйте под свои условия.

2. Подключить роутер

Соединить ПК с любым LAN-портом AX3000T.

Произвести первоначальную настройку роутера, до момента когда установите пароль Admin.

На первом этапе роутер имеет адрес:

192.168.31.1

XMiR-Patcher должен работать с этим адресом.

3. Запустить XMiR-Patcher

Скачать и распаковать XMiR-Patcher.

Из папки запустить файл !START.bat

Запустить его и:

1 - Set IP-address

Оставить 192.168.31.1

Затем:

2 - Connect to device (install exploit)

Ввести пароль Web-интерфейса Xiaomi, когда патчер его запросит.
Дальше будет такая картина, успешным результатом можно считать надпись в конце #### SSH server are activated! ####

4. Сразу сделать полный backup

В XMiR-Patcher выбрать:

4 - Create full backup

Дождаться:
Completed!
Запустить PowerShell из папки с патчером

Проверить backup

Командой

Get-ChildItem .\backups\mtd*.bin | Select-Object Name,Length
В PowerShell

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

В каталоге backups должны появиться как минимум файлы как на скрине.

5. Подключаемся root по SSH

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

SSH-ключ хоста изменился

Нужно удалить старую запись именно для 192.168.31.1.

Самый простой вариант

В PowerShell выполни:

ssh-keygen -R 192.168.31.1
Генерируем новый ключ ssh

После этого снова:

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:

консоль 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
Проверка прошла - ubinfo показывает два UBI-устройства:
ubi0
ubi1

Выполняем первую запись

Выполнить только эту команду:

ubiformat /dev/mtd9 -y -f /tmp/*mediatek-filogic-xiaomi_mi-router-ax3000t-initramfs-factory.ubi
Запись прошла без ошибки. По выводу видно, что ubiformat дошёл до:
flashing eraseblock 78 -- 100 % complete
formatting eraseblock 271 -- 100 % complete
и вернул приглашение. Критических ошибок нет.

Очень важно

После:

mtd9

будет изменён.

Но:

mtd8

останется нетронутым, то есть текущая работающая stock-система физически останется в другом слоте.

Именно поэтому мы перед этим проверяли:

firmware=0

И теперь, прежде чем менять boot-флаги, выполнить:

echo $?

Должно быть:

0
Проверка кода завершения. Если 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
Это переключит загрузчик на только что записанный второй UBI-слот (mtd9) при следующем запуске.

Но пока не выполнять перезагрузку роутера!

После 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.

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

http://192.168.1.1

Проверка веб-интерфейса OpenWrt

и SSH:

ssh root@192.168.1.1

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

Повторяем процедуру генерации ключей ssh

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

консоль OpenWrt

Пока не устанавливаем пакеты, не меняем U-Boot и не перезагружаем роутер.

Вводим:

cat /proc/cmdline
cat /proc/mtd
ubinfo
df -h 
cat /proc/cmdline
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

Хэш получил: A94AC2C7177B451A29C576970CB19ED2D669031F65ACA2DED80FC71AE91B9EEA

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

В консоли роутера выполни:

ls -lh /tmp/*sysupgrade*.bin
wc -c /tmp/*sysupgrade*.bin
sha256sum /tmp/*sysupgrade*.bin
Ожидаемый SHA-256: a94ac2c7177b451a29c576970cb19ed2d669031f65aca2ded80fc71ae91b9eea

Теперь постоянная прошивка

Выполни одну команду:

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

подключаем по ssh к OpenWrt

После успешного подключения — ничего не настраиваем.

Сначала выполним:

cat /proc/cmdline
cat /proc/mtd
df -h
ubinfo
cat /proc/cmdline
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.




Report Page