HP Pavillion zv6000 series Notebook Volume Up/Down Buttons Misbehaving

Bug #291878 reported by Aaron Pickett on 2008-11-01
42
This bug affects 6 people
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Low
Andy Whitcroft
Intrepid
Low
Andy Whitcroft

Bug Description

Ubuntu 8.10 64-bit (clean install of release version)
HP Pavilion zv6130us Notebook

When I press the volume up or down buttons on my notebook, the following events occur:
1. The volume indicator appears on the screen. It shows the volume increase/decrease incrementally, then a pause, then it continues to increase/decrease all the way to max/min volume. The actual volume changes accordingly. I am not holding down the button, simply pressing it once.
2. The mouse no longer performs the right-click function and is unable to open menus (including top panel and window menus). I can still left-click on icons to activate them. This problem occurs with both the synaptics touchpad and a USB mouse. Logging out and back in resolves this problem.

I can successfully change volume levels by using the volume icon in the top panel.

===

SRU Justification

Justification: hardware enablement for HP notebook

Impact: volume keys produce press but no release events leading to run from min to max and max to min, intermediate volume is not accessible

Fix Description: added system specific quirk to enable keys

Patch: http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-intrepid.git;a=commit;h=aa085ec46c542ebcb952c41409a23ceb72d92664

Risks: low, this is a model specific quirk

TEST CASE: see bug report

Elias K Gardner (zorkerz) wrote :

Hi thanks for reporting. This appears to be two bugs. 1) the behavior off your sound buttons and 2) the inability to right click. Could you please report 2) as a separate bug. Thanks

Aaron Pickett (aaron-d-pickett) wrote :

They are related. The second problem (loss of right-click and menu functions) occurs only after pressing the sound buttons.

I can confirm this bug with 32 bit 8.10 upgraded from 7.10 (iteratively upgraded from 7.10 -> 8.04 -> 8.10) on a HP Pavilion ZV6233nr.

The multimedia keys did work properly in 7.10. I do not know if they would have worked in 8.04.

RE: Elias, these are not separate issues. Panels & apps work fine until MM key is pressed (either vol up/down or mute). Then behavior as described and Panels & some apps cease accepting mouse clicks.

It seems that MM key driver (where ever that is) is repeatedly sending volume up/down events, even though MM key was released.

The only way I have found to "reset" the problem (other than cold boot) is Alt-Ctrl-Del then logout and re-login.

This issue is a major inconvenience. While volume can be adjusted via GUI normally, forgetting not to use MM keys requires logout/in for system to operate usably again.

Dennis

Aaron Pickett (aaron-d-pickett) wrote :

I'm not convinced that this bug is a duplicate of #268949, for two reasons:

1. 268949 describes the volume not responding at all to keyboard/button input. In this bug, the volume does respond to input, but does so continuously. I have verified that the GUI slider in the panel app does move up/down (and continues to move to max/min volume) when the volume buttons are pushed.

2. 268949 does not report the additional problems with mouse input after trying to use the volume up/down button.

These two bugs may be related, but they are not the same behaviors.

rlj (rlj) wrote :
Download full text (4.8 KiB)

I'm using a HP Pavilion zv6000EA and also experiencing this bug.

As for the behavior of the mouse button and the menu, I believe it's caused by the volume OSD (either metacity's or compiz's) appearing and preventing the menu from functioning properly. Also, a mere VT switch back and forth is sufficient for the "stuck" volume key to stop activating the OSD (no need to restart X). I've stumbled across similar bugs before where X thought that the Win key was pressed. Doing a VT switch back and forth helped there too.

I think this bug might actually be an old bug in the atkbd linux driver or similar, which hasn't bitten us until now because of the behavior of Xorg/hotkey-setup/whatever.

By running showkey -s in a VT, and from reading the man page, it seems scancodes are either 1-byte or 2-byte escaped sequences beginning with 0xe0. Pressing a key such as 'a' produces the 0x1e key-press scancode. If i hold the key for long enough, more 0x1e scancodes are produced, and when the key is finally released, a 0x9e key-release scancode is produced. It seems from looking at the codes that the corresponding key-release scancode for a certain key is always the key-press scancode + 0x80 (0x1e + 0x80 = 0x9e).

