---
name: "discover"
section: "1"
platform: "linux"
package: "discover"
version: "2.1.2-10.1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/discover"
---

# discover(1)

hardware detection utility

## NAME

discover — hardware detection utility

## SYNOPSIS

**discover** \[DATA\_OPTIONS\]  \[DISPLAY\_OPTIONS\]  \[--bus-summary\]  \[bus ...\]

**discover** \[DATA\_OPTIONS\]  \[DISPLAY\_OPTIONS\] --type-summary  \[type ...\]

**discover** \[DATA\_OPTIONS\] --data-path=*path/to/data* ...  \[--data-version=*version*\]  \[--normalize-whitespace\]  \[--format=*format string*\]  \[type \| id ...\]

- DATA\_OPTIONS

  - •

    **-d \| --disable-bus=***bus*

  - •

    **-e \| --enable-bus=***bus*

  - •

    **--insert-url=***url*

  - •

    **--append-url=***url*

  - •

    **-v \| --verbose**

- DISPLAY\_OPTIONS

  - •

    **--model \| --no-model**

  - •

    **--model-id \| --no-model-id**

  - •

    **--vendor \| --no-vendor**

  - •

    **--vendor-id \| --no-vendor-id**

## Description

**discover** provides an extensible hardware  detection and reporting interface. Hardware information is stored in an  XML data format and can be retrieved across the network.

Fundamental modes of operation:

- •

  Display a list of hardware devices based on type of device or  system bus on which the devices reside, via  **--type-summary** or  **--bus-summary** (the latter of which is the  default behavior).

- •

  Query specified data for attached hardware, via  **--data-path**.

## Options

- **-h \| --help**

  Display a simple help message.

- **-v \| --verbose**

  Instruct the tool to provide feedback as it operates. This  will affect the output as **discover** parses certain  arguments, so this should appear early in the command line.

- **-V \| --version**

  Display the tool name and version.

- **-b \| --bus-summary**

  This is the default behavior: Display basic information  regarding all devices on the appropriate buses. See  *"Selecting Buses"* \>.

- **-t \| --type-summary**

  Summarize devices by class of hardware. Examples of valid  device types include **broadband**,  **fixeddisk**,  **display**, and  **network**.  See *"Device Types"* \>.

- **--data-path=***path/to/data*

  Query matching devices for detailed information.  Device-specific data is stored in a hierarchical  fashion, and the query argument comprises strings  naming each level in that hierarchy.

