diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:49:52 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:49:52 +0000 |
commit | 55944e5e40b1be2afc4855d8d2baf4b73d1876b5 (patch) | |
tree | 33f869f55a1b149e9b7c2b7e201867ca5dd52992 /man/hwdb.xml | |
parent | Initial commit. (diff) | |
download | systemd-55944e5e40b1be2afc4855d8d2baf4b73d1876b5.tar.xz systemd-55944e5e40b1be2afc4855d8d2baf4b73d1876b5.zip |
Adding upstream version 255.4.upstream/255.4
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'man/hwdb.xml')
-rw-r--r-- | man/hwdb.xml | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/man/hwdb.xml b/man/hwdb.xml new file mode 100644 index 0000000..4efa375 --- /dev/null +++ b/man/hwdb.xml @@ -0,0 +1,154 @@ +<?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:bvr: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> |