Hacking your GoFlex Home, #2 UART Serial Console

Serial console? That’s beautiful when it comes to debugging. The following images are specific to the Seagate GoFlex Home, however, you may be able to figure out the connections for other Marvell SoCs.

On the board:
Notice that according to the picture, the bottom right last three pins are used.
Connections on the SoC

The junction:
I’ve used extra wires simply for convenience, the orange, yellow and black connect to these white, black and grey wires respectively.
The Junction

On the USB UART Adapter:
I’ve used a USB2.0 to RS232 TTL Converter Module PL2102(available on eBay easily)
On The USB Adapter

PIN Configuration:
On the GoFlex Home:

10 9 8 7 6
 5 4 3 2 1

1 => GND (Ground for the serial communication)
2 => RX  (Receiving bits)
3 => TX  (Transmitting bits)

Note: The RX and TX are interchanged at one end, this is because the RX of the GoFlex becomes the TX of the USB adapter, and vice cersa.

After you connect the USB end to your desktop/laptop, you can use screen to display the serial console:

# screen /dev/ttyUSB0 115200

The serial console is especially useful for debugging the kernel boot and setting the u-boot environment.

Hacking your GoFlex Home, #1 Build your KERNEL

It’s been quite sometime that I’ve got my GoFlex Home now, and it’s only recently that I’ve received my RS232 Serial USB UART Adapter.
The pin connections are simple and easy, I’ll post that as well. As I’ve already got Gentoo Linux running on the Marvell SoC, I was still using the Archlinux ARM kernel, for lack of better options. Building the kernel seemed to be a simple task, but apparently, if you have used the Archlinux ARM kernel config as a base to build your own, you won’t see the kernel debug messages, you only see the warnings, and those are few.

To get going:
Download the kernel sources, I’ve got a successful build with vanilla sources(patched with archlinuxarm patches) 3.1.10
After patching the kernel, you can quickly generate the default config, by

# make kirkwood_defconfig

That would generate the default configuration, then you could configure it via menuconfig, and set the required options.
I’ve attached my present kernel configuration, you could use that as a base, as it took me quite a while to get the kernel working right. This kernel does not support an initrd, as I don’t think embedded devices should need one. So, if your kernel says that it can’t mount the VFS, it’s likely that your U-boot is giving it an initrd to use, and that surprisingly, took me quite a while to figure out.

Goodluck hacking your GoFlex :)