inotify is cool, and really bugging me.

Dear Lazyweb,

Why doesn't inotifywatch /sys/kernel/uevent_seqnum work? I get no changes reported at all – and I've even tried using inotify in C adding a watch for IN_ALL_EVENTS. Maybe I'm being really stupid here, but inotify doesn't seem to work at all for sysfs. Help appreciated.


EDIT: Yes, I was being stupid. sysfs doesn't change the value until the file is read. Of course. poll to the rescue, except now that doesn't even work…

New, well, old gnome-power-preferences UI.

During the 2.17.x development phase, I was experimenting with the g-p-p UI. I changed the preferences to be per-task (e.g. “display”) rather than per state (e.g. “on ac”) so we could add more configuration parameters. Yes I know, bad, bad, bad – read on…

A few people, who's opinions I respect, told me that the new preferences interface was, well, pretty crap.

I reverted to the 2.14.x style UI a few weeks ago. I also removed some configurable features from the UI (where we can choose sane defaults for 99% of the use cases) and also added one item, namely cpu frequency scaling selection.

We are very close to the string freeze, so I would like some quick feedback or suggestions for alternate wording of individual labels if they are difficult to understand or translate. Please leave comments here or email me directly. Many thanks.

OLPC looking great…

OLPC people: wow. My test-B laptop arrived yesterday morning. I assumed I would have to stick with the test-A boards for hibernate and suspend testing – but no. Of course, now I feel guilty for not doing more on the power management side of things – so as soon as exams have finished (1 more week) I'll start doing some proper work – promise.

inhibit applet

Okay, one down, a few more to go. Now we have a fully functional inhibit applet.

Inhibit applet (with wrong icons)

The icons are of course wrong, but I've asked on tango-list for better metaphors (and hopefully better icons).
This applet took about 40 minutes to write. The reason for this is my MATLAB simulations take a long time, and now I can just leave the auto-suspend option enabled and just click one button when matlab is running. The same goes for vmware. Don't use this applet if you just use GNOME software, instead file a bug to make the application use the Inhibit() and UnInhibit() methods as this stuff should “just work”.

Cool new applets…

Now that gnome-power-manager can do trivial applets, I'm open to suggestions to what would be sane to expose to a power user as additional “manually add” features.
Ideas I'm playing with at the moment include:

  • Hotspot applet : click the icon and the computer won't auto-suspend or blank the screen until it is clicked again. Useful for proprietary programs that don't support the Inhibit() interface like matlab or vmware.
  • CPU frequency scaling applet : i.e. a re-implementation of the existing cpufreq-applet but using g-p-m to do the policy and HAL to do the heavy lifting. Should be tiny in comparison to the old applet (and not be setuid), and would work well with existing g-p-m policy.
  • Logout, suspend, hibernate and shutdown icons (power-applet) : i.e. a set of icons that provide one click access to these functions (and that hide individual icons if you have no support or not enough permissions). i.e. a distro would add this applet, and it would show the right stuff on the right computers.

Feel free to suggest other “cool applets”, or just tell me I'm insane. Thanks.

Changing the brightness on the desktop

I've just merged Benjamin Canou's new brightness applet into gnome-power-manager CVS. It's still WIP, but it looking good already.

Some sweet applet action…

If you've got a laptop without brightness buttons, you can now change the brightness easily. And yes, before anyone has a coronary, this is an applet and not another notification area icon, so you have to add it manually if you want it.
We have chosen to integrate this with g-p-m and not use HAL method calls directly as g-p-m is the policy agent. This means it's doing some clever things in the background – for instance dimming your screen when the computer session is idle, or changing your brightness when you are on battery power, and we have to be a bt clever when we try to change things manually.
Now, I've got no problem moving this applet into gnome-applets long term if desired, but for the moment the BrightnessLcd interface for g-p-m is not stable, and might change at a moments notice. You'll have to manually add –enable-applets to the gnome-power-manager configure line if you want to build this from CVS now.

The Lenovo laptop panel saga continues…

Reading back byte EC0:0x31 on a IBM Thinkpad embedded controller returns the laptop panel brightness. Setting this byte changes the panel brightness. This is how the ibm_acpi module has worked for years. Hacky, but it worked.
On a Lenovo N100, doing this didn't work due a slightly different embedded controller. I've managed to work out that you can read the brightness back (0-7) from reading the byte EC0:0xB9 (\_SB.PCI0.LPCB.EC0.BRTS) but changing it does nothing to the panel brightness. I can set the EC0:0xB9 value manually, and read back the 'new' value but I can't get EC0 to change the brightness at all.
I'm guessing Lenovo have upgraded the EC0, and now we either:

  • Can't software control the brightness due to physical h/w limitation
  • Have to poke some other register to make the brightness value “set”

I've had a look at the Renesas H8S datasheets (used for the EC0 chip) but it just seems like a bog standard micro-controller.

I've also read the 2161BV ec.s disassembly of the ThinkPad EC0 firmware (which looks like it should do the right thing) but I can't seem to get hold of the decompiled sources for the latest Renesas chip used in the N100. I've a sneaky suspicion there is either a software bug in the EC0 firmware, or that there is just no physical electrical connections to be able to change the brightness in software.
There's a pint offered at the next GUADEC for any help getting this to work.

EDIT: Update: setting the brightness to 7 using the Fn keys and then setting C0:0xB9 value to zero, and then pressing Fn brightness up, the display is set to brightness 1. This means we just have to convince the EC0 to update the brightness, which maybe we could do with a fake keypress or something. Still confused.

Lenovo backlight class support.. bad bad bad…

In my opinion, Lenovo didn't read the ACPI specification when designing the N100 line of notebooks.

I'm unable to get the backlight class support working on my notebook due to the missing _BQC (Brightness Query Current level) method which is meant to be present in the BIOS.
Lenovo do implement the _BCL (Query List of Brightness Control Levels) and _BCM (Set the Brightness Level) methods, so I just cannot understand why they didn't add the additional three line method to have full support for the ACPI “Output Device” class.

Now, after my partial success in getting a new BIOS from Lenovo to fix the battery reporting (fixes the problems in Windows XP also) I've had no more correspondence from Lenovo. I have also been been sent an email “…IBM/Lenovo provides free software support for the first 30 days after the purchase of the machine… Please note that the software support is chargeable after the first 30 days…”  which I'm guessing is their way of telling me “stop bothering us, go away, we're not interested in fixing anything“. I'm not sure if I should send the notebook back to LENOVO as defective (as it's quite clearly not working with ACPI as advertised) or just send them a bill for my BIOS hacking.

This notebook is fast and Linux support is pretty good, but the BIOS looks like it was rushed and not properly QA'd. At the moment I would probably not recommend Lenovo to somebody that wants Linux compatible hardware, which is a shame considering how good most of the Thinkpads used to be. Perfect Linux support is only a few man-hours of engineer time Lenovo, and I'm sure that would be cost-effective just with one extra bloke choosing Lenovo hardware “because it works with Linux”.

Busy busy busy

Apologies if I have not answered any emails or bugzillas for a week or so – I've been stressed out of my face for the last week or so. I'll catch up at this weekend.