Problem and Solution

The Problem

The real problem is that Dell ships the laptop with a few choices that I didn't like.
  1. They use the LPIA (Low Power Intel Architecture) version instead of i386. What this means is that about 80% of the software I want doesn't yet exist in a repository of this architecture. It also means that the repositories are all at Dell instead of all over the world like Ubuntu's.
  2. They install some of the Netbook Remix stuff, which I'm sure is good for new people, but it annoys me that half my screen real-estate is tied up with ginormous icons.
  3. Their version of the WiFi driver prevents ssh working (client or server) unless you do the magic incantation ("iwpriv eth1 set_vlanmode 0")
  4. They lock the upper menu bar to the top of the screen.
  5. Presumably because of all the customization, they are shipping a six month old version.

The Solution

The solution is to install the standard i386 version of Ubuntu. This is fairly simple. The tricky part is fixing all the things that need to be fixed so that all the little pieces work.

NOTE:Unless otherwise noted, all commands are to be performed by root, so you can either prefix each one with "sudo" or you can just do "sudo su -" before all of them

Creating and Booting the Mini-9 from USB

Creating an install USB stick on a machine with a CD-ROM (could be your Mini9)
  1. Download the Ubuntu latest i386 CD
  2. Burn it to a CD
  3. Boot that CD in live mode
  4. Go to System->Administration->Create a USB startup stick
  5. Select the CD-ROM as the source, and put a stick in and select it for target.
  6. When done, remove both and reboot

Booting the Mini 9 with the stick

  1. Put the stick in
  2. Boot the laptop making sure to hit "0" for boot options and select the USB stick
  3. Select the "Live" "Run my system without making changes" version
  4. If it drops you to a command shell type "startx"

Installing Ubuntu Linux 8.10 i386

Doing the actual Ubuntu Linux install

  1. Click on System->Administration->Install.

  2. Select any options you would normally want to select. I use the default for everything except that I set my timezone to "US/Phoenix" and select "Manual guided install" for the hard drive partitions. That's because on such a small drive I just want a 2GB /swap and the rest as /. (I have 2GB RAM in the Mini9. Works great with non-Dell kernel.)
  3. Let the install complete
  4. REBOOT

First Boot Updates

  1. Go to System->Administration->Software Sources
  2. Go to the "Third Party" tab and select all
  3. Go do all available updates (System->Administration->Update Manager)
  4. Reboot

Cleanup and making things work

Check your Ethernet device names

If you've used the USB key on multiple devices, it keeps track of the device names, and so while the first machine gets eth0/eth1, the second gets eth2/eth3, etc.

You can find out what you have by opening a terminal (Applications->Accessories->Terminal) and typing "ifconfig | grep eth". If you see eth0 and eth1 you're fine. Otherwise, you can simply do:

rm -f /etc/udev/rules.d/70-persistent*net*
On next reboot the device names will be eth0/eth1

SSH Server

sudo apt-get install dropbear
NOTE: At this point you can ssh in from elsewhere and do the rest on a larger screen and keyboard.

Sound

  1. echo "options snd-hda-intel model=dell" >> /etc/modprobe.d/alsa-base
  2. reboot (this adds extra options like "speaker" which you need *LOL*)

After reboot:

  1. right-click volume, select "Open Volume Control"
  2. select Preferences and check "internal mic boost" under playback, the first capture under recordings and the first input source under options then "close"
  3. raise "speaker" from 0 to whatever you want it to be
  4. raise internal mic boost to about 50% or a bit higher.
  5. select the options tab and set input source to "Front Mic" (not "Mic")

WiFi

Do not install the restricted modules. Everything works fine out of the box.
NOTE: The custom wifi driver is discussed below for kernel hackers.

Kernel-building tools (only for those of you who roll your own. See NOTE: below)

sudo su -
apt-get install patch
apt-get install kernel-package
NOTE: The custom wifi driver is discussed below for kernel hackers.

Skype

  1. Fire up synaptic
  2. settings->repositories
  3. make sure all the third party stuff is checked.
  4. close
sudo wget http://www.medibuntu.org/sources.list.d/hardy.list -O /etc/apt/sources.list.d/medibuntu.list
wget -q http://packages.medibuntu.org/medibuntu-key.gpg -O- | sudo apt-key add - && sudo apt-get update
sudo aptitude install skype
Run skype, go to audio options, and set sound devices to be HDA Intel(hw:intel,0)

WiFi Driver (for kernel hackers)

*** PATCH NOW PROVIDED FOR 2.6.28 and 2.6.29 releases***

go to http://www.broadcom.com/support/802.11/linux_sta.php
get the sources...
mkdir wl
cd wl
tar -zxvf hybrid*
wget http://www.myehud.com/mini9/wl.patch
NOTE: The following is PROBABLY the right command.  The patch itself is good.  
      Just be sure you're at the top directory level when you apply it:
