thouters.be

- Thomas' Webjar full of joy -

Linux on an iBook G4

Author: Thomas Langewouters
description:The pitfalls I encountered over the year I worked with an iBook G4 running Linux.

Introduction

iBook

On one of the last days of august 2005 I purchased a brand-new 12" G4 Apple iBook Laptop. This page is dedicated to this beautiful piece of hardware, I will share my experiences here. You can also read here how I installed Gentoo Linux on it back then.

I needed a laptop so I could conveniently work for school anywhere on campus, and drag around my work with me. So I took a look at laptop offerings from various hardware companies. I made a list of guidelines in selecting my machine of choice:

  • Well within budget (I find 2000 euros to be a lot of money for a computer!)
  • Light and small (the more the better)
  • When I see people drag 17" wide-screen laptops around, I often ask myself if the words mobile and portable lost their meaning somewhere along the way.

Along with those qualities, the iBook had some nice features that made me hooked on it even harder:

  • A very beautiful design, like all Apple hardware
  • It couldn't physically run windows, not in a thousand years.
  • If I ever get tired of Linux, I'd have to resort to Mac OS, a fine operating system, with UNIX underpinnings
  • It's clearly not "just another portable", compared to my fellow students' laptops.

When it comes to running Linux on it, hardware accelerated 3D video is certainly missed (there are no proprietary ATI drivers for PowerPC available), but besides that, all hardware works and is supported by Linux.

Linux installation

Note

The following text dates back to 2006, A text about setting up Debian on the iBook in 2008 (not published yet) is currently in the making.

I wrote down the hardest tricks that I had to pull to get Gentoo Linux running on my iBook. Back then, most Linux distributions didn't support the new hardware, and I had quite a struggle getting everything to work. These days everything works well.

Device drivers

Universal Serial Bus (USB)

USB worked out of the box, no problems whatsoever, be sure to enable the following things in your kernel:

  • USB Human Interface Device
  • USB Mass Storage support
  • OHCI HCD Support
  • EHCI HCD (USB 2.0) Support

Firewire

Works fine. Enable Firewire (enable IEE 1394 in kernel)

Audio

The iBook's PowerMac Snapper chip, gets detected fine and works great on kernels later then 2.6.14. I had to make an effort to get it working on Linux 2.6.13.1, but since this information is irrelevant now, I removed it.

Touchpad

As of kernel 2.6.14, the appletouch driver is included with Linux. This driver works great. To have a middle and left mouse button, enable mouse button emulation by putting dev/mac_hid/mouse_button_emulation = 1 in /etc/sysctl.conf

100mbit wired Ethernet

Works perfectly, use the sungem kernel driver

Hotkeys

Works, with pbbuttonsd, this program also does power management.

Telephone modem

I haven't done any modem-related research since I don't want or plan to use the modem.

Wireless LAN (Airport Extreme)

Development of a free driver is ongoing, and since Linux 2.6.17, an experimental driver is included into the kernel. This driver however, doesn't play nice with the later revisions of the bcm43xx chipset (my iBook has one) Take a look at the Native Airport Express Drivers thread on the gentoo forums.

Accelerated Video drivers

Since ATI doesn't release enough specifications, it's hard for Open Source developers to write 3D drivers, Mesa emulates OpenGL on the CPU, but this is slow and consumes a lot of CPU. There is related info though, a howto on the gentoo ppc forum titled "Get DRI working on a Powerbook with Radeon 9600/M10". This forum thread is about the older generation of ATI cards, included in older Powerbooks.

Suspend (to ram/disk)

Suspend to ram works great.

Cdwriter/dvdrom

This works great, the built-in ATAPI Matshita drive works fine with cdrecord, and therefore all GUI programs like gnome baker, k3b, ... work perfectly.

VGA Output (External Monitor)

If you connect the monitor before X is started, you get a cloned screen. It should be possible to do dual screen, have a look at Alessandro Ronchi's Linux On The IBookG4 page.

Bluetooth

My iBook has a Cambridge Silicon Radio chipset, it is connected via the USB bus. The command hid2hci has to be run before the bluetooth services are started, in gentoo this is done by setting HID2HCI_ENABLE=true in /etc/conf.d/bluetooth. It works fine using the bluez bluetooth stack.

Userspace Tools, pbbuttonsd

I use ifplugd with the wired Ethernet chip, this way plugging in a cable automatically configures the link with a static or dynamic IP address. Pbbuttonsd is the power management daemon that proceeds to suspend on cover close and resumes later. Because ALSA acts weird after suspend to ram, I put a script in /etc/power/event.d (named alsasound) that runs alsasound stop before, and alsasound start a suspend to ram. The same for ifplugd (because the link doesn't seem to come up after resume).

Gentoo Linux Installation

There is not much special about installing Gentoo on a PPC machine. The Gentoo install documentation is very good, all I have to add is some advice: copy the live CD kernel and modules, to your new root, and add an entry in your yaboot.conf for it (give it an obvious name; eg 'live CD kernel').

I had to change my kernel configuration several times before I had a working kernel. It's faster to boot from disk than from CD-ROM, this trick would have saved me some time.