索尼可编程 I/O 控制设备驱动程序自述文件

此驱动程序允许访问许多索尼 Vaio 笔记本电脑中存在的索尼可编程 I/O 控制设备。一些较新的索尼笔记本电脑(似乎仅限于新的 FX 系列笔记本电脑,至少是 FX501 和 FX702)缺少 sonypi 设备,并且此驱动程序根本不支持它们。

它将(通过用户空间实用程序)访问这些笔记本电脑生成的一些事件,例如

  • jogdial 事件(Vaio 侧面的小轮子)

  • 捕获按钮事件(仅在 Vaio Picturebook 系列上)

  • Fn 键

  • 蓝牙按钮(仅在 C1VR 型号上)

  • 可编程键、后退、帮助、缩放、拇指短语按钮等(如果可用)

可以使用字符设备节点 /dev/sonypi(主设备号 10,次设备号自动分配或指定为选项)轮询这些事件(请参阅 linux/sonypi.h)。一个将 jogdial 运动转换为鼠标滚轮事件的简单守护程序可以从以下位置下载:<http://popies.net/sonypi/>

拦截事件的另一种方法是通过输入层直接获取它们。

此驱动程序还支持一些 ioctl 命令,用于设置 LCD 屏幕亮度并查询电池充电信息(将来可能会添加更多命令)。

此驱动程序还可用于设置 Picturebook 系列的摄像头控制(亮度、对比度等),并且 video4linux 驱动程序将此驱动程序用于 Motion Eye 摄像头。

请注意,此驱动程序是通过对 Windows 驱动程序和 ACPI BIOS 进行逆向工程创建的,因为索尼不同意发布其笔记本电脑的任何编程规范。如果有人说服他们这样做,请给我留言。

驱动程序选项:

可以使用标准模块参数语法(将选项传递给模块时使用 <param>=<value>,或者当 sonypi 静态链接到内核时,在内核启动行使用 sonypi.<param>=<value>)将多个选项传递给 sonypi 驱动程序。这些选项包括

次设备号

misc 设备 /dev/sonypi 的次设备号,默认值为 -1(自动分配,请参阅 /proc/misc 或内核日志)

摄像头

如果您拥有 PictureBook 系列 Vaio(带有集成的 MotionEye 摄像头),请将此参数设置为 1,以便驱动程序访问摄像头

fnkeyinit

在某些 Vaio(C1VE、C1VR 等)上,除非将此参数设置为 1,否则不会启用 Fn 键事件。除非确实有必要,否则不要使用此选项,某些 Vaio 型号对此选项的处理效果不佳。仅当内核在没有 ACPI 支持的情况下编译时,此选项才可用(因为它会与 ACPI 冲突,并且如果已启用 ACPI,则无论如何都不应需要此选项)。

verbose

设置为 1 可打印从 sonypi 设备收到的未知事件。设置为 2 可打印从 sonypi 设备收到的所有事件。

compat

使用一些兼容性代码来启用 sonypi 事件。如果驱动程序过去(1.5 版之前)对您有效,但不再有效,请添加此选项并报告给作者。

mask

事件掩码,告知驱动程序将向用户报告哪些事件。对于某些硬件重用其他 Vaio 型号中使用的值(例如,没有 jogdial 但将 jogdial 事件用于可编程按键事件的 FX 系列)的 Vaio 型号,此参数是必需的。默认事件掩码设置为 0xffffffff,这意味着将尝试所有可能的事件。您可以使用以下位来构建您自己的事件掩码(来自 drivers/char/sonypi.h)

SONYPI_JOGGER_MASK              0x0001
SONYPI_CAPTURE_MASK             0x0002
SONYPI_FNKEY_MASK               0x0004
SONYPI_BLUETOOTH_MASK           0x0008
SONYPI_PKEY_MASK                0x0010
SONYPI_BACK_MASK                0x0020
SONYPI_HELP_MASK                0x0040
SONYPI_LID_MASK                 0x0080
SONYPI_ZOOM_MASK                0x0100
SONYPI_THUMBPHRASE_MASK         0x0200
SONYPI_MEYE_MASK                0x0400
SONYPI_MEMORYSTICK_MASK         0x0800
SONYPI_BATTERY_MASK             0x1000
SONYPI_WIRELESS_MASK            0x2000

useinput

如果设置(这是默认设置),则会创建两个输入设备,一个将 jogdial 事件解释为鼠标事件,另一个像键盘一样报告按下特殊键。

模块使用:

为了在使用时自动加载 sonypi 模块,您可以将这些行放在 /etc/modprobe.d/ 中的配置文件中

alias char-major-10-250 sonypi
options sonypi minor=250

这假设 sonypi 设备使用次设备号 250

# mknod /dev/sonypi c 10 250

错误:

  • 一些用户报告说,此驱动程序禁用了 BIOS 管理的 Fn 键,这些 Fn 键使笔记本电脑进入睡眠状态,或打开/关闭外部显示器。目前还没有解决方法,因为此驱动程序通过启用 ACPI 管理来禁用这些键的所有 APM 管理(ACPI 核心组件尚未完成)。如果您拥有具有正常工作的 Fn 键并希望继续使用它们的笔记本电脑,请不要使用此驱动程序。

  • 一些用户报告说,当使用带有 fnkeyinit 参数的驱动程序时,笔记本电脑速度较慢(dhrystone 测试)。我无法在我的笔记本电脑上重现它,并且并非所有用户都存在此问题。发生这种情况是因为 fnkeyinit 参数启用了 ACPI 模式(但没有额外的 ACPI 控制,例如处理器速度处理等)。如果 ACPI 在您的笔记本电脑上正常工作,请使用它而不是 APM。

  • 在某些型号上,sonypi 无法区分某些按键事件。

  • 一些带有 nvidia 显卡(geforce go 6200 tc)的型号使用不同的方式来调整屏幕的背光。有一个用户空间实用程序可以调整这些型号的亮度,可以从 https://www.acc.umu.se/~erikw/program/smartdimmer-0.1.tar.bz2 下载

  • 由于所有开发都是通过逆向工程完成的,因此绝对不能保证此驱动程序不会使您的笔记本电脑崩溃。永久性的。