XP-Pen Deco Mini7 v2 FreeBSD Daemon (Unofficial)
A small userspace daemon that allows simple operation of the XP-Pen Deco Mini7 V2 (note: affiliate link) on FreeBSD (will be extended to different types of tablets most likely later on).
Rationale / some history
This repository emerged out of the frustration that it has been hard to get an otherwise excellent
XP-Pen Deco Mini7 V2 up and running easily on FreeBSD. Everytime the device was attached it
turned up as pointer and keyboard device as expected (two HID device instances), but the
pointer device never started streaming stylus positions. I played around trying to install existing
drivers like OpenTabletDriver, tried out xf86-input-wacom, libwacom and many other solutions
but they either failed to compile due to heavy dependencies and unsupported platforms or just
plainly did not work due to some untraceable errors.
Minor research pointed out that those tablets require an activation sequence to enable
output of the HID nodes and will then spill out reports. In addition the HID messages for
styli are not compatible with the standard USB mouse driver usm. This lead to the quick
overnight development of xppen-mini7-v2-fbsd based on information captured on Windows utilizing
Wireshark and USBPcap.
Introduction
xppen-mini7-v2-fbsd is a Python daemon that:
- Locates XP-Pen Deco Mini7 V2 tablets on FreeBSD using
PyUSBby their vendor and product ID. - Replays the Windows-style initialization sequence so the stylus interface enters reporting mode.
- Creates a virtual
/dev/input/event*node via FreeBSD'suinputdriver and forwards stylus packets with pressure/tilt data. - Optionally forwards packets to a Unix domain socket instead of
uinput. This feature will be used for some applications this author had in mind, it will most likely be useless for anyone else. - Can run once against an explicit
/dev/ugenX.Ypath (for example to be executed via adevdhook) or stay resident, periodically scanning for devices and auto-binding when the tablet appears.
Requirements
- FreeBSD 13 or higher with
evdev,uinput, andhidsupport available (either compiled into the kernel like forGENERIC, or loaded viakldload evdev uinput hidif your kernel omits them). If/dev/uinputexists the daemon will most likely work. - Access to
/dev/uinputand to the USB device (typically run asrootor grantdevfspermissions since we need access tousbconfigand other low level routines). - Python 3.11 or higher with
pyusbinstalled.
Installation
pip install xppenfbsd
Usage
Foreground daemon that scans for the tablet and logs all received messages and events verbosely:
xppen-fbsd-daemon --scan --verbose
Daemon performing the same action in background:
xppen-fbsd-daemon --scan --daemonize
Launching by specifying an explicit device path (for example when launching useful from devd):
xppen-fbsd-daemon --device ugen0.7 --detach --event-mode 660 --event-group wheel
Socket-only mode:
xppen-fbsd-daemon --socket /var/run/xppen.sock --no-uinput
Release files for xppenfbsd 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| xppenfbsd-0.0.1.tar.gz | 12.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xppenfbsd-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 25.5 kB
Release files / xppenfbsd-0.0.1.tar.gz
| Download URL | xppenfbsd-0.0.1.tar.gz |
|---|---|
| Size | 12.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f7c867b22992e175ccce480fe18d81bc5842391842587fdf45d9ed9be409e88a
|
|
BLAKE2b-256 checksum How to use checksums |
7032af14b574881ca0ef9a6cb83b48686ed1b6674a43698a012c7edb99df3be5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.11
|
Release files / xppenfbsd-0.0.1-py3-none-any.whl
| Download URL | xppenfbsd-0.0.1-py3-none-any.whl |
|---|---|
| Size | 13.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2a3364d4b0366945cd303126776f93900ffddf3b67f624293924f5c11c8566e2
|
|
BLAKE2b-256 checksum How to use checksums |
aad20f016432c1542f03a383b8476f7cc91e21f4c6a7bae4564dbbf624940908
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.11
|