biosdevname man page

biosdevname — give BIOS-given name of a device


biosdevname [options] [args]...


biosdevname takes a kernel device name as an argument, and returns the BIOS-given name it "should" be.


-i, --interface

Treat [args] as ethernet devs

-d, --debug

Enable debugging

-p, --policy [physical|all_ethN]
-P, --prefix [string]

string use for embedded NICs in the physical policy (default=em)

-x, --nopirq

Do not use $PIR table for mapping PCI device to slot. Some BIOS have incorrect values.

-s, --smbios [x.y]

Require minimum SMBIOS version x.y


The physical policy is the current default.  However, when invoking biosdevname in udev rules, one should always specify the policy you want, as the default has changed over time.
The physical policy uses the following scheme:

em<port>[_<virtual instance>]

for embedded NICs

p<slot>p<port>[_<virtual instance>]

for cards in PCI slots


all_ethN policy makes a best guess at what the device order should be, with embedded devices first, PCI cards in ascending slot order, and ports in ascending PCI bus/device/function order breadth-first.  However, this policy does not work if your PCI devices are hot-plugged or hot-pluggable, including the virtual functions on an SR-IOV device.  In a hot-plug scenario, each separate udev instance will be invoked in parallel, while the device tree is still being populated with new devices.  Each udev instance will see a different PCI tree, and thus cannot provide consistent enumeration. Use of this policy should be limited to only scenarios where all PCI devices are present at boot (cold-plug).

Exit Codes

Returns 0 on success, with BIOS-suggested name printed to stdout.
Returns 1 on provided device name lookup failure.
Returns 2 if system BIOS does not provide naming information. biosdevname requires system BIOS to provide naming information, either via SMBIOS or sysfs files.
Returns 3 if not run as root but requires root privileges.
Returns 4 if running in a virtual machine.

See Also


biosdevname was written by  Matt Domsch <>

This manual page was written by Rudy Gevaert <>, for the Debian project (but may be used by others).


Nov 28, 2010