iBook dualhead setup |
[ <- main ] iBook dualhead setup in linux [ introduction | my hardware / software | setup | use | ibook G4 | conclusion ] introduction After a long evaluation of OS X, I finally tried installing (Gentoo) linux on my mac laptop. And I was happy to see that everything I tried worked like a charm, except when I got to try the dualhead. Of course, I knew it was naive of me to think the dualhead would "just work" like it had done in osx. I did a rather quick web search for "ibook dualhead linux" and similar stuff, but only ran into message boards with people saying "it doesn't work for me".
Then, one day, I needed the dualhead badly, and as I had not
re-installed osx after repartitioning the hard drive, I ended up
installing it in the middle of the night just to get dualhead to work.
Luckily all I needed for my presentation was a web browser, so I threw
in mozilla and the presentation went fine. However, I got some ideas
from my friends afterwards, and I got optimistic enough to start
looking around again. This time, I started by looking at the
XF86Config generated by the xeasyconf program included with the Gentoo
distribution and found out that there were a whole bunch of commented
out options in the Section "Device" ### Available Driver options are:- ### Values: <i>: integer, <f>: float, <bool>: "True"/"False", ### <string>: "String", <freq>: "<f> Hz/kHz/MHz" ### [arg]: arg optional #Option "NoAccel" # [<bool>] #Option "SWcursor" # [<bool>] #Option "Dac6Bit" # [<bool>] #Option "Dac8Bit" # [<bool>] #Option "ForcePCIMode" # [<bool>] #Option "CPPIOMode" # [<bool>] #Option "CPusecTimeout" # <i> #Option "AGPMode" # <i> #Option "AGPFastWrite" # [<bool>] #Option "AGPSize" # <i> #Option "RingSize" # <i> #Option "BufferSize" # <i> #Option "EnableDepthMoves" # [<bool>] #Option "EnablePageFlip" # [<bool>] #Option "NoBackBuffer" # [<bool>] #Option "DRIReinit" # [<bool>] #Option "PanelOff" # [<bool>] #Option "DDCMode" # [<bool>] #Option "MonitorLayout" # [<str>] #Option "IgnoreEDID" # [<bool>] #Option "OverlayOnCRTC2" # [<bool>] #Option "CloneMode" # [<str>] #Option "CloneHSync" # [<str>] #Option "CloneVRefresh" # [<str>] #Option "UseFBDev" # [<bool>] #Option "VideoKey" # <i> #Option "ForceLegacyCRT" # <i> Identifier "Card0" Option "UseFBDev" Driver "ati" VendorName "ATI Technologies Inc" BoardName "Radeon Mobility M7 LW [Radeon Mobility 7500]" BusID "PCI:0:16:0" EndSection
At some point I also noticed that there was a man page describing
(all?) the options:
So, when I then commented out the
So, when you after this start up X _with_ the my hardware / software Just for the record, my hardware is: iBook G3 800 MHz with a DVD/CD-RW drive SDR memory (some newer G3 models have DDR memory) Radeon Mobility M7 LW [Radeon Mobility 7500] .. and I am using XFree 4.3.0. setup Now then. To make this all usable, I set up two device sections (and also some others) in the XF86Config, one for setting up the second head and one to use after that. Now let's only hope this will work for you too :)
TIP: start by making a backup of your current
The Section "Device" Identifier "Card0-normal" Driver "ati" VendorName "ATI Technologies Inc" BoardName "Radeon Mobility M7 LW [Radeon Mobility 7500]" BusID "PCI:0:16:0" Option "UseFBDev" EndSection Section "Device" Identifier "Card0-clone-setup" Driver "ati" VendorName "ATI Technologies Inc" BoardName "Radeon Mobility M7 LW [Radeon Mobility 7500]" BusID "PCI:0:16:0" Option "MonitorLayout" "LVDS,CRT" Option "OverlayOnCRTC2" Option "CloneHSync" "30.0-100.0" Option "CloneVRefresh" "60.0-100.0" EndSection
Note that the BusID might not be the same for you. The whole thing
might even work without the BusID lines altogether. I don't know
whether the
In addition to the above, you need a pair of Section "Screen" Identifier "Screen0-normal" Device "Card0-normal" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1024x768" Virtual 1024 768 EndSubSection EndSection Section "Screen" Identifier "Screen0-clone-setup" Device "Card0-clone-setup" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1024x768" Virtual 1024 768 EndSubSection EndSection Section "ServerLayout" Identifier "normal" Screen 0 "Screen0-normal" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection Section "ServerLayout" Identifier "clone-setup" Screen 0 "Screen0-clone-setup" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection Make sure you use the proper monitor identifier (and maybe others too), for me it is "Monitor0". use Now, by default X uses the first ServerLayout defined in the file, so make sure to comment out any old ones you had before or make sure they are not the first ones in the file. To set up the second head, I created a script like this: #!/bin/sh X -layout clone-setup -terminate & x_pid=$! xterm -display :0 -e echo "hello" wait $x_pid fbset -g 1024 768 1024 768 8
You can for example save it in
Now, all you need to do is run this TIP: If you know how, you could even make the init-dualhead script run automatically at each boot.
NOTE: if you use ibook G4 26.9.2004: A user who has a G4 800MHz with a ATI Radeon 9200+ mobility (2.6 kernel) reported that he got dualhead to work with the help of my instructions.. I haven't compared the configurations, but I provide the configuration that he uses here in the hope that it might benefit other G4 owners. He did report flickering of the lcd display but that it wasn't a problem in his case, he just wanted the external display to work. If you find out how to work around that, please contact me so I can share with him and others. conclusion This works nicely for me, and I can even watch movies with mplayer using this setup. I have not yet gotten myself an adapter cable for testing output to a TV but I'll do that someday. If I'm lucky (yeah right), it will work directly with this config. It would of course be nice if all this second head setup code could be in the kernel so it could be enabled directly from the boot and there would be no need to run the init-dualhead script. It gives the thing a bit hacky feel, but it works! Have fun! If you have problems, suggestions, greetings or whatever, see the main page for email/irc contact info. |