| Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision |
| toh:linksys:e8450 [2023/12/28 18:49] – [Tags] add wifi6 tag palebloodsky | 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}} | |
| ===== Supported Versions ===== | ===== Supported Versions ===== |
| |
| ---- datatable ---- | <!-- ToH: { |
| cols : Brand, Model, Supported Current Rel, OEM device homepage URL_url, FCCID, Forum Search_search-forums, Device Techdata_pageid | "source": "json", |
| headers : Brand, Model, Current Release, OEM Info, FCCID, Forum Search, Technical Data | "dom": "t", |
| align : c,c,c,c,c,c,c | "paging": false, |
| filter : Brand=Linksys | "rotate": true, |
| filter : Model=E8450 | "shownColumns": ["brand", "model", "supportedcurrentrel", "oemdevicehomepageurl", "fccid", "forumsearch", "deviceid"], |
| filteror: Brand=Belkin | "filterColumns": {"brand": "^Linksys$", "model": "^E8450$|^RT3200$"} |
| filter: Model=RT3200 | } --> |
| ---- | |
| |
| |
| ===== Hardware Highlights ===== | ===== Hardware Highlights ===== |
| ---- datatable ---- | <!-- ToH: { |
| cols : CPU,CPU MHz,Flash MB_mbflashs,RAM MB_mbram, WLAN Hardware, WLAN 2.4GHz, WLAN 5.0GHz, Ethernet 1Gbit ports_, USB ports_ | "source": "json", |
| header : SoC,CPU MHz,Flash MB,RAM MB,WLAN Hardware,WLAN2.4,WLAN5.0,1Gbit ports,USB | "dom": "t", |
| align : c,c,c,c,c,c,c,c,c,c,c | "paging": false, |
| filter : Brand=Linksys | "rotate": true, |
| filter : Model=E8450 | "shownColumns": ["cpu", "cpumhz", "flashmb", "rammb", "wlanhardware", "wlan24ghz", "wlan50ghz", "ethernet1gports", "usbports"], |
| ---- | "filterColumns": {"brand": "^Linksys$", "model": "^E8450$"} |
| | } --> |
| |
| ===== Installation ===== | ===== Installation ===== |
| ---- datatable ---- | <!-- ToH: { |
| cols : Model, Versions, Supported Current Rel, Firmware OpenWrt Install URL_url, Firmware OpenWrt Upgrade URL_url, Firmware OEM Stock URL_url | "source": "json", |
| headers : Model, Version, Current Release, Firmware OpenWrt Install, Firmware OpenWrt Upgrade, Firmware OEM Stock | "dom": "t", |
| align : c,c,c | "paging": false, |
| filter : Brand=Linksys | "rotate": true, |
| filter : Model=E8450 | "shownColumns": ["model", "version", "supportedcurrentrel", "firmwareopenwrtinstallurl", "firmwareopenwrtupgradeurl", "firmwareoemstockurl"], |
| ---- | "filterColumns": {"brand": "^Linksys$", "model": "^E8450$"} |
| | } --> |
| | |
| | **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]], |
| If you do want to use OpenWrt __permanently__, it is recommended to convert the device to **[[https://github.com/dangowrt/linksys-e8450-openwrt-installer/issues/9#issuecomment-841731568|UBI]]** layout by following this guide: | If you do want to use OpenWrt __permanently__, it is recommended to convert the device to **[[https://github.com/dangowrt/linksys-e8450-openwrt-installer/issues/9#issuecomment-841731568|UBI]]** layout by following this guide: |
| * [[https://github.com/dangowrt/linksys-e8450-openwrt-installer|OpenWrt UBI Installer for Linksys E8450 and Belkin RT3200]] | * [[https://github.com/dangowrt/linksys-e8450-openwrt-installer|OpenWrt UBI Installer for Linksys E8450 and Belkin RT3200]] |
| | |
| | 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, 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**__ |
| ^ Linksys E8450 OpenWrt UBI flash layout ^^^^^^^^^^^^ | ^ Linksys E8450 OpenWrt UBI flash layout ^^^^^^^^^^^^ |
| ^ Layer0 | raw SPI NAND flash memory chip (2k+64) 128 MiB ||||||||||| | ^ Layer0 | raw SPI NAND flash memory chip (2k+64) 128 MiB ||||||||||| |
| ^ Layer1 | mtd0 **//bl2//** 512 KiB | mtd1 **//fip//** 1280 KiB | mtd2 **//factory//** 1 MiB | mtd3 **//UBI//** 125 MiB |||||||| | ^ Layer1 | mtd0 **//bl2//** 512 KiB | mtd1 **//UBI//** 127.5 MiB |||||||||| |
| ^ Layer2 (UBI) | ||| ubi0_0 **//ubootenv//** | ubi0_1 **//ubootenv2//** | ubi0_2 **//recovery//** | ubi0_3 **//boot_backup//** | ubi0_4 **//fit//** ||| ubi0_5 **//rootfs_data//** | | ^ Layer2 (UBI) | | ubi0_0 **//fip//** | ubi0_1 **//factory//** | ubi0_2 **//ubootenv//** | ubi0_3 **//ubootenv2//** | ubi0_4 **//recovery//** | ubi0_5 **//fit//** ||| ubi0_6 **//boot_backup//** | ubi0_7 **//rootfs_data//** | |
| ^ Layer3 (FIT) | ||||||| **//kernel-1//** | ubiblock0_4p1 **//rootfs-1//** | **//dtb-1//** | | | ^ Layer3 (FIT) | |||||| **//kernel-1//** | fit0 **//rootfs-1//** | **//dtb-1//** | || |
| ^ <color magenta>mountpoint</color> |||||||| | <color magenta>''/rom''</color> | | <color magenta>''/overlay''</color> | | ^ <color magenta>mountpoint</color> | ||||||| <color magenta>''/rom''</color> | || <color magenta>''/overlay''</color> | |
| ^ filesystem | |||||||| [[docs:techref:filesystems#squashfs|SquashFS]] | | [[docs:techref:filesystems#ubifs|UBIFS]] | | ^ filesystem | ||||||| [[docs:techref:filesystems#squashfs|SquashFS]] | || [[docs:techref:filesystems#ubifs|UBIFS]] | |
| </WRAP> | </WRAP> |
| |
| |
| ==== Beam Forming and Enable Basic Service Set (BSS) coloring ==== | ==== Beam Forming and Enable Basic Service Set (BSS) coloring ==== |
| | This is enabled by default since [[https://github.com/openwrt/openwrt/commit/590eaaeed59a9eb6637a1480587fc410de182523| this commit]] 2022 which is included in v23.05.0. |
| | |
| | <hidden> |
| Beamforming improves data rates and extends range by directing signals toward specific clients instead of in every direction at once. | Beamforming improves data rates and extends range by directing signals toward specific clients instead of in every direction at once. |
| By carefully controlling transmissions from several antennas, we can cause their signals to interfere on purpose and redirect the resulting signal in a new direction. | By carefully controlling transmissions from several antennas, we can cause their signals to interfere on purpose and redirect the resulting signal in a new direction. |
| * For more in BSS coloring, see: https://www.commscope.com/blog/2018/wi-fi-6-fundamentals-basic-service-set-coloring-bss-coloring/ | * For more in BSS coloring, see: https://www.commscope.com/blog/2018/wi-fi-6-fundamentals-basic-service-set-coloring-bss-coloring/ |
| |
| | </hidden> |
| ==== Performance tuning ==== | ==== Performance tuning ==== |
| |
| |
| 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. |
| |
| 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. |
| ==== 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> |
| |
| option flow_offloading '1' | option flow_offloading '1' |
| option flow_offloading_hw '1'</code> | option flow_offloading_hw '1'</code> |
| | |
| | ===== 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 "dead". |
| | |
| | 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 ==== |
| | |
| | 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 |
| | * [[https://github.com/981213/mtk_uartboot/releases|Releases for macOS, Windows, and x86_64 Linux by the official developer]] |
| | * [[https://github.com/LitCastVlog/mtk_uartboot_arm/releases|Releases for arm (e.g. Raspberry Pi) by forum member LitCastVlog]] |
| | * [[https://wiki.archlinux.org/title/GNU_Screen|screen]] or similar, such as [[https://www.putty.org/|putty for Windows]] |
| | |
| | === Opening the Router Case === |
| | |
| | * 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. |
| | * Additional high resolution images are [[https://forum.openwrt.org/t/belkin-rt3200-linksys-e8450-wifi-ax-discussion/94302/104|available in the forum discussion]]. |
| | * 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 "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. |
| | * 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.3 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(s) from for example /srv/tftpboot |
| | * 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'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}} |
| | * 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: |
| | * 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 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> |
| | * (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 |
| | * 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 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 }} |
| | |
| | ==== 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. |
| |
| ===== Debricking ===== | ===== Debricking ===== |
| ===== Hardware ===== | ===== Hardware ===== |
| ==== Info ==== | ==== Info ==== |
| ---- datatemplatelist dttpllist ---- | <!-- ToH: { |
| template: meta:template_datatemplatelist | "source": "json", |
| cols : Brand, Model, Versions, Device Type, Availability, Supported Since Commit_git, Supported since Rel, Supported current Rel, Unsupported, Bootloader, CPU, Target, CPU MHz, Flash MBs, RAM MB, Switch, Ethernet 100M ports_, Ethernet Gbit ports_, Comments network ports_, Modem, VLAN, WLAN 2.4GHz, WLAN 5.0GHz, WLAN Hardwares, WLAN Comments_, Detachable Antennas_, USB ports_, SATA ports_, Comments USB SATA ports_, Serial, JTAG, LED count, Button count, Power supply, Device Techdata_pageid, Forum topic URL_url, wikidevi URL_url, OEM Device Homepage URL_url, Firmware OEM Stock URL_url, Firmware OpenWrt Install URL_url, Firmware OpenWrt Upgrade URL_url, Comments_ | "dom": "t", |
| filter : Brand=Linksys | "paging": false, |
| filter : Model=E8450 | "rotate": true, |
| ---- | "shownColumns": ["brand", "model", "version", "devicetype", "availability", "supportedsincecommit", "supportedsincerel", "supportedcurrentrel", "unsupported_functions", "bootloader", "cpu", "target", "cpumhz", "flashmb", "rammb", "switch", "ethernet100mports", "ethernet1gports", "commentsnetworkports", "modem", "vlan", "wlan24ghz", "wlan50ghz", "wlanhardware", "wlancomments", "detachableantennas", "usbports", "sataports", "commentsusbsataports", "serial", "jtag", "ledcount", "buttoncount", "powersupply", "deviceid", "owrt_forum_topic_url", "wikideviurl", "oemdevicehomepageurl", "firmwareoemstockurl", "firmwareopenwrtinstallurl", "firmwareopenwrtupgradeurl", "comments"], |
| | "filterColumns": {"brand": "^Linksys$", "model": "^E8450$"} |
| | } --> |
| |
| ==== Serial ==== | ==== Serial ==== |
| |
| {{:media:linksys:linksys-e8450-internal-ports.png?nolink|}} | {{:media:linksys-e8450-belkin-rt3200-serial-jtag-ports.png?direct&400|:}} |
| |
| ---- datatable ---- | <!-- ToH: { |
| cols : Serial connection parameters_, Serial connection voltage_serialvoltage | "source": "json", |
| filter : Brand=Linksys | "dom": "t", |
| filter : Model=E8450 | "paging": false, |
| ---- | "shownColumns": ["serialconnectionparameters", "serialconnectionvoltage"], |
| | "filterColumns": {"brand": "^Linksys$", "model": "^E8450$"} |
| | } --> |
| ==== JTAG ==== | ==== JTAG ==== |
| -> [[docs:techref:hardware:port.jtag]] general information about the JTAG port, JTAG cable, etc. | -> [[docs:techref:hardware:port.jtag]] general information about the JTAG port, JTAG cable, etc. |