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 | ||
| toh:linksys:e8450 [2024/02/19 00:29] – [Flash Layout] update UBI layout daniel | toh: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 | + | 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: | | {{media: | ||
| Line 36: | Line 36: | ||
| " | " | ||
| } --> | } --> | ||
| + | |||
| + | **Users already running OpenWrt 23.05.x or older, or snapshots before [[commit>? | ||
| **Since [[commit>? | **Since [[commit>? | ||
| Line 44: | Line 46: | ||
| If you do want to use OpenWrt __permanently__, | If you do want to use OpenWrt __permanently__, | ||
| * [[https:// | * [[https:// | ||
| + | |||
| + | Just flashing the **UBI** image alone is not enough and will brick the device! Be sure to run the installer above! | ||
| 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, | ||
| + | |||
| + | 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:// | ||
| + | |||
| + | 1. Download the // | ||
| + | 2. Flash the unsigned installer on Luci > System > Backup/ | ||
| + | 3. The router will reboot into a recovery environment and will be accessible at 192.168.1.1. Go again to Luci > System > Backup/ | ||
| + | 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 '' | ||
| + | 2. Make a backup of said configuration on Luci > System > Backup/ | ||
| + | 3. Delete the following files from the backup file: | ||
| + | * / | ||
| + | * / | ||
| + | 4. Flash the // | ||
| + | 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/ | ||
| + | |||
| + | 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: | ||
| + | - / | ||
| + | |||
| + | <webcode name=" | ||
| + | /dev/ubi0_2 0x0 0x1f000 0x1f000 1 | ||
| + | /dev/ubi0_3 0x0 0x1f000 0x1f000 1 | ||
| + | </ | ||
| + | |||
| + | - / | ||
| + | |||
| + | <webcode name=" | ||
| + | |||
| + | config ubootenv | ||
| + | option dev '/ | ||
| + | option offset ' | ||
| + | option envsize ' | ||
| + | option secsize ' | ||
| + | option numsec ' | ||
| + | | ||
| + | config ubootenv | ||
| + | option dev '/ | ||
| + | option offset ' | ||
| + | option envsize ' | ||
| + | option secsize ' | ||
| + | option numsec ' | ||
| + | | ||
| + | </ | ||
| + | |||
| + | More info about those changes in the files [[https:// | ||
| __**non-UBI**__ | __**non-UBI**__ | ||
| Line 123: | Line 178: | ||
| A few caveats to using WED: | A few caveats to using WED: | ||
| - | * Users may experience stability issues | + | * Requires 22.03 or later |
| + | * May be less stable | ||
| * 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 [[: | + | * If used on a [[: |
| === Enable WED === | === Enable WED === | ||
| - | == OpenWrt | + | == 22.03 or 23.05 == |
| * Edit ''/ | * Edit ''/ | ||
| * 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 ''/ | * Edit ''/ | ||
| * 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/ | + | Flow offloading happens in situations where flows are actually being tracked, ie. when using NAT/ |
| * [[faq/ | * [[faq/ | ||
| Line 157: | Line 213: | ||
| Note that the above shows all traffic that is accelerated by the chipset' | Note that the above shows all traffic that is accelerated by the chipset' | ||
| - | If < | + | If '' |
| 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 163: | 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 | + | A device configured as a router |
| - | Note that if the device is configured as a [[docs: | + | Note that if the device is configured as a [[docs: |
| </ | </ | ||
| Line 174: | Line 230: | ||
| option flow_offloading ' | option flow_offloading ' | ||
| option flow_offloading_hw ' | option flow_offloading_hw ' | ||
| + | | ||
| + | ===== Recovery from OpenWrt Kiss of Death (OKD) ===== | ||
| + | |||
| + | ==== Brief Summary of OKD ==== | ||
| + | |||
| + | 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 " | ||
| + | |||
| + | Symptoms of OKD include: | ||
| + | * After any cause of power down, the router appears " | ||
| + | * The no-boot condition can be **intermittent**, | ||
| + | * 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 " | ||
| + | |||
| + | < | ||
| + | |||
| + | ===The cause of OKD has been identified=== | ||
| + | Intense debugging during August 2024 resulted in the [[https:// | ||
| + | A bug introduced in MediaTek' | ||
| + | |||
| + | === 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: | ||
| + | < | ||
| + | # grep " | ||
| + | v2.4(release): | ||
| + | </ | ||
| + | If you are on v2.4 => You can safely sysupgrade to any 23.x | ||
| + | |||
| + | < | ||
| + | # grep " | ||
| + | v2.9(release): | ||
| + | or | ||
| + | v2.10.0 (release): | ||
| + | or | ||
| + | v2.10.0 (release): | ||
| + | </ | ||
| + | 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. | ||
| + | |||
| + | < | ||
| + | v2.10.0 (release): | ||
| + | </ | ||
| + | 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 " | ||
| + | |||
| + | 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:// | ||
| + | * 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:// | ||
| + | * 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 " | ||
| + | * Use mtd to rewrite BL2 (preloader.bin). This is the actual fix. Download it from https:// | ||
| + | < | ||
| + | mtd -p 0x0 write / | ||
| + | mtd -p 0x20000 write / | ||
| + | mtd -p 0x40000 write / | ||
| + | mtd -p 0x60000 write / | ||
| + | </ | ||
| + | * Before rebooting, verify with grep (explained above) that mtd0 really contains the fixed v2.10 | ||
| + | |||
| + | Original explanation of the process: https:// | ||
| + | |||
| + | Example of rewriting BL2: https:// | ||
| + | |||
| + | Example of rewriting FIP = BL31: https:// | ||
| + | |||
| + | ===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 '' | ||
| + | * Use mtd to rewrite BL2 (preloader.bin). This is the actual fix. Download it from https:// | ||
| + | < | ||
| + | mtd -p 0x0 write / | ||
| + | mtd -p 0x20000 write / | ||
| + | mtd -p 0x40000 write / | ||
| + | mtd -p 0x60000 write / | ||
| + | </ | ||
| + | * 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: | ||
| + | |||
| + | === 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. | ||
| + | * {{ : | ||
| + | |||
| + | === Software Needed === | ||
| + | |||
| + | * mtk_uartboot | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | === Opening the Router Case === | ||
| + | |||
| + | * It it suggested to review [[https:// | ||
| + | * Additional high resolution images are [[https:// | ||
| + | * 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. | ||
| + | * Remove the **four (4)** crosshead machine screws that secure the bottom plate to the router body then remove the bottom plate. | ||
| + | * 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 " | ||
| + | * Alternative perspective: | ||
| + | * 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. | ||
| + | * 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:// | ||
| + | * Download the appropriate .fip and preloader.bin file for your version | ||
| + | * Did **not** run the v1.1.3 UBI installer (e.g. anyone on OpenWrt 23.05.x or below, or older snapshots) | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * **Ran** the v1.1.1 or newer UBI installer (e.g. running recent snapshot builds. You'd know if you did it!) | ||
| + | * [[https:// | ||
| + | * Prepare a TFTP server listening on 192.168.1.254 to provide the preloader.bin file | ||
| + | * That is, connect RJ-45 from your router' | ||
| + | * Usually tftpd serves the file(s) from for example / | ||
| + | * Disassemble your RT3200 / E8450 if you have not yet done so (instructions above) | ||
| + | * With the RT3200 / E8450 unit's **powered off**: | ||
| + | * Connect your TTL serial device to the router' | ||
| + | * **Important: | ||
| + | * {{: | ||
| + | * You'll end up with something like this: {{: | ||
| + | * Close up: | ||
| + | * 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: < | ||
| + | * macOS, when `mtk_uartboot` would otherwise use the wrong serial device: < | ||
| + | * (The serial device on your system may be different than the one shown above, such as `tty.usbserial-0001` or similar. | ||
| + | * Windows: < | ||
| + | * Power on the RT3200 / E8450 | ||
| + | * mtk_uart should trigger a boot (if you never get past ' | ||
| + | * From the boot menu, select the option '' | ||
| + | * Note that the current version automatically does the reflashing without further interaction, | ||
| + | * {{ : | ||
| + | |||
| + | ==== Troubleshooting ==== | ||
| + | |||
| + | Q: Getting " | ||
| + | |||
| + | A: Likely you did not specify the device for the mtk_uartboot like -s / | ||
| + | |||
| + | 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' | ||
| + | |||
| + | 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 " | ||
| + | |||
| + | A: Use commands inside console: | ||
| + | < | ||
| + | setenv bootargs | ||
| + | setenv ethaddr xx: | ||
| + | saveenv</ | ||
| + | |||
| + | |||
| + | ==== JTAG Recovery ==== | ||
| + | |||
| + | JTAG unbricking is more complicated and now unnecessary with the mtk_uart tool. If absolutely needed, search " | ||
| ===== Debricking ===== | ===== Debricking ===== | ||
| Line 204: | Line 426: | ||
| ==== Serial ==== | ==== Serial ==== | ||
| - | {{:media:linksys: | + | {{: |
| <!-- ToH: { | <!-- ToH: { | ||