在筆記型電腦或是使用藍牙裝置時,系統上面都會有電源供應的資訊。
只要在 /sys/devices 底下找尋 power_supply 的目錄就可以找到。
如下所示:
u@u:/sys/devices$ find -name power_supply | while read path; do ls -l $(dirname $path); done total 0 lrwxrwxrwx 1 root root 0 Jul 31 17:42 driver -> ../../../../../../../../../../bus/hid/drivers/apple drwxr-xr-x 3 root root 0 Jul 31 17:38 hidraw -r--r--r-- 1 root root 4096 Jul 31 17:42 modalias drwxr-xr-x 2 root root 0 Jul 31 17:39 power drwxr-xr-x 3 root root 0 Jul 31 17:39 power_supply -r--r--r-- 1 root root 4096 Jul 31 17:42 report_descriptor lrwxrwxrwx 1 root root 0 Jul 31 17:38 subsystem -> ../../../../../../../../../../bus/hid -rw-r--r-- 1 root root 4096 Jul 31 17:38 uevent total 0 lrwxrwxrwx 1 root root 0 Jul 31 17:42 driver -> ../../../../../../../../../../bus/hid/drivers/magicmouse drwxr-xr-x 3 root root 0 Jul 31 17:39 hidraw -r--r--r-- 1 root root 4096 Jul 31 17:42 modalias drwxr-xr-x 2 root root 0 Jul 31 17:39 power drwxr-xr-x 3 root root 0 Jul 31 17:39 power_supply -r--r--r-- 1 root root 4096 Jul 31 17:42 report_descriptor lrwxrwxrwx 1 root root 0 Jul 31 17:39 subsystem -> ../../../../../../../../../../bus/hid -rw-r--r-- 1 root root 4096 Jul 31 17:39 uevent total 0 lrwxrwxrwx 1 root root 0 Jul 31 17:42 driver -> ../../../../../../bus/acpi/drivers/battery -r--r--r-- 1 root root 4096 Jul 31 17:42 hid -r--r--r-- 1 root root 4096 Jul 31 17:42 modalias -r--r--r-- 1 root root 4096 Jul 31 17:42 path drwxr-xr-x 2 root root 0 Jul 31 17:39 power drwxr-xr-x 3 root root 0 Jul 31 17:36 power_supply lrwxrwxrwx 1 root root 0 Jul 31 17:36 subsystem -> ../../../../../../bus/acpi -rw-r--r-- 1 root root 4096 Jul 31 17:36 uevent total 0 lrwxrwxrwx 1 root root 0 Jul 31 17:42 driver -> ../../../../../../bus/acpi/drivers/ac -r--r--r-- 1 root root 4096 Jul 31 17:42 hid -r--r--r-- 1 root root 4096 Jul 31 17:42 modalias -r--r--r-- 1 root root 4096 Jul 31 17:42 path drwxr-xr-x 2 root root 0 Jul 31 17:39 power drwxr-xr-x 3 root root 0 Jul 31 17:36 power_supply lrwxrwxrwx 1 root root 0 Jul 31 17:36 subsystem -> ../../../../../../bus/acpi -rw-r--r-- 1 root root 4096 Jul 31 17:36 uevent
所以可以從 driver 這個 symbolic link 看出每個電源供應是屬於哪些裝置。
另外也可以使用指令來監測 udev 裡面關於 power_supply 的訊息。
如下所示:
u@u:~$ udevadm monitor --subsystem-match=power_supply monitor will print the received events for: UDEV - the event which udev sends out after rule processing KERNEL - the kernel uevent KERNEL[65.358427] change /devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1:1.0/bluetooth/hci0/hci0:13/0005:05AC:030D.0002/power_supply/hid-AB:CD:EF:12:34:56-battery (power_supply) UDEV [65.398449] change /devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1:1.0/bluetooth/hci0/hci0:13/0005:05AC:030D.0002/power_supply/hid-AB:CD:EF:12:34:56-battery (power_supply) KERNEL[81.032204] change /devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0c/PNP0C0A:00/power_supply/BAT1 (power_supply) UDEV [81.033615] change /devices/LNXSYSTM:00/device:00/PNP0A08:00/device:0c/PNP0C0A:00/power_supply/BAT1 (power_supply)
最後就是 Freedesktop 有一個 UPower 專案,專門用來提供底層電源資訊的介面給桌面應用程式來使用。
如果是在 GNOME 桌面環境底下就是 gnome-settings-daemon 與 gnome-power-manager 透過 DBus 來使用 UPower 以提供圖形介面給桌面使用者使用。