The Apple iLamp -- the iMac G4 w/flat panel display.

CPU form-factor is a white half-sphere w/chrome arm connecting LCD panel to CPU.


End-User Report (dmesg, hardware, gotchas etc.)

Reference machine: iMac G4 Flat Panel Display 15" 1024x768
max resolution, manufactured circa 2002 (acquired new
November 2002).

All citations from the /proc filesystem, dmesg, etc. were from
a benh 2.4.22-r7 kernel built April, 2004.  New citations for
a 2.6.10 ubuntu kernel have not yet been compiled.

Disassembly, upgrade:

Please see August, 2003 issue of MacWorld, pp.52-3; 62-65.
Excellent pictorial article focusing on upgrading internal
hard disk drive, RAM.  Thermal paste required for reassembly.

'Remove any paste that gets in the vent hole.'

Modem   : Conexant usbhcf (V.90)
Video   : nVidia GeForce2-MX (rivafb)
ATA-4   : KeyLargo
i2c     : KeyWest
eth0    : (sungem.c) Sun GEM (PCI) 10/100/1000BaseT Ethernet
Audio   : TAS3001c + Tumbler
Memory  : UniNorth
PCI     : UniNorth
io      : Pangea
irq     : OpenPIC
BogoMIPS: 697
hda     : ST340810A
hda     : 80022600 sectors (40972 MB)
          w/2048KiB Cache, CHS=79387/16/63, UDMA(66)
agpgart : Detected Apple UniNorth/Pangea chipset
agp     : configuring for size idx: 4
agpgart : AGP aperture is 16M @ 0x0
scsi0   : SCSI host adapter emulation for IDE ATAPI devices
  Vendor: PIONEER   Model: DVD/CDRW DCR-111  Rev: 1.30
    Type: CD-ROM                ANSI SCSI revision: 02
sr0     : scsi3-mmc drive: 27x/62x writer cd/rw xa/form2 cdda tray
firewire: detected (untested with peripherals)
drivers : usb.c, hub.c, usb-ohci.c, hid-core.c, i2c-dev.o, i2c-core.o.

$ cat /proc/cpuinfo

cpu             : 7450, altivec supported
clock           : 700MHz
revision        : 2.1 (pvr 8000 0201)
bogomips        : 697.95
machine         : PowerMac4,2
motherboard     : PowerMac4,2 MacRISC2 MacRISC Power Macintosh
board revision  : 00000002
detected as     : 258 (Flat panel iMac)
pmac flags      : 00000001
L2 cache        : 256K unified
memory          : 512MB
pmac-generation : NewWorld

$ cat /proc/misc

134 apm_bios
135 rtc
144 nvram
175 agpgart
154 pmu

$ cat /proc/modules

hcfusbserial           22240   1
hcfusbengine          633692   0 [hcfusbserial]
hcfusbosspec           39504   4 [hcfusbserial hcfusbengine]

Modem driver

(struck text wrt older modem driver -- see History. -cwh)


$ cat /proc/devices

Character devices:
  1 mem
  2 pty/m%d
  3 pty/s%d
  4 tts/%d
  5 cua/%d
  7 vcs
 10 misc
 13 input
 14 sound
 21 sg
 29 fb
 56 adb
 89 i2c
108 ppp
128 ptm
136 pts/%d
162 raw
180 usb
240 ttySHCF%d
241 cuaHCF%d

Block devices:

  1 ramdisk
  3 ide0
  7 loop
 11 sr

$ cat /proc/interrupts

  1:          0   OpenPIC   Edge      Built-in Sound out
  2:          0   OpenPIC   Edge      Built-in Sound in
 19:      29601   OpenPIC   Level     ide0
 22:          0   OpenPIC   Level     SCC
 23:          0   OpenPIC   Level     SCC
 25:        580   OpenPIC   Level     VIA-PMU
 26:         41   OpenPIC   Level     keywest i2c
 27:      70018   OpenPIC   Level     usb-ohci
 28:     461298   OpenPIC   Level     usb-ohci
 41:          2   OpenPIC   Level     eth0
 42:          0   OpenPIC   Level     keywest i2c
 47:          0   OpenPIC   Level     GPIO1/ADB
 58:          0   OpenPIC   Edge      Headphone detect
BAD:          0

$ lspci

