我的旧电脑——惠普 Compaq Presario CQ35-105TX 在经历了四年多的风风雨雨后,终于寿终正寝了。上个月底,经过长时间的考虑,我最终放弃了 Macbook Pro ,入了一台仰慕已久的 Thinkpad ,型号是 T430s 2352A32 。 T430s 是 T430 的薄款,但又不是 T430u 超级本或 T430i 低配版,配置上与 T430 完全相同,但轻薄了许多,电池续航有一点削弱(不过它的4芯电池具有快速充电功能,半小时充80%电量,还是不错的)。 Thinkpad 是很有特点的笔记本,不同于惠普、神舟之类普通的消费本,有很多特有的硬件和功能,就算运行 Windows 也需要费一番功夫装上一大堆驱动。幸运的是,在 Thinkpad 上运行 Linux 的人还是挺多的,有许多热心人为内核驱动以及各种文档做贡献,比如 ThinkWikiArchWiki ,上面有非常丰富的资料。不过,这款 T430s 比较新,相关资料比较少,因此有必要在这里记下我的一些心得、经验。

简单介绍一下软硬件情况:

  • 硬件:UEFI(with legacy support),Intel i5 CPU,Intel HD4000 + NVIDIA NVS5200M 双显卡, Intel 千兆有线网卡及 802.11n 无线网卡,以及蓝牙、指纹识别器、720p摄像头等。
  • 软件:Archlinux x86_64。(如无特殊说明,以下均以 Archlinux 为例。)

Work (nearly) out of box

所谓“ (nearly) out of box ”,指的是常见的桌面发行版( Ubuntu 、 Fedora 、 OpenSuSE 等)均可开箱即用, Archlinux 由于最小化安装,需要照惯例做些配置(括号中简要注明)。

包括:摄像头、 Intel 集成显卡(安装 xf86-video-intel )、蓝牙(安装 bluez 并启用 bluetooth.service )、有线及无线网卡、 Fn+Fx 多媒体快捷键、静音及音量调节按钮、键盘灯、小红点及触控板(高级功能配置详见下文)等。

Need configuration

1. Trackpoint & Touchpad

默认情况下,小红点未开启中键模拟滚动功能,触控板仅开启了双指滚动。

UPDATE:经测试发现通过 udev rules 方法来设置小红点属性非常不靠谱——如果规则中不 wait 的话有可能设置无效,如果加了 wait 将会导致开机后输入设备假死5秒左右。目前我使用开机脚本直接把属性设置 echo 到 /proc 下的文件中。

2. Optimus

对,这就是最麻烦的臭名昭著的 NVIDIA 双显卡技术。目前唯一的方案是 Bumblebee ,不过进展远远达不到 Windows 下的程度,其效能提升对于大部分 Linux 用户来说是没有用的( Intel HD4000 已经足够强大了)。所以我选择了利用 Bumblebee 中的一个组件—— bbswitch 来禁用 NVIDIA 显卡来省电(若你不像我一样装了个 Windows 有时候用来打游戏,那么你完全可以在 BIOS 里禁用掉 NVIDIA 显卡,就不用费下面的功夫了)。

从 AUR 中安装 bbswitch 包。这是个内核模块,不会自动加载,需要在 /etc/modules-load.d/ 中新建一个文件来加载它,还需要在 /etc/modprobe.d/ 中建立一条规则来设置一些参数,比如模块加载时禁用、卸载时启用独立显卡:

options bbswitch load_state=0 unload_state=1

双显卡更多的配置,参见:https://wiki.archlinux.org/index.php/Bumblebee

3. Intel HD Hardware Acceleration

感谢 Intel 的开放,其显卡不但有着质量最高的开源驱动,硬件解码也有开源解决方案——VA-API。如今启用 Intel 显卡的硬解已相当容易,你只需要一个支持 vaapi 视频输出的播放器即可,比如打了补丁的 mplayer (有望在近期并入主干,目前是在 Archlinux 的官方源中一个独立的包,叫做 mplayer-vaapi )。然后配置你的 mplayer 前端使用 vaapi 视频输出即可(-vo vaapi)。另外,切记:不要启用任何滤镜、后期处理、反交错功能,否则你将自动 fallback 成软解,尤其值得注意的是 smplayer 需禁用截图功能(默认开启),因其实现方式也是通过后期处理功能。gstreamer 也有 vaapi 支持。对了, Archlinux 用户别忘了装上 libva-intel-driver 。开启硬解后,播放 H264 1080P 时 CPU 占用率不超过 5% ,保持低功耗模式,相当爽快。

Not work or uncertain

这里特别指出一点,联想最近的新款 Thinkpad (包括 T W X 这些传统系列,而不只是新系列)开始逐渐放弃使用多年的私有硬件控制接口(主要是一些电源管理功能,通过所谓 EC 芯片来实现),转而开始使用标准的 ACPI call 。因此,部分曾今专为 EC 控制器开发的驱动、软件将无法使用,包括但不限于:tp_smapi(电源管理及一些高级接口)、HDAPS(硬盘加速度保护)。请不要浪费时间折腾这些东西,因为它们是从硬件上被改变了接口。但是另一方面,使用标准的 ACPI 也是一件好事,将会使未来的开源解决方案更容易实现,相信在不远的将来它们就会到来(现在已经有 tp_acpi-bat 可以通过 ACPI call 来设置电池的充电阈值)。

指纹识别器是我唯一没有测试的一个主要功能,不过据说在最新的 fingerprint-gui 附带的指纹驱动中已经支持 T430s 所带的型号了。但是,使用指纹作为验证方式绝对不是一个好主意,“相当于把密码写在所有地方”。所以我只用指纹作为加电密码,给系统多一层保险(此功能似乎要通过 Windows 下的配套软件来设置)。

这款机子的亮度调节很诡异,在 /sys/class/backlight/ 下存在三个亮度控制设备:acpi_video0、acpi_video1、intel_backlight,最后一个是 Intel 显卡导致的,但中间那个有些莫名其妙。不知是不是由于这个原因, GNOME 下使用键盘快捷键调节亮度会失效(弹出了亮度调节框,但是滑条没有变化)。不过,在 E17 下却是正常的,而且使用亮度控制小工具或者 xbacklight 也没有问题,有点诡异。

Something more

最后来一点锦上添花的东西,强烈推荐一个特别适合 Thinkpad 使用的电源管理小工具—— tlp 。它不是一个 daemon ,而是一些小脚步,在启动时运行它们来设置 laptop mode 等一系列内核参数以优化电源管理。它是为 Thinkpad 专门开发的,支持小黑的一些特殊功能,比如 Ultrabay 相关行为,充电阈值设置,硬盘、声卡、无线等设备电源参数设置等。只需要从 AUR 中安装 tlp (若需要设置充电阈值还需要安装 tp_acpi-bat ),配置 /etc/default/tlp 中的相关参数(配置文档有详细的注释),最后启用 tlp-init.service 即可。