Skip to content

Repository files navigation

 /$$$$$$$   /$$$$$$   /$$$$$$        /$$  /$$$$$$    /$$  
| $$__  $$ /$$__  $$ /$$__  $$      | $$ /$$__  $$ /$$$$  
| $$  \ $$| $$  \__/|__/  \ $$  /$$$$$$$| $$  \ $$|_  $$  
| $$$$$$$ | $$ /$$$$   /$$$$$/ /$$__  $$|  $$$$$$/  | $$  
| $$__  $$| $$|_  $$  |___  $$| $$  | $$ >$$__  $$  | $$  
| $$  \ $$| $$  \ $$ /$$  \ $$| $$  | $$| $$  \ $$  | $$  
| $$$$$$$/|  $$$$$$/|  $$$$$$/|  $$$$$$$|  $$$$$$/ /$$$$$$
|_______/  \______/  \______/  \_______/ \______/ |______/

KlipperKontrol

Industrial Android control panel for Klipper 3D printers.

Dedicated touchscreen interface for Moonraker-powered printers.


Overview

KlipperKontrol is a touchscreen-oriented Android application designed to control Klipper-based 3D printers through the Moonraker API.

Unlike Fluidd or Mainsail, KlipperKontrol is designed as a dedicated industrial control interface:

  • minimal,
  • readable from distance,
  • fast,
  • tactile,
  • workshop-oriented.

The goal is to transform an Android tablet into a real industrial 3D printer control panel.

KlipperKontrol is ideal for:

  • Android tablets,
  • Raspberry Pi touchscreens,
  • wall-mounted printer dashboards,
  • dedicated Klipper control stations,
  • industrial-style 3D printer interfaces.

Topics

klipper
moonraker
3d-printing
android
react-native
expo
touchscreen
printer-dashboard
industrial-ui
klipper-control

Add these in GitHub: Repository → About → ⚙️ → Topics


Screenshots

Add screenshots here to improve GitHub and Google indexing.

![Dashboard](./screenshots/dashboard.png)
![Temperature Control](./screenshots/temp.png)
![Print Monitoring](./screenshots/printing.png)

Android DNS Issue

Some Android devices using:

  • custom DNS,
  • ad blockers,
  • private DNS,
  • VPN DNS filtering,

may block GitHub release downloads or local Moonraker HTTP connections.

If APK downloads fail with errors such as:

ERR_SSL_PROTOCOL_ERROR

try:

  • disabling Private DNS,
  • disabling DNS filtering,
  • disabling adblock DNS,
  • or temporarily switching back to automatic DNS.

This issue is unrelated to KlipperKontrol itself and is caused by Android network filtering.


Features

Real-time temperatures

  • Hotend monitoring
  • Bed monitoring
  • Live Moonraker updates

Temperature control

  • Tap to edit temperatures
  • Numeric input popup
  • Instant Klipper commands

Speed / Flow controls

  • Touch sliders
  • Magnetic snap at 100%
  • Direct numeric input
  • Individual reset buttons

Emergency Stop

  • Dedicated emergency stop button
  • Confirmation popup
  • Haptic feedback
  • High visibility industrial design

Print monitoring

  • Live progress bar
  • Percentage display
  • Smoothed ETA system
  • Remaining print time
  • Estimated total duration
  • Current GCODE filename

Connection system

  • Manual printer IP connection
  • Moonraker auto polling
  • Live connection status

Responsive UI

Optimized for:

  • 1024x600 displays
  • Android tablets
  • Raspberry Pi touchscreens
  • KlipperScreen displays

Technologies

  • React Native
  • Expo
  • Moonraker API
  • React Native Slider
  • Expo Haptics

Installation

Clone repository

git clone https://github.com/bg3d81/KlipperKontrol.git

Install dependencies

npm install

Start development server

npx expo start --clear

Then:

a

to launch directly on Android.


Moonraker configuration

Inside the app:

  • press CONNECT PRINTER
  • enter the Moonraker IP address
  • connect

Example:

192.168.1.74

Moonraker API

KlipperKontrol communicates with:

http://IP:7125

Endpoints used

Printer status

/printer/objects/query

Send GCODE

/printer/gcode/script

Emergency stop

/printer/emergency_stop

Klipper commands

Speed Factor

M220 S100

Flow Factor

M221 S100

Hotend Temperature

M104 S220

Bed Temperature

M140 S80

ETA System

KlipperKontrol uses:

  • dynamic ETA calculation,
  • moving average,
  • ETA smoothing,
  • anti-spike filtering.

This creates:

  • stable estimates,
  • cleaner UI behavior,
  • more realistic print times.

APK Build

Install EAS CLI

npm install -g eas-cli

Expo login

eas login

Configure EAS

eas build:configure

Generate APK

eas build -p android --profile preview

Android HTTP Support

KlipperKontrol requires local HTTP access to Moonraker.

Your app.json must contain:

"plugins": [
  [
    "expo-build-properties",
    {
      "android": {
        "usesCleartextTraffic": true
      }
    }
  ]
]

And install:

npx expo install expo-build-properties

Project structure

KlipperKontrol/
│
├── App.js
├── app.json
├── eas.json
├── package.json
│
├── assets/
│   └── logo.png
│
└── node_modules/

Roadmap

UI / UX

  • glow effects
  • smooth animations
  • kiosk mode
  • industrial themes
  • always-on display

Features

  • webcam integration
  • Klipper macros
  • multi-printer support
  • print history
  • Android notifications

System

  • standalone APK
  • Android autostart
  • Moonraker watchdog
  • offline mode

Philosophy

KlipperKontrol is not intended to clone Fluidd.

The goal is to create:

  • a dedicated control interface,
  • extremely fast,
  • tactile,
  • readable from distance,
  • designed for real workshop usage.

GitHub SEO Tips

To improve GitHub and Google référencement:

  • add screenshots,
  • create GitHub releases,
  • add repository topics,
  • keep commits active,
  • add a project website or GitHub Pages later,
  • share the repository on Reddit or 3D printing communities.

License

MIT License


Support

If you like this project:

  • ⭐ Star the repository
  • 🔧 Contribute improvements
  • 📢 Share the project

Built for makers, tinkerers and industrial 3D printing enthusiasts.

About

A simple app to control your Klipper printer.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages