i2c remote evilness

Jan 25, 2007 / 0 comments

When I built my PVR a few years I bought a OneForAll URC-7562 6in1 remote control; with a surround sound amp, TV, NTL cable box, DVD and PVR the number of remotes around the place was getting a bit ridiculous. The main reason for choosing this remote was its ability to control the NTL box, which uses some odd IrDA based format apparently that even lirc has difficulty making sense of and learning remotes mostly ignore. It also had the ability to be upgraded remotely by phoning up a support line and they'd squirt some noise down the phone that the remote would understand. I had call to use this to enable my Scan DVD player when I first got the remote and it worked fine and I was quite impressed.

However the remote also features another neat way to do upgrades. It has a 6 pin header in the battery compartment that is know as the JP1. This exposes the I2C bus that the configuration EEPROM lives on and there is a good amount of information out there about understanding the memory layout and adding support for new remotes etc. I'd been meaning to build the adapter to connect up since getting the remote but until recently hadn't really had a reason. However although my new TV is vaguely supported I'd really like to be able to remap the keys more sanely. So last weekend I discovered I had the appropriate bits lying around and built one.

Unfortunately most of the software is for Windows; there's a Java app that will generate the appropriate data to feed to the remote, but the main communication tool is a Windows app. I found a couple of old Linux tools, but then I had a thought: it's just i2c. Why not tie it into the proper i2c subsystem? Turns out the i2c-parport driver makes this sort of thing easy; all you add is a single entry defining the appropriate parallel port lines to wiggle and it all magically works.

So now I can talk to my remote using the eeprom driver talking to the i2c subsystem which talks to the remote over the parallel port adaptor I built. Which feels wonderfully sick. :) Now I need to actually have a closer look at getting all the buttons working for my new TV...

xkcd.com

Jan 25, 2007 / 0 comments

Look, I know xkcd is great. I have the RSS feed hooked up to Liferea. I do not need people to continually produce blog posts with the latest cartoon in them. This seems to happen every bloody time there's a new cartoon, usually from at least 3 people (and not always the same ones).

NTL HD on its way

Jan 22, 2007 / 0 comments

I was pleased to recently discover that NTL are actually rolling out HD to non Telewest areas (somewhat belatedly; their press release here is from last November). I can't find any indication of when it might launch in Norwich, but there are various reports of people who have install dates lined up around the country, so I assume soon. All well and good. Until you realise that the only HD content they have is BBC HD (and some OnDemand stuff, but no idea what that is yet) - there's no agreement at present for the Sky HD content and no signs of one from the information I could find. Suddenly it doesn't really seem worth it; TV Drive looks like a nice PVR, but I've got one already TYVM.

Hello 2007

Jan 14, 2007 / 0 comments

Apparently it's a new year. I spent the first week of it in San Francisco, on honeymoon. I spent Christmas with my parents in NI. After ending up driving there (and getting the Holyhead/Dublin ferry) because I was flying home during the period when fog was affecting UK airports. FlyBE cancelled my flight from Norwich on the Thursday, but in their usual fashion it took them several hours after it was due to take off to do so. I hate that. They knew it was unlikely to take off when I was checking in, they cancelled all other flights around it but they kept the Dublin flight until the last minute. I think this is because it had the most people on it and they wanted to try to avoid having to refund people, but it would have been much easier for those of us supposed to be travelling on it if they'd just accepted their losses earlier.

Not a lot happening so far this year aside from the trip to the US. I'm without car (Katherine brings it back tomorrow - we flew from Belfast to Heathrow to get the flight to San Francisco so the car got left at my parents'). I might have bought a 32" HD LCD TV, but more on that if it actually arrives. James Puderer sent me a patch for supporting the Dream Cheeky USB missile launcher as well as the M&S one already in usblauncher. Get version 0.0.3 here if you have one of these.

A belated Happy New Year, folks.

Ubuntu on the Advent 8111

Dec 29, 2006 / 0 comments

Katherine's father bought her mother a laptop for Christmas. I am ashamed to admit that although I was responsible for the specification it was purchased from PC World. There is a lack of shops in Northern Ireland where you can walk in and purchase a reasonably cheap laptop unfortunately. The model we ended up with was an Advent 8111 (Dixons link as it's saner than the PC World one). It's not actually a bad spec; Core Duo 1.6GHz, 1GB RAM, 80GB HD, wireless/ethernet/modem, 15.4" 1280x800 widescreen TFT. I think it claims up to 3 hours battery life and I certainly had 2+ out of it though not under heavy use.

I decided that it was getting Linux; Katherine's mum isn't used to any form of computer so there are no preconceptions about Windows to get over. While I'm a Debian person myself I felt it was time to give Ubuntu a chance; mjg59 (and others I'm sure) has spent a lot of time trying to get it happy on laptops and make sure things Just Work. I didn't have a lot of time to sit fiddling with the setup, so a shiny out-of-the-box distro seemed ideal.

