Understanding the power source when flashing OpenWrt through a serial port

Preparations are being made to flash OpenWrt on to a Linksys WRT3200ACM through its serial port. This router has a six-pin serial port. The flashing process will be done using the Adafruit FTDI Serial TTL-232 USB Cable [ADA70]. The cable will run from an Ubuntu laptop to the router.

Obviously the laptop needs a power source. But should the router be plugged in as well during the process? Or is it the case that the Adafruit cable will transfer power from the laptop to the router?

Typically one powers the router with its supply, the laptop/desktop with its supply, connects the ground, but not the hot of the serial adapter.

Ensure that you're running 3.3 V logic levels on your serial adapter, assuming that is what the Linksys requires. The Adafruit (and many other adapters) may still come configured at 5 V.

Got it. Thanks.

According to Adafruit’s documentation:

The data signals are at 3V and the power line provides 5V. We suggest this for any product that needs FTDI cables. Because the cable is 5V-logic compliant, you can use it with 3v or 5v logic just fine - no level shifting required!.

1 Like

Connect only the logic TX RX and Ground to the router. The router CPU uses much more power than a FTDI cable can supply, thus it needs to be powered from its wall power supply like in normal operation.

1 Like

The Adafruit ADA70 is a one-piece six pin connector, including the power connection, hence the confusion. The docs say that the power connector is 5v, and the Rx and Tx signals are 3v.

I think the ADA70 is the wrong cable:

I think the 954 is the correct one:

Also, the WRT3200 flashes just fine through the web interface or via tftp, so opening the case and connecting the serial is not really required, though it can be great for figuring out if something goes wrong.

The router is bricked.

Doesn't even tftp? because if that's the case the bootloader isn't working and I wish you luck!

1 Like

I would agree the 954 would be better for this application, but if you already have a 70 you can release the pins from the 6 pin plug, find the 3 that you need (TX RX GND) and rearrange them to match the router.

Awesome. Thanks. Yeah I’ll get a 954 as I want one in my toolbox hah. Actually the ADA70 has an FTDI chip, which I have some other uses for too. Both of them have high ratings on Amazon. Pretty cool items.

The bootloader, Uboot, is just software. Flashing a router isn’t that much different than reinstalling an operating system on a computer. For the most part it’s impossible to permanently brick a router unless something is physically damaged or fried. Bricked is a broad term.

This depends - or better yet, you are correct about it being a broad term.

On some devices, the booatloader section can be [improperly] accessed and flashed (some have done this using the wrong firmware). Also, some manufacturers don't provide, or they physically/logically disable, the serial port in some manner. At any rate, in such bricking scenarios, there would be no software to run the serial port, you have to manipulate the hardware, or use a manufacturer-like JTAG loader - if the device is so equipped (this is a "hard brick").

Other devices provide partitions that have recovery loader, an entire backup OS, etc...in fact, if you understand your U-Boot environment well, you can do this too (in fact, most of the Meraki devices require work in the booatloader to convert to OpenWrt). On other devices, the booatloader portion is on another chip altogether, so yes, in theory bricking these kind of devices should be "impossible."

Lastly, to be clear, some in this community would refer to the issue you experienced as the "soft brick".

Thanks a million for the awesome feedback. Highly appreciated.

Admittedly, I’ve only used Linksys WRTs, and I forget about plethora of other devices out there, some of which have hardware limitations that make debricking a nightmare, and sometimes impossible. I should have touched on that in my response to dlakelan above. Thanks for clarifying this.

OpenWrt needs to manufacture a router!

1 Like

Right my point was if there's no bootloader running it's not clear who you'd talk to over a serial port. JTAG would be more of the last resort there you could manually push bytes back into the bootloader or whatever.

1 Like

Understood. As lleachii mentioned, my situation is a softbrick. I can connect a laptop to the serial port of the router with a usb-to-ttl cable. The router can then be accessed through a console via /dev/ttyusb from the laptop. The router is then reflashed, wiping everything and starting over, including the bootloader section.

I could have sworn there was a way to trigger the tftp reflash by pressing a button during boot, but it looks like maybe I was misremembering.

The device has two flash partitions so if you haven't bricked both of them by turning it off and on again several times you can force it to boot the other partition, and then it will flash to the corrupt partition over web console.

You might know all that already, but if not, hope it helps

anyway as I said good luck.

1 Like