0000:00:0b.0 Host bridge: Apple Computer Inc. UniNorth/Pangea AGP
0000:00:10.0 VGA compatible controller: nVidia Corporation NV11 [GeForce2 MX/MX 400] (rev b2)
0000:10:0b.0 Host bridge: Apple Computer Inc. UniNorth/Pangea PCI
0000:10:17.0 Class ff00: Apple Computer Inc. KeyLargo/Pangea Mac I/O
0000:10:18.0 USB Controller: Apple Computer Inc. KeyLargo/Pangea USB
0000:10:19.0 USB Controller: Apple Computer Inc. KeyLargo/Pangea USB
0000:20:0b.0 Host bridge: Apple Computer Inc. UniNorth/Pangea Internal PCI
0000:20:0e.0 Class ffff: Apple Computer Inc. UniNorth/Pangea FireWire (rev ff)
0000:20:0f.0 Ethernet controller: Apple Computer Inc. UniNorth/Pangea GMAC (Sun GEM)


LCD backlight: Set in Mac OS X; double-click on Finder folder to save to NVRAM.

Audio Muting During Boot Sequence

Audio muting : see 'Backlight' for similar procedure (set it to nvram).

Functioning Software and Hardware

gdm          : yes, now supported
xdm          : yes, now supported
modem driver : proprietary (taints kernel; no longer free-beer).
speakers     : fine. xmms works fine.
headphones   : jack and muting works fine.

Audio Driver in Kernel Source

Audio driver path:


version: 0.3 embedded date: 2001 12 14 (file last stamped: Dec 7 2002)

These md5sums and timestamps may not be originals:

  • 9eb6dfa03c74644e1a13832d00bb1d32 tas3001c.c 9896 Dec 7 2002
  • aa8cc576bf4a02710ea49bac897b00a5 tas3001c.h 12011 Dec 7 2002

Newer versions of this driver did not work.