patch -p1 < wl.patch
NOTE 2: The patch makes use of checking the current version of the kernel. 
        That means you need to be running 2.6.28 for it to have any effect.
        Otherwise edit it and change references from
              #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) )
        to
              #ifdef PATCH_2628
        and at the top add a 
              #define PATCH_2628
NOTE 3: Keywords for google search: 2.6.28 wl_sta wl_sta.ko wl.ko bcm4312 bcm4315 linux driver ubuntu

make -C /lib/modules/`uname -r`/build M=`pwd` modules
make -C /lib/modules/`uname -r`/build M=`pwd` modules_install
modprobe wl

wl_sta for 2.6.29

The Gentoo guys over at Gentoo Bug Forum did some great work. Christoph Mende's patches are referenced below:

broadcom-sta-5.10.27.14-linux-2.6.29.patch

This has been tested with 2.6.29-rc2 and 2.6.29-rc4 successfully. Keywords: 2.6.29 wl_sta broadcom driver BCM4312 14e4:4315 (rev 01)

Some other packages...

sudo apt-get install powertop  -- note - it is unable to get power settings via ACPI.
sudo apt-get install simple-ccsm

Some directory links for non-Debian users If you're used to Redhat-style startup script then the missing "/etc/rc.d" may bother you.

sudo su -
mkdir /etc/rc.d
ln -s /etc/*.d /etc/rc.d/
rm -f /etc/rc.d/rc.d
ln -s /usr/sbin/invoke-rc.d /usr/local/bin/service
exit

Bluetooth Tethering to a phone

Works out of the box except you'll either want to use a shell and WVDial or
sudo apt-get install gnome-ppp

NOTE: You'll want to add your username to the "dip" group so that you can run pppd:

This is broken. Will fix shortly. March 11th 2009.


sed -i -e "s/\(dip.*\)/\1$USER/g" /etc/group* 
(That adds it to group and group-).

NOTE 2: To avoid the 2.5 minute disconnects with Verizon you need to turn lcp echo off. We do so by setting lcp-echo-interval and lcp-echo-failure to zero:

sed -i -e "s/^\(lcp-echo.*\)\(\ .*\)/\1 0/g" /etc/ppp/options

Dell Video Chat

This one is a little more complicated because you'll need to unpack Dell's Ubuntu CD.
    NOTE: IF you don't have a CDROM on your Mini 9, the first part here (PART I) can be done on a different system

    Part I: A system with CDROM

  1. Insert the Dell CDROM where you have a system booted off a Ubuntu stick (or a Ubuntu system)
  2. Become root: sudo su -
  3. If it doesn't automount mount /dev/cdrom /media/cdrom
  4. Create a mount point for the compressed filesystem mkdir /tmp/rootfs
  5. Mount the rootfs filesystem mount -o loop /media/cdrom/rootfs.img /tmp/rootfs
  6. cd /tmp/rootfs
  7. tar -cvzf /tmp/dellvideochat.tgz etc/xdg/sightspeed.com usr/share/dellvideochat
  8. cd /
  9. umount /tmp/rootfs
  10. umount /media/cdrom
  11. Copy /tmp/dellvideochat.tgz to /tmp on your Dell Mini 9 (unless you're already there)

    Part II: On your Dell Mini 9

  12. sudo su -
  13. cd /
  14. tar -zxvf /tmp/dellvideochat.tgz
  15. cp /usr/share/dellvideochat/dellvideochat /usr/bin/
  16. If you add a menu item for it and want an icon check out /usr/share/dellvideochat/images/dvc

That's all for now, November 29, 2008.  Perhaps more later.
Updated December 1st: Added requirement for 3rd party repos for dropbear.
                      Expanded directions for installing Dell Video Chat.
                      Fixed confusing directions for getting sound tabs to show up.
                      Startx may be needed if graphics don't start.
                      Fixed reference to "Install" location. 
Updated December 2nd: Removed sound related stuff I got off the net which wasn't needed
                      Require upgrading 8.10 packages prior to attempting to get sound to work!
Updated December 10th: Add instructions for adding group "dip" for bluetooth tethering
		      Add instructions for removing lcp-echo for Verizon to work more than 2.5minutes.
Updated December 18th: Add the "service" command for redhat style usage instead of the clearly-named
		      yet annoyingly weird invoke-rc.d command.
Updated December 25th: Patched wl_sta to work under kernel 2.6.28 and included
                       the patchfile here.
Updated December 26th: Cleaned up some typos.  
Updated January 21st 2009: Patched wl_sta to compile cleanly under kernel 2.6.29-rc2 but the module hangs the system on a modprobe.  Call for help.
Updated February 8th, 2009: Found that the Gentoo guys are ahead of the curve on this one, and referenced their patches for 2.6.29.  Works fine on rc2.  
Updated February 9th, 2009: The wl_sta driver patch works on 2.6.29-rc4 as well.
Updated February 13th, 2009: The wl_sta driver patch works on 2.6.29-rc5.
Updated March 11th, 2009: The sed command for "dip" group is broke.  Will fix when time permits.

Ehud