禁用没有驱动程序的 USB 设备

D-D*_*ᴙum 5 linux power-management usb-device

我有一台安装了 Ubuntu 16.04 的 HP Envy 笔记本电脑。该型号的笔记本电脑安装了“滑动指纹传感器”,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
Run Code Online (Sandbox Code Playgroud)

对此 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)
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,无论如何我可以禁用此设备以将其功耗降低到零瓦吗?有一个Autosuspend for unknown USB device 2-14 (138a:0050)inpowertop的可调选项,但这与报告的功耗没有区别。

编辑

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
Run Code Online (Sandbox Code Playgroud)

sou*_*edi 4

没有 Linux 驱动程序的 USB 设备 不会自动置于自动挂起状态,因为它会导致太多损坏。(这是您在 powertop 中看到的默认设置,对吧?)

但是,一旦您在未使用的设备上启用自动挂起,它就会在几秒钟后生效。

您可以在 中查看设置/sysfs/bus/usb/.../power。要启用自动挂起,power/control请设置为auto。并非所有文件都有记录,但我有runtime_statussuspended对于暂停的设备)。为了说明为什么设备被视为活动设备,我还有runtime_usageruntime_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 的笔记本电脑上的冷却系统是什么样子的……必须有一些通风口。