Install Debian GNU/Linux "sarge" on Apple PowerBook G4 Aluminum (12-inch 1.33GHz)

| No Comments

Overview

It is the first time I fiddle with an Apple machine. Apple PowerBook G4 is really amazing stuff. I get outstanding performance and peculiar experience from this small and exquisite nice-looking aluminum alloy box.

You can find the latest version of this document at http://quux.me/neo/2006/06/linux-on-powerbook-g4.html

The Hardware

Power PC G4 microprocessor 1.33GHz Works
256 MB DDR SDRAM Works
60 GB hard disk drive Works
DVD-ROM/CD-RW drive Works
nVidia GeForce FX Go5200 with 64 MB DDR SDRAM Partial works1
USB 2.0 Works
IEEE-1394a FireWire 400 Works
56 Kbps Internal Modem Doesn't work
10Base-T and 100Base-T Ethernet Works
54 Mbps Airport Extreme wireless Works4
Bluetooth Works
Sound Works3
Keyboard Works
Trackpad Works
12.1 inch TFT 1024×768 Works
Power Management Partial works3
  1. No 3D acceleration
  2. Untested
  3. With some extra effort
  4. With a lot of effort

lspci -v reports the following.

0000:00:0b.0 Host bridge: Apple Computer Inc. UniNorth 2 AGP
Flags: bus master, 66MHz, medium devsel, latency 16
Capabilities: <available only to root>

0000:00:10.0 VGA compatible controller: nVidia Corporation NV34M [GeForce FX Go5
200] (rev a1) (prog-if 00 [VGA])
Subsystem: nVidia Corporation: Unknown device 0010
Flags: bus master, 66MHz, medium devsel, latency 248, IRQ 48
Memory at 91000000 (32-bit, non-prefetchable) [size=16M]
Memory at a0000000 (32-bit, prefetchable) [size=128M]
Expansion ROM at 90000000 [disabled] [size=128K]
Capabilities: <available only to root>

0001:01:0b.0 Host bridge: Apple Computer Inc. UniNorth 2 PCI
Flags: bus master, 66MHz, medium devsel, latency 16

0001:01:12.0 Network controller: Broadcom Corporation BCM4306 802.11b/g Wireless
LAN Controller (rev 03)
Subsystem: Apple Computer Inc.: Unknown device 004e
Flags: bus master, fast devsel, latency 16, IRQ 52
Memory at 80084000 (32-bit, non-prefetchable) [disabled] [size=8K]
Capabilities: <available only to root>

0001:01:17.0 ff00: Apple Computer Inc. KeyLargo/Intrepid Mac I/O
Flags: bus master, medium devsel, latency 16
Memory at 80000000 (32-bit, non-prefetchable) [size=512K]

0001:01:18.0 USB Controller: Apple Computer Inc. KeyLargo/Intrepid USB (prog-if
10 [OHCI])
Flags: medium devsel
Memory at f3000000 (32-bit, non-prefetchable) [size=4K]

0001:01:19.0 USB Controller: Apple Computer Inc. KeyLargo/Intrepid USB (prog-if
10 [OHCI])
Flags: medium devsel
Memory at f3001000 (32-bit, non-prefetchable) [size=4K]

0001:01:1a.0 USB Controller: Apple Computer Inc. KeyLargo/Intrepid USB (prog-if
10 [OHCI])
Flags: bus master, medium devsel, latency 16, IRQ 29
Memory at 80083000 (32-bit, non-prefetchable) [size=4K]

0001:01:1b.0 USB Controller: NEC Corporation USB (rev 43) (prog-if 10 [OHCI])
Subsystem: NEC Corporation USB
Flags: bus master, medium devsel, latency 16, IRQ 63
Memory at 80082000 (32-bit, non-prefetchable) [size=4K]
Capabilities: <available only to root>

0001:01:1b.1 USB Controller: NEC Corporation USB (rev 43) (prog-if 10 [OHCI])
Subsystem: NEC Corporation USB
Flags: bus master, medium devsel, latency 16, IRQ 63
Memory at 80081000 (32-bit, non-prefetchable) [size=4K]
Capabilities: <available only to root>

0001:01:1b.2 USB Controller: NEC Corporation USB 2.0 (rev 04) (prog-if 20 [EHCI]
)
Subsystem: NEC Corporation USB 2.0
Flags: bus master, medium devsel, latency 16, IRQ 63
Memory at 80080000 (32-bit, non-prefetchable) [size=256]
Capabilities: <available only to root>

0002:02:0b.0 Host bridge: Apple Computer Inc. UniNorth 2 Internal PCI
Flags: bus master, 66MHz, medium devsel, latency 16

0002:02:0d.0 ff00: Apple Computer Inc. UniNorth/Intrepid ATA/100
Flags: bus master, medium devsel, latency 32, IRQ 39
Memory at f5004000 (32-bit, non-prefetchable) [size=16K]

