索尼笔记本控制驱动 (SNC) 自述文件

这个迷你驱动程序驱动索尼 Vaio 笔记本电脑的 ACPI BIOS 中存在的 SNC 和 SPIC 设备。此驱动程序在同一(希望一致的)接口下混合了两个设备的功能。这也意味着 sonypi 驱动程序现在已被 sony-laptop 取代。

Fn 键(热键):

某些型号通过 SNC 或 SPIC 设备报告热键,这些事件通过 ACPI 子系统作为 acpi 事件并通过 INPUT 子系统报告。请查看 /proc/bus/input/devices 的日志,以查找这些事件是什么以及驱动程序创建了哪些输入设备。此外,使用调试选项加载驱动程序将在内核日志中报告所有事件。

传递给输入系统的“扫描码”(可以使用 udev 重新映射)是 sony-laptop.c 模块中“sony_laptop_input_keycode_map”表的索引。例如,“FN/E”键组合(某些型号上的 EJECTCD)会生成扫描码 20 (0x14)。

背光控制:

如果您的笔记本电脑型号支持,您将在 /sys/class/backlight/sony/ 目录中找到 sysfs 文件。您将能够查询和设置当前的屏幕亮度

亮度

获取/设置屏幕亮度(一个介于 0 和 7 之间的整数)

实际亮度

从该文件读取将查询 HW 以获取实际亮度值

最大亮度

最大亮度值

平台特定:

加载 sony-laptop 模块将创建一个 /sys/devices/platform/sony-laptop/ 目录,其中填充了一些文件。

然后,您可以使用标准 UNIX 工具从这些文件中读取/写入整数值。

这些文件是

brightness_default

笔记本电脑重启时将设置的屏幕亮度

cdpower

打开/关闭内部 CD 驱动器的电源

audiopower

打开/关闭内部声卡的电源

lanpower

打开/关闭内部以太网卡的电源(仅在调试模式下)

bluetoothpower

打开/关闭内部蓝牙设备的电源

fanspeed

获取/设置风扇速度

请注意,如果您的特定笔记本电脑型号不支持某些文件,则这些文件可能会丢失。

使用示例

# echo "1" > /sys/devices/platform/sony-laptop/brightness_default

为下次及以后的重启设置最低屏幕亮度

# echo "8" > /sys/devices/platform/sony-laptop/brightness_default

为下次及以后的重启设置最高屏幕亮度

# cat /sys/devices/platform/sony-laptop/brightness_default

检索该值

# echo "0" > /sys/devices/platform/sony-laptop/audiopower

关闭声卡

# echo "1" > /sys/devices/platform/sony-laptop/audiopower

打开声卡。

RFkill 控制:

较新的 Vaio 型号公开了一组一致的 ACPI 方法来控制射频发射设备。如果您是幸运的这种笔记本电脑的所有者,您将在 /sys/class/rfkill 下找到必要的 rfkill 设备。检查那些以 sony-* 开头的

# grep . /sys/class/rfkill/*/{state,name}

开发:

如果您想帮助开发此驱动程序(并且您不怕使用 ACPI BIOS 对笔记本电脑进行奇怪操作可能产生的任何副作用),请加载驱动程序并传递选项“debug=1”。

重复

如果您不喜欢冒险,请不要这样做。

在您的内核日志中,您将找到 SNC 设备在您的笔记本电脑上拥有的所有 ACPI 方法的列表。

  • 对于新型号,您将看到一长串毫无意义的方法名称,读取 DSDT 表源应该揭示

  1. SNC 设备使用内部功能查找表

  2. SN00 用于在查找表中查找值

  3. SN06 和 SN07 用于根据您可以使用 SN00 迭代表获得的偏移量调用实际方法

  4. SN02 用于启用事件。

功能查找表中的某些值或多或少是已知的,请参阅所有 sony_call_snc_handle 调用的代码,其他值则更模糊。

  • 对于旧型号,您可以看到用于打开/关闭 CD 驱动器的 GCDP/GCDP 方法,但还有其他方法,它们通常因型号而异。

我不知道这些方法是做什么的。

sony-laptop 驱动程序会为其中一些方法(在多个 Vaio 型号上发现的最新的方法)在 /sys/devices/platform/sony-laptop 下创建一个条目,就像“cdpower”一样。您可以通过进一步编辑源代码来创建与您自己的笔记本电脑方法对应的其他条目(请参阅“sony_nc_values”表,并使用 SNC_HANDLE_NAMES 宏向此表添加一个新条目,其中包含您的 get/set 方法名称)。

您的任务是,如果您接受它,尝试找出这些条目是做什么用的,方法是从这些文件中读取/写入随机值,并找出对您的笔记本电脑有什么影响。

如果您发现任何有趣的东西,请向我报告,我不会否认您所有行为的知情权 :)

另请参阅 http://www.linux.it/~malattia/wiki/index.php/Sony_drivers 以获取其他有用的信息。

错误/限制:

  • 此驱动程序不是基于索尼的官方文档(因为没有),因此不能保证此驱动程序是否有效,或者是否能做正确的事情。虽然这没有发生在我身上,但此驱动程序可能会对您的笔记本电脑造成非常糟糕的事情,包括永久性损坏。

  • sony-laptop 和 sonypi 驱动程序根本不交互。将来,sonypi 将被删除并替换为 sony-laptop。

  • spicctrl 是一个用户空间工具,用于通过 /dev/sonypi 与 sonypi 驱动程序通信,它也已弃用,因为它的所有功能现在都可以在 sysfs 树下的 sony-laptop 中使用。