Compilar y flashear firmware OpenWrt personalizado para el router Redmi AX6S

Guía práctica para compilar firmware OpenWrt personalizado para el Redmi AX6S, habilitar telnet, subir el firmware y flashear el router.

Configuración de hardware del AX6S

CPU: MediaTek MT7622B, 2 núcleos A53
Flash: 128 MB NAND
RAM: 256 MB
https://www.mi.com/global/product/xiaomi-router-ax3200/

Compilación personalizada de OpenWrt para el AX6S

Instala Linux primero; se recomienda Ubuntu LTS

Instalar dependencias de compilación

1
2
3
4
5
6
7
8
sudo apt update -y
sudo apt full-upgrade -y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip libpython3-dev qemu-utils \
rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev

Descargar el código fuente, actualizar feeds y elegir la configuración

1
2
3
4
5
git clone https://github.com/coolsnowwolf/lede
cd lede
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
  1. Selecciona Target Profile.

  2. Selecciona LuCI -> Applications ->.

Significado
[ * ] Seleccionado
[ ] No seleccionado
< M > Compilar como módulo

Aplicaciones comunes:

Nombre Ruta de menú Descripción
luci-app-adbyby-plus Services -> Adbyby Plus+ Bloqueo de anuncios para dispositivos de la misma red.
luci-app-aliddns Services -> AliDDNS Resolución DDNS de Aliyun.
luci-app-ddns Services -> Dynamic DNS DNS dinámico; no admite AliDDNS.
luci-app-autoreboot System -> Scheduled Reboot Configura reinicios programados.
luci-app-arpbind Network -> IP/MAC Binding Vincula direcciones IP y MAC.
luci-app-filetransfer System -> File Transfer Transfiere archivos al sistema de archivos de OpenWrt.
luci-app-firewall Network -> Firewall Configuración del firewall.
luci-app-frpc Services -> Frp Client Cliente Frp para acceso desde intranet.
luci-app-frps Services -> Frps Servidor Frp para acceso desde intranet.
luci-app-guest-wifi Network -> Guest Wi-Fi Red Wi-Fi de invitados.
luci-app-nlbwmon Bandwidth Monitor Todas las funciones del menú de monitorización de ancho de banda.
luci-app-qos Network -> QoS Calidad de servicio; permite priorizar clases de tráfico.
luci-app-ssr-plus Services -> ShadowSocksR Plus+ Selector de plugins de proxy.
luci-app-turboacc Network -> Turbo ACC Aceleración de red.
luci-app-unblockmusic Sin menú Desbloqueo de NetEase Cloud Music.
luci-app-upnp Services -> UPnP Universal Plug and Play (UPnP).
luci-app-vlmcsd Services -> KMS Server Servidor de activación de productos Microsoft.
luci-app-wireguard Network -> Interfaces El estado se ve en Status -> WireGuard Status.
luci-app-wol Services -> Wake-on-LAN Wake-on-LAN.

Selecciona las funciones necesarias, guarda la configuración y sal cuando termines.

Descargar el directorio dl y compilar el firmware

El valor detrás de -j es el número de hilos. Para la primera compilación se recomienda usar un solo hilo.

1
2
make download -j8
make V=s -j1

Después de una compilación correcta, el firmware queda en ~/lede/bin/targets/mediatek/mt7622/.

Uso Archivo
Primer flasheo openwrt-mediatek-mt7622-xiaomi_redmi-router-ax6s-squashfs-factory.bin
Actualización desde OpenWrt openwrt-mediatek-mt7622-xiaomi_redmi-router-ax6s-squashfs-sysupgrade.bin

Desbloqueo y flasheo del AX6S

Flashear el firmware de prueba de Redmi

Solo después de flashear el firmware de prueba se puede usar telnet para las operaciones posteriores en el AX6S. Firmware de prueba: miwifi_rb03_firmware_stable_1.2.7.bin

Calcular la contraseña de telnet

El cálculo necesita el número de serie del router. Puedes encontrarlo en la etiqueta de la parte trasera del dispositivo y también en la interfaz de administración del router.

Muchos calculadores en línea ya no funcionan. Puedes ejecutar localmente el siguiente script de Python:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/env python3
import sys
import hashlib

if sys.version_info < (3,7):
    print("python version is not supported", file=sys.stderr)
    sys.exit(1)

# credit goes to zhoujiazhao:
# https://blog.csdn.net/zhoujiazhao/article/details/102578244

salt = {'r1d': 'A2E371B0-B34B-48A5-8C40-A7133F3B5D88',
        'others': 'd44fb0960aa0-a5e6-4a30-250f-6d2df50a'}


def get_salt(sn):
    if "/" not in sn:
        return salt["r1d"]

    return "-".join(reversed(salt["others"].split("-")))


def calc_passwd(sn):
    passwd = sn + get_salt(sn)
    m = hashlib.md5(passwd.encode())
    return m.hexdigest()[:8]


if __name__ == "__main__":
    if len(sys.argv) != 2:
        print(f"Usage: {sys.argv[0]} <S/N>")
        sys.exit(1)

    serial = sys.argv[1]
    print(calc_passwd(serial))
1
2
abc@openwrt-build:~$ python calc_ax6s_pwd.py SN
00d135eb

La salida es la contraseña de telnet.

Conectar al AX6S por telnet

Primero confirma la dirección IP del router. Puedes verla en la interfaz de administración de la red a la que está conectado. Por ejemplo, mi router usa 192.168.0.121. Abre una terminal y ejecuta:

1
telnet 192.168.0.121

Usuario: root
Contraseña: la contraseña calculada arriba

Después de iniciar sesión correctamente, ejecuta:

1
2
3
nvram set ssh_en=1 && nvram set uart_en=1 && nvram set boot_wait=on && nvram set bootdelay=3 && nvram set flag_try_sys1_failed=0 && nvram set flag_try_sys2_failed=1
nvram set flag_boot_rootfs=0 && nvram set "boot_fw1=run boot_rd_img;bootm" && nvram set flag_boot_success=1 && nvram commit 
/etc/init.d/dropbear enable && /etc/init.d/dropbear start

Cuando los comandos finalicen correctamente, SCP quedará habilitado. Usa SCP para subir el firmware al router.

Subir el firmware

En Windows, conecta al router con WinSCP. Sube el archivo compilado openwrt-mediatek-mt7622-xiaomi_redmi-router-ax6s-squashfs-factory.bin a /tmp/ y renómbralo como factory.bin.

Flashear el firmware

Ejecuta el siguiente comando en la sesión telnet:

1
mtd -r write /tmp/factory.bin firmware

Después del flasheo, el router se reiniciará. La información predeterminada tras el reinicio es:

Dirección IP: 192.168.1.1
Usuario: root
Contraseña: password

Recuperación si el flasheo falla

记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy