华硕笔记本电脑附加功能

版本 0.1

2009 年 8 月 6 日

Corentin Chary <corentincj@iksaif.net> http://acpi4asus.sf.net/

此驱动程序为 ACPI 兼容华硕笔记本电脑的附加功能提供支持。它也可能支持某些 MEDION、JVC 或 VICTOR 笔记本电脑(例如 MEDION 9675 或 VICTOR XP7210)。它使所有额外的按钮生成输入事件(如键盘)。

在某些型号上,它增加了改变显示亮度与输出、开关 LCD 背光的功能,最重要的是,它允许您闪烁那些用于报告邮件和无线状态的炫酷 LED 灯。

此驱动程序取代了旧的 asus_acpi 驱动程序。

要求

内核 2.6.X 源代码,已为您的计算机配置,并支持 ACPI。您还需要 CONFIG_INPUT 和 CONFIG_ACPI。

状态

目前支持的功能如下(详细描述见下文)

  • Fn 组合键

  • 蓝牙启用和禁用

  • Wlan 启用和禁用

  • GPS 启用和禁用

  • 视频输出切换

  • 环境光传感器开关

  • LED 控制

  • LED 显示控制

  • LCD 亮度控制

  • LCD 开关

网站上维护了按型号和功能分类的兼容性表格,网址为 http://acpi4asus.sf.net/

用法

尝试“modprobe asus-laptop”。检查您的 dmesg (简单地输入 dmesg)。您应该看到类似这样的行

Asus Laptop Extras version 0.42
  • L2D model detected.

如果这不是您笔记本电脑上的输出,请将其(和笔记本电脑的 DSDT)发送给我。

就这些,现在,您的笔记本电脑热键生成的所有事件都应该通过 netlink 事件报告。您可以使用“acpi_genl monitor”(acpica 项目的一部分)进行检查。

热键也作为输入键(如键盘)报告,您可以使用 X11 下的“xev”检查支持哪些键。

您可以通过读取 /sys/devices/platform/asus-laptop/infos 条目来获取 DSDT 表的版本信息。如果您有疑问或要报告错误,请包含此条目的输出。

LEDs

您可以通过将值回显到 /sys/class/leds/asus/*/brightness 来修改 LED

echo 1 >  /sys/class/leds/asus::mail/brightness

将点亮邮件 LED。

您还可以通过读取其内容来了解它们是否打开/关闭,并使用内核触发器,例如磁盘活动或心跳。

背光

您可以使用 /sys/class/backlight/asus-laptop/ 控制 LCD 背光电源和亮度。亮度值介于 0 和 15 之间。

无线设备

您可以使用蓝牙条目打开/关闭内置蓝牙适配器(仅适用于带蓝牙的型号)。这通常控制关联的 LED。Wlan 适配器也一样。

显示切换

注意:显示切换代码目前被认为是 EXPERIMENTAL(实验性)。

以下型号支持切换功能

  • L3800C

  • A2500H

  • L5800C

  • M5200N

  • W1000N (尽管有一些小故障)

  • M6700R

  • A6JC

  • F3J

以下型号不支持切换功能

  • M3700N

  • L2X00D (在某些条件下会锁定笔记本电脑)

要切换显示器,请将 0 到 15 的值回显到 /sys/devices/platform/asus-laptop/display。这些值的含义如下:

二进制

DVI

电视

CRT

液晶显示器

0000

0

0001

1

X

0010

2

X

0011

3

X

X

0100

4

X

0101

5

X

X

0110

6

X

X

0111

7

X

X

X

1000

8

X

1001

9

X

X

1010

10

X

X

1011

11

X

X

X

1100

12

X

X

1101

13

X

X

X

1110

14

X

X

X

1111

15

X

X

X

X

在大多数情况下,必须插入适当的显示器才能使上述组合起作用。TV-Out 可能需要在启动时初始化。

调试

  1. 检查 Fn+F8 键是否

    1. 不会锁定笔记本电脑(如果会,请尝试不带 noapic / nolapic 启动)

    2. 生成事件(0x6n,其中 n 是对应上述配置的值)

    3. 实际起作用

    记录每种配置下的 disp 值。

  2. 将 0 到 15 的值回显到 /sys/devices/platform/asus-laptop/display。记录其值,注意任何变化。如果没有任何变化,请尝试更大的范围,最高可达 65535。

  3. 将**任何**输出(需要正面和负面报告,除非您的机器已列在上面)发送到 acpi4asus-user 邮件列表。

注意:在某些机器(例如 L3C)上,模块加载后,只会生成 0x6n 事件,而不会发生实际切换。在这种情况下,一行类似

echo $((10#$arg-60)) > /sys/devices/platform/asus-laptop/display

通常会奏效($arg 是传递给 acpid 的 0000006n 类似的事件)。

注意:目前没有可靠的方法来读取 xxN (Centrino) 型号的显示状态。

LED 显示

某些型号,如 W1N,带有 LED 显示屏,可用于显示多项信息。

LED 显示屏适用于以下型号

  • W1000N

  • W1J

要控制 LED 显示屏,请使用以下命令

echo 0x0T000DDD > /sys/devices/platform/asus-laptop/

其中 T 控制 3 个字母显示,DDD 控制 3 个数字显示,具体根据下表

DDD (digits)
000 to 999 = display digits
AAA        = ---
BBB to FFF = turn-off

T  (type)
0 = off
1 = dvd
2 = vcd
3 = mp3
4 = cd
5 = tv
6 = cpu
7 = vol

例如,“echo 0x01000001 >/sys/devices/platform/asus-laptop/ledd”将显示“DVD001”。

驱动程序选项

可以通过标准模块参数语法向 asus-laptop 驱动程序传递选项(当将选项传递给模块时为 <param>=<value>,当 asus-laptop 静态链接到内核时,在内核启动行上为 asus-laptop.<param>=<value>)。

wapf: WAPF 定义 Fn+Fx wlan 键的行为

值的含义有待发现,但大多数情况下

  • 0x0 应该不执行任何操作

  • 0x1 应该允许通过 Fn+Fx 键控制设备。

  • 0x4 应该在按下 Fn+Fx 键时发送一个 ACPI 事件 (0x88)

  • 0x5 类似于 0x1 或 0x4

默认值为 0x1。

不支持的型号

这些型号将永远不会被此模块支持,因为它们使用完全不同的机制来处理 LED 和额外的东西(这意味着我们不知道它是如何工作的)

  • ASUS A1300 (A1B), A1370D

  • ASUS L7300G

  • ASUS L8400

补丁、错误、问题

我感谢任何成功或失败的报告,特别是那些增加或修正兼容性表的报告。请在您的报告中包含以下信息:

  • 华硕型号名称

  • 使用“acpidump”实用程序获取的 ACPI 表副本

  • /sys/devices/platform/asus-laptop/infos 的副本

  • 哪些驱动程序功能有效,哪些无效

  • 无效功能的观察行为

任何其他评论或补丁也广受欢迎。

acpi4asus-user@lists.sourceforge.net

http://sourceforge.net/projects/acpi4asus