usb0 vs eth0

David Ford david at
Mon Jun 1 18:05:35 CEST 2009

The udev operation is simple.  The net interface naming is normally 
based on the MAC address and is stored in /etc/udev/rules.d/{something} 
like 70-persistent-net.rules IF your distribution runs the persistence 
script.  Otherwise device naming is based on the order in which devices 
are found by the kernel.  If you load modules by hand, and you alternate 
which you load first, then you would see the associated order change.

Mind you, if everything is done automatically by the kernel, the device 
order can change if the kernel's sequence of loading drivers changes.  
Every once in a great while that happens.

Here's my server's persistent net file:

Colt ~ # cat /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib64/udev/write_net_rules
# program run by the persistent-net-generator.rules rules file.
# You can modify it, as long as you keep each rule on a single line.

# PCI device 0x14e4:0x1659 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", 
ATTR{address}=="00:1e:c9:2a:1c:64", ATTR{type}=="1", KERNEL=="eth*", 

# PCI device 0x14e4:0x1659 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", 
ATTR{address}=="00:1e:c9:2a:1c:65", ATTR{type}=="1", KERNEL=="eth*", 

These are rules and they can be changed.  If you want the 1c:64 device 
to be named "funkadiddle" instead of "eth0", you'd simply edit the file 
and make the change of NAME="funkadiddle"

If you alter the MAC address of your device, either by hand or on boot 
such as in Qi etc, then it won't match if you have a rule set for the 
old MAC address and it'll get the next available interface name.

So, simply set up your persistent-net rules file like you want and be 
happy.  Name your interfaces "usbcable" and "wifi" and set your 
/etc/network/interfaces file to match if it pleases you so.

More information about the community mailing list