在系统登录或做系统管理任务时,用刷指纹来代替输入长长的密码,方便快捷,又能减轻手指的疲劳。在公共场合或办公区使用计算机时,为了信息保密,人离开机器后必须锁定屏幕。这早已成为我多年的习惯。然而Thinkpad T61使用Ubuntu8.04,出现锁定屏幕后指纹仪过热的问题。
按快捷键或其他任意方式锁定屏幕后,指纹仪不停地发热,越来越热,十几分钟后热得无法触摸。我担心它会损坏,因此很长时间在办公室的时候不用Ubuntu。Google此问题之后,没找到解决的办法。本想在Ubuntu的launchpad上报告此Bug,却发现早已有人先我一步,但却没人提供答案。订阅该帖几个月后,近日终于收到邮件,有人回复,提供了解决方法。原来thinkwiki上早已有人对此作了详尽说明。我想翻译成中文,置此备忘。
点击这里查看原文修复指纹仪过热
如果你注意到你的指纹仪偶尔会变得很热,那你也许会对这一节的内容有兴趣。感谢Tino Keitel,他通过linux-thinkpad邮件列表给了我这个解决方案。
首先我们需要检测指纹仪是否没有处在自动挂起模式。
打开一个终端并运行:
for i in `find /sys/devices/*/*/usb* -name level` ; do echo -n "$i: " ; cat $i ; done
我们关心的是那些状态为“on”的设备,并且我们需要检测看是否其中之一就是指纹仪。所以对这些设备每一个都运行一次类似这样的命令:
cat /sys/devices/pci0000\:00/0000\:00\:1a.0/usb1/1-2/idVendor
0483(这是命令输出的结果)
cat /sys/devices/pci0000\:00/0000\:00\:1a.0/usb1/1-2/idProduct
2016(这是命令输出的结果)
以上命令中要用状态为“on”的那些设备所对应的路径,然后和lsusb命令的输出结果进行对比。举个例子:
lsusb的输出结果:Bus 001 Device 004: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader
这正和上面命令的输出结果(0483:2016)相匹配。一旦检测完你指纹仪的路径,然后就用su -变成root并且执行:
echo "auto" > /sys/<设备的路径>/power/level
之后,指纹仪应该就处于“自动挂起”模式,并且再也不会变热了。而且它仍能正常工作。
这只对当前会话有效。如果你想让这个改动持续有效并且已经安装了sysfsutils,则编辑文件/etc/sysfs.conf并加入这行:
<设备的路径>/power/level = auto
对于前面的例子,则应该是
devices/pci0000\:00/0000\:00\:1a.0/usb1/1-2/power/level = auto
另外一种方法,你可以安装一个初始化脚本:
sudo gedit /etc/init.d/ReaderNoMoreHot
粘贴以下内容到其中:
#!/bin/bash
#
echo "auto" > /sys/<设备的路径>/power/level
保存并关闭。然后:
sudo chmod 755 /etc/init.d/ReaderNoMoreHot
sudo update-rc.d ReaderNoMoreHot defaults 90
标签: Linux, Ubuntu