# hwprobe environment variable/kernel cmdline parameter
This document describes the `hwprobe` environment variable/kernel cmdline
parameter.
You can control the hardware probing using the environment variable
`hwprobe` and the kernel cmdline parameter `hwprobe`.
If `hwprobe` is set on the kernel cmdline, the environment variable
`hwprobe` is ignored. Otherwise, the meaning of both is exactly the same.
## Controlling probing flags
`hwprobe` controls which probing flags should *always* be set/cleared (These
settings *cannot* be overridden by command line switches). Examples:
* `hwprobe=-isapnp` - *never* do any isapnp probing
* `hwprobe=-braille,-modem` - don't look for braille displays & modems
The list of supported flags varies from version to version. To get a list of
the actual set of probing flags, call `hwinfo -all` (**Not** `--all`!) and look at the top of
the log (it lists all probing flags with their respective status there).
## Adding/removing hardware from results
`hwprobe` allows you to add and remove hardware from the probing results. In
this case the syntax is (-: remove, +: add at end of list, `<nothing>`: add at
begin of list):
hwprobe=[+-]<device_class>:<vendor_id>:<device_id>[:<unix_device_file>]
`<device_class>`, `<vendor_id>` and `<device_id>` are device ids as used by
libhd. See the output of `hwinfo` for examples. In connection with `-`, you can
use `*` as a placeholder that matches every id.
Note: `<unix_device_file>` is optional.
Note2: you cannot usefully *add* hardware that needs more info than that
given by the `hwprobe` entry. Disks & floppies are notable examples.
(But you can *remove* them.)
Here is a typical `hwinfo` output for a mouse, with the relevant ids
underlined (`<device_class>` is the combined `base_class` & `sub_class`),
(see 1st example below):
14: PS/2 00.0: 10500 PS/2 Mouse
^^^^^ --> <device_class>
[Created at mouse.110]
Vendor: s0200 "Unknown"
^^^^^ --> <vendor_id>
Model: 0002 "Generic PS/2 Mouse"
^^^^ --> <device_id>
Device File: /dev/psaux
^^^^^^^^^^ --> <unix_device_file>
Driver Info #0:
XFree86 Protocol: ps/2
GPM Protocol: ps2
Attached to: #8 (PS/2 Controller)
Examples:
hwprobe=+10500:s200:2:/dev/psaux
o add a ps/2 mouse [at the end of the hardware list]
hwprobe=10500:s200:2:/dev/psaux
o add a ps/2 mouse [at the start of the hardware list, so it
is our default mouse]
hwprobe=+10b00:s5001:0:/dev/ttyS0
o add a braille display connected to /dev/ttyS0
hwprobe=-10500:s200:2:/dev/psaux
o remove ps/2 mice attached to /dev/psaux
hwprobe=-10500:s200:2
o remove all ps/2 mice
hwprobe=-10500:*:*
o remove all ps/2 mice
hwprobe=-*:*:*:/dev/hdc
o remove /dev/hdc
hwprobe=+401:1274:5000
o add an ensoniq sound card
Graphics cards are slightly trickier:
hwprobe=+300:1014:b7
o add a Fire GL1 card
Note: this way you'll get a multihead config. You'll probably
rather want the following example.
hwprobe=-300:*:*,+300:1014:b7
o remove all graphics cards; then add a Fire GL1 card
hwprobe=+400:121a:1
o add a 3fx voodoo card (Note the class "400", not "300"!)
For more ids, see `src/ids/names.*` and `src/ids/drivers.*`.