I guess I should have known better

Really, I should have known better than to buy myself a rather 'bleeding-edge' laptop. I suppose I've been lucky with my last couple of laptops and was thinking that pretty much everything works on Linux. Or maybe I'm being picky, because in fact pretty much everything does work on my new Dell Studio.

I bought this laptop mainly because it has a 1920x1080 screen, without being a 17" monster. I had such a monster about four laptops ago (an enormous Sony Vaio weighing in at around 5kg and with a 1hr battery life) and it was an disaster: lots of weird proprietary stuff that never worked, like the external speakers in the docking station. But I loved that screen right up until the day Fraser threw a pair of scissors into it.

With the advent of mass-market 1920x1080 screens I've been waiting for them to arrive in laptops at a reasonable price, and the availability of this screen in a few possible laptops seemed to me to be that point.

It's a Dell Studio 15, and as well as the nice screen, it comes with a new Intel i7 Quad Core CPU, 6G RAM, 640G hard drive and a Blu-ray drive. While there are a few similar models around this one seemed to have the best mix of features-for-weight-and-price, so I bought my first Dell.

I built a USB key with the latest Debian Installer from Squeeze and installed that and everything came up pretty well. I had to use the broadcom-sta driver for the wireless, since the BCM 43224 is not (yet) supported by the free b43 driver (though from looking the mailing list people seem to be working on it, and it looks like it might not be too far away).

Everything seemed good. X came up on the (georgeous) screen. I don't care too much about 3D performance, but it was nice to note that the ATI 5000 series is expected to have full support as soon as it's integrated into the right places - it seems the code is written, and public, it just isn't incorporated into the 'radeon' driver quite yet. The fact that ATI is nowadays a free-software friendly company was one of the reasons for choosing this, in preference to an NVidia-based laptop.

But it seems that it isn't all roses. The fan in the laptop seems permanently on, and not on, in a quiet-just-barely-audible way, but ON, in an 'IN UR LAPTOPZ KOOLIN UR P0RCESSAZ' kind of a way. Too damn noisy for me to concentrate in a quiet room.

I've investigated what's going on, and it seems likely there are some ACPI misunderstandings happening. Some googling and some pecking around in /sys makes me wonder if the laptop expects some kind of configuration choice between favouring Active cooling and Passive cooling, and it's defaulted to the first one. Perhaps you get better benchmarks that way.

Linux ACPI also seems to only half understand it, it has two thermal zones, and one of them always appears with 0 temperature. I can see set points for the fans, but have no control over them. In particular this got me out reading the ACPI 4.0 specification, and it explicitly mentions this choice of favouring 'Active' vs 'Passive' as being done by configuring the passive trip point setting to a higher value than the low & high active trip points.

In the ACPI 4 spec (page 409) it says:

To implement a preference towards performance or energy conservation,
OSPM can request that the platform change the priority of active cooling
(performance) versus passive cooling (energy conservation/silence) by evaluating
the _SCP (Set Cooling Policy) object for the thermal zone or a corresponding
OS-specific interface to individual devices within a thermal zone.

This laptop is showing 'passive' at 95000 millidegrees celsius, and 'active' at 55000 / 75000 so right in line with the suggestion.

However I don't see any way in Linux to change these trip point values, and in any case I'm not convinced the laptop is actually obeying them at all. It should be that if I do nothing on the laptop for a while the temperature would surely drop below 55 degrees celsius. Surely a modern laptop will sit at under 40 degrees when it's quiescent, and the temperature sensor that does show me something sits at around 30 degrees in this too, 26.8, to be overprecise. That one doesn't budge either.

Looking in /sys/ I can't for the life of me find a way to set that cooling policy, and when I disassemble the DSDT it looks like a noop...

Thinking that perhaps there was a newer BIOS, I looked at the Dell site and found there was one. Great! Investigating even further, it seems Dell hardware has some interesting capability via libsmbios and some utilities which will let me install my BIOS from a Linux system... even better!

Linux is a second-class citizen though, and when I look for the Dell BIOS Hdr file I need there is no version of the file for this laptop - let alone the current BIOS version. And when I download the BIOS from Dell's website and unzip the first layer of packaging I find that both of the files inside will only run on Windows.

I added a FreeDOS boot stanza to Grub 2 in order to discover this, also discovering in the process that this is not well explained, and I could not find how to do it on the FreeDOS or Grub2 websites, so in passing, here is what I added into /etc/grub/40_custom :

