Apple Powerbook G4 - FreeBSD

For machine info, see the main page.

This machine is tested with FreeBSD / ppc on an external drive. A Maxtor 250 GB firewire (and usb) 3.5 inch, with external power supply.

Work log

2021-04-23: booted FreeBSD 13.0-release powerpc (usb memstick in frontmost port, 2.5 inch usb hard drive in the othe usb port). dmesg output: normal. Unfortunately, the usb hard drive isn't recognized. Powered down, switched ports - nope, usb hard drive not showing up. Tried a different usb hard drive - no dice.

2021-04-22: with a FreeBSD 13.0-release powerpc memstick in the frontmost usb port, from power off, hold down Option (alt) then the usb stick shows up (eventually) and I can boot from it. Unfortunately, it ends with a loop of

"Root mount waiting for: CAM"

power off, the try from Open Firmware:

boot ud:,\\:tbxi

doesn't work - devalias 'ud' doesn't exist

boot usb1/disk@1:,\\:tbxi

doesn't work

boot usb0/disk@1:,\\:tbxi

starts executing boot script, then nothing more happens. Tried once more from the Option boot menu - this time it boots completely.

2011-01-21: I tried the new bsdinstaller, (using the bsdinstall-powerpc-20110116 snapshot). since this machine has a non-working optical drive, and because it won't recognize my external usb cd drive, I copied the image to a usb memory stick using dd. after that, boot into OpenFirmware (Command-Option-O-F) and do (usb stick in frontmost usb port):

devalias ud /pci1/usb@1b,1/disk@1
boot ud:,\BOOT\LOADER.;1 ud:0

It didn't work. The image tries to mount root from cd9660:/dev/acd0, and fails. And the keyboard wasn't working, so I couldn't do anything there.

2011-01-16: while I'm at it, try the FreeBSD 9.0-20101118-SNAP image as well, from another usb memory stick. Again, in the frontmost usb port. But this memory stick isn't recognized in open firmware, neither in the frontmost or the backmost usb port. Strange.

2011-01-16: Trying to boot FreeBSD 8.2-RC1 from a usb memory stick in the frontmost usb port. I'm trying with a simplified devalias this time:

devalias ud /pci1/usb@1b,1/disk@1
boot ud:,\boot\loader ud:0

but it doesn't work. I also tried

devalias ud pci1/usb@1b,1/disk@1 but it didn't work either. So it is back to this:
devalias ud /pci@f2000000/usb@1b,1/disk@1 and then

boot ud:,\boot\loader ud:0 works. The image boots to the main screen (via the country selection dialog), I select Fixit, and "use the live filesystem from a USB drive", and the installer says "No USB devices found!". Note: if the usb memory stick is connected to the backmost usb port (closest to the power connector) it shows up as /pci@f2000000/usb@1b/disk@1 in open firmware.

2011-01-16: It looks like the if_bwn module doesn't load from /boot/loader.conf. in /boot/loader.conf I have if_bwn_load="YES", and I can see it loading when the machine starts, but there is no trace of it in dmesg output, and when I do kldstat after booting it only shows kernel and sbp.ko (needed for the external firewire drive). I then do kldload if_bwn, and kldstat shows that the following additional modules are loaded: if_bwn, wlan, siba_bwn. After testing, I figured out that I need this in /boot/loader.conf to get the wireless to work:

wlan_load="YES"
siba_bwn_load="YES"
if_bwn_load="YES"

Nice. But when I do ifconfig wlan0 up, I get this on the console and in /var/log/messages:

Jan 16 19:42:45 powerbook-g4 kernel: bwn_v4_ucode5: could not load firmware image, error 2
Jan 16 19:42:45 powerbook-g4 kernel: bwn0: the fw file(bwn_v4_ucode5) not found
Jan 16 19:42:45 powerbook-g4 kernel: bwn-open_v4_ucode5: could not load firmware image, error 2
Jan 16 19:42:45 powerbook-g4 kernel: bwn0: the fw file(bwn-open_v4_ucode5) not found

So it doesn't work after all.

2010-10-14: So, finally, FreeBSD 8.1-release installed and working. dmesg output: normal, verbose (use set boot_verbose=yes in the boot loader to get a verbose boot). pciconf -lvc output:

root@powerbook-g4# pciconf -lvc
hostb0@pci0:0:11:0:    class=0x060000 card=0x00000000 chip=0x0034106b rev=0x00 hdr=0x00
    vendor     = 'Apple Computer Inc'
    device     = 'UniNorth 2 AGP'
    class      = bridge
    subclass   = HOST-PCI
    cap 02[80] = AGP 4x 2x 1x SBA disabled
