![]() This page or section needs cleanup. You can edit this page to fix wiki markup, redundant content or outdated information. |
Most routers come with an UART integrated into the System-on-chip and its pins are routed on the Printed Circuit Board (PCB) to allow debugging, firmware replacement or serial device connection (like modems). The bootloader is responsible for listening on it.
So in contrast to the JTAG-Port, the Serial Ports needs some software running on the CPU so we can use it! In case the bootloader is damaged, or does not offer such a feature, the port is useless.
Finding an UART on a router is fairly easy since it only needs 3 signals (without modem signaling) to work : GND, TX and RX (often accompanied by VCC). Since your router is very likely to have its I/O pins working at 3.3V (TTL level voltage), you will need a level shifter such as a Maxim MAX232 to change the level from 3.3V to your computer level which is usually at 12V.
To find out the serial console pins on the PCB, you will be looking for a populated or unpopulated 4-pin header, which can be far from the SoC (signals are relatively slow) and usually with tracks on the top or bottom layer of the PCB, and connected to the TX and RX.
Once found, you can easily check where is GND, which is connected to the same ground layer than the power connector. VCC should be fixed at 3.3V and connected to the supply layer, TX is also at 3.3V level but using a multimeter as an ohm-meter and showing an infinite value between TX and VCC pins will tell you about them being different signals (or not). RX and GND are by default at 0V, so using the same technique you can determine the remaining pins like this.
If you do not have a multimeter a simple trick that usually works is using a speaker or a LED to determine the 3.3V signals. Additionally most PCB designer will draw a square pad to indicate ping number 1.
Once found, just interface your level shifter with the device and the serial port on the PC on the other side. Most common baud rates for the off-the-shelf devices are 9600, 38400 and 115200 with 8-bits data, no parity, 1-bit stop.
![]() This page or section needs cleanup. You can edit this page to fix wiki markup, redundant content or outdated information. |
Many people get along without a serial console for their device because they are able to flash working firmware the first time or are able to apply various recovery methods and do all their communicating with the device over a network. However, due to characteristics of their bootloaders or because they are not yet fully supported, for some devices it can be quite handy to have a compatible serial console available.
Most devices that are supported by OpenWrt include a serial port. These serial ports typically provide a console to the bootloader and, when the firmware has booted, a console to the running system. Typically, a console to the bootloader will allow you to configure a network, fetch and flash a new firmware, which can be a life-saver when the firmware is broken. A console to the running system will let you correct a misconfigured network.
All socs have some sort of UART, often in combination with a RS-232-Interface connected with the PCB. Now depending on the model, the device's serial port could be available
For help with the latter two, see soldering. But even if there is 9-pin D connector, beware the Voltage levels!
If the serial port is not readily accessible from the exterior of the device enclosure, you have some choices:
![]() This section descripes actions that might damage your device or firmware. Proceed with care! |
![]() | Caution: Very few devices have standard RS-232 +/- 12V serial ports, but in many OpenWrt-supported devices the serial ports operate at TTL voltage (sometimes 5V, most often 3.3V) levels, meaning you cannot use a standard serial or USB to serial cable: it will fry your board. |
In order for the serial console to work, the logic levels on the wires should match those expected by your device. The first step therefore is to determine which voltage levels are required. Often, you can find this documented on the OpenWrt wiki or elsewhere.
Check your device's voltage levels with this chart. For detailed description look here. In addition these levels are averages for the type of devices shown.
In order to interact with your device over its serial port, you need a minimum of three wires connected: a ground (GND); transmit (TX); and receive (RX). It is possible to get useful information about what is happening with only GND and RX, but in order to fix a problem you will usually also need TX. Your computer's TX should be connected to the device's RX, and your computer's RX should be connected to the device's TX. The computer's GND should connect the the device's GND. That way, what you say will get heard by the device and what the device says will get heard by your computer. This is often called a "null-modem" configuration.
You will also need a terminal emulation program on your computer, such as minicom, hyperterminal, etc. The terminal emulation program needs to be configured to be compatible with your device, in particular, with regard to baud rate and flow control. If you are using only three wires (GND, TX, and RX) then hardware flow control should be turned off; you aren't using the pins (RTS and CTS) necessary for it to work. Rarely, the baud rate that the device expects might be different in the bootloader and the running firmware; if so, you'll need to modify the baud rate settings in your terminal emulator after the firmware boots up.
Some things to consider:
These days, computer manufacturers are dropping RS232 serial ports, while USB ports are increasingly ubiquitous. Particularly if you need to TTL logic levels, USB is probably the way to go since you can get the right logic levels (the voltage) integrated in the USB-TTL converter.
For routers with a built in USB-connector (such as WNDR3700 for example), simply plugging in a USB-serial converter and installing the appropriate software will provide a serial console to the router.
ttyUSB0::askfirst:/bin/ash –login
Standard RS232 levels, for example:
TTL 5V, for example:
TTL 3.3V, for example:
You may need to rewire the terminals of the TTL cables to match your device pinout.
If you want to solder:
A USB based data cable for a mobile cell phone is another possibility.
Ebay clone cables:
reference: http://www.nslu2-linux.org/wiki/HowTo/AddASerialPort
I found an easy way to get a cable working, it just require 7 components:
The image shows how to make the cable
http://wiki.openwrt.org/_media/doc/hardware/ttltors2320kf.jpg
http://3.bp.blogspot.com/_JE4GMReEeGU/SpATfyGBmLI/AAAAAAAAAF0/VHTl3Vcs6hU/s1600-h/ttltors2320kf.jpg
This cost minus than 2 Dolars in Chile, i hope it be the same for you! I tested it on a Zyxel 600 Series, it works!
Source: http://maximi89.blogspot.com/2009/08/hola-intente-modificar-el-bootbase-pero.html
TTL-RS-232 level conversion is a fairly common problem, so there are a number of ICs on the market that convert between these voltage levels. Maxim IC has made a few handy little ICs for us to use. The best (IMHO) is the MAX3232, which can operate at different voltages depending on the capacitors in the circuit. This guide will tell you how to solder everything together to get a pc-compatible serial port on your OpenWrt router.
First, you need an "RS232-TTL level converter chip." RS232 refers to the standard defining what plugs into your computer, and TTL is a family of chips that use 0V and 0.8V as low and 2.2V and 5V as high. They can be purchased new (the Maxim IC MAX233x line is popular). Most vendors have large minimums, but some (e.g. Mouser Electronics) sell components in small quantities.
The wiring is fairly simple, but it depends on the chip. Generally, it involves connecting Vcc from the router to the chip's Vcc pin, both router and rs-232 grounds to the ground pin, and the TX and RX wires to the chip. Remember that the router's TX will "connect" to the same level conversion bank as the computer's RX. Additionally, some of these level converters require external capacitors, while some have them built in. Much of this varies, so consult the chip's spec.
Another great source for RS232-TTL converters is in cell phone serial cables. Most cell phones need this same circuit to level-up for connection to a PC's serial port. Many people already have such a cable laying around, or can buy one fairly cheap. Using an existing cable is much easier than building one. If you open up the cell phone cable's serial port casing and see a MAX### chip, it's probably the cable you need. One known chip is a MAX323 (yes, 323, the original MAX232 is a 5V device and we need 3.3V here).
If you've found a good cell phone cable to use, you merely need to determine which wires are the VCC, GND, TX, and RX connections. Usually the VCC is red and the GND is black, but the other colors may vary (though blue and orange are common). There should be no need to modify the PCB embedded in the cable.
One type of the "Made in China" ones, not mentioned at http://www.nslu2-linux.org/wiki/HowTo/AddASerialPort ist the "S30880-S5601-A802-1"; its WHITE wire is data out (TX) and the ORANGE one is data in (RX), VCC and GND are red and black. Its a 3.3V converter built with the MAX3386E chip.
You can also search for MAX232 Kits. There are some kits available.
These may be useful for connecting to a device:
These guides are somewhat model specific, but if you're struggling to build your own cable, they're filled with information that applies to that part of the process.
Since many older PDAs (e.g. Palm series) have TTL serial connections already, you can use them to get a direct serial connection to the router.
Solder the RX, TX, and ground (but never Vcc) TTL-level connectors on the OpenWrt box to the PDA's TTL level serial connectors.
Example: Palm IIIc, http://www.neophob.com/serendipity/index.php?url=archives/121-Reuse-your-old-Palm-as-Serial-Console.html.
Pinouts for your model can often be found on your model's page in CategoryModel.
First, check the OpenWrt wiki page describing your hardware and do a Google search. Most of the time, the serial port(s), if they exist, have already been documented by others.
Typically there are four pins to identify: GND - Ground, Vcc - 3.3VDC or 5VDC, TXD - Transmit data, and RXD - Receive data. There may be additional/extra pins. Every router is different.
A more accurate method would be to use either a logic analyzer or an oscilloscope, but these are expensive and for the basic task of locating a serial pin a little overkill.
doc/hardware/port.serial.txt · Last modified: 2011/07/10 13:12 by werner