Monday, 1 November 2010

NFS on MacOS is broken!

I've been looking into iPhone development lately as I wanted to get an idea about what is involved. This means I've been force to use my Mac Mini for development. I'm not really a Mac user as I mostly use Linux (KDE). At first I wanted to use eclipse like I do for everything else. Currently this does not seem possible so I've been forced to use xcode.

I'll probably talk more about xcode in a later blog entry, but for now I'd like to rant about how bad NFS support in Mac applications are. I have NFS shared directories so that my server contains all user details. This has lots of benefits like been able to move between my different machines, but the main advantage is that they data is backup centrally from the server.

It seems many mac applications just don't work with NFS. I've never had a problem in Linux, all applications work with NFS that I've tried. I even play WOW from a NFS directory via crossover games with no problems!

So here is a list of apps I've discovered have problems:
  • iPhone simulator (Can't install developed apps)
  • xcode (Can't save files)
  • Installers (One of my macs can't install stuff unless they are done from local dir).
If anyone knows how to get round these problems I'd love to here it.

Tuesday, 5 October 2010

Bacula - The Open Source Network Backup Solution

Been a little while since I've blogged. I mainly blame this on World of Warcraft which I'm still playing quite a bit on Linux.

I've been looking at how I do backups at home again. I've written a script (in perl) that performs my backups, but it's been having a few problems. First of I worte it to backup my how server to my Netgear NAS. It did this using rsync to a NFS exported filesystem on the NAS. It turned out that the NAS crashes when about half way though a full backup! For some reason the NFS is pretty flakly on my Netgear ReadyNAS (which is a sparc CPU btw!).

The NAS also supported ssh and rsync protocols, so I stopped using NFS and started to transfer things over SSH. This however showed up another problem. It seems that the rsync parameter --list-dest does not work over SSH. This parameter is used to perform the incremental backups and only copy the stuff that has changed since the last time. To perform a full backup takes about 3 days currently (100Mbit network), so this is a no go. The backups need to be incremental.

I've started to think about writing my own backup application, but this time making a client/server type app that does not use rsync. Instead would have it's own storage daemon running on the NAS. At this point I started to look around at other free applications and discovered Bacula. This is what I've using to perform backups now.

This is a very nice application that consists of 3 main parts. Their is a storage daemon, that sits on my NAS. A Director which is a server that controls everything and a file daemon that also sits on my server. The file daemon is the client that is responsible for pulling files when the Director requests them. The director then stores them in the storage daemon. The good thing about this is I can run a file daemon on all the machines on my network and just have a single director on the server.

It was easy to install on my OpenSuSE machines, version 5 was available as packages and I used zypper to install them. Getting the storage deamon onto the NAS was harder. Their are packages, but they are a older version that is not fully compatible. I found I could perform backups, but not restore files. So I grabbed the latest sources and cross compiled it for the NAS which runs a SPARC architecture :-) If your familiar with cross compiling, then this is not to tricky. I need to some extra libs (sqlite3, zlib...) and then build the storage daemon static. After this it worked like a charm.

Bacula is a very command line based application, it's controlled from configuration files and a console. Once I got these all working I manged to setup nightly incremental backups. The acuall backups appear to be a lot faster than my previous solution. Their are some GUI consoles, but this are basicly not much more that a place to type commands. So in my view still a command line. I bealive their is also a web client, but I've not got round to installing that. Will be giving it ago soon.

If I don't find a good graphical client, then I might think about creating one. Main reason for this is we have a number of laptops in my family (windows and Linux) and I'd like these to have a good UI for doing backups.

Thursday, 1 July 2010

World of Warcraft stopped working in Crossover Games

I've been playing World of Warcraft most nights. What can I say, I'm addicted. As mentioned in previous posts, I bought crossover games to play WoW on my Linux Box and it was working very well. That was untill last night. WoW patched it self last night to version 3.3.5, cxgames/wine crashed a couple of time trying to update, howerver in the end I updated to the latest WoW.

No I have the problem that I can't log into the game server. Seems Crossover games no longer works with wine! Hoping their is a patch for this before long otherwise I'll probally have to find another solution.

As a software engineere I can understand how tricky it is to work with every version of the software. Don't expect blizzard shipped a earily release to code weavers before for pushing the patch to users. That would have given code weavers change to fix crossover games.

I could run WoW on my new Mac Mini, but I'd much rather be running it on my main Linux box with dual screens. Since I've bought the Windows version of WoW I'd probally have to buy the mac version. Maybe if you buy wow you can use either version, not sure about that.

Moving from windows to Mac OS X

Since I had problems updating my firmware using iTunes in windows running in VMWare workstation, I've been looking for another solution. I seem to have found one! I bought one of the new Mac Mini's (The server version as to has better spec). I'm now using this for syncing all my gadgets.

Mac OS X works a lot better for me than windows ever did. I've been able to connect it to the ldap server and nfs server on my network. This means and don't have to do much admin work on the sever, everything is controlled from a central location. Most importantly, when I backup my server and backup up all the user data on the mac.

The new Mac's are very nice. I have a older one belowe the TV which serves as a media center and I've been thinking of getting more other TV's at somepoint. Having one which can be used as a desktop computer will help qutie a bit with setting these others up. I don't want to have to admin each of them, I'd much rather come up with a solution where they are all configured on my server.

Reconfiguring Max OS X snow leapord to talk to my LDAP server and authenticated agaist it was pretty tricky. In fact I find OpenSuSE quite a bit easy to configure than the Mac. Most my admin work is done remotely from the command line for variours reasons, this a hell of a lot easier on OpenSuSE. Some think apple should sort out if they are seriours about Server opearting systems. In the end I got things working by changing the mac to use the LDAP profile "RFC 2307".

The automounts are still now working, so that will be a task for another day. It seems that RFC 2307 is not the same as what my linux boxes use. I might be able to tweak the mac to work, otherwise I'll have to add new entries into the ldap for mac's.

The next pain I had was group ID's. The ID's in the mac clashed with the ID's on my linux box. I fixed this by renumbering the ID's on the Mac, then adding them to the ldap server. I then updated the users so that on linux the mac groups were also visible. This was pretty complicated as the groups are stored on the mac in it's directory service as well as flat files. I wrote a perl script to perform the update. The directory service files are stored in these folders :

/private/var/db/dslocal/nodes/Default/groups
/System/Library/DirectoryServices/DefaultLocalDB/Default/groups

Anyway I've spent the last few nights putting all my iTunes conent into place and synced my phone last night. All is working very well. Will have to repeat the user setup for my wife's account. Hopefully firmware upgrade will go smoother this time.

Wednesday, 23 June 2010

Running windows under VMWare

I've spent the last week running windows vist 64Bit under VMWare to see if it can be used sync my gadgets (iphone, tomtom, harmony remote). All as been going pretty well, though still frustated my roaming profiles. The cause windows to take ages to log in and out. A nfs soultion would be much better given that this machine is a desktop one.

I've been syncing my iPhone without problems, which gave me a lot of hope that things would work. However last night I tried to upgrade the firmware to iOS 4. This proved to be impossible and left the phone useable. I googled around and found some suggested fixes for the problem, however none of them worked and all involved hacking around with the Linux Host USB options. If I can't update the firmware, then VMWare is not going to work for me.

I'm not considering other options, and it seems the best one is to by one of the new MacMini's. More money than I wanted to spend, but the benefits are quite large. First of I should be able to connected it to my linux next work with ldap auto mounts via nfs. No more roaming profiles! Backuping up to my Nas should be easy. My netgear nas pretends to my a apple time machine.
All my gadgets seem to work on MacOS X so I should be able to sit the box on the desktop and use VNC from my main Linux machine.

Friday, 18 June 2010

Getting gadgets to work with linux

So I'm not at stage 2 of replacing windows on my gaming machine. So far the games I play are working very well using crossover games from codeweavers. The next step is get my tomtom, iPhone, iPod and Harmony remotes all working and syncing.

In a perfect world their would be native Liunx drivers for these products, but that does not seem to be the cause. The really anoying thing is that at least one of these devices is running Linux! So currently I'm evaulating VMWare. I will hopefully be able to install iTunes and all the other drivers under vista in VMWare running windows vista. So far the installation of VMWare has been pretty easy and I'm currently setting up vista to talk to my network (Samba PDC). The trick part was working out what product I actually wanted. The VMWare website lists all sorts of products, I'd suggest they create a table showing how they all differ.

VMWare does strike me as slighly overkill for what I want, and I would quite happily pay codeweavers or anyone the price VMWare will cost me to get all these things working in crossover office. I wonder how many other people think this too? If I'd not already had to by windows vista, I'd give them that money also. I guess the main problem is getting USB devices working under wine and keeping up to date with the latest versions of iTunes.

I'm also going to have to install outlook, and the only reason for this is that iTunes only really supports Outlook for syncing.

Saturday, 12 June 2010

Crossover games 9.0.0

My windows vista machine has recently developed a hard disc fault, their is a clicking noise and the machine keeps freezing. This machine is mainly used for playing games and syncing my iphone. I've got a new hard disc on order, but it occured to my I might not need to run windows on the machine any longer. Since stopping Neverwinter Nights development, I've been playing World of Warcraft (WoW) and Guild wars. I've notice that both of these run in crossover games now so though I'd give things ago.

So I've got crossover games 9.0.0 installed on my laptop, the laptop is less powerful than my windows machine so I won't be comparing performance. All I'm looking for is the games run correctly and they are playable.

First thing I need to do is install WoW, this is quite a painfull process as it's a huge game. It was painful on windows too. Rather than install from the CD's I though I'd use the Internet installer, so I downloaded it and used crossover games to install it. The install process then took 2 days....... 6GiG download. Wish I'd used the DVD now :-) Anyway, a couple of days later and it's all installed, but now it needs patching!!! This is really anoying thing about wow, you think it would just have installed the latest version. So anther day and a half later and it's patched to the latest version.

I can now run wow and see the initial screen. Crossover games has added a icon to my KDE desktop and start menu which is great. I now try to log into my WoW account, it's at this point things go really wrong. Turns out I downloaded the wrong version. I have the enUS and not the enGB, so I can't log into my account. This means another 4 days of downloading...........

Ok time to try something different, I move the Wow install on my hard disc and mounted my windows machines hard disc via samba. I now copy the installed version on their to the place where crossover games installed things before. There is a config file at the path "World of Warcraft\WTF\Config.Config.WTF". With the help of a crossover games WoW page I edit the settings in their to add the following:

SET SoundOutputSystem "1"
SET SoundBufferSize "232"
SET gxApi "opengl"
SET ffxDeath "1"
SET gxMultisampleQuality "0.000000"
SET gxFixLag "0"
SET fullAlpha "1"
SET lodDist "100.000000"
SET SmallCull "0.070000"
SET DistCull "500.000000"
SET farclip "477"
SET particleDensity "1.000000"
SET unitDrawDist "300.000000"
SET gxCursor "0" SET baseMip "1"
SET spellEffectLevel "0"
SET weatherDensity "0"
SET pixelShaders "0"
SET ffxGlow "0"

After all of this, I fired up WoW again and successfully logged in. I've been playing the game most of the day and it's all working really well. It's a little sluggish in places, like for example when it displays a tool tip. That is probably down to my laptop been a bit underpowered. All in all, crossover games is really impressive.

I think I'm going to be checking out VMWare next for running iTunes and iPhone syncing. If that works I'll be able to ditch windows for Linux.

Wednesday, 9 June 2010

Scanners in Opensuse 11.2 (64 Bit)

For a while now I've been attempting on and off to get my flatbed scanner working in OpenSuSE versions. I've tried most versions from 11.0 to 11.2, but I always ran in to the same problem. The problem is that Yast tells me it will work on a 32Bit version of OpenSuSE, but not a 64 Bit version. I've got a "Epson Perfection 4490 Photo" flatbed scanner that I'm connecting via USB.

Last night I need to do some scanning and felt it was time to have another go and getting it working. Yast gave the same error message, so I though I'd check out the Epson website for drivers. First of their UK site was completly broken :-(, but their US site was working fine. I was surprised to find that their was drivers for Linux on their site!! How things have changed these days :-)

It turns out that the driver is a link to another site http://avasys.jp/eng/. This site seems todo quite a few drivers for Linux, amongst them are 64 Bit drivers for and instructions for my scanner. They also seem to have the source code on the site. It's quite possible that the OpenSuSE driver support for scanners could be improved by this.

Sunday, 21 March 2010

iFolder 3.8

For quite a while now I've been looking for something that allows me to sync folders on my Linux (OpenSuSE) laptop with my server. I quite like the way that windows provides roaming profiles. This allows a user to share a home area with multiple machines. The real advance of roaming profiles is that they can be disconnected from the network and then sync backup when reconnected to the network. This is great for laptops. Another big advantage for me is that all the windows machines store a copy of their files on my central samba server. This means I can perform a backup from one central location.

The problem with Microsoft romaing profiles is they only sync on login/logout. First of, I hardly ever log out of my windows desktop machine. I just lock the screen, and second it takes ages to sync changes. I dread having to reboot my windows machine.

So I've been looking for something that would allow a roaming profile type system on Linux. I've tried a few different options over the last few years (unison, csync, rsync) but none them have really been what I was after. So the last week or so, I've been giving iFolder ago. First of I have to say, the server setup was pretty painful. Even though it's sponsored by Novell, the setup took most the last week to get working. In the end I deleted all the ifolder rpm's and deleted any left over files, then reinstalled it. This time the setup process worked, so I'm still sure exactly what was broken.

iFolder consists of a Linux server and client applications that run on MacOS, Linux and windows. Their is also a web client. As soon as I realised this I saw that iFolder has a lot of potential. As well has using it on Linux, it should be possible to use it on windows. So far I've only used it on my Linux laptop, but if that works well I'll probably try it on windows aswell.

The server is written in C# and runs within apache. This means that anywere I can access my web server, I can access the iFolders. This is really great. It means I could sync my folders whilst saying at a hotel with wireless for example (Though my internet upload speed sucks a bit to much for this). The syncing also happens all the time and not just on login/logout. This works much better with the way I work. The web client is also pretty good, this allows me to access my files from work for example. Probably also means I can look at files on my iPhone to some degree.

The downsides of iFolder that I've found so far is that their is no headless command line client. This would have been very useful for on the server it's self. I could have then exported that folder via samba. The client on Linux is also a gnome application which does not fit very well with my KDE desktop. I notice that the client is written in C# which makes me wonder if their are KDE bindings for C#. If so I could probably convert it to run on KDE.

So far I've sync two folders, one (10Gig and 300Meg). The largest one worked fine, but the smaller one is complaining of conflicts. Their should be no conflicts so I suspect it does not like the filenames these files use. That could be a problem as I don't want to be limited by file name. However it does make sense if windows is supported as well. The client pops up a notification balloon when conflicts are found. It's then possible to output the conflict resolve window and fix any problems.

So far I've feeling pretty positive about iFolder. The client does not quite fit with the desktop, it offers a lot of nice features and works pretty well once the server is setup. Going to take a little longer trial before I final decide that it's a winner and put to rest my looking for a Linux roaming profile solution.

Sunday, 14 March 2010

Multiple sounds devices in OpenSuSE 11.2

My dell studio laptop has two sounds devices. Both of them are are Intel devices, one of them is the normal laptop stereo output, the other is the HDMI out. I've been having the problem that ALSA/Pulseaudio apps don't output any sound. I did manage to convince KDE to output sound but telling it go strait to the sound card, however that is less than perfect as I'd rather it went to pulse audio.

After digging into this for a while I discovered that the problem was the dual sounds cards. Alsa and PluseAudio need to know that the stereo output is the default. This can be fixed in YaST by configuring the cards in the correct order (the default one first). This article gave me the info.

At some point I'd like to be able to output digital audio so I will probably need to find a way of switching also/pulseadio between the two devices.

Thursday, 11 March 2010

Linux backup

For a little while now, I've been backup in my server to a removable hard disc. This has worked pretty well till a couple of months ago when I inserted the backup drive into the server (the drive is in a caddy). This caused the computer to switch off! and their was a nasty burning smell. I feared that I'd fried the computer, but it turned out to be the hard disc.

So rather than replace the hard disc, I started to think about a better solution. The problem with removable hard discs is that you can't automate regular backups. This lead me to start thinking about NAS drives. A network storage device could sit on the network and be used to backup to on a regular basis. I have a central server in my house witch all the other desktops, media center's and laptops backup to. So this means only the server needs to be backed up. Because it's Linux I needed a NAS that supported things like rsync and NFS. It's also important that files copied from the server to retain their permissions and owner ship.

After speaking to friends and looking around the Internet I deiced on the Netgear ReadyNAS duo. This can take two hard discs, and has loads of features, including NFS and rsync. The device works well in Linux, Windows or OSX. The documentation does not really mention Linux.

Once connected network I powered it on and got a scare. The device was very loud. Turns out this is a not problem, as it settled down. In fact I've never heard it do that again. Its actually very quite. Next I followed the setup wizard you get when you access the admin interface for the first time. I then added a backup NFS share. The share was configured to be accessible only from the server and allow root to mount it.

Now I use the following script to perform backups. It's still a working in progress (let me know if you have suggestions for improvement). This performs a incremental backup to the mounted NFS share.
#! /usr/bin/perl

use File::Path;
use File::Copy;
use File::Temp;

my $BACKUP_DIR="/mounts/backup";
my $RSYNC_OPTIONS="-a --delete -v";
my $NUM_BACKUPS=4;
my @DIRS=("/usr/local/","/etc/","/srv/","/home/","/root/","/var/lib/samba/","/mnt/Films/Films/");

my $backupPrefix=$BACKUP_DIR."/backup.";

for ($count=$NUM_BACKUPS; $count>=1 ; $count--) {
if ($count==$NUM_BACKUPS) {
if ( -d $backupPrefix.$count ) {
print "Delete backup ".$backupPrefix.$count;
rmtree($backupPrefix.$count);
}
}
else {
my $previousDir=$backupPrefix.($count-1);
if ( -d $previousDir ) {
print "Moving backup ".$previousDir." to ".$backupPrefix.$count."\n";
move($previousDir,$backupPrefix.$count);
}
}
}

if ( -d $backupPrefix."1" ) {
print "Copying previous backup\n";
system("cp -al ".$backupPrefix."1/. ".$backupPrefix."0");
}

print "Backup up latest system changes\n";
foreach $dir (@DIRS) {
print "Backup up changes in ".$dir."\n";
mkpath($backupPrefix."0".$dir);
system("rsync ".$RSYNC_OPTIONS." ".$dir." ".$backupPrefix."0".$dir);
}

my $backupDataPath=$backupPrefix."0/backup-data";
if ( -d $backupDataPath ) {
rmtree($backupDataPath);
}

mkpath($backupDataPath);
system("rpm -qa > ".$backupDataPath."/packages.list");

Apple customer service

I've had my iphone just under a year now and other than it's lack of Linux support, I've been very happy with it.

This morning I notice that the battery was almost completely flat, so I plugged it into the charger. This is were the trouble started. For some reason the phone just went black and no amount of poking it would get it to turn back on. I tried all the suggested things on the web to do with resetting it, restoring it using i
iTunes, connecting to mains chargers. Nothing worked!

So I though I'd ring apple customer support, this was a pleasant change from customer support form other companies. I pretty much got strait though to a human and she took me though most the steps I'd already found of the web. She then emailed some stuff to try as well as confirming that my phone was still within it's 1 year hardware warranty.

The last thing she suggested was to arrange an appointment with the local apple store to have someone look at it. So since the phone was still not responding, this is what I did. You can arrange the appointment via the apple website, choose the time and leave a message. After that it was just a matter of poping down to the local apple store.

Once in the apple store, someone store me on time and took a look at the phone. They confirmed what I suspected and said the phone was faulty. Next they poped out the back of the shop and got me a new one. They activated it their and then so that I could use it and people could call me! The only thing left to do was go home, plug it into iTunes and restore my old phones backup onto the new one. This was pretty easy and worked without a hitch.

I have to say the whole experince was very present and quite surprising. I've had other broken phones in the past and it's usually been a lot more painful. Usally I've been without a phone for days. I can't think of any other phone that I could have got replaced the same day it broken. Thank you apple!

Tuesday, 23 February 2010

NWN2Library first release

I've just made public the first release NWN2Library. This is a beta release (0.1 beta 1), so still a work in progress as I work towards the non beta version. I've upload to the release files to the website today, which can be found here.

This version has support for reading from TLK and 2DA files. This should work pretty well has the Neversummer web admin tool has been using this code for quite a while. Their is also a parser for the Bioware Neverwinter Nights 2 custom GUI xml files (Minor gripe, though I say XML, they are not really XML) . This probably the area that will see most work before the final 0.1 release.

Wednesday, 17 February 2010

NWN2Library & NWN2GUI

I've been working on two new open source projects in the last couple of weeks. Here is a quick intro to both of them.

NWN2Library

The first of these is a Java library, called NWN2Library. The idea behind this is to provide a Java library that is used to access the resources of the game Neverwinter Nigths 2. It's still in development and I've not yet made a release of the library. However development is happening in a public SVN server now. Details of the project can be found here.

So currently has has the following features:
  • Can parse and read the strings from TLK files.
  • Can parse and read the database files 2DA.
  • Can parse the XML GUI files and produce a object tree of it's GUI components.
The XML GUI parser still needs some work but it's mostly done. Once thats finished I'll be making a initial release of the library.

NWN2GUI

The second project I'm on now very far a long yet, but its getting closer. This is a GUI application which is used to render NWN2 XML GUI files. The idea is you can make a change to a GUI, click a button and have it displayed with the changes. This is been developed as it's a real pain at the moment developing custom GUI's for Neversummer 5. The following screen shows how far the application has come so far:


As you can see from the screenshot, it's got quite a way to go yet. The XML GUI render has quite a few missing components and errors in existing ones. Also the main still needs quite a bit of work. I'm hoping to setup a google code project for it soon and develop the code in a public SVN server.

Saturday, 23 January 2010

Neverwinter Nights 2 Custom Store GUI

I've create a Custom store GUI for the persistence world Neversummer 5. The main reason for creating it, is so items can and their costs can be pulled from a database. First step is to make it look like the stock Neverwinter Nights 2 stores. Later on we can improve on them.

One of the things I've been having trouble with, is the dragging of an item from a players inventory to the store window to sell the item. Well with the hope of people in #nwn2cr I've finally got this working. I though I'd post about it as this kind of information is very hard to find.

My main mistake was trying to retrieve the event of a item been dropped on store GUI. This is actually done from the inventory screen.

Their are two events that were confusing me. OnMouseDrop and OnMouseDropReceived. So in a drag operation between two dialogs (in my case the inventory and the store) their is a source and destination of the drag operation. The source will fire the event OnMouseDrop, and the destination will fire OnMouseDropReceived.

I've not been able to figure out how to capture the dragged object details using OnMouseDropReceived, but OnMouseDrop works very well. I used the two following calls to capture the objects ID and send to to the store sell script:

OnMouseDrop0=UIObject_Misc_ExtractData("self:","objectid",0,local:3) OnMouseDrop1=UIObject_Misc_ExecuteServerScript("gui_store_sell",local:3)

Their is another bit of magic that was also need. The above will fire for any event, so you need to know that the item is been dragged to the store. I added the following calls to the store window:

OnMouseEnter=UIObject_Misc_ExecuteServerScript("gui_store_mouse","ENTER")
OnMouseLeave=UIObject_Misc_ExecuteServerScript("gui_store_mouse","LEAVE")

The script gui_store_mouse sets a variable on the player when the mouse pointer enters the store window and deletes it when the mouse pointer leaves. Now the gui_store_sell script can check the variable before selling the item.

I was hoping to use a combination of OnMouseDrop on the inventory dialog and OnMouseDropReceived on the store dialog, but it seems that OnMouseDropReceived is fired before OnMouseDrop.

Hope this helps another scripter/modder :-)

