- ElmorLabs PMD2
- HardKernel Smart Power 3
- HardKernel Smart Power
- Libraries for low-level meter access
- Next steps
Depending on your system settings, small configuration may be required to grant access to the device drivers / device files.
First, you need to acquire hardware that is supported by the software. Otherwise, you will need to create the required bridge code for that piece of hardware.
ElmorLabs PMD2

ElmorLabs PMD2 is one of the supported meters. It is a special device that sits between an ATX power supply and the motherboard and/or PCI express devices.
Some distributions do not enable device access by default for ordinary users. We show how you can configure the device file permissions. Again the instructions assume a rather ordinary configuration without any complex distributed corporate security scheme (e.g. Kerberos / LDAP).
TTY permissions
The ElmorLabs PMD2 meter is a USB UART device and may require adding the user to a specific UART / serial group unless you are executing the application as root (which is not recommended as it is highly insecure).
Add the user to the relevant groups:
$ sudo usermod -a -G uucp username
$ sudo usermod -a -G dialout username
$ sudo usermod -a -G lock username
$ sudo usermod -a -G tty username
$ sudo usermod -a -G uucp username
$ sudo usermod -a -G dialout username
$ sudo usermod -a -G lock username
$ sudo usermod -a -G tty username
$ sudo usermod -a -G uucp username
$ sudo usermod -a -G dialout username
$ sudo usermod -a -G lock username
$ sudo usermod -a -G tty username
HardKernel Smart Power 3

This product has been phased out and cannot be bought from the official store anymore.
HardKernel Smart Power 3 is one of the supported meters. The meter supports a wide range of single board computers and other small devices. With the default power supply, it can provide up to 19V / 3A of power. Some devices have a peak current draw of over 3A, so those are not compatible.
A firmware update may be required because different firmware versions may produce different log output. More recent versions may also fix possible bugs.
Some distributions do not enable device access by default for ordinary users. We show how you can configure the device file permissions. Again the instructions assume a rather ordinary configuration without any complex distributed corporate security scheme (e.g. Kerberos / LDAP).
Firmware update
HardKernel SmartPower 3 devices sold by HardKernel (limited availability in 2026) may not come with the latest firmware installed. We provide a copy of the firmware image here.
$ sha256sum smartpower3-firmware-20230518.img
7d513e1c2155a5409547fe7a29812258d7416e72f7893d914723969fcd5210f0
To update the firmware, connect the meter to your PC using a USB-C - USB-C or USB-C - USB-A cable. You will need to install the esptool application. For example, Arch Linux users can simply run:
# (from the testing repo)
$ sudo apk add esptool
$ sudo pacman -S esptool
$ sudo apt install esptool
Explore the device's menu and set up a matching bit rate for communication. Higher bit rates are more prone to errors. If you have a good quality cable, you can enable the highest rate, 921600 bps. Use the same bit rate for esptool. Next, execute the following command:
$ ls /dev/ttyUSB*
/dev/ttyUSB0
$ esptool.py -p /dev/ttyUSB0 -b 921600 write_flash 0 smartpower3-firmware-20230518.img
Note that the previous command assumes that the device is shown as /dev/ttyUSB0 and that the firmware is located in the current work directory. If you have multiple meters, in case you don't know how to distinguish between the devices, consider connecting only a single device simultaneously during the firmware upgrade process.
Once the firmware has been updated, there should be no issues having multiple devices connected. Also, please note that the order of devices might change after a reboot. We found that at least on Linux, connecting all the devices to the same USB hub should provide a stable device enumeration, but YMMV.
TTY permissions
The Smart Power 3 meter is a USB UART device and may require adding the user to a specific UART / serial group unless you are executing the application as root (which is not recommended as it is highly insecure).
Add the user to the relevant groups:
$ sudo usermod -a -G uucp username
$ sudo usermod -a -G dialout username
$ sudo usermod -a -G lock username
$ sudo usermod -a -G tty username
$ sudo usermod -a -G uucp username
$ sudo usermod -a -G dialout username
$ sudo usermod -a -G lock username
$ sudo usermod -a -G tty username
$ sudo usermod -a -G uucp username
$ sudo usermod -a -G dialout username
$ sudo usermod -a -G lock username
$ sudo usermod -a -G tty username
HardKernel Smart Power

This product has been phased out and cannot be bought from the official store anymore.
HardKernel Smart Power is one of the supported meters. The device can be accessed with the USB HID RAW drivers.
Some distributions do not enable device access by default for ordinary users. We show how you can configure the device file permissions. Again the instructions assume a rather ordinary configuration without any complex distributed corporate security scheme (e.g. Kerberos / LDAP).
Udev rules
The original HardKernel SmartPower meter is a USB HID RAW device and may require a configuration rule unless you are executing the application as root (which is not recommended as it is highly insecure).
To add the udev rule, create a new file /etc/udev/rules.d/14-smartpower.rules with the following contents:
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="003f", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="003f", MODE="0666"
Next, run the following command to reload the configuration (otherwise you'd need to reboot to activate the new settings):
$ sudo udevadm control -R
$ sudo udevadm trigger
Libraries for low-level meter access
The application requires libraries for communicating with certain pieces of hardware. Although the application contains drivers that are specific to the measurement hardware, these drivers still depend on lower level system libraries. Without these libraries the meters cannot be detected or used.
The following commands will install the hidapi package for accessing USB HID devices:
$ sudo apk add hidapi-dev liburing-dev
$ sudo pacman -S hidapi liburing
$ sudo apt install libhidapi-dev liburing-dev
Next steps
Next, if you want to set up MQTT or additional HTTP clients for communicating with PowerGoblin, see the next subsection.
On the other hand, if you wish to learn more about the configuration options for PowerGoblin, see this subsection instead.

