Well, this weekend was an experience
Cruise control fitting time, started out all confident - managed to get hold of the parts below for £55 off Ebay, which is very reasonable seeing as just the cruise control stalk alone goes for around £80 for the E85.
Basically followed Dave's (AnubisZed) excellent guide/video on these very forums (
here) - but hit a good number of snags along the way. With hindsight, I don't think Dave charges too much for the full install including parts so for the grief I pretty much caused myself I wish I'd booked in with him to sort it for me. Good excuse for a drive too.
So, stuck at the first hurdle - couldn't remove the airbag. Not obvious from Dave's video, but when clicking off both sides of the airbag your screwdriver needs to be almost facing straight up - after finding another video on YouTube (
this one - first 60 seconds is all you need) I had it off without issue.
Got the new stalks swapped over and everything reassembled (getting the steering cowl back together is tricky and I managed to cut myself on the plastic a couple of times), only to find my airbag didn't fit - grrr. The connector on the new stalks is very slightly different: (I think I was just unlucky here, as checking Ebay again all of the pictures show parts that are identical to the one that I took off my car)
This had be instantly worried that I'd managed to buy the wrong part

but I took everything back apart, swapped over the slip ring from my original part, finished reassembling everything and powered up the car. I received the expected warnings as the new codings hadn't been applied yet, but also an airbag warning light and the horn had stopped working. This made me even more positive that I'd got hold of an incompatible part.
Ploughing on, I grabbed the laptop I've had up and running and have performed several codings on my E85 successfully, ready to code the E89.
Going through all the issues I then faced in the next few hours would be really boring, so here's some handy tips for other coding relative newbies:
1) My K+DCAN cable needed an additional adapter to work on my E85 (I believe something to do with bridging 2 of the pins to be compatible with earlier cars - some cables have a switch to bridge/unbridge). I initially used the same adapter in the E89 and had a confirmed power/ignition connection showing in INPA - but was then unable to read anything from the car. Trial and error (i.e. ditching the adapter) then brought success and I was able to read the ECUs.
2) Dave's guide will walk you through several steps to get the software up and running with required files. The MEGA link to the daten files is has now been removed, so you'll need to search around for an alternative. You also need to use 'BMW coding tool' to update the daten files used - I received an error when using this initially, complaining about the file 'MSCOMCTL.OCX'. The answer is
here if you get the same issue.
3) My car already had the 'updated' value set in the first coding step - which I still don't fully understand. Specifically, my value of ‘TEMPOMAT_SETZ_ANZ_DAUER' was already set to 'wert_02'.
4) Dave uses the NCSExpert profile called 'Expertmodus (offen)' in his video when actually writing new codings to the car (this is the 'manipulation' profile) - but even though the 'pfl' file is called this, the settings for the profile mean it shows up in NCSExpert as something completely different (something like 'FSW-PSW MAN') which I now understand, but had me stumped for a while.
5) I then received errors when actually trying to write the new codings - exactly the same error as described
here and also the same fix - after changing the latency of the serial port on my laptop to 1 (it was set at 16) the coding errors went away and I completed the guide successfully.
Took the car round the block, cruise control working perfectly - result.
I then thought it would be worth popping the wheel off again just to double check all was well visually with the airbag - sure enough, I found one of the connectors underneath the slip ring was just hanging there, so I must have not pushed it fully home when reconnecting everything up. Schoolboy error.
Now I had a working horn again

but the airbag light was still showing. I've had to clear many airbag lights on my E85 using INPA, but as the only chassis option available is E90 all the module codes are different, so it's a non starter. I was pleasantly surprised to find that Carly will happily clear an airbag light however on the E89, as this is 100% not possible on the E85.
So finally, after lots of head scratching, panicking that I'd coded something incorrectly and resigning myself to booking in with Dave to sort all my problems out - everything is now working.
What a disaster.
Huge thanks to Dave though. By the time I'd actually figured out everything I needed to figure out, I simply followed the Youtube video completely to complete the coding and would have been lost without it.