Copying working drivers/sound/dmasound/* to newer kernel trees seems to work fine here (up to 2.4.22 anyway).

Open Firmware, NVRAM

TODO: discuss..


..forth ( etc. )

..relationship to boot sequence

..description of UI


XF86Config-4 for 2.4.22 under warty:

# NOTE: This entire /etc/X11/XF86Config-4 may be applicable
#       only to 2.4.22 kernel built from benh tree.  No other
#       kernel was tested.  DPMS issue may be due only to
#       the author's poor understanding of it.

# NOTE: Please use the information *in* but not the formatting
#       *of* this file.  This isn't literate programming; it
#       is a heavily-commented XF86Config-4 file, and does
#       not obey X11 tradition.  It may not even work, as
#       posted -- but the individual bits and phrases will.

Section "Module"
    Load    "GLcore"
    Load    "bitmap"
    Load    "dbe"
    Load    "ddc"
    Load    "dri"

  # Load    "extmod"  <-- commented out

    SubSection "extmod"

      # This was the problem: DPMS. It caused idle X11
      # sessions to logout to gdm, ostensibly because
      # of poor interaction between xscreensaver, and
      # the underlying DPMS mechanism in this particular
      # installation.

      # ------------ not a comment ---------------

                  Option  "omit DPMS"

      # ------------ not a comment ---------------


    # Repeat: we added a new 'SubSection "extmod" ' and
    # in such subsection we added an option called
    # "omit DPMS" to modify the default behavior when
    # loading the "extmod" module.  DPMS (or lack of it)
    # crashed X11 to the point of unusability.  Omitting
    # support for it (from extmod) was the quick fix.

    Load    "freetype"
    Load    "glx"
    Load    "int10"
    Load    "pex5"
    Load    "record"
    Load    "speedo"
    Load    "type1"
    Load    "vbe"
    Load    "xie"

Section "InputDevice"
    Identifier    "iMac Factory Keyboard"

    # Model Number: M7803 Apple Pro Keyboard (c) 2002 Apple
    # has transparent case, 15 fn keys, 3 speaker/sound control
    # keys, CDROM eject key (upper right)

    Driver        "keyboard"
    Option        "CoreKeyboard"
    Option        "XkbRules"    "xfree86"

    # XkbModel
    # 'macintosh_old' is essential in some installations.
    # 'macintosh' is essential in some other installations.
    # This is an artifact of how the kernel was built.
    # Hint: ssh from a sane machine so you aren't fighting
    # a crazy keymap to put it back to rights.

    # Repeat: both macintosh and macintosh_old work with
    # the factory iMac G4 (circa 2002 mfgr), depending on
    # how the kernel was built -- it will be one or the
    # other, for that kernel build.

    Option        "XkbModel"    "macintosh_old"
        Option        "XkbLayout"    "us"


Section "InputDevice"

# Yes, multiple InputDevice sections. -cwh

# Sample: a recent Logitech USB trackball T-BC21 'Marble Mouse USB'

    Identifier    "Logitech Trackball"
    Driver        "mouse"
    Option        "CorePointer"
    Option        "Device"        "/dev/input/mice"
    Option        "Protocol"        "ImPS/2"
    Option        "Emulate3Buttons"    "false"

    # this is unknown:
    Option        "ZAxisMapping"        "4 5"

Section "Device"
    Identifier    "nVidia GeForce2 MX"
    Driver        "fbdev"
    BusID        "PCI:0:16:0"

    # Note: UseFBDev (see below) does not seem to work
    #       in Hoary w/ xorg.
    #       But we're still in XFree86 4.x.x so it is okay here.

    Option        "UseFBDev"        "true"


Section "Monitor"

    Identifier    "Apple iMac G4 Flat Panel"

    # We are an LCD display.  These are dummy args afaik:

    HorizSync      30-60
    VertRefresh    50-75

    # Must comment out DPMS for some installations, or
    # xscreensaver causes instant logouts when manipulated,
    # and when the X11 session is idle:
    # Option        "DPMS"

    # Summary: DPMS was disabled in two places:
    #        Section --> Monitor,
    # and    Modules --> extmod.


Section "Screen"
    Identifier    "Default Screen"
    Device        "nVidia GeForce2 MX"
    Monitor        "Apple iMac G4 Flat Panel"
    DefaultDepth    24

    SubSection "Display"
        Depth        24
        Modes        "1024x768"

        # You can get other modes; 1024x768 is the natural
        # mode for a 15" Flat Panel iMac G4 of 2002 vintage.


Section "ServerLayout"
    Identifier    "Default Layout"
    Screen        "Default Screen"
    InputDevice    "iMac Factory Keyboard"
    InputDevice    "Logitech Trackball"

Section "DRI"
    Mode    0666


xorg.conf for 2.6.10 under hoary:

# /etc/X11/xorg.conf (xorg X Window System server configuration file)

# NOTE: not all required sections reproduced here.
# uname -a
# Linux 2.6.10-5-powerpc #1 Tue Apr 5 12:44:32 UTC 2005 ppc GNU/Linux
  • # ls -l linux-image-2.6.10-5-powerpc_2.6.10-34_powerpc.deb

 15237330 2005-04-05 13:20 \
  • # md5sum linux-image-2.6.10-5-powerpc_2.6.10-34_powerpc.deb

 ab2f3aa84b2ec8733ddc4cf29714ff8d  \

Section "Module"
        Load    "GLcore"
        Load    "bitmap"
        Load    "dbe"
        Load    "ddc"
        Load    "dri"

      # Load  "extmod"

        SubSection "extmod"
          Option  "omit DPMS"

        Load    "freetype"
        Load    "glx"
        Load    "int10"
        Load    "record"
        Load    "type1"
        Load    "vbe"

Section "InputDevice"
        Identifier    "Generic Keyboard"
        Driver        "keyboard"
        Option        "CoreKeyboard"
        Option        "XkbRules"     "xorg"
        Option        "XkbModel"     "macintosh"
        Option        "XkbLayout"    "us"

Section "InputDevice"
        Identifier    "Configured Mouse"
        Driver        "mouse"
        Option        "CorePointer"
        Option        "Device"       "/dev/input/mice"
        Option        "Protocol"     "ImPS/2"

Section "Device"
        Identifier    "NVIDIA Corporation NV11 [GeForce2 MX/MX 400]"
        Driver        "nv"
        BusID         "PCI:0:16:0"

      # Defaults to 'true' not 'false'.  We want 'false' here:
        Option        "UseFBDev"    "false"


Section "Monitor"
        Identifier    "Color LCD"

      # Still broken?
      # Option        "DPMS"

        HorizSync      28-49
        VertRefresh    43-72

Section "Screen"
        Identifier    "Default Screen"
        Device        "NVIDIA Corporation NV11 [GeForce2 MX/MX 400]"
        Monitor       "Color LCD"
        DefaultDepth   24
        SubSection "Display"
                Depth    24
                Modes   "1024x768"

Section "ServerLayout"
        Identifier    "Default Layout"
        Screen        "Default Screen"
        InputDevice   "Generic Keyboard"
        InputDevice   "Configured Mouse"

Section "DRI"
        Mode                0666

# Special Note: Above was not tested -- instead is an edit of
# an existing (functional) xorg.conf.   Errors (if any) are due
# to omission, not alteration.  A line here or there may've been
# inadvertantly deleted, but no important changes were added
# without testing.

# TODO: verify all above w/working system. -cwh

Kernel .config

Next: /usr/src/linux/.config for 2.4.22 from benh tree.






_ * local to this wiki and /time/.


ILamp (last edited 2008-08-06 16:13:54 by localhost)