OpenTabletDriver / OpenTabletDriver/OpenTabletDriver
Output mapping breaks (partial horizontal coverage) after tablet power-cycle on KDE Wayland with fractional scaling; daemon restart always cures it
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 4.1k
- Forks
- 534
- Avg merge
- 4d 20h
- Merged PRs (30d)
- 12
Description
Steps to Reproduce
On KDE Plasma 6 (Wayland), with my display at 3840×2160 @ 125% fractional scaling (logical resolution 3072×1728), the tablet maps correctly to the full screen only until the tablet is power-cycled. After turning the tablet off and on again (2.4 GHz wireless dongle — dongle itself stays plugged in), the pen's horizontal travel covers only part of the screen (roughly half), while vertical coverage remains full. Running systemctl --user restart opentabletdriver immediately and reliably restores full coverage — 100% reproducible in both directions.
The behavior matches the FAQ's note that OTD does not receive monitor-layout updates dynamically — it appears the daemon caches/stales the display geometry at (re)detection time and never refreshes it.
Steps to reproduce
- Boot PC with OTD daemon enabled, tablet powered on. Mapping is correct (full screen coverage).
- Power the tablet off and back on (physical power switch; wireless dongle remains connected).
- Move the pen: horizontal travel now covers only ~half the screen width; vertical is unaffected.
- Run
systemctl --user restart opentabletdriver(no settings changed) → full coverage restored instantly. - Power-cycle again → broken again. Restart daemon → fixed again. Deterministic.
Environment
| Item | Value |
|---|---|
| OS | Arch Linux (rolling, up to date as of 2026-08-10) |
| OTD version | 0.6.7 (distro package 0.6.7-2) |
| Desktop | KDE Plasma 6.7.4, Wayland (KWin) |
| Display | 3840×2160 @ 125% fractional scaling → logical 3072×1728 at position (0,0) |
| Outputs | One active monitor; a second virtual output exists but is disabled (cannot be removed; required by user's workflow) |
| Tablet | XP-Pen Deco LW, connected via 2.4 GHz wireless dongle |
| USB ID | 28bd:0935 (lsusb: "XP-Pen Deco LW") |
| Kernel device names | Hanvon Ugee Deco LW (pen), Hanvon Ugee Deco LW Keyboard, Hanvon Ugee Deco LW Mouse — three input nodes, present regardless of tablet power state |
| OTD output mode | Artist Mode |
| OTD output mapping | Virtual Display: 3072×1728, X 1536, Y 864 (centered) |
| OTD tablet area | Full: 254×152.4 mm, X 127, Y 76.2, rotation 0 |
Suggested fix direction
On tablet (re)detection, re-query the current display layout and re-apply the saved output mapping (i.e., treat device re-arrival like a daemon start with respect to display geometry), and/or subscribe to compositor layout changes (e.g., xdg-output / wl_output updates) so mappings can't go stale.
Workaround in use
udev rule restarting the user daemon on dongle add events (boot/replug), plus a global keyboard shortcut running systemctl --user restart opentabletdriver after each tablet power-cycle. Full runbook available on request.
P.S. I've used AI to help me re-write this in an orderly fashion.
Expected Behavior
Expected behavior
OTD re-detects the tablet on re-pair and re-applies the configured output mapping against current display geometry, without requiring a daemon restart.
Observed Behavior
Additional observations
- Fractional scaling interacts with the symptom: at 125% scaling, coverage is ~50% of screen width; temporarily setting scale to 100% improves it to ~75% (3840 native vs 3072 logical mismatch). So the stale geometry OTD caches appears to be in physical/native pixels rather than logical, or reflects the virtual-desktop span rather than the single output.
- Dual tablet detection: OTD's window title shows "XP-Pen Deco L, XP-Pen Deco LW" — the dongle's interfaces can enumerate as either entry across power-cycles. Output settings were saved for both entries, so this is not the cause of the mapping loss (verified: the bug persists even with identical correct settings on both).
- Why this can't be worked around in user space: in Artist Mode the daemon exclusively grabs (EVIOCGRAB) the physical tablet's input nodes, so no user-session process can observe the pen waking up (e.g.,
libinput debug-eventssees nothing from the physical device). The input nodes also persist while the tablet is off (device count never changes), and the tablet exposes no/sys/class/power_supply/entry. Therefore no udev/input/power signal exists for the power-cycle event; the only viable user-side workaround is a daemon restart triggered manually or on dongle replug/boot. - KWin-side causes were excluded: KDE's Drawing Tablet KCM correctly defers to the userspace driver; the old
org.kde.KWin.InputDeviceD-Bus mapping overrides no longer exist in Plasma 6; mapping the virtual device via KWin was tested both ways. - Possibly related to known issues around stale display geometry / absolute-mode mappings breaking when monitor or scaling settings change (e.g. #4105 and the Linux FAQ note about restarting OTD after monitor configuration changes).
Tablet Device
XP-Pen Deco LW
Diagnostic Information
Diagnostics
Happy to attach daemon logs captured across a power-cycle (journalctl --user -u opentabletdriver), settings.json, and any other output you need, just tell me what to collect.
Acknowledgements
- I have installed OpenTabletDriver by following its official installation instructions.
- I have checked the OpenTabletDriver Wiki and respective FAQ pages, and my issue was not covered or actually fixed.
- I have searched the existing issues and this new issue is not a duplicate of any.
- I have written a concise and meaningful title.
- I am on the latest version of OpenTabletDriver.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the power-cycle sequence and comparing journalctl --user -u opentabletdriver logs before and after the failure. Trace tablet re-detection, saved output mapping, and display geometry handling; the fix is complete when the configured 3072×1728 mapping remains full-width after power-cycling without restarting the daemon.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, linux
- Domain
- desktop, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100