For one of my projects I’m making heavy use of I²C devices. For development it would be nice to connect them to my notebook and develop and debug the sourcecode natively.
Luckily I remembered that all common display connection standards (VGA, HDMI, DVI) have an I²C control channel. In the linux kernel these pins are exported as I²C device by the graphic card driver. For example my intel driver exports 8 I²C devices.
So the only hardware needed to use an I²C device on my notebook is a cheap VGA cable. After cutting it in half we have two I²C adapters. I decided to create one cable for 5V I²C devices. This one is already done after cutting the cable in half. I soldered a jumper wire connector on the four needed wires and removed the others.
After lots’s of tries and help from different people I got my own kernel running on the N900, which is based on the Debian kernel package. So far it just offers basic features (e.g. framebuffer, keyboard) and is missing some important ones (e.g. touchscreen).
To test it on your phone you need to do have Debian installed on an µSD card, install uboot on the N900 (as described in Debian on N900: U-Boot) and install the kernel package.
You can fetch the package from http://pkg-n900.alioth.debian.org. I also uploaded the kernel config next to the package, so that you can check if a specific feature is enabled.
I will ask for inclusion into the official package now.
I had lots of fun with my server the last days. Apart from broken memory, a mainboard with weird behaviour and defect SATA cables I tried to use my RocketRaid 2720. There is currently no support for this piece of hardware in the mainline kernel (PCI device ID: [1103:2720]), even though there is an ‘mvsas’ driver, which is supposed to support the chip used by the rr272x series.
But one can download an ‘Open Source’ driver from Highpoint’s webpage and precompiled kernel modules for Debian’s 2.6.26 kernel. FYI even using their precompiled module with Debian stable and 2.6.26 kernel I got lots of problems, which are inherited to the updated system. I will talk about these in another blog entry.
After trying the precompiled kernel module I tried their ‘Open Source’ driver. First of all: it’s not Open Source. There is some sourcecode, which builds some code using their *.o precompiled blob. This is the same as the NVIDIA driver and definitively not Open Source. Next I tried to use the compiled kernel module under Debian squeeze with 2.6.32 and the result was a nice kernel crash once a disk is connected. After hours of testing I figured out, that it’s not a problem of the updated kernel, but a problem of the updated udev.
One can use the driver running even 2.6.34 as long as one uses the udev from Debian stable (125). There is one drawback though: /proc/scsi/rr272x_1x is not created by the driver then (so the CLI is not working).
The problem is: new software (e.g. cryptsetup from testing) depends on libudev0, which does not exist in Debian stable. The libudev0 from Debian squeeze depends on udev 158, so one can’t install it from there either. I ended up using udev from Debian stable and libudev0 from Debian unstable. The remaining system is a normal Debian testing (squeeze). I suggest to add a Pin for udev to apt’s preferences:
$ cat /etc/apt/preferences
Package: udev Pin: release a=stable Pin-Priority: 1000
I reported this to HighPoint using their WebSupport as #4659. So far I got told, that there are more users with the problems (what a coincidence…) and that they notified their engineering team.