Difference between revisions of "Add a Serial port to the MIPS Linkstation"

From NAS-Central Buffalo - The Linkstation Wiki
Jump to: navigation, search
m (Enabling the Serial Console)
(Attach Header to the Board)
 
(5 intermediate revisions by 2 users not shown)
Line 16: Line 16:
 
* (1)Electronic-grade soldering iron (think really small)
 
* (1)Electronic-grade soldering iron (think really small)
 
* (1) 0.015", 1 oz solder
 
* (1) 0.015", 1 oz solder
* (1) 0.1” series PCB header plug, 4-pin
+
* (1) 0.1” series PCB header plug, 4-pin (for the serial port on J1)  the 90-degree bend type is nice if you want to attach it on the back of the board
 +
* (1) 0.1” series PCB header plug, 2-pin (for the enabling jumper on J2) 90-degree also nice here, same as above
 +
* (1) jumper for the header on J2 - the kind from an old IDE hdd is ideal
 
* (1) Serial converter (or build your own - see [[Add a Serial port to the MIPS Linkstation#The_Serial_Converter | step 4]])
 
* (1) Serial converter (or build your own - see [[Add a Serial port to the MIPS Linkstation#The_Serial_Converter | step 4]])
 
  
 
== Access the Board ==
 
== Access the Board ==
Line 27: Line 28:
  
  
== Attach Header to the Board ==
+
== Attach Headers to the Board ==
 +
 
 +
* The console header needs to be attached to the J1 pad, the jumper head to J2.
 +
* Remove the preexisting solder from J1 and/or J2.  Some boards have no solder in the holes.  If they do, a solder wick or solder syringe are idea for this.
 +
* If you are using angled/90-degree-bend headers, attaching them to the back/outside of the circuit board is ideal.
 +
* Solder carefully and quickly to avoid board damage.
 +
* If you are using the back-of-the-board placement, labeling the pins 1-4 w/ a marker saves you time in when it comes to hooking up your adapter.
  
* The console header needs to be attached to the J1 pad
 
* Remove the preexisting solder from J1
 
  
  
Line 60: Line 65:
  
 
== The Serial Converter ==
 
== The Serial Converter ==
 +
{{Level Shifter}}
  
===Buy One===
+
== Enabling the Serial Console ==
The serial port signals from the processor are only 3.3V. For proper RS-232 12V signaling, an RS-232 level shifter needs to be added. These are very common in PDA serial cables also, but can be purchased from
+
===Hardware===
[http://www.superdroidrobots.com/shop/item.asp?itemid=335&catid=41  SuperDroid Robots] (#MCU-026-172) or [http://www.compsys1.com/workbench/  CompSys] (#A232DBH3v).
+
  
===Build One===
+
As the LS2 only has a single serial port which is used by the housekeeping microcontroller, it is necessary to enable the serial console. This is done by jumpering the pins of J2 and disabling the watchdog timer on startup (by pressing the red button and powering it up). It is easiest to install J2 on the back of the board as it will be accessible by removing the cover and not the board from the chassis I used a red jumper so it can be easily located. Another option to removing the cover is to drill a 3/8" hole in the case directly above J2 and make a handle for your jumper from a piece of tape.
: As an alternative you can make the level shifter cable yourself:
+
:'''Warning: The following image depicts 0.1mF (m = milli) capacitors, while in reality 0.1µF (µ = micro), alias 100nF (n = nano) capacitors are needed for the original MAX3232! The list of parts is correct.'''
+
  
[[Image:Shifter.jpg|400px]]
+
Note that the jumper doesn't change the hardware configuration but its state can be read by the CPU using GPIO8 ("0" jumper on, "1" jumper off). The original Linux kernel registers the serial console if the jumper is on.
: Components can be found at e.g. [http://www.digikey.com Digikey]
+
  
* If you want to build your own serial converter, you will need the following parts:
+
===Software===
* (5) 0.1 µF tantalum capacitors
+
Make sure that the distro you are booting actually has a some means to offer you a login window through the serial connection. A standard way of doing this would be to make sure that /etc/inittab has some line, perhaps at the end, like this:
* (1) MAX3232CPE IC (Maxim), 3V type, 16 pin DIL
+
T0:23:respawn:/sbin/getty -L ttyS0 57600
* (1) RS232 male socket
+
* (1) Some perf board (about 1" x 1")
+
* (1) Wire
+
  
 
+
Also remember to switch output to the serial port with a bootargs statement such as :
You can etch a circuit board which makes building the interface and installing the interface really easy. Instructions are [http://www.kurobox.com/mwiki/index.php/Building_a_Custom_Serial_Interface Here].
+
  setenv bootargs console=ttyS0 root=/dev/hda1 rw
 
+
instead of the netconsole= option.
This should be attached as close as possible to the board. The signals are very weak and wires as short as 2" (5 cm) have been reported to cause data loss across the serial port.
+
 
+
 
+
* [http://en.wikibooks.org/wiki/Serial_Programming:MAX232_Driver_Receiver Some details about the MAX232 family]
+
* [http://pdfserv.maxim-ic.com/en/ds/MAX3222-MAX3241.pdf Original manufacturer's MAX RS32xx Family Datasheet]
+
 
+
== Enabling the Serial Console ==
+
 
+
As the LS2 only has a single serial port which is used by the housekeeping microcontroller, it is necessary to enable the serial console. This is done by jumpering the pins of J2 and disabling the watchdog timer on startup (by pressing the red button and powereing it up). It is easiest to install J2 on the back of the board as it will be accessible by removing the cover and not the board from the chassis I used a red jumper so it can be easily located. Another option to removing the cover is to drill a 3/8" hole in the case directly above J2 and make a handle for your jumper from a piece of tape.
+
 
+
Note that the jumper doesn't change the hardware configuration but its state can be read by the CPU using GPIO8 ("0" jumper on, "1" jumper off). The original Linux kernel registers the serial console if the jumper is on.
+
  
 
== Using the Serial Console ==
 
== Using the Serial Console ==

Latest revision as of 01:30, 16 September 2008

Originally by frontalot and nix from linkstationwiki.org. LS2 specific details and photos by Kuroguy



LS2 homemade serial level converter on top of J1 and a red jumper at J2 to enable the serial console. Electrical tape on the back of the level converter prevents short circuiting the main board. (Also on the picture installed JTAG header and R64.)
Serial port connector installed on the back of the LS2 below the red button.

Contents

Introduction

The console is the text output device for system administration messages. These messages come from the kernel, from the init system and from the system logger. On modern small computers the console is usually the computer's attached monitor and keyboard. The LinkStation, however, doesn't have monitor output; instead, it uses a serial connection for console output. Not only does the serial console provide valuable debugging output, it also allows root access!

Background

Most of the information on this page was originally only speculation, based on roughly deciphered information from a Japanes web page. At the end of 2006 the community bought a bricked LS2 and handed it over to Tampakuro aka Kuroguy for trying out various hardware modifications. While at it, kuroguy also verified the procedure for installing a serial console interface. This page has been updated with the information and photos he provided in Hardware Hacks for the LS2.

Prerequisites

  • (1)Electronic-grade soldering iron (think really small)
  • (1) 0.015", 1 oz solder
  • (1) 0.1” series PCB header plug, 4-pin (for the serial port on J1) the 90-degree bend type is nice if you want to attach it on the back of the board
  • (1) 0.1” series PCB header plug, 2-pin (for the enabling jumper on J2) 90-degree also nice here, same as above
  • (1) jumper for the header on J2 - the kind from an old IDE hdd is ideal
  • (1) Serial converter (or build your own - see step 4)

Access the Board

  • Disassemble the LinkStation.
  • Remove the main circuit board by removing the 4 mounting screws:
  • Place the circuit board on a static-free work area:


Attach Headers to the Board

  • The console header needs to be attached to the J1 pad, the jumper head to J2.
  • Remove the preexisting solder from J1 and/or J2. Some boards have no solder in the holes. If they do, a solder wick or solder syringe are idea for this.
  • If you are using angled/90-degree-bend headers, attaching them to the back/outside of the circuit board is ideal.
  • Solder carefully and quickly to avoid board damage.
  • If you are using the back-of-the-board placement, labeling the pins 1-4 w/ a marker saves you time in when it comes to hooking up your adapter.


J1 Pinout

Pin  Signal
1 Transmit (TX)
2 Receive (RX)
3 Power (3.3V)*
4 Ground (GND)

Enable Full Serial Tx/Rx

To enable write support across the serial port, simply bridge R186.

Install R186 using a 330 ohm resistor. Simply bridging R186 will stop the microcontroller from sending data to the CPU.

The Serial Converter

The serial port signals from the processor are only 3.3V. For proper RS-232 12V signaling, an RS-232 level shifter needs to be added. These are very common in PDA serial cables also, but can be purchased

Models other than KuroPro
Bar.png

If you are attaching a serial header pin onto the main board, you may want to consider:

  • Using the header pin unit with a 90 degree bend, or you might not be able to close the case
  • Soldering it with the pins toward the interior, rather than toward the case. This allows easier access, since if the pins face the case side they would be very close to the metal side. This would make access is so tight that one might end up taking the board out to get plug fitted on the pins.


Build your own LVTTL/RS232 or LVTTL/USB interface

Buy your own TTL Level Shifter

Usage considerations for the TTL-232R-3V3

TTL-232R-3V3 USB to TTL Serial Converter Cable
A very similar TTL/USB converter cable that uses a chip by FTDI (the same chip is used in the SCON-KIT ) can be obtained, but the pinout at the connector end would need to be reassigned: Spec Sheet w/ pinout, wire colors & other info
MM232R.jpg Mouser Part # 895-TTL-232R-3V3 $20.00
4pinheader.gif Mouser Part # 517-929400-01-04 $0.32

A working/tested pinout/wire-color scheme is:

Color Pin Number Signal
yellow 1 TXD
orange 2 RXD
unused 3 VCC
black 4 GND
  • Solder the 4-pin header to the board. Make sure you don't have shorts.
  • You will need to switch wires on the TTL-232R-3V3 cable. Use a sharp object to lift the plastic tabs and carefully pull the wires out. Rearrange them according to the table above (black, empty, orange, yellow, empty, empty) and slide those wires back in. Tape the other wires to make sure they don't short anything.
  • When plugging in the cable, make sure black aligns with GND, yellow with TXD, and orange with RXD.
  • Connect the USB cable to your computer, start a terminal program with the right settings.
  • Turn on the device, you should see output from the bootloader in couple seconds.

Enabling the Serial Console

Hardware

As the LS2 only has a single serial port which is used by the housekeeping microcontroller, it is necessary to enable the serial console. This is done by jumpering the pins of J2 and disabling the watchdog timer on startup (by pressing the red button and powering it up). It is easiest to install J2 on the back of the board as it will be accessible by removing the cover and not the board from the chassis I used a red jumper so it can be easily located. Another option to removing the cover is to drill a 3/8" hole in the case directly above J2 and make a handle for your jumper from a piece of tape.

Note that the jumper doesn't change the hardware configuration but its state can be read by the CPU using GPIO8 ("0" jumper on, "1" jumper off). The original Linux kernel registers the serial console if the jumper is on.

Software

Make sure that the distro you are booting actually has a some means to offer you a login window through the serial connection. A standard way of doing this would be to make sure that /etc/inittab has some line, perhaps at the end, like this:

T0:23:respawn:/sbin/getty -L ttyS0 57600

Also remember to switch output to the serial port with a bootargs statement such as :

setenv bootargs console=ttyS0 root=/dev/hda1 rw

instead of the netconsole= option.

Using the Serial Console

Of course you need a serial cable to connect to the serial port. Depending on how you wired the plug on the LS, you will need a null modem, too, or a null modem cable.

Windows
You may access the serial console using Windows HyperTerminal (included with Windows) or TeraTerm Pro terminal emulator.
classic Unix
If you have a classic Unix you should either have tip(1) or cu(1) (or both). They are suitable to set up a serial connection. Linux typically doesn't have these.
Linux
If you are on Linux, consider the trusted and tried miniterm terminal emulator. 'minicom' also works nicely.
Terminal
If you are the proud owner of a real oldschool terminal, this is your chance to make use of the old dust catcher :-)

Serial Port Settings

Data Settings 
Baudrate  57600
Data bits  8
Stop bits  1
Parity  None
Flow Control  None

External Links