No description
Find a file
Davíð Steinn Geirsson aa041556b7 RE: ikvmserver startup, VCD module, vmass module, globals
Document initialization flow, kernel module internals, and remaining
undocumented functions. Key findings:

- main() is minimal: CreateServerSocket -> MainAcceptLoop, with
  C++ global constructors handling DeviceManager/session list init
- DeviceManager construction (0xb63c): allocates three sub-devices
- Shared memory init (0xdc10): GlobalVar, NVRAM, PS segments
- vcddev.ko: NO ioctl interface — VCD registers accessed directly
  via /dev/mem mmap at 0xF0028000. Module only handles interrupt-
  based capture completion (IRQ 22, major 25)
- ikvm_vmass.ko: USB VID=0x0EA0 PID=0x2168, Bulk-Only Mass Storage,
  3 ioctls (register/disconnect/connect), dual-LUN support,
  userspace reads CBW and writes responses via char device
- ~30 new functions documented: thread management, session cleanup,
  bandwidth throttling (select-based sleep), VCD utilities,
  message queue helpers
- 5 new global variable addresses (session count, shared memory
  pointers, connection ref count, listen socket)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 13:14:06 +00:00
crates fix(aten-kvm): send USB HID keycodes instead of X11 keysyms 2026-03-12 10:46:15 +00:00
.gitignore Add initial server RE, RE doc restructuring 2026-03-12 11:36:40 +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 Add initial server RE, RE doc restructuring 2026-03-12 11:36:40 +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_client.sh Add initial server RE, RE doc restructuring 2026-03-12 11:36:40 +00:00
ghidramcp_server.sh Add initial server RE, RE doc restructuring 2026-03-12 11:36:40 +00:00
KVM_PROTOCOL.md Update KVM_PROTOCOL.md with initial findings from BMC server RE 2026-03-12 10:52:36 +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 Add initial server RE, RE doc restructuring 2026-03-12 11:36:40 +00:00
REVERSING_CLIENT.md Add initial server RE, RE doc restructuring 2026-03-12 11:36:40 +00:00
REVERSING_SERVER.md RE: ikvmserver startup, VCD module, vmass module, globals 2026-03-12 13:14:06 +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 as well as the server BMC firmware — see KVM_PROTOCOL.md, MOUNT_PROTOCOL.md, REVERSING_CLIENT.md and REVERSING_SERVER.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