我有一台 Dell Latitude 7390 二合一触摸屏笔记本电脑。我在上面安装了 PopOS 22.04(基于 Ubuntu 22.04,但具有更高的内核:5.19.0)。现在,每当我将笔记本电脑置于挂起状态(例如,如果我合上盖子),它就会随机退出挂起状态并继续消耗电量。
为了解决这个问题,我尝试使用以下命令禁用所有唤醒设备(电源按钮除外):
for x in $(grep enabled /proc/acpi/wakeup | cut -f1 | grep -v PBTN)
do
echo $x | sudo tee /proc/acpi/wakeup
done
然而,它没有任何效果。笔记本电脑仍然可以使用键盘或打开盖子来退出睡眠/挂起状态。我想强制它仅使用电源按钮退出睡眠状态。
更新:即使禁用所有唤醒设备,它也会醒来!
即使我禁用了 中的每个唤醒设备/proc/acpi/wakeup
,笔记本电脑仍然可以通过按键盘按键唤醒(即使当我打开盖子或按电源按钮时它不会唤醒)。
更新:如何禁用加速度计?
我注意到,如果我摇动笔记本电脑,它也会被唤醒!当我把它放进背包里时,经常会发生这种情况。这一定是由于加速度计唤醒而发生的。因此,如果我禁用加速度计本身,那么这个问题就会消失。
所以,我提出一个替代问题:如何禁用加速度计?
我应该能够使用 卸载相关传感器的内核模块modprobe -r module_name
,但是我陷入了 Catch-22 的情况。它们似乎都相互依赖,有些还具有未列出的依赖关系。以下是重要传感器的列表:
$ lsmod | grep sensor
Module Size Used by
hid_sensor_accel_3d 20480 1
hid_sensor_gyro_3d 20480 0
hid_sensor_magn_3d 20480 1
hid_sensor_custom_intel_hinge 16384 0
hid_sensor_rotation 20480 0
hid_sensor_incl_3d 20480 0
hid_sensor_trigger 20480 12 hid_sensor_gyro_3d,hid_sensor_custom_intel_hinge,hid_sensor_incl_3d,hid_sensor_accel_3d,hid_sensor_magn_3d,hid_sensor_rotation
industrialio_triggered_buffer 16384 1 hid_sensor_trigger
hid_sensor_iio_common 24576 7 hid_sensor_gyro_3d,hid_sensor_trigger,hid_sensor_custom_intel_hinge,hid_sensor_incl_3d,hid_sensor_accel_3d,hid_sensor_magn_3d,hid_sensor_rotation
industrialio 102400 11 industrialio_triggered_buffer,hid_sensor_gyro_3d,hid_sensor_trigger,hid_sensor_custom_intel_hinge,hid_sensor_incl_3d,kfifo_buf,hid_sensor_accel_3d,hid_sensor_magn_3d,hid_sensor_rotation
hid_sensor_custom 28672 0
hid_sensor_hub 28672 9 hid_sensor_gyro_3d,hid_sensor_trigger,hid_sensor_iio_common,hid_sensor_custom_intel_hinge,hid_sensor_incl_3d,hid_sensor_accel_3d,hid_sensor_magn_3d,hid_sensor_rotation,hid_sensor_custom
hid 155648 7 i2c_hid,wacom,usbhid,hid_multitouch,hid_sensor_hub,intel_ishtp_hid,hid_generic
一些传感器在“使用者”列中列出了一个数字(但没有具体说明哪个模块正在使用它们)。因此,卸载它们失败。hid_sensor_accel_3d
我希望卸载这样一个传感器。但做不到!
答案1
现在的问题是“如何禁用内核模块”,我将回答它:
- 您将写入文件 -
/etc/modprobe.d/blacklist.conf
第一个选项:
- 在单独的行上键入
blacklist hid_sensor_accel_3d
第二个选项:
如果重新启动后黑名单模块仍然存在,那么您需要对该模块进行“假”安装。您可以使用 检查它lsmod
。
- 在单独的行上键入
install hid_sensor_accel_3d /bin/true
接下来这两个选项都要做:
- 重新生成 initramfs -
update-initramfs -u
- 重启