| Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision |
| toh:linksys:e8450 [2024/06/02 08:56] – [Optionally enable Hardware Flow Offloading] I've seen severe performance degradation due to activation of "offloading", took long to debug. Putting up a warning. christianhorn | toh:linksys:e8450 [2024/12/05 16:12] – Formatting carlitossuper1 |
|---|
| ====== Linksys E8450 (aka. Belkin RT3200) ====== | ====== Linksys E8450 (aka. Belkin RT3200) ====== |
| |
| This Linksys E8450 is a dual-band IEEE 802.11ac/ax router based on MediaTek MT7622BV and MediaTek MT7915E. It has five Gigabit Ethernet ports, one USB 2.0 port, 128MiB SPI-NAND Flash (2k+64) and 512MB DDR3 RAM. | This Linksys E8450 is a dual-band IEEE 802.11ac/ax router based on MediaTek MT7622BV and MediaTek MT7915E. It has five Gigabit Ethernet ports, one USB 2.0 port, 128 MiB SPI-NAND Flash (2k+64) and 512 MB DDR3 RAM. |
| |
| | {{media:linksys:e8450_side.png?400|Linksys E8450}} | {{:media:belkin:belkin-rt3200.png?400|Belkin RT3200}} | | | {{media:linksys:e8450_side.png?400|Linksys E8450}} | {{:media:belkin:belkin-rt3200.png?400|Belkin RT3200}} | |
| } --> | } --> |
| |
| **Users already running OpenWrt 23.05.x or older, or snapshots before [[commit>?p=openwrt/openwrt.git;a=commitdiff;h=6aec3c7b5bf5e5a999a12121dfa71963afb6f003|2024-02-15]] also need to re-run the installer yet another time to move //fip// and //factory// partitions into UBI volumes before running snapshots after 2024-02-15 as well as upcoming releases. Upgrading to release 23.05.3 does NOT require that you re-run the installer.** | **Users already running OpenWrt 23.05.x or older, or snapshots before [[commit>?p=openwrt/openwrt.git;a=commitdiff;h=6aec3c7b5bf5e5a999a12121dfa71963afb6f003|2024-02-15]] also need to re-run the installer yet another time to move //fip// and //factory// partitions into UBI volumes before running snapshots after 2024-02-15 as well as upcoming releases. Upgrading to release 23.05.4 does NOT require that you re-run the installer.** |
| |
| **Since [[commit>?p=openwrt/openwrt.git;a=commitdiff;h=050621aa017273086d46ccf22dfb6942a367e049|2021-08-27]], | **Since [[commit>?p=openwrt/openwrt.git;a=commitdiff;h=050621aa017273086d46ccf22dfb6942a367e049|2021-08-27]], |
| |
| Read the advice there and download the initial installation image **...ubi-initramfs-recovery-installer.itb** | Read the advice there and download the initial installation image **...ubi-initramfs-recovery-installer.itb** |
| | |
| | __**Upgrading an UBI installation to new releases after 2024-02 (Includes ALL SNAPSHOTS, 24.10-SNAPSHOTs, 24.10.0-rcX releases and all releases in the foreseable future)**__ |
| | |
| | Since some SNAPSHOTs releases after February 2024, the flash layout of the router moved the FIP and Factory partitions into UBI, and thus, those releases need a new installer. That installer, as of December 2024 is v1.1.3 is available [[https://github.com/dangowrt/owrt-ubi-installer/releases/tag/v1.1.3|here]]. The procedure to upgrdade to Main SNAPSHOTS and newer releases (24.10-SNAPSHOT, 24.10.0-rcX and the future stable 24.10.0) //without keeping the configuration// is the following: |
| | |
| | 1. Download the //unsigned// installed from the link above, and the desired sysupgrade image you want to upgrade to (On Firmware Selector or [[https://downloads.openwrt.org/|OpenWRT's downloads]] page). |
| | 2. Flash the unsigned installer on Luci > System > Backup/Flash Firmware. Make sure to force the upgrade and uncheck to Keep the configuration! |
| | 3. The router will reboot into a recovery environment and will be accessible at 192.168.1.1. Go again to Luci > System > Backup/Flash Firmware and flash the desired sysupgrade image. Again, don't keep the configuration. |
| | 4. The router will reboot on the desired image and is ready to be set up. All future releases can be safely flashed using Luci, Attended Sysupgrade or OWUT unless a new installer is required and is instructed to be flashed. |
| | |
| | **In case the configuration wants to be preserved:** |
| | |
| | The configuration between stable 23.05 and MAIN Snapshots and current 24.10-rcX releases is almost identical, but needs some changes, so the procedure to upgrade while keeping the configuration is the following. |
| | 1. On the stable release, SSH into the router and execute ''uci set system.@system[0].compat_version=2.0'' and ''uci commit''. |
| | 2. Make a backup of said configuration on Luci > System > Backup/Flash Firmware. |
| | 3. Delete the following files from the backup file: |
| | * /etc/config/ubootenv |
| | * /etc/fw_env.config |
| | 4. Flash the //unsigned// 1.1.3 installer like the previous instructions. |
| | 5. The router will reboot in a recovery environment and then, flash the desired sysupgrade image. |
| | 6. The router will reboot on the desired image and the backup file can be uploaded in Luci > System > Backup/Flash Firmware. |
| | |
| | In the event that those files aren't deleted from the backup, those files need to be modified to match the new flash layout and avoid problems on future sysupgrades: |
| | - /etc/fw_env.config |
| | |
| | <webcode name="Default" frameborder=0 width=100% scrolling=yes externalResources="," renderingMode=story > |
| | /dev/ubi0_2 0x0 0x1f000 0x1f000 1 |
| | /dev/ubi0_3 0x0 0x1f000 0x1f000 1 |
| | </webcode> |
| | |
| | - /etc/config/ubootenv |
| | |
| | <webcode name="Default" frameborder=0 width=100% scrolling=yes externalResources="," renderingMode=story > |
| | |
| | config ubootenv |
| | option dev '/dev/ubi0_2' |
| | option offset '0x0''' |
| | option envsize '0x1f000' |
| | option secsize '0x1f000' |
| | option numsec '1' |
| | |
| | config ubootenv |
| | option dev '/dev/ubi0_3' |
| | option offset '0x0' |
| | option envsize '0x1f000' |
| | option secsize '0x1f000' |
| | option numsec '1' |
| | |
| | </webcode> |
| | |
| | More info about those changes in the files [[https://forum.openwrt.org/t/belkin-rt3200-linksys-e8450-wifi-ax-discussion/94302/5950|here]]. |
| |
| __**non-UBI**__ | __**non-UBI**__ |
| |
| A few caveats to using WED: | A few caveats to using WED: |
| * Users may experience stability issues as this is a [[https://patchwork.kernel.org/project/linux-wireless/patch/20220505113729.50380-4-nbd@nbd.name/|relatively new]] feature | * Requires 22.03 or later |
| | * May be less stable as this is a [[https://patchwork.kernel.org/project/linux-wireless/patch/20220505113729.50380-4-nbd@nbd.name/|relatively new]] feature |
| * It can be used alone or in addition to other hardware offloading | * It can be used alone or in addition to other hardware offloading |
| * Requires 22.03.0 or later | * It is incompatible with AQL |
| * Only accelerates wireless traffic, not wired traffic | * Only accelerates wireless traffic, not wired traffic |
| * Only supported on the 5 GHz radio | * Only supported on the 5 GHz radio |
| * If used on a [[:docs:guide-user:network:wifi:dumbap|dumb access point]], an additional package is needed | * If used on a [[:docs:guide-user:network:wifi:wifiextenders:bridgedap|dumb AP]], an additional package is needed |
| |
| === Enable WED === | === Enable WED === |
| == OpenWrt 22.03.2 == | == 22.03 or 23.05 == |
| * Edit ''/etc/modules.d/mt7915e'' and append this line ''mt7915e wed_enable=Y'' | * Edit ''/etc/modules.d/mt7915e'' and append this line ''mt7915e wed_enable=Y'' |
| * This change requires a reboot | * This change requires a reboot |
| * :!: This change will not persist upon updating as the file edited is not the target of a backup tarball. | * :!: This change will not persist upon updating as the file edited is not the target of a backup tarball. |
| == Development snapshot == | == 24.10 or Main snapshots onward == |
| * Edit ''/etc/modules.conf'' and append this line: ''options mt7915e wed_enable=Y'' | * Edit ''/etc/modules.conf'' and append this line: ''options mt7915e wed_enable=Y'' |
| * This change requires a reboot | * This change requires a reboot |
| == Dumb access point configuration == | == Dumb Access Point configuration == |
| Flow offloading happens in situations where flows are actually being tracked, ie. when using NAT/routing. To use WED on a dumb access point requires the [[https://github.com/openwrt/openwrt/tree/master/package/network/services/bridger|bridger]] package which does a bit of BPF magic to get bridged streams tracked (and hence offloaded). | Flow offloading happens in situations where flows are actually being tracked, ie. when using NAT/routing. To use WED on a dumb AP requires the [[https://github.com/openwrt/openwrt/tree/master/package/network/services/bridger|bridger]] package which does a bit of BPF magic to get bridged streams tracked (and hence offloaded). |
| * [[faq/how_to_install_packages|Install]] the bridger package. Optionally edit ''/etc/config/bridger'' and define a device or bridge to exclude from bridge forwarding acceleration. | * [[faq/how_to_install_packages|Install]] the bridger package. Optionally edit ''/etc/config/bridger'' and define a device or bridge to exclude from bridge forwarding acceleration. |
| |
| ==== Brief Summary of OKD ==== | ==== Brief Summary of OKD ==== |
| |
| The RT3200 / E8450 suffers from an occasional failure known colloquially as the OpenWrt Kiss of Death (OKD). Symptoms of the OKD range from either an abrupt failure to get a full boot - most evident by the failure to get a poweron LED after a reboot or power failure - or a progressive failure that may still boot through several attempts or after leaving the router in the refrigerator or freezer for 30 minutes. The progressive failure may proceed to a full failure eventually. | Many RT3200 / E8450 routers running on OpenWRT have encountered a problem known colloquially the **OpenWrt Kiss of Death (OKD)**. This issue causes routers, previously working fine, to fail to boot after being powered off. Whether the power is turned off by the power switch, a reboot command, or a power failure, these routers sometimes won’t start up again and appear "dead". |
| |
| As of April 2024, the cause of this issue is unknown, and the recent pre-release UBI Installer v1.1.1 - required for using snapshot builds - does NOT fix the issue and Daniel Golle ([[developers:dangole]]), the current maintainer of this device, recommends remaining on OpenWrt stable builds and avoiding any modifications to the bootloader beyond the initial install as outlined in this wiki (([[https://forum.openwrt.org/t/belkin-rt3200-linksys-e8450-wifi-ax-discussion/94302/4735|daniel: "I recommend users using the device in production to never touch the bootloader unless you really have to and stay with stable OpenWrt releases"]])). | Symptoms of OKD include: |
| | * After any cause of power down, the router appears "dead"—there are **no lights or LEDs** to indicate that it is powered on, is functioning, or trying to boot. |
| | * The no-boot condition can be **intermittent**, where the router //sometimes// fails to start, or **sudden**, where a previously functioning router //abruptly stops booting altogether//. |
| | * Routers experiencing occasional no-boot conditions will generally worsen over time until they cease to boot after powering down. |
| | |
| | Routers with the OKD bug might still boot after several tries. Some users even report placing a seemingly "dead" router in a freezer for 30 minutes may help OKD-afflicted routers to boot. However, OKD will progress over time eventually leading to a complete failure to boot. |
| | |
| | <del>As of April 2024, the cause of this issue is unknown, and the recent pre-release UBI Installer v1.1.1 - required for using snapshot builds - does NOT fix the issue and</del> Daniel Golle ([[developers:dangole]]), the current maintainer of this device, recommends remaining on OpenWrt stable builds and avoiding any modifications to the bootloader beyond the initial install as outlined in this wiki (([[https://forum.openwrt.org/t/belkin-rt3200-linksys-e8450-wifi-ax-discussion/94302/4735|daniel: "I recommend users using the device in production to never touch the bootloader unless you really have to and stay with stable OpenWrt releases"]])). |
| | |
| | ===The cause of OKD has been identified=== |
| | Intense debugging during August 2024 resulted in the [[https://github.com/mtk-openwrt/arm-trusted-firmware/issues/10|discovery of the cause]] and [[https://github.com/mtk-openwrt/arm-trusted-firmware/pull/11|subsequent fix]] of the issue: |
| | A bug introduced in MediaTek's Open Source ARM TrustedFirmware-A resulted in //correctable// read errors to become fatal because of a logic error. The bug is not present in older version of TF-A bl2 (v2.4) and has been fixed by [[commit>?p=openwrt/openwrt.git;a=commit;h=c22ba7544eaa556bee92725d6ec13061247d25ad|commit c22ba7544e]]. A fixed TF-A v2.10 version v2024.01.17~bacca82a-3 is now include in the updated installer v1.1.3 has been published which contains the fix. Users of affected version should replace buggy bl2 to avoid OKD once and for ever. |
| | |
| | === Check if your device is at risk of OKD === |
| | //(Note: If your device **is not booting** due to OKD ... this section isn't for you: skip to the recovery section.)// |
| | * Issue does not affect those who are still running **TrustedFirmware-ARM (TF-A) v2.4** (those who ran installer 1.0.2 or earlier) |
| | * Issue affects those who are running TF-A v2.9 (those who ran installer 1.0.3 or newer) |
| | * You can find out which TF-A you are running by executing, for example: |
| | <code> |
| | # grep "(release)" /dev/mtd0ro |
| | v2.4(release):OpenWrt v2021-05-08-d2c75b21-3 (mt7622-snand-1ddr) |
| | </code> |
| | If you are on v2.4 => You can safely sysupgrade to any 23.x |
| | |
| | <code> |
| | # grep "(release)" /dev/mtd0ro |
| | v2.9(release):OpenWrt v2023-07-24-00ac6db3-2 (mt7622-snand-1ddr) |
| | or |
| | v2.10.0 (release):OpenWrt v2024.01.17~bacca82a-1 (mt7622-snand-ubi-1ddr) |
| | or |
| | v2.10.0 (release):OpenWrt v2024.01.17~bacca82a-2 (mt7622-snand-ubi-1ddr) |
| | </code> |
| | If you are on the v2.9 branch or (2.10 branch and the suffix of the build is ...a**-1** or ...a**-2**) => Device is affected and at risk of OKD on boot, reboot, power up. |
| | |
| | <code> |
| | v2.10.0 (release):OpenWrt v2024.01.17~bacca82a-3 (mt7622-snand-ubi-1ddr) |
| | </code> |
| | You are safe as you have the fixed v2.10.0...a**-3** or later build. |
| | |
| | ===Recovery from live OpenWrt main/master snapshot with FIP in UBI layout=== |
| | If your router still boots OpenWrt, e.g. with the refrigerator trick, you can try fixing OKD from the SSH console (at your own risk...). The recovery method below has been tried on a **new main/master snapshot that already runs the "FIP in UBI" layout from v2.9 or affected v2.10**. |
| | |
| | The main thing is rewriting BL2 = preloader.bin to get rid of the bug in the early bootloader, but also the later bootloader "FIP" may need to be rewritten (first) if your router already has difficulties in booting. |
| | |
| | Key steps in "do from SSH": |
| | * Optional: First rewrite FIP (BL31) in UBI via ubiupdatevol. This may be needed as precaution if the router only boots occasionally and you fear doing a sysupgrade. FIP can be rewritten using the ubi file system manipulation tools after downloading it from https://downloads.openwrt.org/snapshots/targets/mediatek/mt7622/openwrt-mediatek-mt7622-linksys_e8450-ubi-bl31-uboot.fip . Procedure explained in https://forum.openwrt.org/t/belkin-rt3200-linksys-e8450-wifi-ax-discussion/94302/4844 |
| | * Sysupgrade to a new snapshot in order to be able to install the required kmod-mtd-rw package. Download and flash the newest e8450-ubi-sysupgrade image from https://downloads.openwrt.org/snapshots/targets/mediatek/mt7622/ |
| | * After rebooting with the new firmware, you need to opkg install the kmod-mtd-rw package to enable writing to the bl2 partition (mtd0). After opkg installing it, you also need to load the module to kernel with "insmod mtd-rw.ko i_want_a_brick=1" command issued from the SSH console. |
| | * Use mtd to rewrite BL2 (preloader.bin). This is the actual fix. Download it from https://downloads.openwrt.org/snapshots/targets/mediatek/mt7622/openwrt-mediatek-mt7622-linksys_e8450-ubi-preloader.bin to /tmp directory in the router, and write to the flash 4x times with |
| | <code> |
| | mtd -p 0x0 write /tmp/openwrt-mediatek-mt7622-linksys_e8450-ubi-preloader.bin /dev/mtd0 |
| | mtd -p 0x20000 write /tmp/openwrt-mediatek-mt7622-linksys_e8450-ubi-preloader.bin /dev/mtd0 |
| | mtd -p 0x40000 write /tmp/openwrt-mediatek-mt7622-linksys_e8450-ubi-preloader.bin /dev/mtd0 |
| | mtd -p 0x60000 write /tmp/openwrt-mediatek-mt7622-linksys_e8450-ubi-preloader.bin /dev/mtd0 |
| | </code> |
| | * Before rebooting, verify with grep (explained above) that mtd0 really contains the fixed v2.10 |
| | |
| | Original explanation of the process: https://forum.openwrt.org/t/belkin-rt3200-linksys-e8450-wifi-ax-discussion/94302/5709 |
| | |
| | Example of rewriting BL2: https://forum.openwrt.org/t/belkin-rt3200-linksys-e8450-wifi-ax-discussion/94302/5702 |
| | |
| | Example of rewriting FIP = BL31: https://forum.openwrt.org/t/belkin-rt3200-linksys-e8450-wifi-ax-discussion/94302/4844 |
| | |
| | ===Recovery from live OpenWrt 22.03.x or 23.05.x with FIP in MTD layout=== |
| | If your router still boots, you should downgrade bl2 to an unaffected older version via SSH. |
| | * Use opkg install the ''kmod-mtd-rw'' package to enable writing to the bl2 partition (mtd0). After opkg installing it, you also need to load the module to kernel with ''insmod mtd-rw.ko i_want_a_brick=1'' command issued from the SSH console. |
| | * Use mtd to rewrite BL2 (preloader.bin). This is the actual fix. Download it from https://downloads.openwrt.org/releases/22.03.0/targets/mediatek/mt7622/openwrt-22.03.0-mediatek-mt7622-linksys_e8450-ubi-preloader.bin to /tmp directory in the router, and write to the flash 4x times with |
| | <code> |
| | mtd -p 0x0 write /tmp/openwrt-22.03.0-mediatek-mt7622-linksys_e8450-ubi-preloader.bin /dev/mtd0 |
| | mtd -p 0x20000 write /tmp/openwrt-22.03.0-mediatek-mt7622-linksys_e8450-ubi-preloader.bin /dev/mtd0 |
| | mtd -p 0x40000 write /tmp/openwrt-22.03.0-mediatek-mt7622-linksys_e8450-ubi-preloader.bin /dev/mtd0 |
| | mtd -p 0x60000 write /tmp/openwrt-22.03.0-mediatek-mt7622-linksys_e8450-ubi-preloader.bin /dev/mtd0 |
| | </code> |
| | * Before rebooting, verify with grep (explained above) that mtd0 really contains the unaffected v2.4. |
| |
| ==== Serial Recovery ==== | ==== Serial Recovery ==== |
| * Remove the **two (2)** crosshead screws that secure the router body to the internal mainboard slide tray. | * Remove the **two (2)** crosshead screws that secure the router body to the internal mainboard slide tray. |
| * Remove the internal mainboard slide tray from the router body by sliding it through the **back** of the router body. It comes out easily, but to initially displace or "unstick" it, you can carefully use a screwdriver to push through the underside opening to the rear of the router and onto the rear plastic face panel on the slide tray. Caution: Only press on the rear plastic panel of the slide tray, not on any of the components mounted through the rear panel. | * Remove the internal mainboard slide tray from the router body by sliding it through the **back** of the router body. It comes out easily, but to initially displace or "unstick" it, you can carefully use a screwdriver to push through the underside opening to the rear of the router and onto the rear plastic face panel on the slide tray. Caution: Only press on the rear plastic panel of the slide tray, not on any of the components mounted through the rear panel. |
| | * Alternative perspective: "easily" is subjective, I needed to switch between tools to find a suitable one of which I can both get a good grip and still able to point it to safe plastic area, and a strong initial push after which it came out "easily". It took several attempts. |
| * Remove the **three (3)** crosshead screws on the **outer perimeter** of the mainboard (one (1) on bottom edge, two (2) on top edge). There is no need to remove the four screws that attach the heatsink to the mainboard. | * Remove the **three (3)** crosshead screws on the **outer perimeter** of the mainboard (one (1) on bottom edge, two (2) on top edge). There is no need to remove the four screws that attach the heatsink to the mainboard. |
| * Turn the mainboard over and you will have access to the white serial connector and JTAG connector. | * Slide the mainboard slightly sideways as needed, then turn the mainboard over (without stretching wires too much) and you will have access to the white serial connector and JTAG connector. |
| |
| === Recovery Steps === | === Recovery Steps === |
| |
| * Download the file **bl2-for-mtk_uartboot.bin** from the most recent [[https://github.com/dangowrt/owrt-ubi-installer/releases/|OpenWrt UBI Installer Releases Page]] | * Download the file **[[https://downloads.openwrt.org/snapshots/targets/mediatek/mt7622/mt7622-ram-1ddr-bl2.bin|mt7622-ram-1ddr-bl2.bin]]** |
| * Download the appropriate .fip file for your version | * Download the appropriate .fip and preloader.bin file for your version |
| * Did **not** run the v1.1.1 UBI installer (e.g. anyone on OpenWrt 23.05.x or below, or older snapshots) | * Did **not** run the v1.1.3 UBI installer (e.g. anyone on OpenWrt 23.05.x or below, or older snapshots) |
| * [[https://firmware-selector.openwrt.org/?target=mediatek%2Fmt7622&id=linksys_e8450-ubi|From the latest 23.05.x release page,]] download the latest **//<color #6002EE>release version</color>//** of the **bl31-uboot.fip** file. | * [[https://firmware-selector.openwrt.org/?version=22.03.7&target=mediatek%2Fmt7622&id=linksys_e8450-ubi|From the latest 22.03.x release page,]] download the latest **//<color #6002EE>release version</color>//** of the **preloader.bin** file. Rename preloader.bin to **openwrt-mediatek-mt7622-linksys_e8450-ubi-preloader.bin** (ie. remove version from filename). Do **NOT** use the 23.05.4 preloader.bin - it is buggy. Do **NOT** use snapshot preloader.bin - while fixed, it requires a different flash partition layout. |
| * **Ran** the v1.1.1 UBI installer (e.g. running recent snapshot builds. You'd know if you did it!) | * [[https://firmware-selector.openwrt.org/?target=mediatek%2Fmt7622&id=linksys_e8450-ubi|From the latest 23.05.x release page,]] download the latest **//<color #6002EE>release version</color>//** of the **bl31-uboot.fip** file. |
| * [[https://firmware-selector.openwrt.org/?target=mediatek%2Fmt7622&id=linksys_e8450-ubi&version=SNAPSHOT|From the SNAPSHOT release page,]] download the **//<color #ff7f27>snapshot version</color>//** of the **bl31-uboot.fip** file. | * **Ran** the v1.1.1 or newer UBI installer (e.g. running recent snapshot builds. You'd know if you did it!) |
| | * [[https://firmware-selector.openwrt.org/?target=mediatek%2Fmt7622&id=linksys_e8450-ubi&version=SNAPSHOT|From the SNAPSHOT release page,]] download the **//<color #ff7f27>snapshot version</color>//** of the **preloader.bin** and **bl31-uboot.fip** files. |
| | * Prepare a TFTP server listening on 192.168.1.254 to provide the preloader.bin file |
| | * That is, connect RJ-45 from your router's port 1 to your computer, then on the configure that network interface on the computer to answer at address 192.168.1.254. |
| | * Usually tftpd serves the file(s) from for example /srv/tftpboot |
| * Disassemble your RT3200 / E8450 if you have not yet done so (instructions above) | * Disassemble your RT3200 / E8450 if you have not yet done so (instructions above) |
| * With the RT3200 / E8450 unit's **powered off**: | * With the RT3200 / E8450 unit's **powered off**: |
| * Close up:{{:media:linksys-e8450-belkin-rt3200-hooked-up-for-debugging-closeup.jpg?direct&400|}} | * Close up:{{:media:linksys-e8450-belkin-rt3200-hooked-up-for-debugging-closeup.jpg?direct&400|}} |
| * Run the mtk_uartboot program with your downloaded files, followed by an **immediate** screen or putty command. Below are some examples: | * Run the mtk_uartboot program with your downloaded files, followed by an **immediate** screen or putty command. Below are some examples: |
| * Linux, when `mtk_uartboot` automatically recognizes the connected serial device: <code>mtk_uartboot -a -p bl2-for-mtk_uartboot.bin -f *uboot.fip && screen /dev/ttyUSB0 115200</code> | * Linux, when `mtk_uartboot` automatically recognizes the connected serial device: <code>./mtk_uartboot -s /dev/ttyUSB0 -a -p mt7622-ram-1ddr-bl2.bin -f *uboot.fip && screen /dev/ttyUSB0 115200</code> |
| * macOS, when `mtk_uartboot` would otherwise use the wrong serial device: <code>./mtk_uartboot -a -p bl2-for-mtk_uartboot.bin -f openwrt-mediatek-mt7622-linksys_e8450-ubi-bl31-uboot.fip -s /dev/cu.usbserial-B002EI6Z && screen /dev/cu.usbserial-B002EI6Z 115200</code> | * macOS, when `mtk_uartboot` would otherwise use the wrong serial device: <code>./mtk_uartboot -a -p mt7622-ram-1ddr-bl2.bin -f openwrt-mediatek-mt7622-linksys_e8450-ubi-bl31-uboot.fip -s /dev/cu.usbserial-B002EI6Z && screen /dev/cu.usbserial-B002EI6Z 115200</code> |
| * Windows: <code>mtk_uartboot -a -s COM(X) -p bl2-for-mtk_uartboot.bin -f openwrt-23.05.3-mediatek-mt7622-linksys_e8450-ubi-bl31-uboot.fip && putty.exe -serial COM(X) -sercfg 115200,8,n,1,N</code> note: **replace (X)** with the actual COM port number of the serial adapter | * (The serial device on your system may be different than the one shown above, such as `tty.usbserial-0001` or similar. If the handshake does not succeed, compare your `/dev` directory before and after plugging in the serial device to discover the newly created adapter. Running `ls -t1r` after plugging in the adapter may help see the newest devices. Replace `cu.usbserial-B002EI6Z` with the correct serial device every time it appears in the above command.) |
| | * Windows: <code>mtk_uartboot -a -s COM(X) -p mt7622-ram-1ddr-bl2.bin -f openwrt-23.05.3-mediatek-mt7622-linksys_e8450-ubi-bl31-uboot.fip && putty.exe -serial COM(X) -sercfg 115200,8,n,1,N</code> note: **replace (X)** with the actual COM port number of the serial adapter |
| * Power on the RT3200 / E8450 | * Power on the RT3200 / E8450 |
| * mtk_uart should trigger a boot (if you never get past 'Handshake...' from mtk_uartboot, you have the wrong serial device selected, don't have a good serial connection, or - and this is the case for many people - your serial adapter may not be compatible and you should try another if your attempts fail repeatedly) and your screen / putty session should present you with a U-Boot menu. If you take no action for a number of seconds, your router will boot. To recover, **you want to immediately press any key (like a down arrow) to interrupt the boot and stay on the boot menu**. | * mtk_uart should trigger a boot (if you never get past 'Handshake...' from mtk_uartboot, you have the wrong serial device selected, don't have a good serial connection, or - and this is the case for many people - your serial adapter may not be compatible and you should try another if your attempts fail repeatedly) and your screen / putty session should present you with a U-Boot menu. If you take no action for a number of seconds, your router will boot. To recover, **you want to immediately press any key (except for 0-a as these are options in the menu. a down arrow works) to interrupt the boot and stay on the boot menu**. |
| * From the boot menu, select the bottom option, U-Boot Console. | * From the boot menu, select the option ''Load BL2 preloader via TFTP then write to flash.'' |
| | * Note that the current version automatically does the reflashing without further interaction, provided you have TFTP working. So, after the 4th "Writing 131072 byte(s) (64 page(s)) at offset 0x000600000" line everything should be ready. After reboot, the grep "(release)" /dev/mtd0ro command should give you v2.4 again. |
| * {{ :media:openwrt-boot-menu.png?direct&600 | OpenWrt Boot Menu }} | * {{ :media:openwrt-boot-menu.png?direct&600 | OpenWrt Boot Menu }} |
| * Rewrite the flash ("As crazy as it sounds, but literally reading from the flash and writing back the read content fixes the issue."), based on your OpenWrt version | |
| * Did **not** run the v1.1.1 UBI installer (e.g. anyone on OpenWrt 23.05.x or below, or older snapshots) | |
| * <code>mtd read fip $loadaddr 0x0 0x140000 && mtd write fip $loadaddr 0x0 0x140000</code> | |
| * **Ran** the v1.1.1 UBI installer (e.g. running recent snapshot builds. You'd know if you did it!) | |
| * <code>ubi remove rootfs_data ; ubi read $loadaddr fip && ubi write $loadaddr fip $filesize</code> | |
| |
| | ==== Troubleshooting ==== |
| | |
| | Q: Getting "Failed to open port: Error { kind: Unknown, description: "I/O error" }" with mtk_uartboot? |
| | |
| | A: Likely you did not specify the device for the mtk_uartboot like -s /dev/ttyUSB0, an earlier version of these instructions did not state that. You may also need root privileges. |
| | |
| | Q: Getting "ARP Retry count exceeded; starting again" after selecting "Load BL2 preloader via TFTP then write to flash"? |
| | |
| | A: You don't have network configured - did you connect the router's port to computer, set computer's IP on that interface to 192.168.1.254, and running tftpd serving the openwrt-mediatek-mt7622-linksys_e8450-ubi-preloader.bin file? |
| | |
| | Q: Getting "BL2: Failed to load image id 5 (-2)"? |
| | |
| | A: This is the standard message when trying to boot a broken router - in this case, mtk_uartboot did not send the binary to run on time, you need to kill the existing screen session / mtk_uartboot and try again. |
| | |
| | Q: Getting "Error: ethernet@e6800000 address not set."? |
| | |
| | A: Use commands inside console: |
| | <code>setenv bootcmd |
| | setenv bootargs |
| | setenv ethaddr xx:xx:xx:xx:xx:xx #(MAC from the sticker) |
| | saveenv</code> |
| | |
| | |
| ==== JTAG Recovery ==== | ==== JTAG Recovery ==== |
| |