/etc/acpid/事件/ac

/etc/acpid/事件/ac

我有一台安装了 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 权限。

解决该问题的一种方法是通过管道传输echotee

因此命令如下echo enabled | sudo tee /sys/bus/usb/devices/1-9/power/wakeup

看看这是否能解决权限错误。如果出现另一个错误,请相应地更新您的问题。

相关内容