Thanks for all your help! I got my router back up and running. It reboots and everything seems to function fine. Below are some of the problems I encountered and their fixes. For reference, my router was running 23.0.5.0 previously. If you were running a snapshot version, some of the steps below may be significantly different.
Problem: Belkin RT3200 (Linksys E8450) doesn't boot, no power or network connection lights, but hardware seems fine. Wiki indicates this is the OKD (OpenWRT kiss of death). From what I read, this seems to be because a bug was introduced in the boot process of v23.0.5.x causing previously correctable errors to become fatal.
Fix: Follow the steps listed in the wiki and discussed in threads on the forums. Specifically, connect to the serial console, access U-Boot recovery mode, and flash a boot preloader that isn't affected by the bug.
Problem: I used a USB-to-UART (TTL Serial) adapter, but the serial pins aren't seating properly.
Fix: My adapter had 2.54mm pitch female connectors (same size as FPIO and GPIO in most of my other devices), but the serial port on the RT3200 seems to use 2.0mm pitch male pins. I used test hook clips/leads to establish a secure connection to the existing pins. It's probably possible to find a correctly sized 6-pin female adapter as well. From what I read, it should be a 6-pin JST-PH connection, but I can't confirm this for certain as I used the test hook clips instead.
Problem: Running mtk_uartboot
throws an IO error.
Fix: Make sure the program is using the correct serial port. In my case, the program was auto-selecting /dev/ttyS15
, but I should have specified /dev/ttyUSB0
. I had tricked myself, as I had initially specified that serial port for my screen
command, but not for the mtk_uartboot
command.
Problem: Running mt_uartbook
establishes a connection and uploads the payload, but does not present the U-Boot Recovery Console. Instead, I see gibberish, then the router completes booting and enters a functional state, but still cannot boot up on its own in the future.
Fix: My screen tty was using the incorrect baud rate, and so the character encoding was all messed up. I had to manually specify the correct baud rate of 115200. Here is the full command I ended up running:
sudo ./mtk_uartboot -s /dev/ttyUSB0 -a -p ./mt7622-ram-1ddr-bl2.bin -f ./*uboot.fip && sudo screen /dev/ttyUSB0 115200
Problem: Next, instructions indicate I should Flash over TFTP a boot preloader that isn't bugged, but it isn't entirely clear what file I should use for this.
Fix: Discussion seems to indicate that reverting to a v22.0.3.x preloader is best. For now anyway. This will likely change once a newer stable version is released. I used the preloader from this page, as the v22.0.3.7 boot process isn't bugged.
Problem: Flash over TFTP doesn't seem to establish a connection.
Fix: In my case, I assumed my Lan 1 port would be used, but I needed to use the Wan port instead.
Problem: Flash over TFTP does not accept the preloader file, even though I am hosting it in the correct location and have established a network connection.
Fix: Make sure to rename the preloader file to openwrt-mediatek-mt7622-linksys_e8450-ubi-preloader.bin
as indicated on the wiki. Flash over TFTP looks for that exact file name.
After all that, the correct preloader was flashed to my device and it could reboot without manual interference. Note, I am still running v23.0.5.0 of the OpenWrt firmware (yes, I plan to update it, that's next on my todo list). I only had to revert the boot preloader, not the entire installation.