Search:  
Gentoo Wiki

HP_Compaq_2710p

Contents

Hardware

My model has:

I also bought the docking station, with

Status

FeatureStatusNotes
Suspend to RAMWorking
Suspend to diskWorking
Video Working
Ethernet Working
Wireless Working
Stylus Working Pad buttons don't work
Docking Station Working
SD Card Reader Working
Firewire Untested
Fingerprint Reader Working
Modem Untested
Camera Working
Bluetooth Working

Kernel Config

You can download my kernel configurations from my website. Hardware issues are as follows:

2.6.23 kernels
2.6.24 kernels
2.6.25 kernels

For 23/24 kernels, be sure you do CONFIG_USB_LIBUSUAL=n, otherwise usb_storage will go crazy when you attach your docking station kernels.

ACPI

Note: On 2.6.24 or older kernels, you get a flood of ACPI events when the system is unplugged (about one every 10 seconds). This goes away when the DSDT is fixed as outlined below.
Note: On 2.6.25 kernels, the flood of ACPI events above is no longer present with the stock DSDT. Further upgrading to sys-power/iasl-20080514 got rid of the third error message below (the first two warnings are still present, but these are only warnings and can probably be ignored). So I am unsure if fixing the DSDT is required on recent kernels.

Read as much of ACPI/Fix common problems as you care to. Then deassemble your DSDT into /usr/src/dsdt/dsdt.dsl. Recompiling gives

Command: iasl -tc dsdt.dsl
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20060912 [Mar 17 2008]
Copyright (C) 2000 - 2006 Intel Corporation
Supports ACPI Specification Revision 3.0a

dsdt.dsl  8472:                 Return (Package (0x02)
Warning  1098 -      Statement is unreachable ^

dsdt.dsl  8589:                         Wait (\_SB.C1AD, 0x10)
Warning  1103 -        Possible operator timeout is ignored ^

dsdt.dsl 15568:                 CreateByteField (C268, \_SB.C003.C004._Y06._LEN, C0AE)
Error    4062 -                                         Object does not exist ^  (\_SB.C003.C004._Y06._LEN)

ASL Input:  dsdt.dsl - 16074 lines, 576914 bytes, 7697 keywords
Compilation complete. 1 Errors, 2 Warnings, 0 Remarks, 2529 Optimizations

I fixed it by making the following changes:

Command: diff -u dsdt.dsl dsdt-fixed.dsl
--- dsdt.dsl    2008-03-17 17:47:30.000000000 -0700
+++ dsdt-fixed.dsl      2008-03-17 16:42:16.000000000 -0700
@@ -8469,11 +8469,11 @@
                 }

                 Return (Local0)
-                Return (Package (0x02)
-                {
-                    0x04,
-                    0x00
-                })
+                // Return (Package (0x02) // Unreachable code.
+                // {
+                //     0x04,
+                //     0x00
+                // })
             }

             Method (C2D3, 1, NotSerialized)
@@ -8586,7 +8586,7 @@
                     Store (0x01, Index (DerefOf (Index (Local0, 0x02)), 0x01))
                     If (And (C05C, 0x40))
                     {
-                        Wait (\_SB.C1AD, 0x10)
+                        Wait (\_SB.C1AD, 0xffff) // Changed 0x10 to 0xffff to remove error message. See http://ubuntuforums.org/showthread.php?t=659027&page=2
                     }

                     Store (\_SB.C073, Index (DerefOf (Index (Local0, 0x02)), 0x02))
