<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/modules/hid/hidwacom, branch main</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=main</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>2026-07-12T17:11:10Z</updated>
<entry>
<title>hidwacom: Add Wacom ExpressKey Remote driver</title>
<updated>2026-07-12T17:11:10Z</updated>
<author>
<name>Abdelkader Boudih</name>
<email>freebsd@seuros.com</email>
</author>
<published>2026-07-12T17:11:07Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=4085d1991e2a9e155e3d928955ce8ba53512b8da'/>
<id>urn:sha1:4085d1991e2a9e155e3d928955ce8ba53512b8da</id>
<content type='text'>
The Wacom ExpressKey Remote (ACK-411050) is a wireless button pad
with 18 programmable buttons and a touch ring, used as a companion
device with Wacom tablets.

It communicates via a USB wireless receiver (0x056a:0x0331) using a
vendor-specific HID report (ID 0x11).

This driver exposes the device via evdev:
  - 18 buttons: BTN_0–BTN_Z, BTN_BASE, BTN_BASE2
  - Touch ring position via ABS_WHEEL (0–71; reports 0 on release)
  - Pad activity marker via ABS_MISC (set to 15/PAD_DEVICE_ID when
    any input is active, 0 when idle that matches Linux wacom driver
    convention)
  - Remote serial number via MSC_SERIAL (for userland per-remote
    identification)

Battery level, charging state, and touch ring mode (3 LEDs, values 0–2)
are exposed as per-device sysctls (dev.hidwacom.0.battery, .charging,
.ring_mode) rather than overloading evdev misc codes. The ring mode
sysctl is preserved across device idle periods.

Protocol was decoded from USB traffic analysis and cross-referenced
against the Linux wacom_remote_irq() implementation in
drivers/hid/wacom_wac.c.

Reviewed by:	adrian
Differential Revision:	https://reviews.freebsd.org/D56729
Discussed with:	ziaee
</content>
</entry>
</feed>