0002:02:0e.0 FireWire (IEEE 1394): Apple Computer Inc. UniNorth 2 FireWire (rev
81) (prog-if 10 [OHCI])
Subsystem: Apple Computer Inc.: Unknown device 5811
Flags: bus master, medium devsel, latency 64, IRQ 40
Memory at f5000000 (32-bit, non-prefetchable) [size=4K]
Capabilities: <available only to root>

0002:02:0f.0 Ethernet controller: Apple Computer Inc. UniNorth 2 GMAC (Sun GEM)
(rev 80)
Flags: bus master, 66MHz, slow devsel, latency 16, IRQ 41
Memory at f5200000 (32-bit, non-prefetchable) [size=2M]
Expansion ROM at f5100000 [disabled] [size=1M]

Kernel

I use the Debian GNU/Linux 3.1 "sarge". I install debian package kernel-source-2.6.8 and recompile the Linux kernel with my custom config-2.6.8-bauxite.3 configuration file. Now, it worked with the latest Linux kernel 2.6.11.7. config-2.6.11.7-bauxite.41, kernel 2.6.13.14 config-2.6.13.4-bauxite.54. The lastest Linux kernel 2.6.16 is more stable. I backport the bcm43xx wireless network driver from 2.6.17 to 2.6.16.20. And compile it with my custom config-2.6.16.20-alum.2 configuration file.

# uname -a
Linux bauxite 2.6.16.20-alum.2 #1 Sun Jun 18 16:23:23 CST 2006 ppc GNU/Linux

CPU

It is a Motorola MPC7447A Processor 1.33GHz.