@@ -15565,7 +15565,7 @@
         {
             If (LEqual (\_SB.C003.C004.C27B._STA (), 0x0F))
             {
-                CreateByteField (C268, \_SB.C003.C004._Y06._LEN, C0AE)
+                CreateByteField (C268, \_SB.C003.C004.C3C5._Y06._LEN, C0AE) // Added device C3C5 from a few lines above, to remove error message.
                 Store (0x60, C0AE)
             }


and recompile:

Command: iasl -tc dsdt-fixed.dsl
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20060912 [Mar 17 2008]
Copyright (C) 2000 - 2006 Intel Corporation
Supports ACPI Specification Revision 3.0a

ASL Input:  dsdt-fixed.dsl - 16074 lines, 577137 bytes, 7696 keywords
AML Output: dsdt.aml - 71665 bytes 1198 named objects 6498 executable opcodes

Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 2529 Optimizations

Finally, recompile your your kernel with

Linux Kernel Configuration: Enable the custom DSDT
    Power management options (ACPI, APM) --->
      ACPI (Advanced Configuration and Power Interface) Support --->
[*]     Include Custom DSDT
        (/usr/src/dsdt/dsdt-fixed.hex) Custom DSDT Table file to include

Graphics

See this guide.

xorg-server-1.3 and xf86-video-i810-2.1.1

Do NOT use this unless you absolutely have to. There are two issues:

  1. Screen rotation doesn't work with DRI enabled.
  2. Secondly, the 2.1.1 driver doesn't handle ACPI events too well, and resets your screen brightness at will.

Both these can be worked around, but since everything is flawless with xorg-server-1.4, I'm not going to include the setup details here.

xorg-server-1.4 and >=xf86-video-i810-2.2.1

Screen rotation, and the brightness work correctly with xorg-server-1.4.0.90 and >=x11-drivers/xf86-video-i810-2.2.1.

File: /etc/portage/package.keywords
 # 2008-03-02: For DRM on xf86-video-i810-2.2.1. (2.2.1 handles screen
 # brightness correctly on switching)
 # 2008-03-02: xorg-server-1.4.0.90-r3 crashes on first load.
 # 2008-03-21: The crash is because of the wacom 0.7.8 drivers. Does not crash
 # with linuxwacom-0.7.9.
 x11-proto/renderproto
 x11-libs/xtrans
 x11-libs/libXrender
 x11-drivers/xf86-input-keyboard
 x11-drivers/linuxwacom
 x11-base/xorg-server
 =x11-base/xorg-x11-7.3

 x11-libs/pixman
 x11-drivers/xf86-video-i810

 # 2008-05-09: Scaling pointer events in xorg-server-1.4.0.90-r4
 =x11-base/xorg-server-1.4.0.90-r4 **

 # 2008-05-09: Avoid middle click on VT switch
 =x11-drivers/xf86-input-mouse-1.3.0

 # 2008-03-16: glxgears crashes if maximized (xorg-server-1.3.0.0-r5,
 # mesa-6.5.2). However things are OK on mesa-7.0.2.
 =media-libs/mesa-7.0.2*
Code: Shell commands to upgrade xorg-server
emerge -1av xorg-server
emerge -1av `qlist -IC x11-drivers`
dispatch-conf

Brightness and Rotation

The LCD brightness is adjustable via software, or using the hardware keys provided. For software brightness controls, do CONFIG_ACPI_VIDEO=m and say yes (or m) to all the backlight options. Now you should be able to "echo" the brightness level into /proc/acpi/video/C09A/C1AF/brightness. See the authors website for a few scripts that help.

Note: On 2.6.24 or earlier kernels running acpid causes hardware brightness buttons to not change the brightness, and only generate an ACPI event. On 2.6.25 kernels, with xf86-video-i810-2.2.99.903-r1, the hardware buttons work as expected.

Rotation of the input devices can be done via

Code: Shell commands to set screen rotation
xrandr --output LVDS --rotate right
xsetwacom set stylus Rotate CW
xsetwacom set eraser Rotate CW

Audio

Works out of the box. (Enable it via CONFIG_SND_HDA_INTEL=y in the kernel).

PC Speaker

Bug: PC Speaker doesn't work
The PC speaker only works when the alsa module is not loaded, or when the sound card is powered down (e.g. after resume). This is because the ALSA module (AD1981) doesn't yet have support for the beeper device (see ALSA Bug 3716).

If you want your PC speaker to work (I find it quite useful), you can try using xbelld (ebuild), which can use ALSA to emulate a configurable PC speaker beep under X. Alternately you can try one of the methods listed in HOWTO Virtual PC Speaker. Unfortunately as of 2008-04-18, the fancy beeper daemon solution listed there will not work on 2.6.24/25 kernels, which are the ones you need on this computer anyway.

Ethernet

Linux Kernel Configuration: Ethernet (2.6.25)
    Device Drivers  --->
[*]   Network device support  --->
[*]     Ethernet (1000 Mbit)  --->
<M>       Intel(R) PRO/1000 Gigabit Ethernet support
<M>       Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support
Note: You only need the non PCI-Express for 2.6.24 and older kernels

Enabling Wake on Lan (optional)

Use echo C139 > /proc/acpi/wakeup to enable wake on lan. You can check if Wake on Lan is enabled by catting /proc/acpi/wakeup:

Command: cat /proc/acpi/wakeup
Device  S-state   Status   Sysfs node
C0B2      S5     disabled  pci:0000:00:1e.0
C10A      S3     disabled  pci:0000:00:1d.0
C112      S3     disabled  pci:0000:00:1d.2
C113      S3     enabled   pci:0000:00:1d.7
C11B      S3     disabled  pci:0000:00:1a.0
C11D      S3     enabled   pci:0000:00:1a.7
C133      S5     disabled  pci:0000:00:1c.1
C2A1      S5     disabled  pci:0000:10:00.0
C134      S5     disabled  pci:0000:00:1c.2
C2A2      S5     disabled
C139      S5     enabled   pci:0000:00:19.0
C23E      S5     disabled
Note: As of 2008-05-05, enabling wake on lan, also enables wake ups from the devices C113 and C11D, which are both USB controllers. This means if you dock your system, or plug in a mouse, your system will wake up. I also couldn't get my system to hibernate when docked with wake on lan enabled.

Wireless

Note: This computer comes with an Intel 4965AGN card or a Broadcom 4312. You can see if you have an Intel 4965AGN by looking at the stickers under the laptop battery. On my model there is a sticker on the right side which says "Contains Intel WLAN Radio Model 4965AGN MM2". Alternately you can use lspci

Broadcom 4312

See the Broadcom 43xx article. See also the Talk:HP_Compaq_2710p#Wireless section.

Intel 4965AGN

The Intel 4965AGN works well with the kernel module from the 2.6.25 kernel. Additionally you need the ucode for this wireless card which is not included in the kernel. See Iwlwifi for more information.

Tablet / stylus

Linux Kernel Configuration: Tablet configuration (2.6.25-gentoo-r5)
    Device Drivers --->
      Character devices --->
        Serial drivers --->
<M>       8250/16550 and compatible serial support
<M>       8250/16550 PNP device support

and add wacom to INPUT_DEVICES in /etc/make.conf.

File: /etc/X11/xorg.conf
Section "InputDevice"
  Driver        "wacom"
  Identifier    "stylus"
  Option        "Device"        "/dev/ttyS0"          # SERIAL ONLY
  Option        "Type"          "stylus"
  Option        "ForceDevice"   "ISDV4"               # Tablet PC ONLY
EndSection

Section "InputDevice"
  Driver        "wacom"
  Identifier    "eraser"
  Option        "Device"        "/dev/ttyS0"          # SERIAL ONLY
  Option        "Type"          "eraser"
  Option        "ForceDevice"   "ISDV4"               # Tablet PC ONLY
EndSection

Section "ServerLayout"
	Identifier     "X.org Configured"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"

	InputDevice    "stylus" "SendCoreEvents"    # Add these three lines
	InputDevice    "eraser" "SendCoreEvents"
EndSection

Then emerge something like app-text/xournal to use your stylus.

Note: I could not get the info / screen rotation buttons working.

Special keys

There are a few non-standard keys on this Laptop: The volume control / mute buttons, presentation button (leftmost button on the volume control slider), brightness (Function F9/F10), sleep (Function F3), display (Function F4), and battery (Function F8). All these have keycodes which are recognized by default, except for the presentation and battery buttons.

Code: Generating a keycode for the presentation and battery buttons
setkeycodes e008 120
setkeycodes e009 121

Under X, these will generate a keycodes of 139 and 134 respectively (not 120 & 121) for these key. You need the above command to be run every time you reboot your machine. One way of doing this is to put the above line in /etc/conf.d/local.start, and adding local to the default run level.

(Optional) Generating KeySym's for special keys

Most of these keys do not produce a KeySym under X. My window manager x11-wm/fvwm requires KeySyms (and not keycodes) to bind hotkeys, so I generated KeySym's using x11-apps/xmodmap:

File: ~/.xmodmaprc
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume
keycode 160 = XF86AudioMute

keycode 101 = SunVideoLowerBrightness
keycode 212 = SunVideoRaiseBrightness
keycode 223 = XF86Sleep

keycode 139 = XF86Launch0
keycode 134 = XF86Launch1

Run xmodmap ~/.xmodmaprc when you start X. Now map these to your desired actions using your window manager / hotkey manager.

(Optional) Swapping Page up / Page down etc.

If you're a long time app-editors/vim user then you'll probably find that the page up and page down keys are placed wrongly. If you'd like to swap them, then do the following:

File: ~/.swap_pgup_pgdn.xmodmaprc
! Swap Page up and page down (stupidly placed)
keysym Next = Prior
keysym Prior = Next
Code: Swapping Page-up and Page-Down
xmodmap ~/.swap_pgup_pgdn.xmodmap

The above command will swap page up and page down. Running it a second time will restore the original behaviour.

Hibernation

Install sys-power/hibernate-script, and add the lines

SwitchToTextMode yes
UserFunc			# If you use the brightness scriptlet below

in /etc/hibernate/common.conf. I recommend using >=sys-kernel/2.6.25-gentoo-sources-r4. I could not get anything working with the sys-kernel/tuxonice-sources, and the 2.6.24* kernels have buggy hibernation.

The brightness gets messed up after resuming: The initial brightness after resuming is correct, however as soon as you increase / decrease the brightness it changes to an unexpected value. If this bothers you, then do the following:

File: /etc/hibernate/scriptlets.d/userfuncs
 AddConfigHandler userFuncOptions
 
 function userFuncSaveBrightness()
 {
     userFuncAcpiFile=/proc/acpi/video/C09A/C1AF/brightness
     if [[ -f $userFuncAcpiFile ]]; then
 	userFuncAcpiBrightness=$(egrep ^current: $userFuncAcpiFile \
 	    | cut -d ' ' -f 2)
 	vecho 3 "Got ACPI brightness $userFuncAcpiBrightness"
     fi
 }
 
 function userFuncRestoreBrightness()
 {
     if [[ -e "$userFuncAcpiFile" && -n "$userFuncAcpiBrightness" ]]; then
 	vecho 3 "Setting brightness to $userFuncAcpiBrightness"
 	echo $userFuncAcpiBrightness > $userFuncAcpiFile
     else
 	vecho 3 "Could not restore brightness (level $userFuncAcpiBrightness)"
     fi
 }
 
 function userFuncOptions()
 {
     case $1 in
 	userfunc)
 	    if [[ -z $USERFUNC_HOOKED ]]; then
 		# Should be before xhacks
 		AddSuspendHook	84 userFuncSaveBrightness
 		AddResumeHook	84 userFuncRestoreBrightness
 
 		USERFUNC_HOOKED=1
 	    fi
 	    return 0;;
 	
 	*)
 	    return 1;;
     esac
 }
