Upgrading GuruPlug Kernels

I recently had more time to investigate my earlier problems with the GuruPlug.  The problem was discovered by some people on the plugcomputer.org forum.  The problem stock U-Boot is that is incorrectly reports the arcNumber.  The solution then, is to upgrade U-boot!

After a failed flashing attempt(don’t attempt to tftp flash u-boot.kwb from within U-Boot!) I needed to use JTAG combined with the included JTAG adapter.  To do this, make sure that the UART cable is unplugged, and the JTAG cable is plugged in(unplug/replug the USB adapter just to be safe). First grab the guruplug-installer package, then grab a known-good copy of U-Boot.

$ cd Downloads/
$ tar zxvf Guruplug-installer.tar.gz
$ cd guruplug-installer
$ sudo ./runme.sh ../uboot.guruplug.bin
(lots of scrolling text)

At this point U-Boot is restored, and all that’s needed is to upload a new kernel(and maybe rootfs). Your old kernel won’t work with this new version of U-Boot, so make sure that you have a kernel compiled and ready to use. If you don’t feel like patching(and manually fixing the failed patches) I’ve provided a 2.6.34 kernel for you, complete with modules. To upload the new kernel you’re going to need to attach your GuruPlug to your network with it’s top-facing ethernet interface(near eSATA port).

After attaching the UART cable to the GuruPlug again(and unplugging JTAG, then unplugging/replugging the USB), you’ll need to connect to it with a serial console. On Linux it’s enumerated as /dev/ttyUSB0. My favorite program to do this is simply screen. Start it by issuing the command ‘sudo screen /dev/ttyUSB0 115200’. Afterwards, hit ‘Enter’ a few times to get some output. If no output comes out, power-cycle the Guruplug without removing the UART cable. Press ‘Esc’ to pause it’s automatic booting. This should drop you off at a U-Boot prompt.

To send the kernel over, you’ll have to have a TFTP server set up reachable from the Ethernet cable plugged in to the Guruplug(on Gentoo I used net-ftp/tftp-hpa), issue the following into your working serial prompt:

setenv serverip
setenv ipaddr

Set the ‘serverip’ variable to the IP address of the TFTP server. Set the ‘ipaddr’ variable to a free IP address on your network. Then issue the following commands:

tftp 0x6400000 kernelImageName
nand erase 0x100000 0x400000
nand write.e 0x6400000 0x100000 0x400000

From here you can type ‘reboot’ to restart the plug and let it boot automatically. Hopefully everything should come up, albeit with some errors along the way(these are due to missing kernel modules). Copy the modules to a USB stock, or wget them on the live plug, then untar them into /lib/modules/2.6.34/. Afterwards, reboot and you should have a happy plug!

Leave a Reply

Your email address will not be published. Required fields are marked *