# cat /proc/cpuinfo
processor : 0
cpu : 7447A, altivec supported
clock : 1333MHz
revision : 1.1 (pvr 8003 0101)
bogomips : 1327.10
machine : PowerBook6,4
motherboard : PowerBook6,4 MacRISC3 Power Macintosh
detected as : 287 (PowerBook G4 12")
pmac flags : 0000000a
L2 cache : 512K unified
memory : 256MB
pmac-generation : NewWorld
# cat /proc/cpuinfo
processor : 0
cpu : 7447A, altivec supported
clock : 666MHz
revision : 1.1 (pvr 8003 0101)
bogomips : 663.55
machine : PowerBook6,4
motherboard : PowerBook6,4 MacRISC3 Power Macintosh
detected as : 287 (PowerBook G4 12")
pmac flags : 0000000a
L2 cache : 512K unified
memory : 256MB
pmac-generation : NewWorld

USB 2.0

The USB 2.0 works well.

FireWire 400

It seems worked. Since I do not have any firewire device. This is untested.

ohci1394: $Rev: 1223 $ Ben Collins <bcollins@debian.org>
PCI: Enabling device 0002:02:0e.0 (0000 -> 0002)
ohci1394: fw-host0: Unexpected PCI resource length of 1000!
ohci1394: fw-host0: OHCI-1394 1.1 (PCI): IRQ=[40] MMIO=[f5000000-f50007ff] Max
Packet=[2048]
ieee1394: Host added: ID:BUS[0-00:1023] GUID[000d93fffe388690]
ip1394: $Rev: 1224 $ Ben Collins <bcollins@debian.org>
divert: not allocating divert_blk for non-ethernet device eth1
ip1394: eth1: IEEE-1394 IPv4 over 1394 Ethernet (fw-host0)

It worked. Tested with my external DVD burner, Pioneer DVD-RW DVR-109.

ieee1394: Node added: ID:BUS[0-00:1023]  GUID[00507705205c0768]
ieee1394: Node changed: 0-00:1023 -> 0-01:1023
ieee1394: unsolicited response packet received - no tlabel match
scsi0 : SCSI emulation for IEEE-1394 SBP-2 Devices
ieee1394: sbp2: Logged into SBP-2 device
ieee1394: Node 0-00:1023: Max speed [S400] - Max payload [2048]
Vendor: PIONEER Model: DVD-RW DVR-109 Rev: 1.40
Type: CD-ROM ANSI SCSI revision: 02
sr0: scsi3-mmc drive: 40x/40x writer cd/rw xa/form2 cdda tray
Attached scsi CD-ROM sr0 at scsi0, channel 0, id 0, lun 0
Attached scsi generic sg0 at scsi0, channel 0, id 0, lun 0, type 5

Modem

It cannot work.

Network

The Ethernet adapter from Sun works fine.

sungem.c:v0.98 8/24/03 David S. Miller (davem@redhat.com)
divert: allocating divert_blk for eth0
eeth0: Sun GEM (PCI) 10/100/1000BaseT Ethernet aa:bb:cc:dd:ee:ff
PHY ID: 4061e4, addr: 0
eth0: Found BCM5221 PHY
Activate CONFIG_SUNGEM=y in your kenerl configuration.

Bluetooth

# hciconfig -a
hci0: Type: USB
BD Address: 00:00:99:AA:BB:CC ACL MTU: 192:8 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN
RX bytes:107 acl:0 sco:0 events:14 errors:0
TX bytes:300 acl:0 sco:0 commands:13 errors:0
Features: 0xff 0xff 0x8f 0x78 0x18 0x18 0x00 0x80
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: 'bauxite-0'
Class: 0x000100
Service Classes: Unspecified
Device Class: Computer, Uncategorized
HCI Ver: 1.2 (0x2) HCI Rev: 0x4d9 LMP Ver: 1.2 (0x2) LMP Subver: 0x4d9
Manufacturer: Cambridge Silicon Radio (10)

I have a Nokia N-Gage QD cell phone with bluetooth support. With bluetooth discovery protocol, It can discover the cell phone successfully. And then communicate with the cell phone.

# hcitool scan
Scanning ...
00:00:66:77:88:99 N-Gage QD

Sound

Install alsa-base with apt-get install alsa-base. Works fine. Active the following options in your kenerl configuration.

CONFIG_SOUND=m
CONFIG_DMASOUND_PMAC=m
CONFIG_DMASOUND=m

Create file /etc/modprobe.d/alsa-driver with the following content.

# Alsa 1.0.6 kernel modules' configuration file.
# /etc/modprobe.d/alsa-driver

# ALSA portion
alias char-major-116 snd
# OSS/Free portion
alias char-major-14 soundcore

##
## IMPORTANT:
## You need to customise this section for your specific sound card(s)
## and then run `update-modules' command.
## Read alsa-driver's INSTALL file in /usr/share/doc for more info.
##
## ALSA portion
alias snd-card-0 snd-powermac
## OSS/Free portion
alias sound-slot-0 snd-card-0
##

# OSS/Free portion - card #1
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss

alias /dev/mixer snd-mixer-oss
alias /dev/dsp snd-pcm-oss
alias /dev/midi snd-seq-oss

# Set this to the correct number of cards.
options snd cards_limit=1
And run update-modules to update file /etc/modules.conf.

Hard Disk Drive

Hard disk drive works fine.

# hddtemp /dev/hda
hddtemp /dev/hda
/dev/hda: Hitachi IC25N060ATMR04-0: 38°C
# hdparm -i /dev/hda

/dev/hda:

Model=Hitachi IC25N060ATMR04-0, FwRev=MO3AAD7A, SerialNo=MRG3X9K3V5JKNH
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
BuffType=DualPortCache, BuffSize=7884kB, MaxMultSect=16, MultSect=off
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=117210240
IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
AdvancedPM=yes: mode=0x80 (128) WriteCache=enabled
Drive conforms to: ATA/ATAPI-6 T13 1410D revision 3a:

* signifies the current active mode

DVD-ROM/CD-RW Drive

I use 2.6 Linux kernel, and cdrecord scanbus reports the following message.

# cdrecord -scanbus dev=ATA
Cdrecord-Clone 2.01a34 (powerpc-unknown-linux-gnu) Copyright (C) 1995-2004 Jörg
Schilling
NOTE: this version of cdrecord is an inofficial (modified) release of cdrecord
and thus may have bugs that are not present in the original version.
Please send bug reports and support requests to <cdrtools@packages.debian.
org>.
The original author should not be bothered with problems of this version.

scsidev: 'ATA'
devname: 'ATA'
scsibus: -2 target: -2 lun: -2
Warning: Using badly designed ATAPI via /dev/hd* interface.
Linux sg driver version: 3.5.27
Using libscg version 'schily-0.8'.
scsibus1:
1,0,0 100) 'MATSHITA' 'CD-RW CW-8123 ' 'CA0T' Removable CD-ROM
1,1,0 101) *
1,2,0 102) *
1,3,0 103) *
1,4,0 104) *
1,5,0 105) *
1,6,0 106) *
1,7,0 107) *

Airport Extreme

The 802.11 b/g wirelees network adapter cannot work.

Finally, it worked. You can download the latest driver from http://bcm43xx.berlios.de/. And tThis driver was included into the Linux kernel since 2.6.17-rc2.

Keyboard

Use pbbuttons to support the powerbook special keys.

Trackpad

The trackpad has only one mouse button. Add the following lines to file /etc/sysctl.conf to map the second and third mouse button to F11 and F12.

dev.mac_hid.mouse_button_emulation = 1
dev.mac_hid.mouse_button2_keycode = 87
dev.mac_hid.mouse_button3_keycode = 88

Graphics and Display

XFree86 works fine. I use the nv driver. Here is my XFree86 configuration file.

Resources

Apple

IBM developerWorks

Install Linux on a Powerbook

PowerBook G4 Hardware

Interesting

Wallpapers

Leave a comment