Note: If you have issues with hibernation, see the talk page. As of 2008-07-12, everything the above settings work perfectly for me on kernel 2.6.25.9 (or gentoo-2.6.25-r6).


Tip: The system can be safely docked or un-docking when sleeping, or even when powered on. Just umount your CD/DVD if it is mounted.

MMC/SD Card

Do CONFIG_MMC_SDHCI=m and CONFIG_MMC_RICOH_MMC=m (or you can say y). Then new SD cards show up in /dev/mmcblk??.

This card has both an SD controller, and an MMC controller on the same card, and the MMC controller takes control of your SD cards, rendering them useless. To use your SD cards, you need to first disable the MMC controller:

Code: Disabling the MMC controller
modprobe -iv ricoh_mmc

Now the SD cards you insert show up as block devices.

If you use hibernation, then do

File: /etc/hibernate/common.conf
UnloadModules ricoh_mmc

Fingerprint Reader

Use fprint. Get the ebuilds here. If you install pam_fprint, you can login / sudo / etc. based on your fingerprint (or optionally fall back to a password).

Camera

Model: USB device - Chicony 04f2:b017

lsusb: Bus 002 Device 004: ID 04f2:b017 Chicony Electronics Co., Ltd


Linux Kernel Configuration: Webcam (2.6.25-gentoo-r4)
    Device Drivers --->
      Multimedia Devices --->