Some showkey -s output:
'a' key : 0x1e 0x9e
Mute key : 0xe0 0x20 0xe0 0xa0
VolDown key : 0xe0 0x2e
VolUp key : 0xe0 0x30

As seen above, the VolDown and VolUp keys produce 2-byte 0xe0-escaped key-press scancodes, but there are never any corresponding 0xe0ae or 0xe0b0 key-release scancode produced!

Looking at showkey -k, it is clear that the keycodes associated with the scancodes (automatically through hotkey-setup) never register a key release of the volume keys:

showkey -k output pressing (in order) Mute, VolDown, VolUp:
keycode 113 press
keycode 113 release
keycode 114 press
keycode 115 press

This behavior is identical in both kernel 2.6.24 from hardy (where the volume keys worked fine in Gnome) and the new intrepid 2.6.27 kernel. So I believe that some change in either Xorg or somewhere else made it actually care about the key-release event never being produced and interpret that as the key being held down (even though no additional key-press keycodes are produced).

For reference, xev in X yields the following (repeating forever until i VT switch back and forth) when i press VolUp:

KeyPress event, serial 30, synthetic NO, window 0x9e00001,
    root 0x67, subw 0x0, time 6276245, (83,-15), root:(88,50),
    state 0x0, keycode 123 (keysym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x9e00001,
    root 0x67, subw 0x0, time 6276748, (83,-15), root:(88,50),
    state 0x0, keycode 123 (keysym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 33, synthetic NO, window 0x9e00001,
    root 0x67, subw 0x0, time 6276748, (83,-15), root:(88,50),
    state 0x0, keycode 123 (keysym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFil...

Read more...

rlj (rlj) wrote :

Hi!

I think I found the right place in the kernel to add the quirk for the keyboard on the HP Pavilion ZV6100. The issue was as I suspected caused by the laptop's keyboard never reporting key-release scancodes for the volume buttons.

To try out the patch:
Get intrepid kernel source
cd /path/to/kernel_source/drivers/input/keyboard
patch < /path/to/atkbd.c.patch
Rebuild kernel, install, and boot

I wrote and tested the patch for a wireless-git-2.6.27-rc tree which happened to sit on my disk and it works fine there. I then adapted it so it should apply to the current intrepid kernel without conflicts (I think). I didn't actually download the whole intrepid source, but rather just looked at the atkbd.c in http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-intrepid.git;a=tree;f=drivers/input/keyboard;h=3057d4350d840c48f4ffe71af25ebcfb1117c242;hb=HEAD

If everyone affected by this bug could try out the patch and if it doesn't work post the output of "sudo dmidecode", that would be helpful. That way, I can identify your laptop model and add it to the patch.

I'll see if I can get a patched intrepid kernel package built and uploaded someplace soon for people who can't patch and recompile themselves.

Cheers,
Rikard

rlj (rlj) wrote :

Uploaded patch for testing

rlj (rlj) wrote :

Ok, I've built a custom version of "linux-image-2.6.27-7-generic_2.6.27-7.16_i386.deb" including my fix using the kernel sources fetched from ubuntu git, and despite my best efforts, the build scripts still managed to make the package in such a way that it will replace your standard kernel (rather than installing a new one under a different suffix). Maybe I should've used "the old method" with make-kpkg so I could specify a --append-to-version= directly.

Anyway, if there is any demand for it, I'll upload the package. It seems to work fine on my box, and should it fail to boot on yours, keep the real ubuntu kernel deb and a spare kernel around just in case so you can revert to the official version.

Cheers,
Rikard

rlj (rlj) wrote :

Oops. Totally forgot I could just upload it right here. :)

Happy testing but note the warning above.

manysounds (manysounds) wrote :

Hi, am also having this issue on a HP Pavillion zv6130us 8.10 64 bit.
Volume buttons act as if you hold them down for 10+ seconds until... it stops.
I may try the the rebuild but I'm still learning about building from source so mmmaybe not.
Thanks for your contributions!

manysounds (manysounds) wrote :

This is not a mouse issue. The volume meter hogs gnome desktop.

Andy Whitcroft (apw) on 2008-11-21
Changed in linux:
assignee: nobody → ubuntu-kernel-team
importance: Undecided → Low
status: In Progress → Triaged
assignee: ubuntu-kernel-team → apw
status: Triaged → In Progress
Andy Whitcroft (apw) wrote :

That patch looks pretty simple and likely correct. The sensible next step is to push this up to the INPUT maintainer and see if they are happy with it. See the INPUT section of the MAINTAINERS file in the kernel sources for email addresses.

@rlj -- I think you were going to be pushing this change back upstream, how did that go?

Please insure the patch includes the HP Pavilion zv6000 series (specifically, zv6233nr) as well. Thanks.

rlj (rlj) wrote :

@andy: sent patch to maintainer and cc:d linux-input mailing list and you. just realized i forgot to cc linux-kernel though.

@dennis: my laptop is the zv6273EA (another label says zv6000), and it is still reported as ZV6100 through dmidecode. this is what the patch matches for. if your ourput of sudo dmidecode differs, please post it here.

/Rikard

Hi, Rikard:

System Information
 Manufacturer: Hewlett-Packard
 Product Name: Pavilion ZV6100 (EC373UA#ABA)
 Version: F.1B
 Serial Number: CND54703V1
 UUID: 74DCF32C-5166-11DA-9991-000FB0BB59D2
 Wake-up Type: Power Switch

Good to go!

Dennis

Andy Whitcroft (apw) wrote :

@rlj -- thanks for copying me on the upstream patch. I have taken that patch and applied it to an Intrepid code base. I have built some test kernels and posted them at the URL below. If you could give the appropriate kernel a try and feedback here, it would help us decide if this can be SRU'd to Intrepid:

    http://people.ubuntu.com/~apw/lp291878/

rlj (rlj) wrote :

@andy: Your test kernel (i386 build) as expected solves the issue on my laptop.

Cheers,
Rikard

I would like to try patched kernel. Please instruct on how to (safely) install, and back out if necessary.

Thanks.

Dennis

rlj (rlj) wrote :

@dennis: the patched kernel package built by andy will install as linux-image-2.6.27-10-generic, but the stock intrepid kernel you normally use lives in the package linux-image-2.6.27-7-generic. so the two packages will sit side by side just fine, and if andy's kernel somehow won't start on your system (unlikely), you can just select the 2.6.27-7 kernel in GRUB when rebooting your computer, and then manually remove linux-image-2.6.27-10-generic in the synaptic package manager.

Cheers,
Rikard

OK...I can confirm proper operation of volume buttons on zv6233nr with patch. Unfortunately, fglrx fails to load. I assume this is because 2.6.27-10 has no compatible driver. How can I get fglrx to run with this patch?

rlj (rlj) wrote :

@dennis: unless you want to create debs to install yourself (semi-automatically from ati's binary installer (download from ati.com; run from command line)) to match andy's testing kernel, you have to wait until when (if?) andy gets the patch into the next SRU (stable release update) for the proper intrepid kernel package and then you'll get the bugfix through the usual system update procedure (like everyone else).

Cheers,
Rikard

Andy Whitcroft (apw) wrote :

@Dennis -- I believe you also need to install the headers package which should now be at the URL above also.

Andy Whitcroft (apw) wrote :

Ok I have rebuilt some test kernels with the latest form of the patch with a view to to proposing it for SRU. If you could test this kernel and report back that would make this process smoother.

Andy Whitcroft (apw) wrote :

Doh, those can be found at the URL below:

    http://people.ubuntu.com/~apw/lp291878-intrepid/

rlj (rlj) wrote :

The patch is now part of the mainline as of 2.6.29-rc1

Andy Whitcroft (apw) on 2009-01-17
description: updated
Andy Whitcroft (apw) on 2009-01-17
Changed in linux:
status: In Progress → Fix Committed
Launchpad Janitor (janitor) wrote :
Download full text (18.6 KiB)

This bug was fixed in the package linux - 2.6.28-5.12

---------------
linux (2.6.28-5.12) jaunty; urgency=low

  [ Ante ]

  * Update drbd to 8.3.0

  [ Dave Airlie ]

  * i915/drm: provide compat defines for userspace for certain struct

  [ Eric Anholt ]

  * drm/i915: Don't double-unpin buffers if we take a signal in
  * drm/i915: Don't complain when interrupted while pinning in execbuffers.
  * drm/i915: Don't allow objects to get bound while VT switched.

  [ Jani Monoses ]

  * Fix webcam having USB ID 0ac8:303b
    - LP: #292086

  [ Jesse Barnes ]

  * drm/i915: set vblank enabled flag correctly across IRQ
  * drm/i915: don't enable vblanks on disabled pipes

  [ Michael Casadevall ]

  * [arm] Fix kexec on ARM by properly calling the relocation function

  [ Tim Gardner ]

  * Enabled CONFIG_PID_NS=y for i386/amd64
  * SAUCE: Increase ATA_TMOUT_PMP_SRST_WAIT to 5 seconds.
    - LP: #318978
  * Update armel versatile config
    - LP: #314789
  * Enabled CONFIG_RT2860=m for i386/amd64
  * Enabled CONFIG_RT2870=m for i386/amd64

  [ Upstream Kernel Changes ]

  * Input: atkbd - add keyboard quirk for HP Pavilion ZV6100 laptop
    - LP: #291878
  * ALSA: hda - Add quirk for another HP dv7
  * ALSA: hda - Add quirk for HP6730B laptop
  * ALSA: caiaq - Fix Oops with MIDI
  * ALSA: hda - Fix typos for AD1882 codecs
  * x86: fix intel x86_64 llc_shared_map/cpu_llc_id anomolies
  * x86: default to SWIOTLB=y on x86_64
  * CIFS: make sure that DFS pathnames are properly formed
  * ring-buffer: prevent false positive warning
  * ring-buffer: fix dangling commit race
  * iwlwifi: use GFP_KERNEL to allocate Rx SKB memory
  * tx493[89]ide: Fix length for __ide_flush_dcache_range
  * tx4939ide: Do not use zero count PRD entry
  * SCSI: eata: fix the data buffer accessors conversion regression
  * USB: emi26: fix oops on load
  * x86, UV: remove erroneous BAU initialization
  * x86: fix incorrect __read_mostly on _boot_cpu_pda
  * vmalloc.c: fix flushing in vmap_page_range()
  * fs: symlink write_begin allocation context fix
  * cgroups: fix a race between cgroup_clone and umount
  * dm raid1: fix error count
  * dm log: fix dm_io_client leak on error paths
  * minix: fix add link's wrong position calculation
  * md: fix bitmap-on-external-file bug.
  * sched_clock: prevent scd->clock from moving backwards, take #2
  * devices cgroup: allow mkfifo
  * SCSI: aha152x_cs: Fix regression that keeps driver from using shared
    interrupts
  * ioat: fix self test for multi-channel case
  * USB: isp1760: use a specific PLX bridge instead of any bdridge
  * USB: isp1760: Fix probe in PCI glue code
  * USB: unusual_devs.h additions for Pentax K10D
  * inotify: fix type errors in interfaces
  * Move compat system call declarations to compat header file
  * Convert all system calls to return a long
  * Rename old_readdir to sys_old_readdir
  * Remove __attribute__((weak)) from sys_pipe/sys_pipe2
  * Make sys_pselect7 static
  * Make sys_syslog a conditional system call
  * System call wrapper infrastructure
  * powerpc: Enable syscall wrappers for 64-bit
  * s390: enable system call wrappers
  * System call wrapper special cases
  * System call wrappers part 0...

Changed in linux:
status: Fix Committed → Fix Released
Steve Beattie (sbeattie) on 2009-01-30
Changed in linux:
assignee: nobody → apw
status: New → In Progress
Stefan Bader (smb) wrote :

For Intrepid this should get released with 2.6.27-12.28 in -proposed.

Changed in linux:
importance: Undecided → Low
status: In Progress → Fix Committed
Steve Langasek (vorlon) wrote :

Accepted linux into intrepid-proposed; please test and give feedback here. Please see https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you in advance!

Launchpad Janitor (janitor) wrote :
Download full text (27.1 KiB)

This bug was fixed in the package linux - 2.6.27-14.33

---------------
linux (2.6.27-14.33) intrepid-proposed; urgency=low

  [Stefan Bader]

  * Fix FTBS due to a mysteriously missing ABI directory.

linux (2.6.27-14.32) intrepid-proposed; urgency=low

  [Stefan Bader]

  * Rebuild of 2.6.27-14.30 with 2.6.27-11.31 security patches applied

linux (2.6.27-14.30) intrepid-proposed; urgency=low

  [ Alexey Starikovskiy ]

  * SAUCE: ACPI: EC: Limit workaround for ASUS notebooks even more
    - LP: #288385

  [ Huaxu Wan ]

  * SAUCE: report rfkill changes event if interface is down
    - LP: #193970

  [ Scott James Remnant ]

  * SAUCE: floppy: Provide a PnP device table in the module.
    - LP: #255651

  [ Steve Beattie ]

  * fix apparmor memory leak on deleted file ops
    - LP: #329489

  [ Stefan Bader ]

  * Revert "ACPI: Fix compiler warnings introduced by 32 to 64 bit acpi
    conversions"
    - LP: #337019
  * Revert "ACPI: Change acpi_evaluate_integer to support 64-bit on 32-bit
    kernels"
    - LP: #337019

  [ Upstream Kernel Changes ]

  * KVM: MMU: Add locking around kvm_mmu_slot_remove_write_access()
    - LP: #335097, #333409
  * ricoh_mmc: Handle newer models of Ricoh controllers
    - LP: #311932

linux (2.6.27-13.29) intrepid-proposed; urgency=low

  [ Colin Ian King ]

  * SAUCE: Bluetooth USB: fix kernel panic during suspend while streaming
    audio to bluetooth headset
    - LP: #331106, #322082

  [ Stefan Bader ]

  * Revert "SAUCE: Work around ACPI corruption upon suspend on some Dell
    machines." (replaced by stable update)
    - LP: #330200
  * Revert "SAUCE: Add back in lost commit for Apple BT Wireless Keyboard"
    (replaced by stable update)
    - LP: #330902

  [ Upstream Kernel Changes ]

  * Revert "vt: fix background color on line feed"
    - LP: #330200
  * ti_usb_3410_5052: support alternate firmware
    - LP: #231276
  * fuse: destroy bdi on umount
    - LP: #324921
  * fuse: fix missing fput on error
    - LP: #324921
  * fuse: fix NULL deref in fuse_file_alloc()
    - LP: #324921
  * inotify: clean up inotify_read and fix locking problems
    - LP: #324921
  * mac80211: decrement ref count to netdev after launching mesh discovery
    - LP: #324921
  * sysfs: fix problems with binary files
    - LP: #324921
  * x86, mm: fix pte_free()
    - LP: #324921
  * alpha: nautilus - fix compile failure with gcc-4.3
    - LP: #324921
  * it821x: Add ultra_mask quirk for Vortex86SX
    - LP: #324921
  * libata: pata_via: support VX855, future chips whose IDE controller use
    0x0571
    - LP: #324921
  * rtl8187: Add termination packet to prevent stall
    - LP: #324921
  * serial_8250: support for Sealevel Systems Model 7803 COMM+8
    - LP: #324921
  * SUNRPC: Fix a memory leak in rpcb_getport_async
    - LP: #324921
  * SUNRPC: Fix autobind on cloned rpc clients
    - LP: #324921
  * USB: fix char-device disconnect handling
    - LP: #324921
  * USB: storage: add unusual devs entry
    - LP: #324921
  * USB: usbmon: Implement compat_ioctl
    - LP: #324921
  * ALSA: hda - add another MacBook Pro 4, 1 subsystem ID
    - LP: #324921
  * ALSA: hda - Add quirk for HP DV6700 laptop
    - LP: #324921
  * ALSA: ...

Changed in linux (Ubuntu Intrepid):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers