Linux kernel 2.6.38.4 for the Iomega iConnect

After a long hiatus, I'm back with the latest version of the linux kernel (2.6.38.4) for the iomega iconnect.

This new kernel brings several improvements to the previous ones, since it improves support for Marvell's Kirkwood platform (on which iConnect is built upon) and finally includes in the main kernel the wireless driver for the RaLink RT3090 Wireless 802.11n 1T/1R PCIe which is built in the iConnect.

Without further due, here are the files:

New Blog Engine

Guess what, I wasn't happy with "just" changing themes... and decided to switch theme again along side with a new blogging engine. Wordpress is great and all, but required me to keep constant attention (keeping up with security updates), and overall performance was lacking (even though I used the great Super Cache plugin).

Since moving to a low cost VPS provider (found them through lowendbox ) which is capped to 256MB, I've been struggling to keep my resource usage controlled. This has led me to survey alternative blog engines that are less resource savvy than Wordpress running on LAMP, one of such alternatives grab my attention.

Jekyll is a blog-aware, static site generator in Ruby that generates your blog from plain text files (no DB needed). Since I hadn't messed with Ruby before, I got my excuse to finally jump on the bandwagon.

Truth be told, the last weeks have been more about CSS3 (and some HTML5) then Ruby and Jekyll. In the process I've forked bibjekyll in order to generate my CV from my .bib files instead of copy&pasting my papers into the CV page.

With the new platform up, I hope to dedicate more time (of my non existing one) to other projects that have been left hanging for the last months.

New Theme

This blog is now more then 4 years old, and was in dear need of some shake ups...

It's true that I don't post here that often, with a new semester that started just last week, with a brand new class on Information Systems Infra-Structures that I'm now preparing, with new research projects just kicking in, and of-course with my ~20month year old daughter that requires full attention from everyone in the house, it's been hard to publish new posts that have been lining in the pipeline.

Simplefy ScreenshotNonetheless, I've started in December (yes that long ago!) working in a new wordpress theme to update this blog. The theme is based on Automattic Toolbox which is a semantic, HTML5, canvas in which I could fit a very simple theme I found at coolwebtemplates.net.

The theme name is very obvious: Simplefy. It's a trick word with "Simple" and 5 (of HTML5).

In addition to the new theme, I've updated the RSS feed url. So please, if you are reading this blog through an RSS please make sure to update the url to http://www.diogogomes.com/feed/.

Binary Kernel and Modules for the Iomega iConnect running Linux Debian

In the last months after I've published an howto on how to customize the Linux kernel for the Iomega iConnect, I've been getting lots of comments from people who would like to have a go at installing it, but which are not proficient Linux users.

In order to assist those situations, I'm hereby making it available binary versions of Linux 2.6.37 configured for the Iomega iConnect, as well as the source code used to compile those binaries.

Now for the "extras":

How to compile the wireless card driver (RaLink RT3090 Wireless 802.11n 1T/1R PCIe)

The driver is available at Ralink's website (RT3090PCIe) and can be compile with:

make ARCH=arm CROSS_COMPILE=../arm-2010q1/bin/arm-none-eabi- LINUX_SRC=/usr/src/linux

As of the current version of the driver, you will run into some compilation errors. You should activate:

"cfg80211"
"EEPROM 93CX6"

in kernel config but must disable

cfg80211 in os/linux/config.ml (HAS_CFG80211_SUPPORT=n)

Hopefully newer versions will fix this issue and AFAIK Linux 2.6.38 will include this driver

A binary version of the driver (compatible with the previous kernel) is available here

You also need to place file RT2860STA.dat (found in the driver tar.gz) into /etc/Wireless/RT2860STA/RT2860STA.dat

Customizing a Kernel for the Iomega iConnect

If you have followed my previous post on how to install Debian to the Iomega iConnect Wireless Data Station you have been dying to read this follow-up post on how to take you iConnect to the next level by customizing the kernel and finally controlling the buttons and leds in the device (not to mention making use of the wireless card).

Setting up a cross-compile environment

First thing you need is to setup an environment in which you will cross compile the kernel and everything else that needs to go into the iConnect. Don't take me wrong here, the iConnect is a great device and all, but it just can't compete with your state of the art laptop/workstation ;)

In my case I've setup a virtual machine with Ubuntu 10.10 32bits, but any Linux distribution will work as long as it is 32bits

Second step, was to setup a cross-compiler. The requirement on using a 32bits Linux is related to the cross-compiler I've chosen, which was the Sourcery G++ Lite 2010q1-188 for ARM EABI. You can find it here.

Next I setup everything in /usr/src. But you can use any other place in your environment, as long as you adapt the PATH's. My /usr/src looks like this:

user@vm:/usr/src$ ls
arm-2010q1
arm-2010q1-188-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
EMCLifelineOEMSW-2.2-GPL
EMCLifelineOEMSW-2.2-GPL.zip
linux

In the linux dir you will find the vanilla kernel source code as downloaded from kernel.org

Kernel Compile

Configuring and compiling the kernel is much like a "normal" one, except for some extra parameters:

make ARCH=arm menuconfig
make -j4 ARCH=arm CROSS_COMPILE=../arm-2010q1/bin/arm-none-eabi- uImage
make -j4 ARCH=arm CROSS_COMPILE=../arm-2010q1/bin/arm-none-eabi- modules
make -j4 ARCH=arm CROSS_COMPILE=../arm-2010q1/bin/arm-none-eabi- INSTALL_MOD_PATH=.. modules_install

You will find the kernel (uImage) in /usr/src/linux/arch/arm/boot/uImage and modules in /usr/src/lib. Copy everything into your iConnect (placing uImage in the /boot dir and modules in /lib). Change the uboot parameters to point to your new uImage and you are set!

You might be wondering which parameters to use in your kernel config. You can find my kernel config here for 2.6.36 with the patches provided by Iomega (read below).

Patching the kernel

Now that we know how to compile a kernel, lets figure how to control iConnect leds and buttons.

If you payed any attention to my /usr/src/ listing you have probably noticed the file EMCLifelineOEMSW-2.2-GPL.zip. This file is part of Iomega iConnect Open Source Code which can be found in your drivers CD or downloaded from here (although I'm not sure which version you will get).

There are several files inside this package, but the only one of immediate interest to us is kernel dir which contains a kernel config file, the original linux kernel tar.gz and a series of patches which you need to apply to the vanilla kernel source (refer to other websites on how to apply patches to a kernel tree)

Controlling your leds/buttons

This is way to easy :). Just go to /sys/class/leds and you will find sysfs control files to all your leds. Just play with them! example:

echo default-on > /sys/class/leds/power_blue_led/trigger
echo 255 > /sys/class/leds/power_blue_led/brightness

Has for the button, you can find it in /sys/class/input/event0/device.

I haven't done anything yet with the leds or button, but if I do, I will post about it here in the blog.

Questions ? Drop a comment below.

What I'm listenning to ...