<M>     Video For Linux 
[*]       Enable Video For Linux API 1 (DEPRECATED)
-*-       Enable Video For Linux API 1 compatible Layer
[*]       Video capture adapters  --->
[*]         Autoselect pertinent encoders/decoders and other helper chips
[*]         V4L USB devices  --->

Them emerge media-video/linux-uvc. Reboot. Should Work.

Bluetooth

Bluetooth works, when it is switched on. I had it switched off first, and then had to got back into windows to enable it. The Gentoo Bluetooth Guide ( http://www.gentoo.org/doc/en/bluetooth-guide.xml ) explains pretty much everything. This results in the following kernel:

Linux Kernel Configuration: Bluetooth (2.6.25-r4)
    Networking --->
<*>   Bluetooth subsystem support  --->
---   Bluetooth subsystem support
<M>     L2CAP protocol support
<M>     SCO links support
<M>     RFCOMM protocol support
[*]       RFCOMM TTY support
<M>     BNEP protocol support
[*]       Multicast filter support
[*]       Protocol filter support
<M>     HIDP protocol support
    Bluetooth device drivers  --->
<M>   HCI USB driver
[*]     SCO (voice) support
<M>   HCI UART driver
[*]     UART (H4) protocol support
[*]     BCSP protocol support
[*]     Transmit CRC with every BCSP packet
<M>   HCI BCM203x USB driver
<M>   HCI BPA10x USB driver
<M>   HCI BlueFRITZ! USB driver
    USB support  --->
<*>   Support for Host-side USB
---   USB Host Controller Drivers
<M>   EHCI HCD (USB 2.0) support
[ ]     Full speed ISO transactions (EXPERIMENTAL)
[ ]     Root Hub Transaction Translators (EXPERIMENTAL)
<*>   OHCI HCD support
<*>   UHCI HCD (most Intel and VIA) support
< >   SL811HS HCD support

I am not exactly sure whether all of these drivers are needed but I was too lazy for testing them all ;-). It works for me this way. Enjoy.

Docking Station

Works out of the box. Be sure you do CONFIG_USB_STORAGE=y, because the CD drive is detected as a USB device. The VGA, ethernet pass through flawlessly, and can safely be connected / disconnected when on or hibernating. (I have not yet tested DVD burning)

Software

Note taking applications
On screen keyboards
Other useful stuff

External Links

Retrieved from "http://www.gentoo-wiki.info/HP_Compaq_2710p"

Last modified: Wed, 10 Sep 2008 10:41:00 +0000 Hits: 7,910