vgapci0@pci0:0:16:0:    class=0x030000 card=0x001010de chip=0x032910de rev=0xa1 hdr=0x00
    vendor     = 'NVIDIA Corporation'
    device     = 'GeForce FX Go 5200 [NV34M]'
    class      = display
    subclass   = VGA
    cap 01[60] = powerspec 2  supports D0 D3  current D0
    cap 02[44] = AGP 4x 2x 1x SBA disabled
macio0@pci1:0:23:0:    class=0xff0000 card=0x00000000 chip=0x003e106b rev=0x00 hdr=0x00
    vendor     = 'Apple Computer Inc'
    device     = 'KeyLargo/Intrepid Mac I/O'
siba_bwn0@pci1:0:18:0:    class=0x028000 card=0x004e106b chip=0x432014e4 rev=0x03 hdr=0x00
    vendor     = 'Broadcom Corporation'
    device     = '802.11b/g Wireless LAN Controller (BCM4309)'
    class      = network
    cap 01[40] = powerspec 2  supports D0 D1 D2 D3  current D0
ohci0@pci1:0:26:0:    class=0x0c0310 card=0x00000000 chip=0x003f106b rev=0x00 hdr=0x00
    vendor     = 'Apple Computer Inc'
    device     = 'KeyLargo/Intrepid USB'
    class      = serial bus
    subclass   = USB
ohci1@pci1:0:27:0:    class=0x0c0310 card=0x00351033 chip=0x00351033 rev=0x43 hdr=0x00
    vendor     = 'NEC Electronics Hong Kong'
    device     = 'Dual OHCI controllers plus Single EHCI controller (udp9210)'
    class      = serial bus
    subclass   = USB
    cap 01[40] = powerspec 2  supports D0 D1 D2 D3  current D0
ohci2@pci1:0:27:1:    class=0x0c0310 card=0x00351033 chip=0x00351033 rev=0x43 hdr=0x00
    vendor     = 'NEC Electronics Hong Kong'
    device     = 'Dual OHCI controllers plus Single EHCI controller (udp9210)'
    class      = serial bus
    subclass   = USB
    cap 01[40] = powerspec 2  supports D0 D1 D2 D3  current D0
ehci0@pci1:0:27:2:    class=0x0c0320 card=0x00e01033 chip=0x00e01033 rev=0x04 hdr=0x00
    vendor     = 'NEC Electronics Hong Kong'
    device     = 'uPD720100A/101 USB 2.0 Enhanced Host Controller'
    class      = serial bus
    subclass   = USB
    cap 01[40] = powerspec 2  supports D0 D1 D2 D3  current D0
hostb1@pci1:0:11:0:    class=0x060000 card=0x00000000 chip=0x0035106b rev=0x00 hdr=0x00
    vendor     = 'Apple Computer Inc'
    device     = 'UniNorth 2 PCI'
    class      = bridge
    subclass   = HOST-PCI
ohci3@pci1:0:24:0:    class=0x0c0310 card=0x00000000 chip=0x003f106b rev=0x00 hdr=0x00
    vendor     = 'Apple Computer Inc'
    device     = 'KeyLargo/Intrepid USB'
    class      = serial bus
    subclass   = USB
ohci4@pci1:0:25:0:    class=0x0c0310 card=0x00000000 chip=0x003f106b rev=0x00 hdr=0x00
    vendor     = 'Apple Computer Inc'
    device     = 'KeyLargo/Intrepid USB'
    class      = serial bus
    subclass   = USB
ata1@pci2:0:13:0:    class=0xff0000 card=0x00000000 chip=0x003b106b rev=0x00 hdr=0x00
    vendor     = 'Apple Computer Inc'
    device     = 'Integrated ATA Controller (Intrepid)'
fwohci0@pci2:0:14:0:    class=0x0c0010 card=0x5811106b chip=0x0031106b rev=0x81 hdr=0x00
    vendor     = 'Apple Computer Inc'
    device     = 'UniNorth 2 FireWire'
    class      = serial bus
    subclass   = FireWire
    cap 01[44] = powerspec 2  supports D0 D1 D2 D3  current D0
gem0@pci2:0:15:0:    class=0x020000 card=0x00000000 chip=0x0032106b rev=0x80 hdr=0x00
    vendor     = 'Apple Computer Inc'
    device     = 'UniNorth 2 GMAC (Sun GEM)'
    class      = network
    subclass   = ethernet
