Commit Graph
61 Commits
Author SHA1 Message Date
Julian Bouzas 3bc3b6c6e7 hwdb: classify PlayStation controller audio as controller form-factor
Add Sony PlayStation controller entries to 70-sound-card.hwdb so that their
ALSA sound devices are tagged with SOUND_FORM_FACTOR=controller:
 - DualSense (054c:0ce6)
 - DualSense Edge (054c:0df2)
 - DualShock 4 CUH-ZCT1x (054c:05c4)
 - DualShock 4 CUH-ZCT2x (054c:09cc)

These controllers expose USB audio but are neither headsets nor speakers.
Pinning them in the hwdb ensures they are identified correctly before any
fallback matching occurs.
2026-07-21 07:30:37 +09:00
LuK1337 8d846837fc hwdb: Make Samsung download mode work out-of-the-box
https://github.com/Benjamin-Dobell/Heimdall/blob/3997d5cc607e6c603c6e7c0d07e42e9868c62af2/heimdall/source/BridgeManager.h#L69-L79
2026-06-15 08:20:14 +09:00
Chitoku 85afe8e82d vsock-util: allow VMADDR_CID_ANY as local CID if enabled in hwdb
On Hyper-V guests, `VMADDR_CID_ANY` is valid as per implementation in
kernel driver: net/vmw_vsock/hyperv_transport.c.

Fixes https://github.com/systemd/systemd/issues/42496

Follow-up for 83359c4da0
2026-06-13 15:54:50 +02:00
Yu Watanabe 4fa9302fa4 hwdb/parse_hwdb: apply "ruff format" and "ruff check --fix" 2026-05-18 02:44:40 +09:00
Lennart Poettering f3eac272e6 hwdb: add database for basic IMDS properties
This adds a hardware database that contains information about IDMS
functionality of various clouds, keyed off the SMBIOS identification of
each. Currently this contains information about 6 major clouds, but the
idea is that this grows to include more and more major clouds.

Nothing uses this data yet, that's added in a later commit.
2026-03-26 10:54:15 +01:00
Lennart Poettering f2eed3fa25 hwdb: introduce hwdb for tpm2 devices
This hwdb is can carry hw quirks and similar for us, in particular tell
us if nvpcrs have a chance of working.
2026-03-04 08:28:41 +01:00
Lennart Poettering 96a8bfcd7a parse_hwdb: sort general matches 2026-03-04 08:22:20 +01:00
Lennart Poettering 4dbb0cd0bf parse_hwdb: introduce local variable for boolean syntax 2026-03-04 08:22:20 +01:00
Zbigniew Jędrzejewski-Szmek 62338aeadf hwdb: use more modern python syntax in one more place 2026-02-26 19:02:03 +01:00
David Santamaría Rogado e0684a9abc udev: hwdb: replace ID_INPUT_JOYSTICK_INTEGRATION
Actually ID_INPUT_JOYSTICK_INTEGRATION was never used anywhere, replace
it with ID_INTEGRATION.

Follow up: a4381cae8b.
2026-02-20 18:34:00 +01:00
David Santamaría Rogado babfd9cbaa hwdb: don't error on empty hwdb file 2026-02-16 03:39:08 +01:00
Zbigniew Jędrzejewski-Szmek 8a70fa901e hwdb: quote invalid patterns in error messages
If the pattern is invalid, we don't quite know how it looks, so it's
safer to quote it.

Also simplify the call to sorted().
2026-02-09 11:01:31 +01:00
Yu Watanabe 3da9b65b30 hwdb: make three more hwdb files parsed by parse_hwdb.py
This also makes 70-lights.hwdb installed. The file was introduced by
106f64cbd6, but never installed.

Moreover, this makes the parser also check bluetooth modalias patterns.
2026-01-17 02:53:14 +09:00
Rebecca Cran b159befeae hwdb,rules: add 82-net-auto-link-local.{hwdb,rules} to build
Update hwdb.d/meson.build and rules.d/meson.build to add the
82-net-auto-link-local.{hwdb,rules} files into the build. Commit
ec541c569b in 2023 added the files
but didn't add them to the build system.
2025-12-05 16:03:22 -07:00
Yu Watanabe 5b09b43106 Don't tag i2c mice as pointing sticks (#39264)
There are no real i2c mice but there are i2c `FooBar Mouse` devices that
are an artifact of how the HID kernel drivers split up event nodes.
These nodes will be seen for some i2c keyboards and touchpads, depending
on the HID report descriptor.