I downloaded ubuntu-6.10-desktop-i386.iso and burnt myself a CD. Dropped it in the drive and it booted into the live CD installer fine. The install process was simple and it managed to resize the Windows partition without problems (I would have deleted it but I couldn't convince the Windows rescue CD creator to work and I don't want to burn my bridges until I'm sure Linux works out ok for the owner).

Rebooting into the freshly installed system I was surprised at the time the boot process took. It certainly felt a lot longer than it takes my (lower speced) laptop to boot to a GDM prompt under Debian. Also the display looked a bit fuzzy. Further investigation led to the discovery that although X correctly detected a panel size of 1280x800 it was only using 1024x768. Much searching found me i915resolution which did some magic that made things work. However this doesn't appear to be part of Ubuntu proper so I'm not sure if was the correct solution or if I should have done something else?

Getting to the point where I could download i915resolution was interesting too. My parents have a WEP encrypted wireless network (to prevent casual use rather than because it's secure). I was expecting Ubuntu (which detected the Intel wireless card fine) to pop up some sort of dialog saying it had found a network and would I like to connect (if I provided the key). Something network-managery. But no. Even when I went to the network control panel and added all the details the connection didn't seem to come up. I gave up and did it manually with iwconfig and dhclient (I needed it to work quickly and at present it won't need wireless usually).

Once I had the display working happily my other task was to tame the modem. It's an Intel HDA thing and I'd hoped sl-modem-daemon would drive it. Of course it didn't. Although it's an Intel chipset it has a bloody Conexant codec on it. Which of course there are no free or Free drivers for. I ended up trying the trial Linuxant driver, which did work fine at 14.4k, but that's really painful so I gave up and paid for the full version. I'd really rather have voted with my feet and ended up with some proper modem hardware, but it would have been an extra set of wires and cost more. I hate Conexant. Anyway, the drivers work (though seem to break sound; I haven't had enough time to prod this and the modem is much more important to have working).

Hopefully in time I'll convince them they really want ADSL, but at present I think it would be quite hard as they don't have a high expected use.

Once the modem was working I needed an easy way to dial up. I started playing with modem monitor, which had been installed by default. However I just couldn't figure out how to get it to allow me to dialup and dial down - the activate/disable options stayed greyed out. So I installed GNOME PPP which seems to work fine and be easy enough to drive - put a nice link to it on the desktop and stored all the details so it's a double click to launch and then a click of the "Connect" button.

My final issue was that once I actually took the laptop to Katherine's house to show her mum how to use it it started hanging on boot. Booting into recovery mode showed a soft lockup error message around the point where it was setting up the network interfaces. I think this might have had something to do with me hitting the wireless kill switch (no point having it on when there's no wireless in the house), as disabling the device in the BIOS made the problem go away. I didn't have enough time to do a fully exhaustive check, but will look at it in the future.

I wait with interest to see how use of the laptop goes. Expected usage to being with is mainly web and email (provided by the Ubuntu defaults of Firefox and Evolution) so hopefully it shouldn't be too problematic now I've fought the install process. I was really quite surprised at the problems I encountered (well, aside from the modem drivers); I'd expected a much smoother install that would leave me with everything working fine out of the box. I haven't yet filed any bugs or done more investigation - I only had about a day to setup the machine so couldn't prod it more just yet. I will of course try to do so when I get a free moment, but if I missed some obvious stuff please do point it out to me! (As if you wouldn't...)

Oh, and here's some lspci output for anyone interested in some more details about the laptop:

00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS/940GML and 945GT Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03) (prog-if 00 [VGA])
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02) (prog-if 00 [Normal decode])
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02) (prog-if 00 [Normal decode])
00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3 (rev 02) (prog-if 00 [Normal decode])
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #1 (rev 02) (prog-if 00 [UHCI])
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #2 (rev 02) (prog-if 00 [UHCI])
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #3 (rev 02) (prog-if 00 [UHCI])
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #4 (rev 02) (prog-if 00 [UHCI])
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02) (prog-if 20 [EHCI])
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2) (prog-if 01 [Subtractive decode])
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller IDE (rev 02) (prog-if 80 [Master])
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)
02:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
04:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8055 PCI-E Gigabit Ethernet Controller (rev 10)
05:01.0 CardBus bridge: Texas Instruments Unknown device 8039
05:01.1 FireWire (IEEE 1394): Texas Instruments Unknown device 803a (prog-if 10 [OHCI])
05:01.2 Mass storage controller: Texas Instruments Unknown device 803b
05:01.3 Class 0805: Texas Instruments Unknown device 803c (prog-if 01)

subscribe via RSS