Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision | ||
| inbox:toh:xiaomi:xiaomi_redmi_ax6_ax3000 [2022/07/01 11:54] – Heading updated (former Xiaomi AX6 / AX3000 was not correct as Redmi AX6, Redmi AX3000 and Xiaomi AX3000 are three different devices), Experimental Firmware section added, Debricking/TFTP Recovery section added kingcze | inbox:toh:xiaomi:xiaomi_redmi_ax6_ax3000 [2024/08/07 00:41] – [Potential issues / Limitations] jiejianshiwaxinge | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Xiaomi Redmi AX6 Wi-Fi 6 Mesh Router====== | ====== Xiaomi Redmi AX6 Wi-Fi 6 Mesh Router====== | ||
| - | ~~NOTOC~~ | ||
| - | |||
| /* This template is intended to be used via https:// | /* This template is intended to be used via https:// | ||
| - | {{page> | + | /* {{page> |
| + | |||
| + | |||
| + | /*****/ | ||
| + | /* How to add images ========> | ||
| + | /*****/ | ||
| Xiaomi Redmi AX6 is a Wi-fi 6 (802.11ax) capable mesh router, with 4+2 core ARM CPU, 512MB RAM, 128MB flash and 1+3 gigabit capable ethernet ports. | Xiaomi Redmi AX6 is a Wi-fi 6 (802.11ax) capable mesh router, with 4+2 core ARM CPU, 512MB RAM, 128MB flash and 1+3 gigabit capable ethernet ports. | ||
| - | {{media: | ||
| - | ===== OpenWrt support ===== | ||
| - | <color red> | ||
| + | {{ media: | ||
| + | The Xiaomi Redmi AX6 Router is an 802.11ax OFDMA and MU-MIMO Dual-Band WiFi router, which has the following WiFi Interfaces.: | ||
| - | ===== Supporting activities ===== | + | * one 2.4GHz (QCN5024 2x2/40MHz ax) |
| - | //Describe if there are any ongoing activities that might lead to OpenWrt support.// | + | * one 5GHz (QCN5054 4x4/80 or 2x2/160MHz ax) |
| - | * OpenWrt forum thread: [[https:// | + | The radios |
| - | * China Openwrt installation [[https:// | + | |
| + | This is a router based on a Qualcomm IPQ8071A / QCA8074 V2 4-core SoC (up to 1.4GHz). | ||
| + | It has three 1G LAN ports, one 1G WAN port and 6 non-detachable external antennas. | ||
| + | | ||
| - | ===== Experimental firmware | + | ===== OpenWrt support |
| - | At the time there is an experimental fork with support for this device. | + | Supported since [[commit> |
| + | <!-- ToH: { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } --> | ||
| - | | + | ==== Potential issues / Limitations ==== |
| + | | ||
| + | * Ath11k memory: The ath11k driver needed for the main wireless radios uses a lot of memory when there are few stations connected and low bandwidth traffic flowing.After testing, this problem has been improved in version 23.05.4. | ||
| + | * NSS acceleration: | ||
| + | * The IPQ807x target has not yet support for [[: | ||
| + | |||
| + | ===== Supporting activities ===== | ||
| + | |||
| + | * OpenWrt forum thread: [[https:// | ||
| + | * China Openwrt installation [[https:// | ||
| + | * Experimental community OpenWrt with NSS acceleration support [[https:// | ||
| - | Potential issues: | ||
| - | * Ath11k memory: With some (older) firmware versions, the ath11k driver needed for the main wireless radios uses a lot of memory when there are few stations connected and low bandwidth traffic flowing. Getting a recent version using the link immediately above will resolve this problem. | ||
| ===== Hardware highlights ===== | ===== Hardware highlights ===== | ||
| - | ^ CPU ^ Ram ^ Flash ^ Network | + | <!-- ToH: { |
| - | | Qualcomm IPQ8071A 4core A53 1.4GHz | + | |
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } --> | ||
| + | ==== More Info ==== | ||
| + | |||
| + | <!-- ToH: { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } --> | ||
| + | |||
| + | === Notes === | ||
| + | * Flash chips known is ESMT F59D1G81MB-AZM1P9ACX. Maybe there are more variations of Flash Chips soldered on it. Needs more investigation. | ||
| + | * Stock partitioning assumes ~35M size for each of `rootfs` MTD partitions, and ~30M for `overlay` MTD partition (and even with that, mounted `/overlay` partition somewhy only have size of 15M) | ||
| - | /*** if info available: uncomment and fill in | ||
| ===== Installation ===== | ===== Installation ===== | ||
| + | |||
| + | /*** | ||
| - → [[: | - → [[: | ||
| - → [[docs: | - → [[docs: | ||
| - → [[: | - → [[: | ||
| + | ***/ | ||
| + | |||
| + | ==== Firmware download ==== | ||
| + | /* snapshot table */ | ||
| + | <!-- ToH: { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } --> | ||
| + | |||
| + | <WRAP round info> | ||
| + | Snapshot versions don't have '' | ||
| + | </ | ||
| ==== Installing OpenWrt ==== | ==== Installing OpenWrt ==== | ||
| - | ***/ | + | |
| + | To flash this image there is a need for SSH access to the OEM firmware. It is not possible for now to flash OpenWrt from the stock FW with the OpenWrt Factory image. | ||
| + | To gain SSH access, you will need a second router (any device) with OpenWrt firmware (further refered to as Router B). | ||
| + | |||
| + | === SSH Access === | ||
| + | |||
| + | - Roll back to firmware to 1.0.16 || [[ https:// | ||
| + | - Setup the router admin password (quick way is using the mobile setup app) | ||
| + | - On Router B: | ||
| + | | ||
| + | * (Your PC may disconnect from the router. In that case, set manual IP on the PC to e.g. " | ||
| + | * Create wifi with SSID " | ||
| + | * SSH or SCP in and create a file **/ | ||
| + | * Copy following to the file: < | ||
| + | module(" | ||
| + | |||
| + | function index() | ||
| + | local page = node(" | ||
| + | page.target | ||
| + | page.title | ||
| + | page.order | ||
| + | page.index = true | ||
| + | page = node(" | ||
| + | page.target | ||
| + | page.title | ||
| + | page.order | ||
| + | page.index = true | ||
| + | entry({" | ||
| + | end | ||
| + | |||
| + | local LuciHttp = require(" | ||
| + | |||
| + | function getToken() | ||
| + | local result = {} | ||
| + | result[" | ||
| + | result[" | ||
| + | LuciHttp.write_json(result) | ||
| + | end | ||
| + | </ | ||
| + | |||
| + | * Copy following to a web browser: < | ||
| + | 4. Connect back to Redmi AX6 and proceed: | ||
| + | * Open the web interface and log in on < | ||
| + | * Retreive the STOK value from the web address. E.g. for following < | ||
| + | * Copy the following line to the web browser and replace "< | ||
| + | * After some time, the page should return < | ||
| + | * Copy the following line to the web browser and replace "< | ||
| + | 5. Now you have a working SSH access to AX6: | ||
| + | * Login using SSH: < | ||
| + | * Enter the following lines one by one to the SSH terminal: < | ||
| + | nvram set boot_wait=on | ||
| + | nvram set telnet_en=1 | ||
| + | nvram set ssh_en=1 | ||
| + | nvram commit</ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | === Flashing OpenWrt === | ||
| + | |||
| + | After getting SSH access, you will now be able to flash a previously compiled image (by you since for the time being there are no official automated images): | ||
| + | |||
| + | - Copy the OpenWrt generated image (the '' | ||
| + | - This is a device with a dual partition scheme layout, so you need to find out which one is running with the command < | ||
| + | - The output should be the partition number where the current system was booted from < | ||
| + | mtd13: 023c0000 00020000 " | ||
| + | - Since you can't flash the current partition because it's locked you can only flash the opposite one by replacing the '' | ||
| + | ubiformat /dev/mtd12 -f / | ||
| + | </ | ||
| + | - After flashing the image you need to configure the u-boot to boot from the recently flashed image by replacing the '' | ||
| + | nvram set flag_last_success=0 # if you've flashed mtd12, or " | ||
| + | nvram set flag_boot_rootfs=0 # same | ||
| + | </ | ||
| + | nvram set flag_ota_reboot=1 | ||
| + | </ | ||
| + | - save the changes and reboot< | ||
| + | nvram commit | ||
| + | reboot | ||
| + | </ | ||
| + | - Previous commands flashed an ubinized OpenWrt initramfs that will serve as the intermediate step since OpenWrt uses unified rootfs in order to fully utilize NAND and provide enough space for packages. Continue with the next steps in order to permanently flash OpenWrt. | ||
| + | - SSH into OpenWrt from one of the LAN ports | ||
| + | - Copy the file '' | ||
| + | - Sysupgrade the device:< | ||
| + | |||
| + | Device will reboot with OpenWrt, and then sysupgrade can be used to upgrade the device when desired. Although, see [[# | ||
| + | |||
| + | |||
| + | <WRAP info> | ||
| + | In openwrt the commands to check and change the boot partition are different: | ||
| + | |||
| + | < | ||
| + | fw_printenv flag_boot_rootfs | ||
| + | fw_setenv flag_boot_rootfs 0 # if you've flashed mtd12 or " | ||
| + | fw_setenv flag_last_success 0 # same | ||
| + | </ | ||
| + | </WRAP> | ||
| Line 64: | Line 219: | ||
| These are the steps to do it for Linux (this can be adapted to the tftpd64' | These are the steps to do it for Linux (this can be adapted to the tftpd64' | ||
| - | * Create a folder somewhere to place your firmware for the tftp server and download the OEM firmware (the file name is a very important part):< | + | * Create a folder somewhere to place your firmware for the tftp server and download the OEM firmware (the file name is a very important part; if you have previously had installed Xiaomi firmware version 1.1.14, you might need to adjust the name of the .img file to a different one. The router will be looking for a specific file name on the tftp – if it does not match the one you have in the tmp folder, rename it accordingly and proceed again):< |
| wget https:// | wget https:// | ||
| - | * Set a static address on your PC to serve the firmware from:< | + | |
| + | sudo chown -R nobody: | ||
| + | |||
| + | * Obtain the name of the ethernet adapter (to be used in further steps):< | ||
| + | * The result will loke something like (in this case, the name of the ethernet adapter is enp2s0):< | ||
| + | link/ | ||
| + | 2: enp2s0: < | ||
| + | link/ether xx: | ||
| + | 3: wlp3s0: < | ||
| + | link/ether yy: | ||
| + | | ||
| sudo ip address add 192.168.31.100/ | sudo ip address add 192.168.31.100/ | ||
| - | *Run the server with the following command:< | + | * Run the server with the following command:< |
| - | * Keep reset button | + | * Unplug the power, press and hold the reset button, plug the power back while still holding the button.<WRAP info> |
| - | * Keep it pressed | + | * Hold the reset button |
| + | * then it goes solid orange again, release the button. | ||
| + | * If in the terminal, | ||
| </ | </ | ||
| - | * When the device finished loading the firmware, the led starts | + | * When the device finished loading the firmware, the led starts |
| - | * It Might take some time for the Led go get to solid blue | + | * It might take some time for the led to go solid blue |
| * If the recovery doesn' | * If the recovery doesn' | ||
| * If the led is blinking blue led it means the device was flashed successfully and can be restarted | * If the led is blinking blue led it means the device was flashed successfully and can be restarted | ||
| Line 157: | Line 324: | ||
| ==== Photos ==== | ==== Photos ==== | ||
| + | {{media: | ||
| - | **Xiaomi | + | **Redmi AX6 front PCB** |
| {{media: | {{media: | ||
| - | **Xiaomi | + | **Redmi AX6 back PCB** |
| {{media: | {{media: | ||
| - | **Xiaomi | + | **Redmi AX6 RF frontend comparison** |
| {{: | {{: | ||
| Line 184: | Line 352: | ||
| TTL serial connection is possible, the header has to be soldered, no missing components (resistors etc). There is 5 seconds to enter the bootloader (press ENTER). | TTL serial connection is possible, the header has to be soldered, no missing components (resistors etc). There is 5 seconds to enter the bootloader (press ENTER). | ||
| - | ^ Serial connection parameters for Xiaomi Redmi AX6 AX3000 | + | ^ Serial connection parameters for Xiaomi Redmi AX6 | TTL, 115200, 8N1 | |
| ==== JTAG ==== | ==== JTAG ==== | ||
| Line 1517: | Line 1685: | ||
| ===== Tags ===== | ===== Tags ===== | ||
| [[meta: | [[meta: | ||
| - | {{tag>IPQ8071 | + | {{tag> |