NAME¶
acpi_hp —
ACPI extras driver for HP
laptops
SYNOPSIS¶
To compile this driver into the kernel, place the following line in your kernel
configuration file:
device
acpi_hp
Alternatively, to load the driver as a module at boot time, place the following
line in
loader.conf(5):
DESCRIPTION¶
The
acpi_hp driver provides support for ACPI-controlled
features found on HP laptops that use a WMI enabled BIOS (e.g. HP Compaq 8510p
and 6510p).
The main purpose of this driver is to provide an interface, accessible via
sysctl(8),
devd(8) and
devfs(8), through which applications can determine and
change the status of various laptop components and BIOS settings.
Devd events received by
devd(8) provide the following
information:
- system
- “
ACPI
”
- subsystem
- “
HP
”
- type
- The source of the event in the ACPI namespace. The value
depends on the model.
- notify
- Event code (see below).
Event codes:
0xc0
- WLAN on air status changed to 0 (not on air)
0xc1
- WLAN on air status changed to 1 (on air)
0xd0
- Bluetooth on air status changed to 0 (not on air)
0xd1
- Bluetooth on air status changed to 1 (on air)
0xe0
- WWAN on air status changed to 0 (not on air)
0xe1
- WWAN on air status changed to 1 (on air)
You can read /dev/hpcmi to see your current BIOS settings. The detail level can
be adjusted by setting the sysctl
cmi_detail as
described below.
SYSCTL VARIABLES¶
The following sysctls are currently implemented:
WLAN:¶
- dev.acpi_hp.0.wlan_enabled
- Toggle WLAN chip activity.
- dev.acpi_hp.0.wlan_radio
- (read-only) WLAN radio status (controlled by hardware
switch)
- dev.acpi_hp.0.wlan_on_air
- (read-only) WLAN on air (chip enabled, hardware switch
enabled + enabled in BIOS)
- dev.acpi_hp.0.wlan_enabled_if_radio_on
- If set to 1, the WLAN chip will be enabled if the radio is
turned on
- dev.acpi_hp.0.wlan_disable_if_radio_off
- If set to 1, the WLAN chip will be disabled if the radio is
turned off
Bluetooth:¶
- dev.acpi_hp.0.bt_enabled
- Toggle Bluetooth chip activity.
- dev.acpi_hp.0.bt_radio
- (read-only) Bluetooth radio status (controlled by hardware
switch)
- dev.acpi_hp.0.bt_on_air
- (read-only) Bluetooth on air (chip enabled, hardware switch
enabled + enabled in BIOS)
- dev.acpi_hp.0.bt_enabled_if_radio_on
- If set to 1, the Bluetooth chip will be enabled if the
radio is turned on
- dev.acpi_hp.0.bt_disable_if_radio_off
- If set to 1, the Bluetooth chip will be disabled if the
radio is turned off
WWAN:¶
- dev.acpi_hp.0.wwan_enabled
- Toggle WWAN chip activity.
- dev.acpi_hp.0.wwan_radio
- (read-only) WWAN radio status (controlled by hardware
switch)
- dev.acpi_hp.0.wwan_on_air
- (read-only) WWAN on air (chip enabled, hardware switch
enabled + enabled in BIOS)
- dev.acpi_hp.0.wwan_enabled_if_radio_on
- If set to 1, the WWAN chip will be enabled if the radio is
turned on
- dev.acpi_hp.0.wwan_disable_if_radio_off
- If set to 1, the WWAN chip will be disabled if the radio is
turned off
Misc:¶
- dev.acpi_hp.0.als_enabled
- Toggle ambient light sensor (ALS)
- dev.acpi_hp.0.display
- (read-only) Display status (bitmask)
- dev.acpi_hp.0.hdd_temperature
- (read-only) HDD temperature
- dev.acpi_hp.0.is_docked
- (read-only) Docking station status (1 if docked)
- dev.acpi_hp.0.cmi_detail
- Bitmask to control detail level in /dev/hpcmi output
(values can be ORed).
0x01
- Show path component of BIOS setting
0x02
- Show a list of valid options for the BIOS setting
0x04
- Show additional flags of BIOS setting (ReadOnly
etc.)
0x08
- Query highest BIOS entry instance. This is broken on
many HP models and therefore disabled by default.
- dev.acpi_hp.0.verbose
- (read-only) Set verbosity level
Defaults for these sysctls can be set in
sysctl.conf(5).
HARDWARE¶
The
acpi_hp driver has been reported to support the following
hardware:
- HP Compaq 8510p
- HP Compaq nx7300
It should work on most HP laptops that feature a WMI enabled BIOS.
FILES¶
- /dev/hpcmi
- Interface to read BIOS settings
EXAMPLES¶
The following can be added to
devd.conf(5) in order disable
the LAN interface when WLAN on air and reenable if it's not:
notify 0 {
match "system" "ACPI";
match "subsystem" "HP";
match "notify" "0xc0";
action "ifconfig em0 up";
};
notify 0 {
match "system" "ACPI";
match "subsystem" "HP";
match "notify" "0xc1";
action "ifconfig em0 down";
};
Enable the ambient light sensor:
sysctl dev.acpi_hp.0.als_enabled=1
Enable Bluetooth:
sysctl dev.acpi_hp.0.bt_enabled=1
Get BIOS settings:
cat /dev/hpcmi
Serial Port Disable
Infrared Port Enable
Parallel Port Disable
Flash Media Reader Disable
USB Ports including Express Card slot Enable
1394 Port Enable
Cardbus Slot Disable
Express Card Slot Disable
(...)
Set maximum detail level for /dev/hpcmi output:
sysctl dev.acpi_hp.0.cmi_detail=7
SEE ALSO¶
acpi(4),
acpi_wmi(4),
sysctl.conf(5),
devd(8),
devfs(8),
sysctl(8)
HISTORY¶
The
acpi_hp device driver first appeared in
FreeBSD CURRENT.
AUTHORS¶
The
acpi_hp driver was written by
Michael
Gmelin ⟨freebsd@grem.de⟩
It has been inspired by hp-wmi driver, which implements a subset of these
features (hotkeys) on Linux.
- HP CMI whitepaper:
- http://h20331.www2.hp.com/Hpsub/downloads/cmi_whitepaper.pdf
- wmi-hp for Linux:
- http://www.kernel.org
- WMI and ACPI:
- http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx
This manual page was written by
Michael Gmelin
⟨freebsd@grem.de⟩
BUGS¶
This driver is experimental and has only been tested on CURRENT i386 on an HP
Compaq 8510p which featured all supported wireless devices (WWAN/BT/WLAN).
Expect undefined results when operating on different hardware.
Loading the driver is slow. Reading from /dev/hpcmi is even slower.
Additional features like HP specific sensor readings or writing BIOS settings
are not supported.