Thursday, 21 January 2010

Neversummer Blog's

This is mostly a test blog entry to see if I can get it to appear on the new neversummer blog planet I'm setting up. The idea is developers can blog about the various projects they are working on within neversummer.

Tuesday, 12 January 2010

Dell Studio 1535, FGLRX and RandR 1.2

I've had a little time to play around with the new RandR 1.2 support in ATI/AMD fglrx graphics drivers and I'm liking what I see. Make the laptop run with dual external monitors or the in-built panel is now really easy. It's a massive improvement over the ati-config approach I was using before.

Here are the commands I used to make the my Dell Studio 1535 run with dual external monitors:

xrandr --output LCD --off
xrandr --output CRT1 --right-of DFP_EXTTMDS --auto --output DFP_EXTTMDS --auto


These commands will now make it run with the laptop panel:

xrandr --output CRT1 --off
xrandr --output LCD --auto --output CRT1 --off --output DFP_EXTTMDS --off

Now I just need a nice way of attaching these commands to the screen setup button on the laptop :-)

Wednesday, 6 January 2010

ATI Drivers get Xrandr 1.2

I've just upgraded my laptop to OpenSUSE 11.2 and whislt I was at it, I pulled in the latest ati fglrx driver and wireless drivers. For some reason the display driver put up a bit of a fight, I think the problem was left over of older versions of the driver.

Once I'd removed the old ones, the new driver installed and work without a problem. The laptop panel came up with my desktop. I took my laptop to the study and plugged into into the two external monitors (LCD and a CRT). Now things started to not work again. It would only use the built in panel. So i tried to use the "aticonfig" tool to fix the issues and I got a error message about aticonfig not working when randr 1.2 was active!!

This is great news, it means we now have proper randr in the ATI comerical drivers (if I've not made a mistake and load the free drivers :-) ). So I can now configure the mointor setup using standard randr tools. Also Xrandr is much easier to work with than aticonfig. I suspect it should be possible to write a script and attach it to the monitor key on the laptop.

I'll post again when I've had time to play with this a little more