Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
toh:linksys:e8450 [2024/04/03 16:00] – OKD recovery guide taylorklinetoh:linksys:e8450 [2024/12/05 16:12] – Formatting carlitossuper1
Line 1: Line 1:
 ====== 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}} |
Line 37: Line 37:
 } --> } -->
  
-**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.**+**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]],
Line 50: Line 50:
  
 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**__
Line 127: Line 178:
  
 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.==+== 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.
  
Line 161: Line 213:
 Note that the above shows all traffic that is accelerated by the chipset's Packet Processing Engine (PPE), including the wired clients, so if a mix of wired and wireless clients are expected, the output will need to be inspected for specific MACs or IPs of the wireless clients to confirm WED is working. Note that the above shows all traffic that is accelerated by the chipset's Packet Processing Engine (PPE), including the wired clients, so if a mix of wired and wireless clients are expected, the output will need to be inspected for specific MACs or IPs of the wireless clients to confirm WED is working.
  
-If <html>/sys/kernel/debug/mtk_ppe/bind</html> is empty, that merely means that there are no offloaded flows. Again, this is expected if you do not use the device as NAT/router. If you only use it as bridged access point, WED cannot work on OpenWrt 22.03. If you ware willing to try development snapshots, you can use WED by installing the bridger package which facilitates flow-offloading also in bridged configuration.+If ''/sys/kernel/debug/mtk_ppe/bind'' is empty, that merely means that there are no offloaded flows. Again, this is expected if you do not use the device as NAT/router. If you only use it as bridged access point, WED cannot work on OpenWrt 22.03. If you ware willing to try development snapshots, you can use WED by installing the bridger package which facilitates flow-offloading also in bridged configuration.
  
 In general, on MT7622 WED is only supported in TX direction (from router point of view), so CPU load reduction (from around 15% load to around 3% load when running speedtest) can only be observed if traffic is sent from the router to the client. In general, on MT7622 WED is only supported in TX direction (from router point of view), so CPU load reduction (from around 15% load to around 3% load when running speedtest) can only be observed if traffic is sent from the router to the client.
Line 167: Line 219:
 ==== Optionally enable Hardware Flow Offloading ==== ==== Optionally enable Hardware Flow Offloading ====
 <WRAP center info round 80%> <WRAP center info round 80%>
-A device configured as a router will likely benefit from other hardware offloading, but this is not a requirement to use WED.  +A device configured as a router can benefit from hardware offloading, but this is not a requirement to use WED.  
- Note that if the device is configured as a [[docs:guide-user:network:wifi:dumbap|dumb access point]] with VLANs, skip this step!+ Note that if the device is configured as a [[docs:guide-user:network:wifi:dumbap|dumb access point]] with VLANs, skip this step! If you configure 'hardware offloading', do simple throughput tests before and after the change. In at least one case, it did lead to performance degradation.
 </WRAP> </WRAP>
  
Line 179: Line 231:
   option flow_offloading_hw '1'</code>   option flow_offloading_hw '1'</code>
      
-====== Recovery from OpenWrt Kiss of Death (OKD) ======+===== Recovery from OpenWrt Kiss of Death (OKD) =====
  
-===== 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 power failure, these routers sometimes won’t start up again and appear "dead".
  
-As of April 2024, the cause of this issue is unknownand the recent pre-release UBI Installer v1.1.required for using snapshot builds - does NOT fix the issue and Daniel Golle ([[developers:dangole]]), the current maintainer of this devicerecommends 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 onis functioning, or trying to boot. 
 +  * The no-boot condition can be **intermittent**where the router //sometimes// fails to startor **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.
  
-===== Serial Recovery =====+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. 
  
-This section outlines the steps to recover from the OKD easily using a USB to TTL adapter with the mtk_uartboot tool by OpenWrt developer Chuanhong Guo ([[developers:981213]]). +<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"]])).
  
-==== Hardware Needed ====+===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.
  
-  USB to TTL adapter **with cable** (synonymously may be called USB to Serial Adapter or UART converter) **supporting 3.3v**. Example images follow.+=== 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
  
-{{ :media:usb-to-ttl-1.jpg?direct&200 | Example USB to TTL cable }} {{ :media:usb-to-ttl-2.jpg?direct&200 | Example USB to TTL cable }} {{ :media:usb-to-ttl-3.webp?direct&200 | Example USB to TTL cable }}+<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.
  
-==== Software Needed ====+<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 ==== 
 + 
 +This section outlines the steps to recover from the OKD easily using a USB to TTL adapter with the mtk_uartboot tool by OpenWrt developer Chuanhong Guo ([[developers:981213]]).  
 + 
 +=== Hardware Needed === 
 + 
 +  * USB to TTL adapter (synonymously may be called USB to Serial Adapter or UART converter) **with cable** and **supporting 3.3v**. Example images follow. 
 +  * {{ :media:usb-to-ttl-1.jpg?direct&200 | Example USB to TTL cable }}{{ :media:usb-to-ttl-2.jpg?direct&200 | Example USB to TTL cable }}{{ :media:usb-to-ttl-3.webp?direct&200 | Example USB to TTL cable }} 
 + 
 +=== Software Needed ===
  
   * mtk_uartboot   * mtk_uartboot
