<?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>
