Tested on CachyOS (Arch based) with nRF Connect for Desktop, the Power Profiler app, a Power Profiler Kit II (PPK2) and an nRF9151 DK. Last updated September 2026.
The Nordic Power Profiler Kit II (PPK2) works fine on Arch based distros, but nRF Connect for Desktop does not set up the system for you the way the Windows installer does. Out of the box you will hit two problems:
No device setup found.Both are fixed with two AUR packages and a set of udev rules. This page covers the fix, how to verify it, how to wire the PPK2 to an nRF9151 DK, and the usual gotchas in the Power Profiler app.
nRF Connect for Desktop uses Nordic's nrfutil device layer to enumerate every device, and that layer loads SEGGER's libjlinkarm.so at startup. If the library is missing, the app refuses to continue, even for a PPK2 (which is a plain USB CDC device, VID:PID 1915:c00a).
paru -S jlink-software-and-documentation
yay works the same way. Check that the loader can find the library:
ldconfig -p | grep jlinkarm
It should point somewhere under /opt/SEGGER/JLink. If nothing comes back, add that directory to the loader path:
echo /opt/SEGGER/JLink | sudo tee /etc/ld.so.conf.d/segger-jlink.conf
sudo ldconfig
Without udev rules, the raw USB node of the PPK2 is only readable by root. The app can see the device exists but cannot read its device info, so it falls back to family: Unknown and gives up. The app also checks for the rules by name and logs Required component nrf-udev is not detected when they are missing.
paru -S nrf-udev
Then check where the rules actually landed:
ls /usr/lib/udev/rules.d/*nrf* /etc/udev/rules.d/*nrf* 2>/dev/null
The AUR package can install them under /usr/lib/udev/rules.d, while the nrfutil component check looks in /etc/udev/rules.d. If they are not in /etc/udev/rules.d, create them by hand.
/etc/udev/rules.d/71-nrf.rules:
ACTION!="add", SUBSYSTEM!="usb_device", GOTO="nrf_rules_end"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1915", MODE="0666"
KERNEL=="ttyACM[0-9]*", SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1915", MODE="0666", ENV{NRF_CDC_ACM}="1"
LABEL="nrf_rules_end"
/etc/udev/rules.d/99-mm-nrf-blacklist.rules:
ENV{NRF_CDC_ACM}=="1", ENV{ID_MM_CANDIDATE}="0", ENV{ID_MM_DEVICE_IGNORE}="1"
The first file makes every Nordic USB device (vendor 1915) read-write for all users and tags its serial ports. The second file tells ModemManager to leave those ports alone. This matters: ModemManager probes every new ttyACM device and will open the PPK2's port during exactly the window when the app is trying to talk to it.
The AUR package does not reload udev for you:
sudo udevadm control --reload-rules && sudo udevadm trigger
Then physically unplug and replug the PPK2. Reloading rules does not change the permissions of a device node that already exists. Finally, quit nRF Connect for Desktop completely and start it again.
Confirm the PPK2 is on the bus and running its normal firmware:
lsusb -d 1915:
1915:c00a is the PPK2 in normal mode. If you see 1915:521f, it booted into the Open DFU bootloader instead; power cycle it without holding the button.
Check the permissions on its USB node, using the bus and device numbers from the lsusb output (for example Bus 003 Device 012):
ls -l /dev/bus/usb/003/012
You want crw-rw-rw-. If it shows crw-rw-r-- owned by root, the rules did not apply: go back to step 3.
In the Power Profiler app log, the startup lines should no longer mention nrf-udev or J-Link, and selecting the device should succeed.
The nRF9151 DK is easier than the nRF52 DKs: nothing needs to be cut. SB34 is open by default, and the SiP is powered through a jumper on header P22. Remove that jumper to disconnect the nRF9151 from the DK's supply. To go back to normal operation, put the jumper back.
The PPK2 terminal block is labelled GND / VOUT / VIN / GND.
The PPK2 powers the nRF9151 SiP directly and measures everything it draws.
| PPK2 | nRF9151 DK |
|---|---|
| VOUT | P22, SiP side pin (VDD_nRF) |
| GND | any DK ground pin |
USB POWER ONLY port. Nordic recommends it whenever the DUT can draw more than 400 mA, and LTE transmit bursts will get there.The DK's own 5 V rail keeps powering the SiP and the PPK2 sits in series, in place of the jumper.
| PPK2 | nRF9151 DK |
|---|---|
| VIN | P22, supply side pin (the other leg of the jumper) |
| VOUT | P22, SiP side pin (VDD_nRF) |
| GND | any DK ground pin |
The PPK2 logic port (D0 to D7) can sample DK GPIOs so you can line up current spikes with your code. Connect the logic port VCC and GND to the DK's GPIO supply and ground. The nRF9151 GPIO domain defaults to 1.8 V, which is inside the PPK2's 1.65 V to 5.5 V range but close to the bottom, so keep the leads short.
The output shows 0 V. In Ampere Meter mode the PPK2 never sources anything: VIN is passed straight through to VOUT. In Source Meter mode, picking the mode and setting the voltage is not enough: the power output toggle has to be switched on, and it is separate from the Start button. Order: select Source Meter -> set voltage -> enable power output -> start sampling.
It reads 75 nA with nothing connected. That is normal. The PPK2 is only accurate down to about 200 nA, so a few tens of nanoamps on an open circuit is its own offset and noise.
Noisy sleep current floor. Nordic recommends not powering the DK from USB for low current measurements because of USB supply noise. Feed the DK through the VIN 5V pin on header P20 from a bench supply instead.
Slow or laggy plots. Plug the PPK2 directly into the PC, not through a USB hub or dock.
| Symptom | Cause | Fix |
|---|---|---|
| App says SEGGER J-Link is missing | libjlinkarm.so not installed or not on the loader path |
Step 1 |
Required component nrf-udev is not detected |
udev rules missing or not in /etc/udev/rules.d |
Step 2 |
No device setup found, family: Unknown |
No permission on the raw USB node | Steps 2 and 3, then verify with step 4 |
Device shows as 1915:521f |
PPK2 is in the DFU bootloader | Power cycle without holding the button |
| Port busy or disappears right after plugging in | ModemManager grabbed the ttyACM port |
99-mm-nrf-blacklist.rules from step 2 |
| 0 V on VOUT | Ampere Meter mode, or power output not enabled | Section 6 |