Line 204: Line 328:
   * [[https://wiki.archlinux.org/title/GNU_Screen|screen]] or similar, such as [[https://www.putty.org/|putty for Windows]]   * [[https://wiki.archlinux.org/title/GNU_Screen|screen]] or similar, such as [[https://www.putty.org/|putty for Windows]]
  
-==== Recovery Steps ====+=== Opening the Router Case ===
  
-  * 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]] +  * It it suggested to review [[https://www.youtube.com/watch?v=uXijb8ZaxBg|this YouTube video]] by user OneMarcFifty that shows the full router disassembly procedure below. 
-  * Download the appropriate .fip file for your version +  * Additional high resolution images are [[https://forum.openwrt.org/t/belkin-rt3200-linksys-e8450-wifi-ax-discussion/94302/104|available in the forum discussion]]. 
-    * Did **not** run the v1.1.UBI installer (e.g. anyone on OpenWrt 23.05.x or below, or older snapshots) +    * Accessing the base screws: Use a razor or sharp knife to peel back a corner of each of the two plastic stickers on the bottom panel of the case and remove them. 
-      * [[https://firmware-selector.openwrt.org/?target=mediatek%2Fmt7622&id=linksys_e8450-ubi|From the latest 23.05.x release page,]] download the bl31-uboot.fip file. +    * Remove the **four (4)** crosshead machine screws that secure the bottom plate to the router body then remove the bottom plate. 
-    * **Ran** the v1.1.1 UBI installer (e.g. running recent snapshot builds. You'd know if you did it!) +    * Remove the **two (2)** crosshead screws that secure the router body to the internal mainboard slide tray. 
-      * [[https://firmware-selector.openwrt.org/?target=mediatek%2Fmt7622&id=linksys_e8450-ubi&version=SNAPSHOT|From the SNAPSHOT release page,]] download the bl31-uboot.fip file+    * 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. 
-  * Disassemble your RT3200 / E8450 (([[https://forum.openwrt.org/t/belkin-rt3200-linksys-e8450-wifi-ax-discussion/94302/104|"There are 4 screws behind the bottom labelThen the lower part of the stand comes off after 2 more screws one may easily slide that whole back part with them connectors out like it is on sort of a plastic tray."]])+      * 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. 
-  * Hook up your USB to TTL serial adapter to the RT3200 / E8450 **with the power off** +    * 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. 
-    * remember that tx from router needs to go to rx of uart connector, and rx of router needs to go to tx of uart connector ((thanks forum member smashrvmco for the reminder))+    * 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 === 
 + 
 +  * 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 and preloader.bin file for your version 
 +    * Did **not** run the v1.1.UBI installer (e.g. anyone on OpenWrt 23.05.x or below, or older snapshots) 
 +      * [[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. 
 +      * [[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.  
 +    * **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(sfrom for example /srv/tftpboot 
 +  * Disassemble your RT3200 / E8450 if you have not yet done so (instructions above) 
 +  * With the RT3200 / E8450 unit'**powered off**: 
 +    * Connect your TTL serial device to the router's white COM port at J10 (the white molex connector) 
 +      * **Important:** Remember that TX from router needs to go to RX of UART connector, and RX of router needs to go to TX of UART connector ((thanks forum member smashrvmco for the reminder)) 
 +      * {{:media:linksys:e8450:serial-device-to-router-connection.png?nolink&400|}}
     * You'll end up with something like this: {{:media:2024-04-02-18-50-17-254.jpg?direct&400|RT3200 hooked up to USB to TTL adapter}}     * You'll end up with something like this: {{:media:2024-04-02-18-50-17-254.jpg?direct&400|RT3200 hooked up to USB to TTL adapter}}
 +    * 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-debug-snand-issue.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> 
-    * <code>mtk_uartboot -a -p bl2-for-mtk_uartboot.bin -f *uboot.fip && putty.exe -serial COM5 -sercfg 115200,8,n,1,N</code>+      * (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 <code>Handshake...</code>, 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 interactionprovided 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> 
  
-===== JTAG Recovery =====+==== 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 unbricking is more complicated and now unnecessary with the mtk_uart tool. If absolutely needed, search "jtag" in the Belkin RT3200/Linksys E8450 forum thread to find the details you need. JTAG unbricking is more complicated and now unnecessary with the mtk_uart tool. If absolutely needed, search "jtag" in the Belkin RT3200/Linksys E8450 forum thread to find the details you need.
Line 263: Line 426:
 ==== Serial ==== ==== Serial ====
  
-{{:media:linksys:linksys-e8450-internal-ports.png?nolink|}}+{{:media:linksys-e8450-belkin-rt3200-serial-jtag-ports.png?direct&400|:}}
  
 <!-- ToH: { <!-- ToH: {
  • Last modified: 2024/12/05 16:22
  • by carlitossuper1