Running Linux on a Netpliance I-Opener

Introduction
Parts List
Installing Linux
Installing the IMOD3
Upgrading the CPU
Adding a headphone jack
Configuring Sound
References

Introduction

This article describes how I attempted to turn a Netpliance I-Opener (v1) into an MP3 player running Linux. I wanted a dedicated MP3 player, and I wanted it to look clean without extra power supplies, etc, when I was done.

Summary: the 180 MHz WinChip in the version 1 I-Opener is too slow to play MP3s. But it was a fun project nonetheless. I now have a cute webserver instead of an MP3 player. If you are lucky enough to have a version 5 I-Opener with a 266 Mhz Rise CPU, it will play 128kbps MP3s without jitter.

Why another web page devoted to the I-Opener? There is renewed interest in the I-Opener now that Netpliance is liquidating its assets, and the latest 2.4.x Linux kernels behave differently than previous versions. This is not another introduction to hacking the I-Opener. See the References section for those links.

Parts List

Item Cost Description
$31 IMOD3.This board plugs into the IDE pins on the motherboard allowing you to mount a laptop harddrive. I bought mine from codeman, but they are now ordered through badflash.com. There is also a knock-off at wizztronics.
$22 CPU Fan.The Lasagna cooler is available from tennmax.com.
$63 Harddrive. Laptop harddrives are 2.5" wide and come in 9mm, 12.5mm, and 17mm heights. I found a 9mm 2.1GB drive at Driveguys.com.
$39 USB Ethernet Adapter. Most USB Ethernet adapters work with the Linux pegasus kernel driver. I used a Linksys USB100TX.
$26 USB 2-port hub. 2-port USB hubs don't require a separate power supply like their 4-port brethren do. I used the Aten UH102. I plug the Ethernet adapter into one port and my USB harddrive in the other.
$10 Miscellaneous parts. Depending on how many tools and components you already have, you can expect to spend about $10 to $15 at Radio Shack.
Approximate cost (excluding shipping): $181. But you're not doing this to save money, you're doing it because it's fun!

Installing Linux

I needed to install a 2.4.x version of the Linux kernel for proper USB support. There are two problems with installing recent Linux kernels on the I-Opener.

The first problem is that kernels built on a Redhat 7.0 system will not boot on the I-Opener. For background information see this article on the Linux Kernel mailing list. The problem is not with the kernel, it's with the creation of the kernel. For some reason, kernels created on a Redhat 7.0 system are compiled incorrectly and will not boot on the I-Opener. This is a Redhat problem, not a kernel problem. The solution I found was to install Redhat 6.2 and upgrade the kernel to 2.4.2. Listing all the components I compiled into my kernel would take too long, so I will let my kernel .config speak for itself. Don't forget to install modutils-2.4.2.

The second problem is that you need to patch the 2.4.x IDE code to handle the I-Opener SanDisk correctly. Apply this patch to ide-probe.c:

 # cd /usr/src/linux/drivers/ide
 # cp ide-probe.c ide-probe.c.orig
 # patch ide-probe.c ide-probe.patch
You may also need to configure LILO to use the vga mode "vga=4" so you don't get fruity colors on the screen during bootup. Here is my lilo.conf.

The procedure I used to rebuild the kernel is:

# cd /usr/src/linux
# make mrproper
# make menuconfig
# make dep && make clean && make bzImage && make modules && make modules_install
# cp System.map /boot
# cp arch/i386/boot/bzImage /boot
# vi /etc/lilo.conf
# /sbin/lilo

Installing the IMOD3

See codeman's site for an explanation on the IMOD3. Be very careful not to short the IMOD3 out! The circuitry is not enclosed, and it's easy to short +5V to ground if it touches metal. Don't set it on a metal surface (like your computer case) when you're installing Linux on your laptop harddrive. diode.jpg

The IMOD3 has an LED that indicates IDE disk activity. Unfortunately, the RF shield and plastic case bend the LED down and short it out. I had to make a cut in the RF shield and remove one of the slats in the plastic case in order to accommodate the LED.

Upgrading the CPU

Now the bad news. The WinChip that comes with the v1 I-Opener isn't fast enough to decode MP3s without jitter. You will need to upgrade the CPU. The WinChip2 is no longer manufactured and is impossible to find. See the Franken-Opener links in the References section.

Adding a headphone jack

I added a headphone jack to my I-Opener so that I could verify that I could get adequate sound out of the box. The two tiny speakers that come with the unit are inadequate for good sound (they're also out of phase, but that's irrelevant).

Adding a headphone jack requires soldering leads to the outputs of the sound chips. This procedure has been documented here, but I found codeman's schematics to be the easiest to follow. I used the following Radio Shack components:

After making the modifications, you should be able to boot up the I-Opener without a harddrive and listen to the introduction using a pair of speakers plugged into the headphone jack. I drilled a hole at the bottom of my I-Opener to accommodate the jack.

Configuring Sound

You have two alternatives for sound: the OSS drivers built into the kernel or ALSA drivers. I have more experience with the OSS drivers than ALSA, so I chose the former. OSS drivers are compiled into the kernel (see my kernel .config above). The quick way to get sound working is to do the following:
 # pnpdump --config > /etc/isapnp.conf
 # isapnp /etc/isapnp.conf
 # modprobe opl3sa2 io=0x370 mss_io=0x530 mpu_io=0x330 irq=5 dma=1 dma2=3
 # modprobe opl3 io=0x388
 # aumix      (turn the volume up as loud as it will go)
 # play /usr/share/sndconfig/sample.au
You should hear Linus Torvalds pronounce Linux as leenucks. Here is my isapnp.conf.

References

http://www.linux-hacker.net/
The site that started it all.
http://www.targetpc.com/hardware/articles/modified_iopener/
Intro to hacking the I-Opener, especially with a later BIOS.
http://www.evernex.com/iopener/
General site.
http://www.geocities.com/iopener_hack/prefect/index.html
Hardware-oriented site with lots of mods explained with schematics and pictures.
http://www.procooling.com/index.php?func=articles&disp=57&pg=1
The Franken-Opener. A funny writeup on installing CPU with a 12V fan.
http://www.procooling.com/index.php?func=articles&disp=59&pg=1
The Franken-Opener2. Another funny writeup on installing CPU with a 12V fan.
http://www.geocities.com/iopener_hack/
Mostly Netpliance corporate background; procedure for removing damaged BIOS socket.
http://www.kenseglerdesigns.com/cgi-bin/UltraBoard/UltraBoard.pl (DEAD LINK)
Useful taxonomy links.