I recently started playing to Raspberry Pi. Along with other questions I wanted to try talking to RPi via a serial cable. The documentation about RPi peripherals says that at reset only pins GPIO 14 & 15 (TxD, RxD) are assigned to the alternate function UART. So, it should work out of the box.
I decided to buy Olimex USB To Serial Cable. It was available on eBay as Olimex USB-SERIAL-CABLE Olinuxino console cable alternative to Raspberry Pi.
This cable provides 3.3V output levels which are strongly recommended for RPi (not 5V), and its 3 wires with female plugs can be directly connected to the RPi GPIO P1 header.
Unfortunately, at a time of this writing, there were no drivers for Mac OSX available on the official website, and OSX Lion (10.7.4) didn’t recognize this device. It was an unpleasant surprise because before I saw that Lion perfectly recognized other USB-RS232 hardware based on different chipsets (Microchip, for example).
I checked the Product ID and Manufacturer on the Olimex cable. When the cable is connected, click on “About This Mac > More Info… > System Report… > USB”.
Googling for a Prolific driver for Mac brought me to a great blog post, called “PL2303 Serial-USB on OSX Lion”. Following the instructions I installed the driver and connected to Raspberry Pi.
In short I did the following:
cd /tmp wget http://xbsd.nl/~martijn/log/osx-pl2303.kext.tgz tar xvzf http://xbsd.nl/~martijn/log/osx-pl2303.kext.tgz cd osx-pl2303.kext sudo cp -R osx-pl2303.kext /System/Library/Extensions/ cd /System/Library/Extensions chmod -R 755 osx-pl2303.kext chown -R root:wheel osx-pl2303.kext cd /System/Library/Extensions kextload ./osx-pl2303.kext kextcache -system-cache
Note: Just in case, I made a copy of the “osx-pl2303.kext.tgz” file.
You can make sure that everything is installed correctly by:
kextstat -b nl.bjaelectronics.driver.PL2303
It should print the following:
Index Refs Address Size Wired Name (Version) <Linked Against> 74 0 0xffffff7f808ee000 0xb000 0xb000 nl.bjaelectronics.driver.PL2303 (1.0.0d1) <73 34 5 4 3>
Note: If you need to unload the driver for some reason, you check that the driver is loaded (by
kextstatcommand above), and then:
sudo kextunload /System/Library/Extensions/osx-pl2303.kext
When the driver is installed, reconnect the cable to USB. There should be two device drivers created
/dev/tty.PL2303-00002006. You can check it by:
It should print:
Now let’s connect the cable to the RPi header P1. It’s better to disconnect it from USB temporarily.
The pinout of the cable is the following:
An example of the connection:
When all three wires are attached, you can connect the cable back to USB. Now any terminal emulator software can talk to RPi via the
/dev/cu.PL2303-00002006 device. I used Minicom:
minicom -D /dev/cu.PL2303-00002006 -b 115200
It should print something like this:
Welcome to minicom 2.6.1 OPTIONS: Compiled on May 10 2012, 07:16:49. Port /dev/cu.PL2303-00002006 Press Meta-Z for help on special keys Debian GNU/Linux 6.0 raspberrypi ttyAMA0 raspberrypi login:
Finally, you may want to re-direct the RPi console from HDMI to the serial port (ttyAMA0). In this case RPi will be printing boot messages to the serial console instead of the monitor.
You need to login to your RPi (via SSH, telnet or just established serial connection) and execute the following:
sudo mount /dev/mmcblk0p1 /mnt
This will mount your boot partition to
/mnt. Now you need to edit the kernel commund line:
sudo vi /mnt/cmdline.txt
cmdline.txt make sure that
kgdboc=ttyAMA0,115200, and there is no another
console= assignment, for example to
tty0. After you save the changes and reboot RPi, you may see RPi boot messages in the terminal emulator connected to