DroidKlipp turns an Android device into a KlipperScreen display for a Klipper printer host. It launches KlipperScreen on the Klipper machine and displays it on Android through the DroidKlipp Android APK / XServer XSDL integration.
- Starts and monitors KlipperScreen automatically.
- Uses ADB USB forwarding for low-latency USB display mode.
- Starts the DroidKlipp Android X server activity automatically when a USB device is detected.
- Falls back to WiFi X11 display mode when USB disconnects.
- Uses udev events plus polling so USB plug/unplug changes are detected quickly.
- Restarts KlipperScreen if the tmux session crashes.
Install the DroidKlipp Android APK on your Android device first:
APK source/release repo:
https://github.com/CodeMasterCody3D/DroidKlipp-Android-APK
DroidKlipp uses the Android package/activity
droidklipp.x.org.server/x.org.server.MainActivity. Use the DroidKlipp APK above, not the old generic SourceForge XServer XSDL APK.
DroidKlipp expects KlipperScreen to be installed in these standard paths:
~/KlipperScreen/screen.py
~/.KlipperScreen-env/bin/python
Install KlipperScreen before installing DroidKlipp. If KlipperScreen is installed somewhere else, DroidKlipp will not find it without script changes.
The easiest way to install DroidKlipp is through the Extensions section in this KIAUH fork:
https://github.com/CodeMasterCody3D/kiauhPlusDroidKlipp/tree/master
cd ~
git clone https://github.com/CodeMasterCody3D/kiauhPlusDroidKlipp.git
./kiauhPlusDroidKlipp/kiauh.shIn KIAUH, open the Extensions section and choose DroidKlipp. The extension installs DroidKlipp and runs the DroidKlipp installer for you.
The installer attempts to install these automatically on the Klipper machine / Raspberry Pi:
sudo apt update
sudo apt install adb tmux x11-utils- Install
DroidKlipp.apkfrom the release link above. - Enable Developer Options and USB Debugging on Android.
- Disable the Android lock screen, or set it to
None, so automatic wake/start works reliably. - Open the DroidKlipp APK once before the first connection and accept any Android prompts.
Use this method if you are not installing through KIAUH:
cd ~
git clone https://github.com/CodeMasterCody3D/DroidKlipp.git
cd DroidKlipp
chmod +x install_droidklipp.sh
./install_droidklipp.sh
sudo rebootThe main installer creates:
/etc/udev/rules.d/99-droidklipp.rules
/usr/local/bin/droidklipp_udev.sh
~/droidklipp_monitor.py
~/start_klipperscreen.sh
/etc/systemd/system/adb_monitor.service
~/.droidklipp_wifi_ip # when a WiFi IP is detected or entered
It also enables and restarts:
adb_monitor.service
WiFi fallback is configured during install_droidklipp.sh.
- If Android is connected over USB during install, the script tries to detect the Android
wlan0IP automatically. - If no IP is detected, the script prompts for manual entry.
- If the IP changes later, refresh only the WiFi cache with:
./install_wifi.shUSB connected:
ADB forward tcp:6100 -> Android tcp:6000
KlipperScreen DISPLAY=:100
USB disconnected and WiFi IP cached:
KlipperScreen DISPLAY=<android-ip>:0
Useful status/log commands:
systemctl status adb_monitor.service
journalctl -u adb_monitor.service -fAfter install, this helper exists for manual ADB wake/forward setup:
~/start_klipperscreen.shThe monitor service still handles KlipperScreen launch/restart automatically.
Remove DroidKlipp monitor/service files, WiFi fallback cache, udev rules, and DroidKlipp tmux sessions while keeping KlipperScreen itself intact:
./uninstall_droidklipp.shuninstall_wifi.sh is kept only as a backward-compatible wrapper and now runs the full uninstaller.
-
Confirm USB Debugging is enabled.
-
Accept the Android USB debugging trust prompt.
-
Disable the lock screen.
-
Confirm the DroidKlipp APK is installed.
-
Check ADB:
adb devices adb shell am start -n droidklipp.x.org.server/x.org.server.MainActivity
Check that KlipperScreen is installed here:
ls ~/KlipperScreen/screen.py
ls ~/.KlipperScreen-env/bin/pythonCheck monitor logs:
journalctl -u adb_monitor.service -n 100 --no-pagerConfirm Android and the Klipper host are on the same network and X11 is reachable:
cat ~/.droidklipp_wifi_ip
xdpyinfo -display $(cat ~/.droidklipp_wifi_ip):0Then refresh the cached IP if needed:
./install_wifi.sh- DroidKlipp Android APK: https://github.com/CodeMasterCody3D/DroidKlipp-Android-APK
- KlipperScreen Android docs: https://klipperscreen.readthedocs.io/en/latest/Android/
- KIAUH: https://github.com/dw-0/kiauh
- Android Klipper Screen reference: https://github.com/naruhaxor/AndroidKlipperScreen
See LICENSE.
