Sony 笔记本控制驱动 (SNC) Readme

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

Fn 键(热键):

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

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

背光控制:

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

brightness

获取/设置屏幕亮度(0 到 7 之间的整数)

actual_brightness

读取此文件将查询硬件以获取实际亮度值

max_brightness

最大亮度值

平台特定:

加载 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 方法,但还有其他方法,并且它们通常因型号而异。

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

对于其中一些方法(在多个 Vaio 型号上发现的最新方法),sony-laptop 驱动程序会在 /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 获得。