menuentry 'BIOS Flash 1558 A09' --class os {
        set root='(hd0,msdos1)'
        linux16 /boot/memdisk
        initrd16  /boot/1558_A09.img
}

Which certainly does boot FreeDOS from Grub2, into the image built from the 8M FreeDOS base image, and which I called '1558_A09.img' because that seems to be one of Dell's reference numbers for this model / BIOS version.

So still no BIOS update for Andrew, it seems, and the laptop is probably going to continue to be noisy for some time. Possibly forever.

Suspend/Resume works though. Kernel mode-setting for the ATI Radeon Mobility HD 5450 (or whatever it is) seems to work. Building kernels seems to work. The Blu-ray drive seems to work, at least as far as reading CDs - just because I got a laptop with a "Full HD" screen doesn't mean I watch movies on it: those pixels are for programming on! In any case, after reading the literature of pain about playing Blu-ray disks on Linux I'm convinced that we won't be shelling out to buy one any any time soon.

After a bit more frustration I did manage to get the BIOS installed, using the hack I found here of running the Windows BIOS update under Wine and copying the BIOS file out of the temp directory while the error message is displayed. I could then download a random DOS-installable Phoenix BIOS to get copy of phlash16.exe and put those two files on the FreeDOS image I created earlier. Finally I was able to put that learning about how to boot FreeDOS from Grub2 to good use!