-

  Typically, the top-level component of the data  path will be the \`\`*platform*'' that will need  the information, such as **linux** or  **xfree86**. For example, to retrieve  the Linux kernel module name for a piece of hardware,  the **--data-path** argument would be  **linux/module/name**.

-

  If multiple **--data-path**           arguments are given and no format string (see  **--format**) is provided, only the last  path is used.

-

  See also the **--data-version**           argument.

- **--data-version=***version*

  Specify a version string for the platform that  will use the information specified by the argument to  **--data-path**.

-

  This string must be in dotted-decimal notation in  order to be matched against a range of values, and thus  may be shorter than the real version.

- **--format=***format string*

  Dictate the output of the results of the queries  specified by **--data-path** arguments.  This format string should follow  **[printf(3)](/printf/3.md)** specifications, although  only **%s** and appropriate flags,  precision, and width values are supported (or  make sense); literal text and **%%**           can also be used.  The behavior when the string is  poorly formatted is undefined.  See also  **--normalize-whitespace**.

- **-d \| --disable-bus=***bus*

  Use this option to override the list of  buses to scan by default as defined in  **discover.conf**. Use  *all* as an argument to  disable all buses; this is useful only if  followed by  **--enable-bus** (or **-e**)  arguments.

- **-e \| --enable-bus=***bus*

  Specify a bus to be scanned.

- **--insert-url=***url*

  Insert a URL at the head of  the list of network resources to include in the search  for hardware information.  Earlier data overrides  later data; to override the local data  sources, insert URLs into the list.  See also  **--append-url**.

- **--append-url=***url*

  Append a URL to the end of the  list of network resources to search for  hardware information. See also  **--insert-url**.

- **--model**

  Include the model description in summary  information. This is enabled by default.

- **--model-id**

  Include the numeric model identifier in summary  information.

- **--no-model**

  Do not include the model description in summary  information.

- **--no-model-id**

  Do not include the numeric model identifier in summary  information. This is the default.

- **--vendor**

  Include the vendor description in summary  information. This is enabled by default.

- **--vendor-id**

  Include the numeric vendor identifier in summary  information.

- **--no-vendor**

  Do not include the vendor description in summary  information.

- **--no-vendor-id**

  Do not include the numeric vendor identifier in summary  information. This is the default.

- **--normalize-whitespace**

  Consolidate whitespace in the results of a  **--data-path** query.  The default is not to do so,  which faithfully reproduces all text in the raw XML data.

-

  With this option enabled, leading and trailing whitespace  is removed, and any consecutive internal whitespaces are  compressed to a single space character.

## Selecting Buses

**discover.conf** defines two lists of system  buses: one to scan by default (used by the **discover**     command), and one never to scan (used by the **Discover** library).

You can override and/or extend the list of default buses with  **--disable-bus** and **--enable-bus**.  The list of buses *not* to scan cannot be overridden  without changing **discover.conf**, so that list  should be used only for buses that may be dangerous to probe.

Both arguments take the string \`\`*all*'' as a  value.

If a bus summary is being performed, which is indicated  either by the presence of **--bus-summary** or  the absence of **--type-summary** and  **--data-path**, any unattached arguments on the  command line will be interpreted as the only buses to scan.  This is equivalent to using **--disable-bus**  **all** before invoking **--enable-bus**     for the buses of interest.

The following buses are currently supported by **Discover**:

- •

  **ata**

- •

  **pci**

- •

  **pcmcia**

- •

  **scsi**

- •

  **usb**

## Device Types

**Discover** defines its own device types, to which the  device types used by each bus are mapped.  **Discover**     currently recognizes the following device types:

- •

  **audio**

-

  A device capable of producing an analog or digital  sound signal is an *audio* device.  Typically, any device commonly referred to as a  \`\`*sound card*'' is classified by **Discover** as  an audio device.

- •

  **bridge**

-

  A device that provides access to devices of a  different type, commonly on a different bus, is a  *bridge* device.  For instance, consumer  PCI chipsets often feature a bridge to ATA (also  known as IDE) devices.

- •

  **broadband**

-

  An interface device to a computer communications  network implemented on top of a technology not explicitly  designed for that purpose is a *broadband*     device.  Examples include ISDN terminal adapters as well  as DSL and cable \`\`*modems*''; analog  phone-line modems are not included in this classification  (see \`\`*modem*'' below).

- •

  **display**

-

  A device controlled by the host machine's CPU and  capable of producing an analog or digital video signal  for output purposes is a *display* device.  Typically, any device commonly referred to as a  \`\`*video card*'' is classified by **Discover** as  a display device.

- •

  **fixeddisk**

-

  A high-speed, fixed magnetic storage device such as  a hard disk drive is a *fixeddisk* device.  Removable media devices such as floppy disk drives,  CD-ROM drives, magneto-optical devices, tape drives, and  Compact Flash card readers are not included in this  classification.

- •

  **humaninput**

-

  A device that receives tactile input from a person  for the purpose of directing a computer's activity is a  *humaninput* device.  Examples include  keyboards, mice, trackballs, joysticks, gamepads, digital  tablets manipulated with a stylus or finger, and so  forth.  Input devices that rely upon non-tactile means of  determining a person's intent, such as speech-recognition  devices or cameras, are not included in this  classification.

- •

  **imaging**

-

  A device that captures still images for input  purposes is an *imaging* device.  Scanners  and digital cameras are examples of imaging  devices.  Motion-capture devices such as television tuner  cards, webcams, and digital video cameras are not  included in this classification.

- •

  **miscellaneous**

-

  Any device that cannot logically be classified as  another device type is a *miscellaneous*     device.

- •

  **modem**

-

  An analog phone-line modulator/demodulator  (modem) is classified by **Discover** as a  *modem* device.  No other kind of device is  so classified.

- •

  **network**

-

  An interface device to a conventional computer  data communications network that does not require the use of a terminal  adapter is a *network* device.  For example,  Ethernet and Token Ring network interface cards are network  devices.  Analog phone-line modems; terminal adapters  for technologies such as ISDN and DSL; and \`\`*cable modems*''     are not \`\`*network*'' devices.

- •

  **optical**

-

  An optical-technology storage device, often using  read-only media, is an *optical* device.  By  far the most common examples of these devices are CD-ROM  and DVD-ROM drives, including versions of these drives  that can \`\`*burn*'' (write to) optical  discs.

- •

  **printer**

-

  A device that renders visual output in a permanent  or semi-permanent manner to a physical medium is a  *printer*.  Typically, any device  colloquially referred to as a \`\`*printer*'' is  also classified by **Discover** as a  printer.

- •

  **removabledisk**

-

  Storage devices that feature removable media using  just about any technology except that of magnetic tape,  CD-ROM, and DVD-ROM drives are  *removabledisk* devices.  Examples include  floppy disk drives, magneto-optical drives, and Compact  Flash card readers.

- •

  **tape**

-

  A sequential-access mass storage device using  magnetic tape is a *tape* device.  Commonly  used for archival and backup purposes, DAT drives are  examples of tape devices.

- •

  **video**

-

  A device that produces a real-time digital video  signal for input purposes is a *video*     device.  Webcams, digital video cameras, and television  tuners are examples of video  devices.  Note that still digital cameras with  \`\`*movie*'' capability are  *not* considered video  devices unless they can transmit the live video signal to  the host in real time.

## Examples

**Scan the local buses**

```
# discover
Intel Corporation 82815 Chipset Host Bridge and Memory Controller Hub
unknown unknown
unknown unknown
unknown unknown
Intel Corporation 82815 Chipset IDE controller
Intel Corporation 82815 Chipset USB (A)
Intel Corporation 82815 System Management bus controller
ATI Technologies, Inc. Rage 128 Pro GL [PF]
3Com Corporation 3c905C-TX [Fast Etherlink]
Ensoniq ES1371 [AudioPCI-97]
unknown unknown
```

**View PCI video cards**

```
# discover -v --type-summary --disable-bus all --enable-bus pci display
Disabled pci
Disabled pcmcia
Disabled scsi
Disabled usb
Enabled pci
Loading XML data... pci Done
Scanning buses... pci Done
ATI Technologies, Inc. Rage 128 Pro GL [PF]
```

**Query for the driver module for**  **XFree86 server version 4.2.0**

```
# discover --data-path=xfree86/server/device/driver --data-version=4.2.0 display
ati
```

**Get model and vendor**  **information by type**

```
$ discover -t --no-model
Intel Corporation
NVIDIA Corporation
3Com Corporation
$ discover -t --no-vendor
82815 System Management bus controller
Vanta [NV6]
3c905C-TX [Fast Etherlink]
```

## Files

- **/etc/discover.conf.d**

  The directory containing configuration files that control   the default behavior for both the **discover** tool and   the **Discover** library.

- **file:///lib/discover/list.xml**

  An XML file containing URLs with  hardware information. This list can be extended with  **--append-url** and  **--extend-url**.

## Authors

Josh Bressers, John R. Daily, and  G. Branden Robinson developed the current implementation of  **Discover** for Progeny Linux Systems.

The Linux implementation of the system-dependent interfaces is  derived from **detect**, by MandrakeSoft SA.

## See Also

[discover.conf(5)](/discover.conf/5.md), [discover-modprobe(8)](/discover-modprobe/8.md)
