DroidKlipp
June 8, 2026 ยท View on GitHub
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.

What DroidKlipp Does
- 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.
Required Android APK
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.
KlipperScreen Requirement
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.
Install with KIAUH
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.sh
In KIAUH, open the Extensions section and choose DroidKlipp. The extension installs DroidKlipp and runs the DroidKlipp installer for you.
Klipper Host Prerequisites
The installer attempts to install these automatically on the Klipper machine / Raspberry Pi:
sudo apt update
sudo apt install adb tmux x11-utils
Android Setup
- 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.
Manual Install DroidKlipp
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 reboot
The 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
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.sh
Runtime Behavior
USB 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 -f
Manual Helper
After install, this helper exists for manual ADB wake/forward setup:
~/start_klipperscreen.sh
The monitor service still handles KlipperScreen launch/restart automatically.
Uninstall
Remove DroidKlipp monitor/service files, WiFi fallback cache, udev rules, and DroidKlipp tmux sessions while keeping KlipperScreen itself intact:
./uninstall_droidklipp.sh
uninstall_wifi.sh is kept only as a backward-compatible wrapper and now runs the full uninstaller.
Troubleshooting
Android does not wake or launch the X server
-
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
KlipperScreen does not appear
Check that KlipperScreen is installed here:
ls ~/KlipperScreen/screen.py
ls ~/.KlipperScreen-env/bin/python
Check monitor logs:
journalctl -u adb_monitor.service -n 100 --no-pager
WiFi fallback does not work
Confirm Android and the Klipper host are on the same network and X11 is reachable:
cat ~/.droidklipp_wifi_ip
xdpyinfo -display $(cat ~/.droidklipp_wifi_ip):0
Then refresh the cached IP if needed:
./install_wifi.sh
Links
- 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
License
See LICENSE.