No description
Find a file
Davíð Steinn Geirsson 4f6c577ea7 fix(aten-kvm): send USB HID keycodes instead of X11 keysyms
The ATEN BMC expects USB HID keycodes in the key event packet, not X11
keysyms. Sending keysyms caused wrong keys (e.g. Q→Down Arrow, C→F10)
because the BMC interpreted the keysym value as a HID keycode.

Rewrote keymap to use HID keycodes from Java KeyMap.initHidKeyMap(),
renamed keysym→keycode throughout, and added toolbar width compensation
to window sizing so the framebuffer image gets its full width.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 10:46:15 +00:00
crates fix(aten-kvm): send USB HID keycodes instead of X11 keysyms 2026-03-12 10:46:15 +00:00
docs docs: add implementation plan for GUI toolbar and error dialog 2026-03-11 23:58:50 +00:00
.gitignore chore: remove Go implementation, now replaced by Rust 2026-03-11 19:49:03 +00:00
Cargo.lock feat(aten-kvm): add debug logging to protocol and decoder 2026-03-12 09:37:14 +00:00
Cargo.toml feat: scaffold aten-kvm crate with public types 2026-03-11 21:35:34 +00:00
CLAUDE.md fix(aten-kvm): send USB HID keycodes instead of X11 keysyms 2026-03-12 10:46:15 +00:00
flake.lock refactor: extract mount library package, add flake.nix 2026-03-11 14:28:22 +00:00
flake.nix fix(nix): update cargoHash for new log dependency 2026-03-12 09:40:02 +00:00
ghidramcp.sh Add ghidra MCP start script, update .gitignore 2026-03-11 17:39:58 +00:00
KVM_PROTOCOL.md fix(aten-kvm): send USB HID keycodes instead of X11 keysyms 2026-03-12 10:46:15 +00:00
MOUNT_PROTOCOL.md docs: fill protocol gaps - error handling, HTTP upload, multi-device, SetEP 2026-03-11 14:03:47 +00:00
README.md docs: update README and CLAUDE.md for keyboard input and winit backend 2026-03-11 23:14:15 +00:00
REVERSING.md docs: final sweep - wire format verification, SCSI enumeration, structure maps 2026-03-11 14:03:51 +00:00

aten-ipmi-tools

Open-source replacements for the ancient, insecure bundled management app shipped with old IPMI interfaces. Protocols were reverse engineered from the original Java client and native libraries — see KVM_PROTOCOL.md, MOUNT_PROTOCOL.md, and REVERSING.md.

The target is Supermicro X9 boards with Nuvoton WPCM450 IPMI (aka "hermon"), but this likely works with other ATEN/ASpeed/Nuvoton IPMI implementations too.

Tools

aten-mount-cli

Mounts a local ISO image as a virtual CD-ROM on the BMC. Works by emulating a USB Mass Storage device over the ATEN virtual media TCP protocol.

aten-mount-cli [OPTIONS] <HOST> <ISO>

Options:
  -u, --user <USERNAME>   BMC username [default: admin]
  -p, --pass <PASSWORD>   BMC password [default: admin]
      --port <PORT>       BMC virtual media port [default: 623]

Press Ctrl+C to cleanly unmount.

aten-gui

KVM console viewer (Slint + winit). Connects to the BMC via the ATEN RFB protocol, decodes Hermon video frames, and displays the remote console with keyboard input.

aten-gui [OPTIONS] <HOST>

Options:
  -u, --user <USERNAME>   BMC username [default: admin]
  -p, --pass <PASSWORD>   BMC password [default: admin]
      --port <PORT>       BMC KVM port [default: 5900]

Building

cargo build --release
# or
nix build .#aten-mount   # CLI tool
nix build .#aten-gui     # GUI app