65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen<?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
12b42c76672a66c2d4ea7212c14f8f1b5a62b78dTom Gundersen "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen
3715a071803b99b4ed4045df8f35e7f7a5fa5a85Michael Biebl<refentry id="hwdb" conditional="ENABLE_HWDB">
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <refentryinfo>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <title>hwdb</title>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <productname>systemd</productname>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <authorgroup>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <author>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <contrib>Developer</contrib>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <firstname>Kay</firstname>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <surname>Sievers</surname>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <email>kay@vrfy.org</email>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen </author>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <author>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <contrib>Developer</contrib>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <firstname>Tom</firstname>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <surname>Gundersen</surname>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <email>teg@jklm.no</email>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen </author>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen </authorgroup>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen </refentryinfo>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <refmeta>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <refentrytitle>hwdb</refentrytitle>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <manvolnum>7</manvolnum>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen </refmeta>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <refnamediv>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <refname>hwdb</refname>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <refpurpose>Hardware Database</refpurpose>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen </refnamediv>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <refsect1><title>Description</title>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <para>The hardware database is a key-value store for associating modalias-like keys to
a8eaaee72a2f06e0fb64fb71de3b71ecba31dafbJan Engelhardt udev-property-like values. It is used primarily by udev to add the relevant properties
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen to matching devices, but it can also be queried directly.</para>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen </refsect1>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <refsect1><title>Hardware Database Files</title>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <para>The hwdb files are read from the files located in the
12b42c76672a66c2d4ea7212c14f8f1b5a62b78dTom Gundersen system hwdb directory <filename>/usr/lib/udev/hwdb.d</filename> and
12b42c76672a66c2d4ea7212c14f8f1b5a62b78dTom Gundersen the local administration directory <filename>/etc/udev/hwdb.d</filename>.
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen All hwdb files are collectively sorted and processed in lexical order,
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen regardless of the directories in which they live. However, files with
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen identical filenames replace each other. Files in <filename>/etc</filename>
12b42c76672a66c2d4ea7212c14f8f1b5a62b78dTom Gundersen have the highest priority and take precedence over files with the same
12b42c76672a66c2d4ea7212c14f8f1b5a62b78dTom Gundersen name in <filename>/usr/lib</filename>. This can be used to override a
12b42c76672a66c2d4ea7212c14f8f1b5a62b78dTom Gundersen system-supplied hwdb file with a local file if needed;
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen a symlink in <filename>/etc</filename> with the same name as a hwdb file in
12b42c76672a66c2d4ea7212c14f8f1b5a62b78dTom Gundersen <filename>/usr/lib</filename>, pointing to <filename>/dev/null</filename>,
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen disables the hwdb file entirely. hwdb files must have the extension
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <filename>.hwdb</filename>; other extensions are ignored.</para>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <para>The hwdb file contains data records consisting of matches and
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen associated key-value pairs. Every record in the hwdb starts with one or
b938cb902c3b5bca807a94b277672c64d6767886Jan Engelhardt more match strings, specifying a shell glob to compare the database
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen lookup string against. Multiple match lines are specified in additional
a8eaaee72a2f06e0fb64fb71de3b71ecba31dafbJan Engelhardt consecutive lines. Every match line is compared individually, and they are
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen combined by OR. Every match line must start at the first character of
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen the line.</para>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <para>The match lines are followed by one or more key-value pair lines, which
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen are recognized by a leading space character. The key name and value are separated
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen by <literal>=</literal>. An empty line signifies the end
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen of a record. Lines beginning with <literal>#</literal> are ignored.</para>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <para>The content of all hwdb files is read by
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <citerefentry><refentrytitle>systemd-hwdb</refentrytitle><manvolnum>8</manvolnum></citerefentry>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen and compiled to a binary database located at <filename>/etc/udev/hwdb.bin</filename>,
12b42c76672a66c2d4ea7212c14f8f1b5a62b78dTom Gundersen or alternatively <filename>/usr/lib/udev/hwdb.bin</filename> if you want ship the compiled
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen database in an immutable image.
b938cb902c3b5bca807a94b277672c64d6767886Jan Engelhardt During runtime, only the binary database is used.</para>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen </refsect1>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <refsect1>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <title>See Also</title>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <para>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <citerefentry>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen <refentrytitle>systemd-hwdb</refentrytitle><manvolnum>8</manvolnum>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen </citerefentry>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen </para>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen </refsect1>
65eb4378c3e1de25383d8cd606909e64c71edc80Tom Gundersen</refentry>