Lucid Lynx on Sony Vaio P VGN-P19WN

After successfully running Xubuntu Karmic Koala 9.08 on the Sony Vaio P VGN-P19WN, the pleasant surprise after upgrading to Lucid Lynx was that the GMA500 »poulsbo« drivers were easy to install from the PPA repository. However, I was quite disappointed to discover that many things were broken after upgrading to Lucid Lynx (10.04):

  1. The brightness keys trigger the on-screen brightness display, but the display brightness doesn't change.
  2. After selecting »suspend« from the menu or closing the lid, the laptop suspends (to RAM) but cannot wake up.
Both features were working flawlessly before in Karmic.

The backlight starts working as soon as the kernel option acpi_backlight=vendor is removed from the variable GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub. I don't remember whether that option was there in Lucid Lynx by default or whether it was carried over from the previous Karmic Koala installation which needed that option.

After installing the uswsusp package and uninstalling the vbetool package (not needed, see below!), suspend works if calling

$ sudo s2ram -f
manually. The -f switch is needed because otherwise s2ram just displays the message
Machine is unknown.
This machine can be identified by:
    sys_vendor   = "Sony Corporation"
    sys_product  = "VGN-P19WN_Q"
    sys_version  = "J003KYE9"
    bios_version = "R2073U3"
However, setting SLEEP_MODULE="uswsusp" in /etc/pm/config.d/00sleep_module isn't enough to make the suspend work from the menu or by running pm-suspend from the command line. The suspend process looks the same as when calling s2ram manually, but the system does not wake up. So something that pm-suspend does before or after suspending using s2ram is breaking the wake-up.

There is also some advice on the web to deactivate the ath9k module, but this does not affect the Vaio P.

Deactivating all the scripts in /usr/lib/pm-utils/sleep.d by appending a ~ to their names also doesn't solve the issues. Turning them back on again one by one isolated the issue to 98video-quirk-db-handler (and occasionally 49bluetooth). So by adding these names to HOOK_BLACKLIST in a file in /etc/pm/config.d calling pm-suspend from the command line now works.

However, when pm-suspend is called using the Xfce interface or by closing the lid, an additional parameter --quirk-s3-bios is passed which again prevents resume from working. Also, lshal reports power_management.quirk.s3_bios = true. The reason turns out to be a double semicolon in a match clause in the file /usr/share/hal/fdi/information/10freedesktop/20video-quirk-pm-sony.fdi which adds the s3_bios to every product. The upstream bug report and fix.

While trying to manually restart hald I notice that Lucid Lynx no longer has a file /etc/init.d/hald, nor does the service command list or know about hal, hald or haldaemon. How to manually restart hald now escapes me. Shoddy user interface change!

Ironically, that same error was copy-and-pasted into the file /usr/lib/pm-utils/video-quirks/20video-quirk-pm-sony.quirkdb (turning into a double pipe symbol along the way), which was the reason I had to disable the module 98video-quirk-db-handler above. Upstream bug report. After deleting the spurious pipe symbol, I can enable the module again.

Also, it is not necessary to install the uswsusp package, the default kernel suspend method works fine. In that case, it might be necessary to unload and reload the ath9k module using SUSPEND_MODULES in a file in /etc/pm/config.d in case wireless networking frequently doesn't work after resume.

Comments