hostb2@pci2:0:11:0:    class=0x060000 card=0x00000000 chip=0x0036106b rev=0x00 hdr=0x00
    vendor     = 'Apple Computer Inc'
    device     = 'UniNorth 2 Internal PCI'
    class      = bridge
    subclass   = HOST-PCI

usbconfig output:

root@powerbook-g4# usbconfig
ugen0.1: <OHCI root HUB Apple> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen1.1: <OHCI root HUB NEC> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen2.1: <OHCI root HUB NEC> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen3.1: <EHCI root HUB NEC> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
ugen4.1: <OHCI root HUB Apple> at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen5.1: <OHCI root HUB Apple> at usbus5, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen0.2: <product 0x8203 vendor 0x05ac> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON

2010-10-14: Hmm, today I retried my installation, since I learned that I need to load the sbp module (wait until the kernel has loaded, press space to abort booting, then load sbp, then boot) to have the firewire drive recognized. That works like a charm. What also worked today was the CD-ROM drive; I could boot from it via the ud alias, if it is connected to the frontmost usb port. Strange. For some reason, sysinstall didn't work, I had to extract the base, GENERIC and manpages distributions manually. I hope that's enough. We'll see. Ok - it was enough to boot it at least. Note: in /boot/loader.conf: sbp_load="YES" - needed for getting the firewire drive recognized. To get the wireless working: in /boot/loader.conf: if_bwn_load="YES", in /etc/rc.conf: wlans_bwn0="wlan0", ifconfig_wlan0="WPA DHCP". It also needs the port net/bwn-firmware-kmod for the firmware. I used portsnap fetch to get a ports tree, and portsnap extract to unpack it.

2010-10-10: Ok, I connected the external drive via usb instead. That works. (Note: the drive was connected to the back usb port - the one closest to the power connector, which made the drive show up as da0 in FreeBSD). I used gpart show da0 to list all partitions on the drive, and gpart delete -i <index> da0 to delete them, one by one. gpart destroy da0 just said "busy". Creating partitions:

gpart add -s 800K -t apple-boot ad0 (da0s2)
gpart add -s 1G -t freebsd-ufs da0 (da0s3 - / root)
gpart add -s 2G -t freebsd-swap da0 (da0s4, swap)
gpart add -s 4G -t freebsd-ufs da0 (da0s5, /var)
gpart add -s 512m -t freebsd-ufs da0 (da0s6, /tmp)
gpart add -t freebsd-ufs da0 (da0s7, /usr - the rest)

then it was reboot time, since the new partitions wasn't working correctly in Label in sysinstall (for some reason, when trying Create on them, it just complained that they were not free). Oh well. After the reboot, I hit more trouble: when I should select installation source, I selected usb, and got "no USB devices found!". Not nice.

2010-10-09: unfortunately, it doesn't look like my firewire drive works under FreeBSD, even if it shows up in open firmware. camcontrol devlist -v and camcontrol rescan all doesn't help, the drive does not show up, nothing is created in /dev. there is no dmesg command, so I can't see if the dmesg output provides any hints either. In Open Firmware, the firewire drive shows up as /pci@f4000000/firewire@e/node@0010b9f700f55f27/sbp-2@c000/disk@0, if it matters.

2010-10-09: I finally could boot the FreeBSD installer. I copied the install CD to a memory stick using dd: dd if=/home/tingo/dl/bsd/fbsd/8.1/FreeBSD-8.1-RELEASE-powerpc-disc1.iso of=/dev/da4 bs=10240 conv=sync. The memory stick showed up in the boot menu (opt / alt), but the machine refused to boot from it. However, it did boot from Open Firmware, even if it was convoluted. In Open firmware, I had to do this: first a dev / ls to figure out where the usb stick was in the tree (hint look for disk@ under the usb nodes), then I did

devalias ud /pci@f2000000/usb@1b,1/disk@1
boot ud:,\boot\loader ud:0

and the machine booted into FreeBSD. Yay! I struggled a bit after that, because I could not find out how to switch between consoles; it is fn-alt-Fx, for example fn-alt-f4. To make the ud device alias permanent, I did like this:

nvedit
devalias ud /pci@f2000000/usb@1b,1/disk@1
ctrl-c
nvstore
setenv use-nvramrc? true

that's it. Except for the fact that it doesn't work. After a reset everything is gone. Oh well.

2010-10-08: Trying to boot the FreeBSD 8.1-release install CD (disc1) from my usb-connected dvd-burner (Plextor) was unsuccessful. Pressing Opt (alt) during boot only brought up the internal drive. And from Open Firmware (cmd-opt-O-F) the device would not show at all when I did dev / ls. Strange.