Debricking a Linksys WRT3200ACM from a FreeBSD machine

Hello community,

I’m trying to debrick a Linksys WRT3200ACM through its serial port from a FreeBSD machine (12.0 release).

The router’s serial port is a JST PH 6 pin connector. The cable in use is an Adafruit 954 USB to TTL. It includes separate ground, Tx, Rx, and 5v (not needed).

Surprisingly, although FreeBSD is not listed under the cable’s supported OSs, FreeBSD recognizes the cable’s driver.

$ grep uslcom /var/run/dmesg.boot

uslcom0 on uhub1
uslcom0 <CP2102 USB to UART Bridge Controller>on usbus0

I was unsuccessful in establishing a terminal session with the router. Before getting into all of the configuration details, has anyone made this work from a FreeBSD machine?

Try installing either the screen or pyserial (which supplies miniterm.py) packages under FreeBSD.

screen does a better job of terminal emulation, miniterm.py makes selection of the port and changing parameters a little easier, at least for me. I use both.

Also make sure that your adapter is configured for 3.3 V logic, not 5 V logic!

FreeBSD ships with cu and tip, which as far as I know, can achieve the thing. But my core issues are with tty configuration. Any thoughts?

cu and tip have always been "challenging" to get the port configured properly on any system. The two utilities I suggested handle the port management tasks themselves.

I think you have seen the device enumerate on the USB bus, but a driver has not been activated and you don't yet have a /dev node to communicate with it.

cu and/or tio (ports) will most likely work just fine

On the FreeBSD client I added the driver to /boot/loader.conf

uslcom_load="YES"

Examining my device nodes:

$ ls /dev/cu* outputs:

/dev/cuaU0
/dev/cuaU0.init
/dev/cuaU0.lock

Terminal session attempt:

# cu -s 115200 -l /dev/cuaU0 outputs:

connected

Unfortunately, no terminal session with the router.

Disconnect the Tx and Rx wires from the router and connect them to each other. You should see what you type in the terminal being looped back to you. If you disconnect the wires you should not see what you type in the terminal.

Then you should try swapping Tx and Rx on the router. Remember the router transmits into the wire that the PC receives on and vice versa.

I realized my serial wires were backwards, but even still no terminal session. The ground was on the far opposite end. So I was using pins 6, 5, and 3, instead of 1, 2, and 4. According to Device data page, pins 6, 5, and 3, are n/a.

Previously, when the wires were connected incorrectly, there was a buzzing noise coming from the router. After reconnecting the wires correctly, the buzzing is gone.

Regardless, I still cannot access a terminal session from a FreeBSD client. Is it possible I fried the board?