RDP client for jailbroken Kindle e-ink devices. Connects to Windows/Linux desktops via Remote Desktop Protocol and renders the session on the Kindle's e-ink display with touch input support.
- FreeRDP 3.x based RDP client
- E-ink optimized rendering via FBInk (A2 fast updates + periodic GC16 cleanup)
- Touch-to-mouse input mapping with dead zone for accurate taps
- On-screen QWERTY keyboard for credential entry
- KUAL extension for easy launching
- Single statically linked ARM binary — no dependencies on device
- Jailbroken Kindle (tested on Kindle Paperwhite, FW 5.16.3+)
- KUAL installed
- WiFi connectivity to an RDP-enabled host
Requires the koxtoolchain kindlehf cross-compiler:
# Build the toolchain first (one-time)
./gen-tc.sh kindlehf
# Build all dependencies and kindle-rdp
./scripts/build.shThis builds zlib, OpenSSL 3.x, FreeRDP 3.x, and FBInk as static libraries, then links them into the final binary.
Output: build/kindle-rdp/kindle-rdp and build/kindle-rdp/input-ui
# Package the KUAL extension
./package/package.sh
# Copy to Kindle (mounted as USB storage)
unzip -o build/kindle-rdp.zip -d /mnt/kindle/extensions/Or manually copy:
build/kindle-rdp/kindle-rdp→extensions/kindle-rdp/bin/build/kindle-rdp/input-ui→extensions/kindle-rdp/bin/kual/contents →extensions/kindle-rdp/
- Open KUAL on the Kindle
- Select Kindle RDP → Setup & Connect
- Enter host IP, username, password, and optional domain via on-screen keyboard
- The RDP session renders on the e-ink display
Subsequent connections can use Quick Connect which reuses saved credentials.
RDP Server → FreeRDP → GDI buffer (XRGB32) → grayscale conversion → FBInk → e-ink
Touchscreen → evdev → coordinate scaling → RDP mouse events → RDP Server
- Single-threaded event loop multiplexing FreeRDP network events and evdev touch input
- XRGB32 → 8-bit grayscale via fixed-point luminance:
(77*R + 150*G + 29*B) >> 8 - A2 waveform for fast partial updates, GC16 full refresh every 3 seconds to clear ghosting
- Touch dead zone (15px) prevents accidental drag/select on tap
├── CMakeLists.txt # Build system
├── cmake/kindlehf-toolchain.cmake # Cross-compile toolchain
├── src/
│ ├── main.c # Entry point, arg parsing
│ ├── rdp_client.c/h # FreeRDP client (callbacks, event loop)
│ ├── eink_display.c/h # FBInk wrapper, refresh strategy
│ ├── touch_input.c/h # evdev touch → mouse mapping
│ ├── pixel_convert.c/h # XRGB32 → grayscale conversion
│ ├── input_ui.c # On-screen keyboard
│ └── config.h # Compile-time constants
├── scripts/ # Dependency build scripts
├── kual/ # KUAL extension files
└── package/ # Packaging script
MIT