Skip to content

mrmees/jiib

Repository files navigation

jiib

A native Android touchscreen for your Klipper 3D printer.

jiib turns a cheap, old Android tablet (think Nexus 7 2013) into a dedicated, always-on control surface for a Klipper printer. It talks directly to the Moonraker API over your LAN — no KlipperScreen, no Linux host, no VNC/XSDL/X11 glue. Just install one APK, point it at your printer, and drive a print.

Status: public alpha — grab ALPHA-26.7.3.1 from Releases. The core connect → monitor → control-a-print loop is the priority and is the thing that must work flawlessly on old hardware.

Features

  • Direct Moonraker control over your local network (WebSocket + REST).
  • Print monitoring & control — start, pause, resume, cancel; live temps, position, progress, and gcode thumbnails.
  • Motion, temperature, extrusion, and fine-tune controls built for touch.
  • Lists-first UI that works in both portrait and landscape.
  • Theming — dark, light, and custom themes, plus an adjustable text size.
  • Runs on old hardware — designed against a Nexus 7 2013 (Adreno 320 / 2GB) as the performance floor, but scales up to modern phones and tablets.

Compatibility

  • Android 6.0+ (minSdk 23).
  • Built and tested against modern devices down to a Nexus 7 2013.
  • No Google Play Services required — the build is GMS-free and sideloaded, so it runs on bare AOSP / LineageOS.

Install

  1. Download the APK for your device's CPU from the Releases page:
    • armeabi-v7a for older 32-bit devices (e.g. Nexus 7 2013).
    • arm64-v8a for modern 64-bit phones and tablets.
  2. Allow installation from unknown sources on the device.
  3. Open the APK to install, launch jiib, and enter your printer's Moonraker host (and API key only if your Moonraker requires one — trusted-client LAN setups don't).

Screenshots

jiib printing dashboard — Nexus 7 2013, landscape, light theme jiib printing dashboard — Moto G Play 2024, portrait, dark theme

The same print, monitored from a 2013 tablet (landscape, light theme) and a modern phone (portrait, dark theme). Browse the full gallery → — every screen, with instructions for each — and the user manual documents every option.

Build from source

Requirements: JDK 17+ and the Android SDK (compileSdk 36, build-tools 34).

git clone https://github.com/mrmees/jiib.git
cd jiib

# Debug build (auto-signed, installable):
./gradlew :app:assembleDebug

# Release build (R8-minified; produces per-ABI APKs under app/build/outputs/apk/release/):
./gradlew :app:assembleRelease

The release split produces one APK per ABI (armeabi-v7a, arm64-v8a). Release APKs are unsigned by the default build — sign them with your own keystore (apksigner) before installing, or use the published, signed APKs from Releases.

Printer integration

jiib's registry-backed printer-control surface (Moonraker WebSocket JSON-RPC and Klipper G-code) is documented in docs/commands/COMMANDS.md. The generated reference stays in sync with the runtime command registry; its scope deliberately excludes auxiliary direct HTTP traffic such as authentication, file/thumbnail access, and webcam streams or snapshots.

Tech stack

Kotlin · Jetpack Compose + classic Views hybrid · OkHttp (WebSocket) + Retrofit (REST) · kotlinx.serialization · Coroutines/Flow · Coil. See docs/adr/0001-ui-toolkit-decision.md for the UI-toolkit rationale and docs/ui_design/ for the design system.

Maintainer guide

Coding agents and contributors should start with AGENTS.md. Current architecture, testing, release, and documentation-ownership guidance lives in docs/maintainer/. Run ./scripts/check.sh for the normal verification gate.

License

GPLv3.

About

Native Android touchscreen for Klipper 3D printers — talks directly to Moonraker over your LAN. Turns an old tablet into a dedicated printer control surface: no Linux host, no VNC, just an APK.

Topics

Resources

License

Stars

2 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages