-
Notifications
You must be signed in to change notification settings - Fork 265
NanoKVM-PCIe: "Power" button in web UI does not trigger POWER header #785
Description
Hardware
- NanoKVM-PCIe (ETH only, no WiFi/PoE)
- Firmware: v2.3.6
- Image: 2025-04-17-14-21-98d17d.img
- Board model (from /proc/device-tree/model): LicheeRv Nano
- Serial/revision: 3105D
- Ethernet chip: CND-tek B1603S
Problem
Clicking "Power (short click)" in the web UI does not power on or off the host. The physical case power button works correctly via passthrough. The power LED icon in the web UI shows green even when the host is powered off.
This appears to be related to #72.
Diagnostic findings
Using watch -n 0.5 cat /sys/kernel/debug/gpio to observe GPIO state changes:
| Action | GPIO toggled | Direction |
|---|---|---|
| Click "Power" in web UI | gpio-503 | out lo → out hi |
| Click "Reset" in web UI | gpio-505 | out lo → out hi |
| Press physical power button (via passthrough) | gpio-504 | in lo → in hi |
Key observations
-
The web UI "Power" button fires gpio-503, but this GPIO does not appear to be electrically connected to the POWER header trace on the PCB. Manually pulsing gpio-503 from the shell (
echo 0 > /sys/class/gpio/gpio503/value && sleep 0.5 && echo 1 > /sys/class/gpio/gpio503/value) does not trigger power-on. -
The web UI "Reset" button fires gpio-505, which is correctly connected to the RESET header trace. Moving the motherboard's power switch wires from the POWER pins to the RESET pins on the 9-pin header, then clicking "Reset" in the web UI, successfully powers on/off the host. This is what I'm doing for now.
-
The physical case button passthrough works on the POWER header (gpio-504 changes state), confirming the header wiring is correct. However, there is no working GPIO output on the POWER header pins — the NanoKVM cannot remotely trigger them.
-
The power LED icon in the web UI shows green permanently regardless of host power state, possibly because gpio-504 is not being read correctly, or the LED input is mapped to the wrong pin.
Full GPIO dump
gpiochip4: GPIOs 352-383, parent: platform/5021000.gpio, 5021000.gpio:
gpio-353 ( |LT-INT ) in hi IRQ
gpio-361 ( |snsr-rst-gpio ) out lo
gpiochip3: GPIOs 384-415, parent: platform/3023000.gpio, 3023000.gpio:
gpiochip2: GPIOs 416-447, parent: platform/3022000.gpio, 3022000.gpio:
gpiochip1: GPIOs 448-479, parent: platform/3021000.gpio, 3021000.gpio:
gpio-449 ( |scl ) out hi
gpio-450 ( |sda ) in lo
gpio-451 ( |sysfs ) out hi
gpio-454 ( |cviusb-otg ) in hi IRQ
gpiochip0: GPIOs 480-511, parent: platform/3020000.gpio, 3020000.gpio:
gpio-493 ( |cvi-cd ) in lo IRQ ACTIVE LOW
gpio-494 ( |led-user ) out lo
gpio-495 ( |scl ) out hi
gpio-502 ( |sysfs ) out hi
gpio-503 ( |sysfs ) out lo
gpio-504 ( |sysfs ) in lo
gpio-505 ( |sysfs ) out lo
gpio-507 ( |sda ) out hi
gpio-510 ( |User Key ) in hi IRQ ACTIVE LOW
Workaround
I've wired the motherboard's power switch header to the RESET pins on the NanoKVM's 9-pin header and am using the "Reset" button in the web UI for remote power control.