Skip to content

NanoKVM-PCIe: "Power" button in web UI does not trigger POWER header #785

@mossly

Description

@mossly

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions