How do I find out what kernel module is used for any given network interface?


On the command line run

sudo lshw -C network 

For every network interface you'll get a section starting with *-network. Every section hast a logical name: line that contains the interface name and a configuration: line that contain the driver and some other information.


You can query sysfs to tell you this information. To tell which driver a network interface is using:

ls -l /sys/class/net/<devname>/device/driver

... where <devname> is something like eth0. This driver directory will be a symlink to the driver node in sysfs.

To get the name of the module that provides that driver:

ls -l /sys/class/net/<devname>/device/driver/module

... and this module directory will be a symlink to the module node in sysfs.

  • How to detect virtual drivers (e.g. veth)? It's possible with ethtool -i IFACE_NAME, but how to find it from sysfs? – pevik Jul 20 '17 at 21:18

IMHO for scripts the best is to use sysfs info (as Jeremy Kerr shows), but for more info:

ethtool -i IFACE_NAME


$ ethtool -i eth0
driver: 8139cp
version: 1.3
bus-info: 0000:00:07.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no

For USB devices you can use the lsusb command e.g.:

lsusb -t

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.