Unfortunately, having jumped through all of those hoops (including the frustration of trying to build and use Dell's firmware-extract tools on a Debian system), the fan continues to grind away at annoying volume, with no way that I have been able to find to control it, and the temperature sensors also seem wrong, since one doesn't budge from 0 and the other doesn't budge from 26800.

During boot I get a bunch of error messages, like:

[    1.049936] \_SB_.PCI0:_OSC invalid UUID

[    1.052202] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[    1.052210] pci 0000:00:1c.0: PME# disabled

[    1.065228] pci 0000:07:00.2: PME# supported from D0 D1 D2 D3hot D3cold
[    1.065237] pci 0000:07:00.2: PME# disabled

[    1.079086] Unable to assume PCIe control: Disabling ASPM

[    1.086412] HEST: Table is not found!

[    1.249906] ACPI: Fan [FAN0] (off)
[    1.249959] ACPI: Fan [FAN1] (off)

[    1.250093] [Firmware Bug]: ACPI: ACPI brightness control misses _BQC function

[    1.259118] acpi device:02: registered as cooling_device2
[    1.262132] thermal LNXTHERM:01: registered as thermal_zone0
[    1.262139] ACPI: Thermal Zone [TZ00] (27 C)
[    1.262561] thermal LNXTHERM:02: registered as thermal_zone1
[    1.262571] ACPI: Thermal Zone [TZ01] (0 C)

[    1.262598] ERST: Table is not found!

[    2.769664] i801_smbus 0000:00:1f.3: PCI INT C -> GSI 18 (level, low) -> IRQ 18
[    2.769670] ACPI: resource 0000:00:1f.3 [io  0x1840-0x185f] conflicts with ACPI
                         region SMBI [bus 1840-184f pref window disabled]
[    2.769672] ACPI: If an ACPI driver is available for this device, you should use it
                         instead of the native driver

I don't yet know what this all means, so I guess I'll be signing up for the linux-acpi mailing list to see if there's anything I can do to get things working better. Any pointers will be gratefully received :-)

Right about now I wonder if maybe I should have gone for the HP or the Asus, even if they were a little heavier and a bit more expensive and next time I get a new laptop I must remember not to spend more than $900 (USD$600) on it.

[Updated: 2010-09-08... Noise Problems Solved

Thank you Debian

I do like that some of my friends in Debian have conspired to set up the website http://thank.debian.net/, and I composed this little Haiku in their honour:

Debian is fun
for seventeen years.
Beautiful balloons.

I'd also like to thank everyone involved in Debian over the years for being such a lovable, friendly, enjoyable and welcoming bunch of people to work with.

It's tempting to single out people for special mention, because there are people who do exceptional work in the project, but the list would go on for so long, and I would be afraid of missing out someone who would be obvious five minutes later, and then I'd have to come back and edit this post repeatedly with the names of more and more people over the coming days. We all know exactly what a chore that kind of maintenance is.

So I'll just give up completely and thank everyone, and if you think you deserve a special thanks, you probably do, and I'm sure you're on that list in my head. When we meet, as I hope we shall, let me shake your hand, lend you my ear and buy you a $BEVERAGE of your choice.

Thank you,
Andrew McMillan.

Using dnsmasq to add SRV records for CardDAV and CalDAV

I've been working on implementing CardDAV support into DAViCal at the moment, and the first problem I encountered when I went to try and use it from iCal, was that the configuration on iCal didn't seem to want to let me enter a URL to my addressbook.

DAViCal 0.9.9 - Tickets, Binds & CalDAV Scheduling

I've now released DAViCal 0.9.9, after five pretty intensive weeks of work. This includes a number of features that were implemented to support dotCal, which has now replaced their old Cosmo backend with DAViCal to break through a performance bottleneck. That turned into a six-week challenge, because Cosmo had wandered some distance from where calendaring standards are currently going, and so there was a lot of work under the covers of dotCal to switch from using various Cosmo-specific features to do the same thing, using open calendaring standards like CalDAV.

The cost of crap

For several years now we've been buying our groceries online. It's worked well, and for the last couple of christmases I remember Heather adding a six-pack into the pre-christmas order so she could pull it out and hand it off to the delivery guy.

Fair enough too, because he was their front-line man. He was the guy who had to actually meet the customer, and even if only for two minutes face time, the impression he gave with his cheery "seeya mate" on the way out, and his always-happy smile, was that getting the groceries delivered was fun.

DAViCal 0.9.8.3 - A return to stability

After a whole bunch of drastic changes, lots of bugfixes, rewriting and refactoring, I released DAViCal 0.9.8 on Christmas day last year. I didn't release it very publicly, because I knew it sucked significantly. In an increasingly fast turnaround I've subsequently released 0.9.8.1 to a somewhat wider audience while I was at the recent Calendaring and Scheduling Consortium meeting in Costa Mesa at the beginning of the month. Earlier this week I released 0.9.8.2 to the more interested of the DAViCal userbase. So finally, yesterday, I released DAViCal 0.9.8.3 to fix the few significant problems that were left with that, and this is the release that I'm telling everyone about, because I believe it should be a good stable platform to people who want to upgrade their production DAViCal servers, or who have been hanging back from using DAViCal until the platform was a little more stable.

Reenactment of the ramming of the Ady Gil

Last night, after the kids had gone to bed, I entered the bathroom to find this wonderful diorama Max had created to reenact the ramming of the Ady Gil.

I just love the stance from the 'Japanese' seaman, and particularly how he's represented by a tiger, with the plug for a hat. The Ady Gil, of course, just a harmless duck. Altogether spartan in the simplicity of the representation, and yet wonderfully evocative.

All of the items are bath toys that have been in the room since the kids were much younger, but such wanton creativity is truly a joy to observe.

Using incron to autocommit changes in a folder

A friend e-mailed me this morning asking for some help with a problem he had where he wanted to make a folder writable by a group of people without making the files deletable. Stepping back from his question, I first pointed out that if the files are editable then they can be effectively deleted by removing the content from them, regardless of whether the directory entries themselves are retained.

One solution which occurred to me would be to automatically version the content of the directory, and this reminds me of why versioning of /etc has never worked for me: it only happens when I remember to commit.

DAViCal 0.9.7.4 released during CalConnect XVI

I spent last week at the CalConnect XVI meeting of the Calendaring and Scheduling Consortium hosted by Apple Computer in Cupertino. I'd been hoping to get 0.9.7.3 released before I got there so I could concentrate on some of the more aggressive enhancement plans while I was there, but in the end I didn't manage to release until the Tuesday, during the event. Then, after some interaction with Kerio and a small but important bug that was found, I decided to release 0.9.7.4 with a very few small changes before moving onto the more radical enhancement plans I continue to work through at present towards a 0.9.8 release in a few weeks.

The release notes for both releases are on the wiki, including details of downloading and so forth:

At CalConnect itself, the first half of the week was an interoperability meeting which I was an observer at, though I did set up a server for people to test against, and the folk from Apple, Sun and Kerio were kind enough to test against this, including a very early version of the Symbian CalDAV client which is likely to be released sometime next year.

The second half of the week was a much more participative process, and gave me a much greater understanding of the general flow of the standards which are forming in the future. In particular it was interesting to get an idea of how close (or far away) the various nascent standards under development are. Some of the closest ones seem to be the Scheduling Extensions which is at draft 8, and will probably have only one or two more clarifying drafts before becoming an RFC. Next closest is probably the proposed CardDAV standard, and implementation of both of these in DAViCal is a priority for me.

The first thing I discovered too, was RFC5689, which is now implemented in HEAD and will be in 0.9.8. Another worthwhile standard, and relatively simple, is the Draft WebDAV Sync which is used by iCal4 if available, and which I have also implemented since leaving Cupertino. I expect there will still be some changes to the webdav sync specification, but it's relatively encapsulated so the effect of any changes are not going to be sweeping.

Support for the Scheduling Extensions for CalDAV, which I am working on now, will be more complete in 0.9.8, though probably still with a few missing parts. It is a large specification though it looks to be pretty stable now and is definitely time to move forward with it.

What the trip to Cupertino definitely showed me is that there is still a place for DAViCal in the available set of CalDAV servers. While there are starting to be quite a few around, and many are maturing nicely, there is still a niche for a free, standalone, SQL-based implementation like DAViCal and it is only through having a vibrant community of implementors around calendaring that we can flesh out the usable and useful standards that are continuing to come out of CalConnect.

Ultimately what impressed me the most were the people around CalConnect, who stand out as being a bunch of dedicated and thoughtful folk who really understand the importance of interoperation and open standards in this area. I do hope I have the good fortune to make it to another event at some point in the future.

I still know where it came from...

I publish my photos on the internet. Well, I do when I get around to updating it, anyway. When I do so, I include some information about licensing them. I say to people "I'm very open to people wanting to use these pictures for something else, and will be happy to release photos into the public domain on request." so when I discover one of my photos abused by a travel website I do wonder why I didn't hear about it.

Reading, Writing, 'Rithmetic & 'Rithms

A few years back I remember reading this article by David Brin suggesting that it is hard for children to learn programming nowadays, and how it ain't happening so much any more. It's something that I have been wondering about for some time now, and it's something that I think has to be important for the future.

Is there really a huge slowdown in the numbers of computing graduates coming out of University? Perhaps there is really nothing there to worry about. Maybe there are so many more computers around, that even with a smaller percentage of users becoming programmers there will continue to be enough programmers around.

Another way for IPv6 to blow up an IPv4 website

I found another interesting avenue for affecting a web application recently when Heather was trying to renew one of her magazine subscriptions. She mentioned that the site was getting a '500 Server Error' and I recognised the e-mail address it was suggesting, so I banged an e-mail off to advise the problem.

Curiously, they weren't able to duplicate the issue while I was still seeing the problem. I did a little fooling around and discovered that I only saw the error when I was making the request through my proxy server.

A little more digging and I ascertained that if I connected to the proxy normally via IPv6 I got the '500 Server Error', but if I instead connected to the proxy via IPv4 it all worked just fine.

DAViCal 0.9.7.2 released

I released a new 0.9.7.2 version of DAViCal yesterday. This reflects quite a lot of stability and small fixes for some subtle problems, and quite a lot of work with the iPhone, adding the possibility of a simpler configuration experience for iPhone users.

Finally I buy a mini-Netbook...

For several years I've wanted to join the Calendaring and Scheduling Consortium and go to one of their events to get a chance to meet face-to-face with some of the luminaries in the calendaring world, but every time there is an event it seems to conflict with either linux.conf.au or my brother's wedding or something. Finally I've decided I can make the next meeting, so I've paid over the money to join the organisation and I'm travelling to the US next month for 'CalConnect XVI'. With that on my mind when I saw an HP 110 mini netbook on sale for NZD$588 from Harvey Normans I finally flipped over the 'shall I get one' threshold, hoping it will make a good 'travel laptop' for the upcoming trip.

Storing Secrets

Something that has been annoying me recently with my bank has been that their website tells me that they will never ask for my password over the phone. And then their call centre asks me for my password. Over the phone. Of course the call centre doesn't mean my website password - they mean the special 'ultra-secure 5ekr1t code phrase', but they don't have a good, universally understood word to use for that. Hopefully they'll work one out, but they appear to have got the message anyway.

This got me to thinking about how these phrases are used, and how insecure they are in reality. After all when I store a website password I go to significant lengths to ensure that the same password is not represented by the same string of characters in my database. How vulnerable are our secrets in the databases of organisations we do business with?

Syndicate content