我有一台安装了 kubuntu 22.04 的 Asus E410KA。我还连接了一台 USB 打印机。我希望在打开打印机时能够唤醒笔记本电脑。在安装了 Ubuntu 16.04 的旧笔记本电脑上,我通过运行带有“echo enabled /sys/bus/usb/devices/usb1/power/wakeup”的脚本实现了此目的。在这台新笔记本电脑上,我什么也没得到。
/sys/bus/usb/devices/*/power/wakeup 命令
/sys/bus/usb/设备/1-8/power/唤醒:已禁用
/sys/bus/usb/devices/usb1/power/wakeup:已禁用
/sys/bus/usb/devices/usb2/power/wakeup:已禁用
在 lsusb 上打印机是总线 001 设备 009
在 grep . /sys/bus/usb/devices/*/product 上,打印机是/sys/bus/usb/设备/1-1/
尝试 sudo echo enabled > /sys/bus/usb/devices/1-9/power/wakeup 会出现权限错误
如果我将鼠标放在同一个物理端口上,它将唤醒计算机;它显示为已启用唤醒。
那么 22.04 中有什么变化或者您知道什么解决方法?
谢谢 Naim
编辑:
naim@asus-printer:~$ lsusb
总线 002 设备 001:ID 1d6b:0003 Linux Foundation 3.0 根集线器
总线 001 设备 004:ID 8087:0aaa Intel Corp. 蓝牙 9460/9560 Jefferson Peak (JfP)
总线 001 设备 003:ID 322e:2113 松翰科技有限公司 USB2.0 VGAUVC WebCam
总线 001 设备 006:ID 046d:c52b Logitech, Inc. Unifying 接收器
总线 001 设备 005:ID 0482:04fb Kyocera Corp. FS-1041
总线 001 设备 001:ID 1d6b:0002 Linux Foundation 2.0 根集线器
naim@asus-printer:~$ grep . /sys/bus/usb/devices/*/product
/sys/bus/usb/设备/1-1/产品:FS-1041
/sys/bus/usb/devices/1-3/product:USB 接收器
/sys/bus/usb/devices/1-4/product:USB2.0 VGAUVC 网络摄像头
/sys/bus/usb/devices/usb1/product:xHCI 主机控制器
/sys/bus/usb/devices/usb2/product:xHCI 主机控制器
naim@asus-printer:~$ grep . /sys/bus/usb/devices/*/power/wakeup
/sys/bus/usb/设备/1-3/power/唤醒:已禁用
/sys/bus/usb/devices/1-8/power/wakeup:已启用
/sys/bus/usb/devices/usb1/power/wakeup:已禁用
/sys/bus/usb/devices/usb2/power/wakeup:已禁用
注意 1:如果我启用 /sys/bus/usb/devices/usb1/power/wakeup,那么当我让系统进入睡眠状态(挂起到内存)时,它会进入睡眠状态并在几秒钟内唤醒(即使没有连接任何 USB 设备)。因此,启用所有 /sys/bus/usb/devices/... 不起作用。注意 2:系统会在鼠标(Logitech MX Anywhere 2)移动时从睡眠状态唤醒(无论它插入哪个 USB 端口)。
现在,如果有办法让它在 ac_power 打开时唤醒(例如笔记本电脑在没有 ac_power 时应进入睡眠模式,并在 ac_power 重新打开时唤醒),我不一定热衷于让它在打印机打开时唤醒,也许需要对 acpi/acpid 进行一些修改... 我真的不知道。我在 /usr/share/doc/acpid/examples/ac [和 ac.sh] 中找到了一些东西,但我不知道如何(至少尝试)让它工作。
ac文件的内容:
/etc/acpid/事件/ac
它检测交流电源状态的变化,并将其传递给
/etc/acpi/ac.sh 进行进一步处理。
您也可以指定占位符 %e。它将传递
通过整个内核事件消息传递给程序
指定的。
事件 = ac_adapter 操作 = /etc/acpi/ac.sh
ac.sh 的内容:#!/bin/sh
/etc/acpid/ac.sh
检测交流电丢失和恢复,并采取行动
适当地。
在我的笔记本电脑上,这个脚本不会获得不同的参数
断电和恢复供电。因此,我必须使用一个单独的程序来
告诉适配器状态是什么。
这使用 spicctrl 程序来探测 sonypi 设备。
背光=$(spicctrl -B)
if on_ac_power; then # 现在接通交流电源。
# Tell longrun to go crazy.
longrun -f performance
longrun -s 0 100
# Turn up the backlight unless it's up far enough.
if [ "$BACKLIGHT" -lt 108 ]; then
spicctrl -b 108
fi
else # 现在关闭交流电源。
# Tell longrun to be a miser.
longrun -f economy
longrun -s 0 50 # adjust to suite..
# Don't allow the screen to be too bright, but don't turn the
# backlight _up_ on removal, and don't turn it all the way down, as
# that is unusable on my laptop in most conditions. Adjust to
# taste.
if [ "$BACKLIGHT" -gt 68 ]; then
spicctrl -b 68
fi
菲
自从我首次就此事发帖以来,我清除了 Kubuntu,安装了 Slackware_15-64,花了大约 6 个小时才将电池充电至 60%(这很重要),并保持这种状态,直到重新启动才发现,天啊,我无法通过本地网络共享打印机(kyocera FS-1041),因此任何人都可以通过 Android 手机打印。然后我清除了 slackware 并重新安装了 Kubuntu 22.04,试图让它按预期工作。至少现在我可以在笔记本电脑开机时打印。
任何帮助深表感谢
答案1
echo
无法使用 sudo 权限。
解决该问题的一种方法是通过管道传输echo
到tee
。
因此命令如下echo enabled | sudo tee /sys/bus/usb/devices/1-9/power/wakeup
看看这是否能解决权限错误。如果出现另一个错误,请相应地更新您的问题。