Let's not tag those as pointing sticks.

Closes #36677
2025-10-20 15:04:27 +09:00
Peter Hutterer 5b647b84a9 rules: extend 60-input-id.rules to allow for bus/vid/pid/name matches
Same approach as used in 70-mouse.rules, allow for a name-based match
optionally combined with bus/vid/pid (which the existing modalias rule
would already allow us anyway). Note that ID_BUS isn't assigned until
after this rule has run so we need to use the id/bustype attribute
directly.

Related to https://github.com/systemd/systemd/issues/36677
2025-10-20 14:14:39 +10:00
Zbigniew Jędrzejewski-Szmek 48aec295a8 test/parse_hwdb: wrap Or inside an And in a Group
I now get a warning like this with python3-pyparsing-3.1.2-8.fc42:

hwdb.d/parse_hwdb.py:208: UserWarning: warn_multiple_tokens_in_named_alternation:
  setting results name 'VALUE' on Or expression will return a list of all parsed
  tokens in an And alternative, in prior versions only the first token was returned;
  enclose contained argument in Group
('!' ^ (Optional('!') - Word(alphanums + '_')))('VALUE')
2025-10-16 18:09:37 +01:00
Bastien Nocera 3dcb56f5e0 hwdb: Add hwbd definitions for maker tools
As originally added back in 2016 in 68ea57b21d ("Added support
for 3D printers to uaccess (ID_MAKER_TOOL)").

The first devices added would be 3D printers compatible with Flashprint
from Flashforge, as listed in this connector plugin:
https://github.com/Mrnt/OctoPrint-FlashForge/blob/master/octoprint_flashforge/__init__.py#L28

See https://github.com/flathub/com.flashforge.FlashPrint/issues/59
2025-06-23 10:44:58 +01:00
Nuno Sá 42957adf5c hwdb: append ID_MM_DEVICE_IGNORE to hwdb parser 2025-05-15 09:48:30 +01:00
Ryan Thompson eea9ba8409 hwdb: append ID_SOFTWARE_RADIO to hwdb parser 2025-05-13 08:09:55 -05:00
Bastien Nocera 106f64cbd6 hwdb: Make remote controllable lights work out-of-the-box
Give access to USB/Bluetooth lights such as the Logitech Litra family of
devices.

The Logitech devices in particular are accessible through USB
and Bluetooth.
2024-12-16 14:50:28 +09:00
Bastien Nocera e1c6819192 hwdb: Make 3D mice work out-of-the-box
According to https://en.wikipedia.org/wiki/3Dconnexion, 3D mice are:
human interface devices for manipulating and navigating
computer-generated 3D imagery. These devices are often referred to as
3D motion controllers, 3D navigation devices, 6DOF devices (six
degrees of freedom) or a 3D mouse.

Applications that want to support 3D mice on Linux are expected to
either use spacenavd and its library, or consume the HID output
directly.

This patch makes it possible for a number of applications that use 3D
mice directly to work out of the box, such as PrusaSlicer and its
derivatives.
2024-12-03 19:35:53 +01:00
vdovhanych 2cf425ec57 add udev rules for trezor hw wallet devices 2024-07-24 08:22:44 +01:00
Lain "Fearyncess" Yang 0230235b57 hwdb: add a vmbus id for HyperV Video device 2024-05-30 12:55:44 +02:00
Yu Watanabe 0831c99104 hwdb: ID_INPUT_XYZ allows an empty string
This is for making CIs for #32775 green.
2024-05-13 15:18:37 +02:00
Zbigniew Jędrzejewski-Szmek 28dd29dd95 hwdb: drop POINTINGSTICK_CONST_ACCEL
The TODO says we were supposed to do that in 2019–2020 (if I interpreted the
enigmatic notation correctly). The comment in hwdb said:
> DO NOT USE THIS PROPERTY. This property is kept for backwards
> compatibility. The only known consumer, libinput, stopped reading this
> property in version 1.9.0. No new entries for this property should be
> added.
… and we're currently on libinput-1.23.0.

Most likely there are no users, and even if they are, they'll just get a
slightly misbehaving pointingstick, which shouldn't be too bad.
2023-07-12 01:49:59 +02:00
Bastien Nocera 56506988f2 hwdb: Add override for headset form-factors
Correct the SOUND_FORM_FACTOR property for Steelseries Arctis headsets.
The USB IDs were all gathered from HeadsetControl[1].

[1]: https://github.com/Sapd/HeadsetControl
2023-07-02 15:55:24 +01:00
Yu Watanabe f0b75cda5a parse_hwdb: allow negative value for EVDEV_ABS_ properties 2022-11-01 13:10:20 +09:00
Frantisek Sumsal 518d16c110 test: make pylint happy 2022-10-19 22:46:33 +02:00
Frantisek Sumsal ee8d57df44 test: make parse-hwdb compatible with older pyparsing versions
Follow-up to e77fed207a.
2022-10-19 22:46:30 +02:00
Alper Nebi Yasak e2f25ae648 udev: hwdb: Match iio sensors based on their label
The IIO subsystem exposes a 'label' sysfs file to help userspace better
identify its devices [1]. Standardized labels include the sensor type
along with its location, including 'accel-base' and 'accel-display'.

Most Chrome OS boards have two accelerometers that are indistinguishable
except for this label (or a 'location' sysfs file before Linux v6.0),
and need different mounting matrix corrections based on their location.

Add a udev rule that matches hwdb entries using this label, so we can
correct both accelerometers on these devices with hwdb entries. The
existing rules and hwdb entries are not modified to keep potential
out-of-tree entries working, but new entries in this form will override
existing ones. Also add currently standardized labels to parse-hwdb.py.

[1] https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-bus-iio
2022-08-18 21:17:19 +03:00
Mario Limonciello fa9a43a690 Add support to set autosuspend delay via hwdb 2022-05-09 21:14:12 -05:00
Be f2c36c0e24 Add AV production controllers to hwdb and add uaccess
This adds support for AV production controller devices, such
as DJ tables, music-oriented key pads, and others.

The USB vendor and product IDs come from Mixxx, Ctlra, and
Ardour.

Fixes #20533

Co-developed-by: Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
2022-03-14 14:47:32 -03:00
Davide Cavalca 7d75376e1f hwdb: add new database file for PDA devices
Add a new database for handhelds (PDAs, calculators, etc.) that should be
accessible the seat owner.

The database is initially populated with Texas Instruments calculators
and linking cables, which removes the need to installing dedicated udev
rules for them.
2022-01-31 04:46:38 +09:00
Yu Watanabe e912326e05 test: frequency in mouse DPI is optional
Prompted by #22278.
2022-01-28 13:18:28 +09:00
Zbigniew Jędrzejewski-Szmek 1a37237e2f hwdb: fix check for uppercasedness of match patterns
The check was added in 77547d5313, but
it doesn't work as expected. Because the second part is wrapped in Optional(),
it would silently "succeed" when the lowercase digits were in the second part:

>>> from parse_hwdb import *
>>> g = 'v' + upperhex_word(4) + Optional('p' + upperhex_word(4))
>>> g.parseString('v04D8pE11C*')
(['v', '04D8', 'p', 'E11C'], {})
>>> g.parseString('v04D8pe11c*')
(['v', '04D8'], {})

The following matches are OK:
usb:v0627p0001:*QEMU USB Keyboard*
usb:v0627p0001:*
usb:v0627p0001*
usb:v0627*
2022-01-04 11:04:33 +01:00
Bastien Nocera e78e11d8c5 hwdb: Tag IR cameras as such
So that front-ends can ignore them if they wish to.

See https://gitlab.gnome.org/GNOME/cheese/-/merge_requests/4
2021-10-27 00:14:41 +02:00
Benjamin Berg bd37360a21 hwdb: Permit unsetting power/persist for USB devices
The USB persist feature allows devices that can retain their state when
powered down to work across suspend/resume. This is in particular useful
for USB drives.

However, the persist feature can get in the way for devices that are
unable to retain their state when power is lost. An example of such
stateful devices are fingerprint readers where USB persist should be
disabled to ensure userspace can detect whether the USB device had a
power loss during system suspend.

This will initially be used by the libfprint autosuspend hwdb.

Closes: #20754
2021-09-21 20:28:10 +02:00
Bastien Nocera 9e2dbfef47 hwdb: Allow end-users root-less access to USB analyzers
Procotol analyzers are external devices used to capture traffic over a
wire so that it could be analysed. End-users at the console should be
able to access those devices without requiring root access.

This change obsoletes the need to install Total Phase's "Linux drivers",
which are really just udev rules and hotplug usermap files to do that:
https://www.totalphase.com/products/usb-drivers-linux/
2021-09-02 16:01:28 +02:00
Franck Bui c0b2e69f88 login: XGI Z7/Z9 (XG20 core) graphic chip requires master-of-seat to be set
This graphic chip doesn't have a DRM driver and fall back to vesa-framebuffer
driver.

Without this patch, users of such chip suddenly see their GUI broken without
any indication or reason of what happened (no error message). Hence this
regression is near to impossible to troubleshoot for end users. Such case was
reported https://bugzilla.opensuse.org/show_bug.cgi?id=1187154.

Rather than adding another exception in the udev rules to deal with such
HWs, they instead get their own hwdb file '60-seat.hwdb'.
2021-07-05 11:56:06 +02:00
Takashi Sakamoto 5d66d89c42 hwdb: fix parser to execute test for ieee1394-unit-function with no argument
When given no arguments, hwdb parser script seeks test target files by
glob pattern. Although I added a new file for IEEE 1394 unit functions,
the file is excluded as test target due to the pattern.

This commit fixes it.

Fixes: 7713f3fc6a ("hwdb: add parser grammar for IEEE 1394 unit function list")
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
2021-05-05 23:10:29 +09:00
Takashi Sakamoto 5e939304f5 hwdb: allow parser to expect usage of slash sign in value of property
Although in IEEE 1394 unit function list I have a plan to use slash sign
in name of property, current implementation of parser doesn't allow it.
When parsing current entries in database excluded from parser testing, we
can find usage of slash sign in name of property.

This commit adds slash sign in allow list of the parser for my
convenience.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
2021-04-07 11:49:22 +09:00
Takashi Sakamoto 7713f3fc6a hwdb: add parser grammar for IEEE 1394 unit function list
In added IEEE 1394 unit function list, I use custom key to detect unit
entries in node context. Although the list is not widely used in the most
of systemd users, I would like to add parser grammar for testing, by
borrowing a bit time in builders.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
2021-04-07 11:49:22 +09:00
Peter Hutterer 9fc168cd1e hwdb: check for the right set of MOUSE_WHEEL_CLICK_ properties
As documented at the top of the file we require the normal property if we have
the horizontal property, and we require the CLICK_ANGLE property if the
CLICK_COUNT property is present. Codify this into the hwdb parser so we can
pick up on it.
2021-01-29 17:17:52 +01:00
Björn Daase ad0d9c0109 hwdb: Relax parsing script to allow 0 and 1 for all ID_* properties 2021-01-08 10:32:40 +01:00
Yu Watanabe 315a3c9ff4 hwdb: add missing Group()
This fixes the following warning:
```
parse_hwdb.py:120: UserWarning: warn_ungrouped_named_tokens_in_collection: setting results name 'SETTINGS*' on And expression collides with 'HZ' on contained expression
  dpi_setting = (Optional('*')('DEFAULT') + INTEGER('DPI') + Suppress('@') + INTEGER('HZ'))('SETTINGS*')
```

Not sure about for the mount_matrix, but LGTM.com warns in that line,
and, adding Group() does not change the parse result.
2020-11-27 06:02:44 +09:00
Yu Watanabe e77fed207a hwdb: enable diagnostic switches 2020-11-27 05:59:56 +09:00
Zbigniew Jędrzejewski-Szmek a21ac934a1 Revert "parse_hwdb: enforce the ":*" suffix"
This reverts commit ad2d8e61ee.
2020-11-03 14:26:51 +01:00
Zbigniew Jędrzejewski-Szmek a136c2cdd8 hwdb: drop quotes from XKB_FIXED_*= properties
The properties are not unquoted by udev, so the quotes effectively became part
of the value.

Even though those properties were added quite a while ago
(086c001e29,
d7d31692bf), they never started being used
(because of issues with having multiple layouts), see
https://gitlab.gnome.org/GNOME/mutter/-/issues/906,
https://bugzilla.gnome.org/show_bug.cgi?id=775681.

Let's remove the quotes while we still can.

From https://bugzilla.gnome.org/show_bug.cgi?id=775681#c7:
> Note to self: the values for XKB_FIXED_LAYOUT and XKB_FIXED_VARIANT are
> quoted, meaning that we need to remove the quotes before passing the values
> from udev_device_get_property_value() to xkb_keymap_new_from_names()
> otherwise the compilation of the keymap fails (please don't ask how I found
> out...)
2020-10-20 08:37:07 +02:00
Zbigniew Jędrzejewski-Szmek ad2d8e61ee parse_hwdb: enforce the ":*" suffix 2020-10-15 18:01:32 +02:00