新聞中心
隨著科技的不斷發(fā)展,USB設(shè)備已經(jīng)成為了我們家庭或辦公室中不可或缺的設(shè)備之一。USB設(shè)備給我們的生活帶來了很多便利,如鼠標(biāo)、鍵盤、攝像頭、打印機(jī)、外置硬盤等等。在Linux中,當(dāng)我們連接USB設(shè)備到計算機(jī)上時,計算機(jī)將自動檢測并安裝驅(qū)動程序,然后開始與設(shè)備進(jìn)行通訊。然而,有些時候我們需要在計算機(jī)休眠或關(guān)機(jī)時,通過USB設(shè)備來激活計算機(jī)。這時,就需要我們學(xué)習(xí)如何使用。

一、了解USB設(shè)備的休眠模式
USB設(shè)備在連到計算機(jī)的情況下有3種狀態(tài): 運(yùn)行、掛起、休眠。在Linux中,一般情況下,USB設(shè)備默認(rèn)為掛起狀態(tài),這是為了降低設(shè)備的功耗。當(dāng)設(shè)備長時間不使用時,由于計算機(jī)會自動將設(shè)備掛起,而設(shè)備進(jìn)入休眠狀態(tài)。在USB設(shè)備進(jìn)入休眠狀態(tài)后,它的電源將被斷開,因此將無法通過USB設(shè)備喚醒計算機(jī)。
二、使用USB_WAKEUP
USB_WAKEUP是Linux內(nèi)核中用來解決USB設(shè)備斷電喚醒機(jī)制的一個程序,主要用于在休眠狀態(tài)下通過USB設(shè)備喚醒計算機(jī)。在開啟USB_WAKEUP功能之前需要進(jìn)行如下操作:
1. 使用工具lsu查看USB設(shè)備的相關(guān)信息;
2. 根據(jù)設(shè)備廠商與型號獲取設(shè)備的venderid與productid;
3. 使用命令sudo modprobe uas_uhci rescan=1讓USB設(shè)備重載。
在確定相關(guān)信息后,可以使用如下命令開啟USB_WAKEUP功能:
sudo sh -c ‘for i in /sys/bus/u/devices/*/power/wakeup; do echo enabled > $i; done’
當(dāng)需要關(guān)閉USB_WAKEUP功能時,只需執(zhí)行以下命令即可:
sudo sh -c ‘for i in /sys/bus/u/devices/*/power/wakeup; do echo disabled > $i; done’
三、編寫udev規(guī)則
udev是Linux下的一種驅(qū)動管理機(jī)制,它允許用戶通過udev規(guī)則控制設(shè)備的屬性和行為,包括USB設(shè)備聯(lián)機(jī)與斷電。為了讓USB設(shè)備在斷電時能夠喚醒計算機(jī),需要在Linux下創(chuàng)建一個udev規(guī)則。
1. 打開/etc/udev/rules.d目錄;
2. 使用文本編輯器創(chuàng)建一個以50-u-wakeup.rules命名的文件,輸入以下內(nèi)容:
ACTION==”add”, SUBSYSTEM==”u”, ATTRS{idVendor}==”1234″ , ATTRS{idProduct}==”abcd”, RUN+=”/bin/sh -c ‘echo enabled > %S%p/power/wakeup'”
此值中的idVendor與idProduct是USB設(shè)備的veniderid與productid,需要將它們改為實際設(shè)備的具體信息。
3. 使用命令sudo udevadm control –reload-rules重載udev規(guī)則。
通過以上步驟,USB設(shè)備就可以通過斷電喚醒計算機(jī)了。
四、測試效果
使用udev規(guī)則來控制USB設(shè)備的斷電喚醒機(jī)制,理論上可以在任何時候使用USB設(shè)備來喚醒計算機(jī)。這是因為在Linux中,當(dāng)USB設(shè)備連接上計算機(jī)時,udev規(guī)則會自動與內(nèi)核進(jìn)行交互,以實現(xiàn)USB設(shè)備的連接和斷開。為了確保這種方法的可行性,可以在計算機(jī)還沒有進(jìn)入休眠狀態(tài)時進(jìn)行測試,測試效果如下:
1. 連接USB設(shè)備到計算機(jī)上;
2. 輸入命令sudo systemctl suspend讓計算機(jī)進(jìn)入休眠狀態(tài);
3. 使用USB設(shè)備進(jìn)行測試,觀察計算機(jī)是否能在之一時間喚醒。
在測試中,如果計算機(jī)能夠在之一時間喚醒,說明USB設(shè)備的斷電喚醒機(jī)制已經(jīng)成功地解決了這個問題。
在Linux中使用USB設(shè)備進(jìn)行斷電喚醒計算機(jī),可以帶來很大的便利,尤其是在需要靈活控制自己計算機(jī)的時候。不過,在使用USB設(shè)備斷電喚醒機(jī)制之前,需要注意設(shè)備是否支持該功能,可以通過查詢設(shè)備的官方說明或使用其他工具進(jìn)行測試。此外,還需要在操作系統(tǒng)中啟用USB_WAKEUP功能并編寫udev規(guī)則,以實現(xiàn)自動控制USB設(shè)備的聯(lián)機(jī)和斷電。在以上過程中需要保證操作的正確性與穩(wěn)定性,以避免對計算機(jī)造成不必要的影響。
相關(guān)問題拓展閱讀:
- linux 下 USB的熱插拔問題?
linux 下 USB的熱插拔問題?
目前一些主流桌面系統(tǒng)(如Gnome,KDE,Xfce)的較新版本都支持自動掛載(mount)U盤了. 一個流傳很廣的說法是 HAL(硬件抽象層) 起了自動掛載的作用, 其實這是誤解. 對于2.6內(nèi)核而言, udev 才是直接從內(nèi)核接收設(shè)備連接或斷開信息的主體.
udev 從內(nèi)核得到信息后,根據(jù)一些簡單規(guī)則(注意,是簡單規(guī)則), 在 /dev 目錄下創(chuàng)建相應(yīng)的設(shè)備節(jié)點, 并進(jìn)行某些相關(guān)操作. HAL 所做的事情是在 udev 的規(guī)則中加上一條(或幾條), 讓 udev 把收到的信息也傳遞給 HAL. 接派顫裂下來, HAL 用更為復(fù)雜的規(guī)則來匹配和描述當(dāng)前連接著的硬件. 舉一個簡單的例子, udev 知道的是U盤已經(jīng)連接了并且有一個分區(qū); 而 HAL 能更進(jìn)一步知道這個分區(qū)的卷標(biāo)名及其它一些信息.
上面這些都還不能自動掛載U盤. Gnome 等桌面系統(tǒng)會啟動一個守護(hù)進(jìn)程(daemon), 通過 D-Bus 從 HAL 那里得到硬件信息, 如果發(fā)現(xiàn)有U盤連接了就由它們來掛載它(實際是調(diào)用 pmount).
問題是, 如果你不想用Gnome,KDE,Xfce這些桌面系統(tǒng), 那么由它們提供的U盤自動掛載功能也洞鄭就失效了,有解決辦法么?
解決的辦法之一, 便是讓 udev 來干這件事情!
udev 的主要功能是實時地在 /dev 目錄下創(chuàng)建和刪除設(shè)備節(jié)點, 但它也能在創(chuàng)建節(jié)點的同時, 執(zhí)行一個額外地程序. 具體的原理這里就不詳說了, 有時間請仔細(xì)閱讀 Writing udev rules 這篇文章. 寫規(guī)則時特別注意 KERNEL, SUBSYSTEM 等這些關(guān)鍵字單數(shù)和復(fù)數(shù)(最后有沒有’S’)的區(qū)別. 復(fù)數(shù)(比如 KERNELS)表示你想用父設(shè)備的屬性來匹配, 單數(shù)(比如 KERNEL)是要匹配設(shè)備本身的屬性.
在 /etc/udev/rules.d 目錄下創(chuàng)建文件 10_ukey.rules, 其內(nèi)容如下
KERNEL==”sda1″, SUBSYSTEM==”block”, RUN+=”/root/umount.sh”
然后, 在 /root 目錄中創(chuàng)建文件 umount.sh, 其內(nèi)容為
#!/bin/bash
LOG=/var/log/u-hotplug.log
lap=$(date –rfc-3339=ns)
echo “$lap: $DEVPATH requesting $ACTION” >> $LOG
if
then
mount -t vfat -o umask=000,noatime,async,codepage=936,iocharset=gb2312 \
/dev/sda1 /media/ukey
elif
then
umount -l /media/ukey
fi
并把該文件屬性設(shè)置為可執(zhí)行, chmod a+x umount.sh
注意, 如果你的 linux 上 locale 是 zh_CN.utf-8, 需要把上面的 iocharset=gb2312 改成 iocharset=utf8
最后創(chuàng)建目塵閉錄, mkdir /media/ukey
這是一個非常簡單但可用的例子. U盤插上后自動 mount 到 /media/ukey , 拔出后自動 umount. 你可以查看 /var/log/u-hotplug.log , 里面會有些簡單的調(diào)用記錄.
關(guān)于linux u 斷電 wakeup的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
本文名稱:LinuxUSB斷電喚醒技巧(linuxu斷電wakeup)
分享路徑:http://m.5511xx.com/article/cdhsips.html


咨詢
建站咨詢
