共 1 篇文章

标签:Linux USB断电唤醒技巧 (linux u 断电 wakeup)

Linux USB断电唤醒技巧 (linux u 断电 wakeup)

随着科技的不断发展,USB设备已经成为了我们家庭或办公室中不可或缺的设备之一。USB设备给我们的生活带来了很多便利,如鼠标、键盘、摄像头、打印机、外置硬盘等等。在Linux中,当我们连接USB设备到计算机上时,计算机将自动检测并安装驱动程序,然后开始与设备进行通讯。然而,有些时候我们需要在计算机休眠或关机时,通过USB设备来激活计算机。这时,就需要我们学习如何使用。 一、了解USB设备的休眠模式 USB设备在连到计算机的情况下有3种状态: 运行、挂起、休眠。在Linux中,一般情况下,USB设备默认为挂起状态,这是为了降低设备的功耗。当设备长时间不使用时,由于计算机会自动将设备挂起,而设备进入休眠状态。在USB设备进入休眠状态后,它的电源将被断开,因此将无法通过USB设备唤醒计算机。 二、使用USB_WAKEUP USB_WAKEUP是Linux内核中用来解决USB设备断电唤醒机制的一个程序,主要用于在休眠状态下通过USB设备唤醒计算机。在开启USB_WAKEUP功能之前需要进行如下操作: 1. 使用工具lsu查看USB设备的相关信息; 2. 根据设备厂商与型号获取设备的venderid与productid; 3. 使用命令sudo modprobe uas_uhci rescan=1让USB设备重载。 在确定相关信息后,可以使用如下命令开启USB_WAKEUP功能: sudo sh -c ‘for i in /sys/bus/u/devices/*/power/wakeup; do echo enabled > $i; done’ 当需要关闭USB_WAKEUP功能时,只需执行以下命令即可: sudo sh -c ‘for i in /sys/bus/u/devices/*/power/wakeup; do echo disabled > $i; done’ 三、编写udev规则 udev是Linux下的一种驱动管理机制,它允许用户通过udev规则控制设备的属性和行为,包括USB设备联机与断电。为了让USB设备在断电时能够唤醒计算机,需要在Linux下创建一个udev规则。 1. 打开/etc/udev/rules.d目录; 2. 使用文本编辑器创建一个以50-u-wakeup.rules命名的文件,输入以下内容: ACTION==”add”, SUBSYSTEM==”u”, ATTRS{idVendor}==”1234″ , ATTRS{idProduct}==”abcd”, RUN+=”/bin/sh -c ‘echo enabled > %S%p/power/wakeup’” 此值中的idVendor与idProduct是USB设备的veniderid与productid,需要将它们改为实际设备的具体信息。 3. 使用命令sudo udevadm control –reload-rules重载udev规则。 通过以上步骤,USB设备就可以通过断电唤醒计算机了。 四、测试效果 使用udev规则来控制USB设备的断电唤醒机制,理论上可以在任何时候使用USB设备来唤醒计算机。这是因为在Linux中,当USB设备连接上计算机时,udev规则会自动与内核进行交互,以实现USB设备的连接和断开。为了确保这种方法的可行性,可以在计算机还没有进入休眠状态时进行测试,测试效果如下: 1. 连接USB设备到计算机上; 2. 输入命令sudo systemctl suspend让计算机进入休眠状态; 3. 使用USB设备进行测试,观察计算机是否能在之一时间唤醒。 在测试中,如果计算机能够在之一时间唤醒,说明USB设备的断电唤醒机制已经成功地解决了这个问题。 在Linux中使用USB设备进行断电唤醒计算机,可以带来很大的便利,尤其是在需要灵活控制自己计算机的时候。不过,在使用USB设备断电唤醒机制之前,需要注意设备是否支持该功能,可以通过查询设备的官方说明或使用其他工具进行测试。此外,还需要在操作系统中启用USB_WAKEUP功能并编写udev规则,以实现自动控制USB设备的联机和断电。在以上过程中需要保证操作的正确性与稳定性,以避免对计算机造成不必要的影响。 相关问题拓展阅读: linux 下 USB的热插拔问题? linux 下 USB的热插拔问题? 目前一些主流桌面系统(如Gnome,KDE,Xfce)的较新版本都支持自动挂载(mount)U盘了. 一个流传很广的说法是 HAL(硬件抽象层) 起了自动挂载的作用, 其实这是误解. 对于2.6内核而言, udev 才是直接从内核接收设备连接或断开信息的主体. udev 从内核得到信息后,根据一些简单规则(注意,是简单规则), 在 /dev 目录下创建相应的设备节点, 并进行某些相关操作. HAL 所做的事情是在 udev 的规则中加上一条(或几条), 让 udev 把收到的信息也传递给 HAL. 接派颤裂下来, HAL 用更为复杂的规则来匹配和描述当前连接着的硬件. 举一个简单的例子, udev 知道的是U盘已经连接了并且有一个分区; 而 HAL 能更进一步知道这个分区的卷标名及其它一些信息. 上面这些都还不能自动挂载U盘. Gnome 等桌面系统会启动一个守护进程(daemon),...

技术分享