我有一台 HP Envy 笔记本电脑,上面安装了 Ubuntu 16.04。据报道,这款笔记本电脑型号安装了“滑动指纹传感器” lsusb
:
Bus 002 Device 004: ID 138a:0050 Validity Sensors, Inc. Swipe
Fingerprint Sensor Couldn't open device, some information will be missing.
Device Descriptor:
bLength: 18
bDescriptorType: 1
bcdUSB: 1.10
bDeviceClass: 255 Vendor Specific Class
bDeviceSubClass: 16
bDeviceProtocol: 255
bMaxPacketSize0: 8
idVendor: 0x138a Validity Sensors, Inc.
idProduct: 0x0050 Swipe Fingerprint Sensor
bcdDevice: 0.60
iManufacturer: 0
iProduct: 0
iSerial: 1
bNumConfigurations: 1
对这个 USB 设备的支持非常有限,但因为我不想使用它,所以这并不重要。然而,当我用来powertop
监控电源使用情况时,我发现该设备即使未使用,也持续使用 4.6 至 5 瓦的功率。
我也使用 Debian 的“usb-devices”来发现该设备正在使用什么驱动程序,但似乎没有加载:
T: Bus=02 Lev=01 Prnt=01 Port=13 Cnt=01 Dev#= 4 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=ff(vend.) Sub=10 Prot=ff MxPS= 8 #Cfgs= 1
P: Vendor=138a ProdID=0050 Rev=00.60
S: SerialNumber=941442215a3a
C: \#Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
所以我的问题是,我是否可以禁用该设备以将其功耗降低至零瓦?有一个Autosuspend for unknown USB device 2-14 (138a:0050)
可powertop
调节选项,但这对报告的功耗没有影响。
编辑
powertop
报告:
Power est. Usage Events/s Category Description
5.86 W 0.0 pkts/s Device Network interface: eno1 (r8169)
5.15 W 100.0% Device USB device: usb-device-138a-0050
4.17 W 100.0% Device Radio device: btusb
答案1
没有 Linux 驱动程序的 USB 设备是 不是自动置于自动挂起状态,因为它会导致太多损坏。 (这是您在 powertop 中看到的默认设置,对吧?)
但是,一旦您在未使用的设备上启用自动挂起,它就会在几秒钟后生效。
您可以在 中看到设置/sysfs/bus/usb/.../power
。要启用自动挂起,power/control
请设置为auto
。并非所有文件都有记录,但我有runtime_status
(suspended
对于暂停的设备)。为了说明为什么设备被视为活动设备,我还有runtime_usage
和runtime_active_kids
(子设备,例如连接到集线器的活动设备)。
对于没有驱动程序的设备,非零值runtime_usage
应指示用户空间的访问。
您至少可以找到使用 访问设备的进程sudo lsof /dev /sys
。
我本以为访问指纹读取器的唯一进程是fprintd
.您可以尝试使用 / 禁用它,systemctl mask --now fprintd
看看它如何变化runtime_status
。runtime_usage
耗电量数据
powertop 没有任何单个设备功率的实际数据。这都是猜测(“估计”),并且在某个地方出了可笑的错误。
您闲置的以太网芯片的功耗不是 5 瓦。
您的 USB 蓝牙收音机的功耗不是 5 瓦。蓝牙的最大发射功率似乎为 100mW。
5 瓦是 iPad 级设备上 SoC 功耗的最大“TDP”。闲置的指纹扫描仪不会向无线电或外部线路驱动 5W 功率。原则上我猜它可能正在忙循环 5W ARM cpu...但是说真的。无论从经济上还是从其他方面来说,这都没有意义。
这三个设备的功耗均不超过 15W。我使用的是真正的笔记本电脑,但用途并不多。听起来您的笔记本电脑的使用率似乎更高,但即便如此。
我认为 powertop 甚至无法查找 CPU 和集成 GPU 的 TDP,以便计算出剩下的内容。假设,这些估计是在与我的类似的笔记本电脑上进行校准的(例如 Linux 开发人员似乎喜欢的 12 英寸 Thinkpad X 系列),并且较大笔记本电脑的缩放最终会得到这些奇怪的数字。
你现在让我很好奇,这些具有较高 TDP 的笔记本电脑上的冷却系统是什么样子的……必须有一些通风口。
答案2
看起来禁用此设备的唯一方法是物理断开它(如果可能的话)。
我一直在阅读 Linuxsysfs
以及如何使用它来询问设备等,我还发现这kernel.org 上有帮助。USB 中存在关闭 USB 集线器特定端口电源的可能性,但是当我sudo lsusb
在有问题的集线器上发出问题时,它的描述符报告说无法单独为端口供电。(USB 1.0)。