mirror of
https://github.com/systemd/systemd.git
synced 2024-11-27 04:03:36 +08:00
155 lines
6.4 KiB
XML
155 lines
6.4 KiB
XML
<?xml version='1.0'?>
|
|
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
|
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
|
|
|
|
<refentry id="hwdb" conditional="ENABLE_HWDB">
|
|
<refentryinfo>
|
|
<title>hwdb</title>
|
|
<productname>systemd</productname>
|
|
</refentryinfo>
|
|
|
|
<refmeta>
|
|
<refentrytitle>hwdb</refentrytitle>
|
|
<manvolnum>7</manvolnum>
|
|
</refmeta>
|
|
|
|
<refnamediv>
|
|
<refname>hwdb</refname>
|
|
<refpurpose>Hardware Database</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsect1><title>Description</title>
|
|
<para>The hardware database is a key-value store for associating modalias-like keys to
|
|
udev-property-like values. It is used primarily by udev to add the relevant properties
|
|
to matching devices, but it can also be queried directly.</para>
|
|
</refsect1>
|
|
|
|
<refsect1><title>Hardware Database Files</title>
|
|
<para>The hwdb files are read from the files located in the
|
|
system hwdb directory <filename>/usr/lib/udev/hwdb.d</filename> and
|
|
the local administration directory <filename>/etc/udev/hwdb.d</filename>.
|
|
All hwdb files are collectively sorted and processed in lexical order,
|
|
regardless of the directories in which they live. However, files with
|
|
identical filenames replace each other. Files in <filename>/etc/</filename>
|
|
have the highest priority and take precedence over files with the same
|
|
name in <filename>/usr/lib/</filename>. This can be used to override a
|
|
system-supplied hwdb file with a local file if needed;
|
|
a symlink in <filename>/etc/</filename> with the same name as a hwdb file in
|
|
<filename>/usr/lib/</filename>, pointing to <filename>/dev/null</filename>,
|
|
disables that hwdb file entirely. hwdb files must have the extension
|
|
<filename>.hwdb</filename>; other extensions are ignored.</para>
|
|
|
|
<para>Each hwdb file contains data records consisting of matches and associated
|
|
key-value pairs. Every record in the hwdb starts with one or more match strings,
|
|
specifying a shell glob to compare the lookup string against. Multiple match lines
|
|
are specified in consecutive lines. Every match line is compared individually, and
|
|
they are combined by OR. Every match line must start at the first character of the
|
|
line.</para>
|
|
|
|
<para>Match patterns consist of literal characters, and shell-style wildcards:</para>
|
|
<itemizedlist>
|
|
<listitem><para>Asterisk <literal>*</literal> matches any number of characters
|
|
</para></listitem>
|
|
<listitem><para>Question mark <literal>?</literal> matches a single character
|
|
</para></listitem>
|
|
<listitem><para>Character list <literal>[<replaceable>chars</replaceable>]</literal> matches one of
|
|
the characters <replaceable>chars</replaceable> listed between <literal>[</literal> and
|
|
<literal>]</literal>. A range may be specified as with a dash as
|
|
<literal>[<replaceable>first</replaceable>-<replaceable>last</replaceable>]</literal>. The match may
|
|
be inverted with a caret <literal>[^…]</literal>.</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<para>The match lines are followed by one or more key-value pair lines, which are
|
|
recognized by a leading space character. The key name and value are separated by
|
|
<literal>=</literal>. An empty line signifies the end of a record. Lines beginning
|
|
with <literal>#</literal> are ignored.</para>
|
|
|
|
<para>In case multiple records match a given lookup string, the key-value pairs
|
|
from all records are combined. If a key is specified multiple times, the value
|
|
from the record with the highest priority is used (each key can have only a single
|
|
value). The priority is higher when the record is in a file that sorts later
|
|
lexicographically, and in case of records in the same file, later records have
|
|
higher priority.</para>
|
|
|
|
<para>The content of all hwdb files is read by
|
|
<citerefentry><refentrytitle>systemd-hwdb</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
|
and compiled to a binary database located at <filename>/etc/udev/hwdb.bin</filename>,
|
|
or alternatively <filename>/usr/lib/udev/hwdb.bin</filename> if you want ship the
|
|
compiled database in an immutable image. During runtime, only the binary database
|
|
is used.</para>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Examples</title>
|
|
|
|
<example>
|
|
<title>General syntax of hwdb files</title>
|
|
|
|
<programlisting># /usr/lib/udev/hwdb.d/example.hwdb
|
|
# Comments can be placed before any records. This is a good spot
|
|
# to describe what that file is used for, what kind of properties
|
|
# it defines, and the ordering convention.
|
|
|
|
# A record with three matches and one property
|
|
mouse:*:name:*Trackball*:*
|
|
mouse:*:name:*trackball*:*
|
|
mouse:*:name:*TrackBall*:*
|
|
ID_INPUT_TRACKBALL=1
|
|
|
|
# The rule above could be also be written in a form that
|
|
# matches Tb, tb, TB, tB:
|
|
mouse:*:name:*[tT]rack[bB]all*:*
|
|
ID_INPUT_TRACKBALL=1
|
|
|
|
# A record with a single match and five properties
|
|
mouse:usb:v046dp4041:name:Logitech MX Master:*
|
|
MOUSE_DPI=1000@166
|
|
MOUSE_WHEEL_CLICK_ANGLE=15
|
|
MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL=26
|
|
MOUSE_WHEEL_CLICK_COUNT=24
|
|
MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL=14
|
|
</programlisting>
|
|
</example>
|
|
|
|
<example>
|
|
<title>Overriding of properties</title>
|
|
|
|
<programlisting># /usr/lib/udev/hwdb.d/60-keyboard.hwdb
|
|
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pn*:*
|
|
KEYBOARD_KEY_a1=help
|
|
KEYBOARD_KEY_a2=setup
|
|
KEYBOARD_KEY_a3=battery
|
|
|
|
# Match vendor name "Acer" and any product name starting with "X123"
|
|
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer:pnX123*:*
|
|
KEYBOARD_KEY_a2=wlan
|
|
|
|
# /etc/udev/hwdb.d/70-keyboard.hwdb
|
|
# disable wlan key on all at keyboards
|
|
evdev:atkbd:*
|
|
KEYBOARD_KEY_a2=reserved
|
|
PROPERTY_WITH_SPACES=some string</programlisting>
|
|
|
|
<para>If the hwdb consists of those two files, a keyboard with the lookup string
|
|
<literal>evdev:atkbd:dmi:bvnAcer:bdXXXXX:bd08/05/2010:svnAcer:pnX123</literal>
|
|
will match all three records, and end up with the following properties:</para>
|
|
|
|
<programlisting>KEYBOARD_KEY_a1=help
|
|
KEYBOARD_KEY_a2=reserved
|
|
KEYBOARD_KEY_a3=battery
|
|
PROPERTY_WITH_SPACES=some string</programlisting>
|
|
|
|
</example>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>See Also</title>
|
|
<para>
|
|
<citerefentry>
|
|
<refentrytitle>systemd-hwdb</refentrytitle><manvolnum>8</manvolnum>
|
|
</citerefentry>
|
|
</para>
|
|
</refsect1>
|
|
</refentry>
|