- How to find network card driver name and version on Linux
- Method One: dmesg
- Method Two: ethtool
- Method Three: lshw
- Support Xmodulo
- 🏷 Как найти имя и версию драйвера сетевой карты в Linux
- Способ первый
- Способ второй
- Способ третий
- Linux: How to find the device driver used for a device?
- 8 Answers 8
- Как узнать какой драйвер использует устройство в Ubuntu Linux
- Как узнать какой драйвер использует устройство в Ubuntu Linux: 6 комментариев
- Добавить комментарий Отменить ответ
How to find network card driver name and version on Linux
Question: An Ethernet network interface card is attached to my Linux box, and I would like to know which network adapter driver is installed for the NIC hardware. Is there a way to find out the name and version of a network card driver for my network card?
For network interface card (NIC) hardware to operate properly, you need a suitable device driver for the NIC hardware (e.g., ixgbe driver for Intel NICs). A NIC device driver implements a hardware-independent common interface between the Linux kernel and the NIC, so that packets can be moved between the kernel and the NIC. While some drivers may be statically built in the kernel, most drivers for modern NICs are dynamically loaded as kernel modules.
When you are troubleshooting a NIC hardware problem, one thing you can do is to check whether a correct network adapter driver is installed properly. In this case, you need to know which kernel module is your NIC driver.
There are several ways to find the name/version of an Ethernet card driver on Linux.
Method One: dmesg
The first method is to to check dmesg messages. Since the kernel loads necessary hardware drivers during boot, dmesg output should tell if an Ethernet card driver is installed.
The above output shows that a driver named tg3 is loaded in the kernel.
If you want to know more detail about this driver (e.g., driver version), you can use modinfo command.
If dmesg does not print any information about Ethernet driver, that means no suitable network device driver is available on your system.
Method Two: ethtool
The second method is to use the ethtool command. To find out the driver name for an interface eth0 , run the following.
Method Three: lshw
Another useful tool for NIC driver information is lshw . Type the following command to get detailed information about available Ethernet card(s) and their driver.
In the lshw output, look for the capabilities line, and examine driver and driverversion in the line.
If no suitable NIC driver is installed on your system, the driver field will remain empty.
Support Xmodulo
This website is made possible by minimal ads and your gracious donation via PayPal or credit card
Please note that this article is published by Xmodulo.com under a Creative Commons Attribution-ShareAlike 3.0 Unported License. If you would like to use the whole or any part of this article, you need to cite this web page at Xmodulo.com as the original source.
🏷 Как найти имя и версию драйвера сетевой карты в Linux
Вопрос: Сетевая карта Ethernet подключена к моей Linux-системе, и я хотел бы узнать, какой драйвер сетевого адаптера установлен для оборудования NIC. Есть ли способ узнать имя и версию драйвера сетевой карты для моей сетевой карты?
Для правильной работы аппаратного обеспечения сетевой интерфейсной платы (NIC) необходим соответствующий драйвер устройства для аппаратного обеспечения NIC.
Драйвер устройства NIC реализует аппаратно-независимый общий интерфейс между ядром Linux и NIC, так что пакеты могут перемещаться между ядром и NIC.
Хотя некоторые драйверы могут быть статически встроены в ядро, большинство драйверов для современных сетевых адаптеров динамически загружаются как модули ядра.
Когда вы устраняете неполадки аппаратного обеспечения сетевого адаптера, вы можете проверить, правильно ли установлен драйвер сетевого адаптера.
В этом случае вам нужно знать, какой модуль ядра является вашим драйвером NIC.
Способ первый
Первый способ заключается в проверке сообщений dmesg.
Поскольку ядро загружает необходимые аппаратные драйверы во время загрузки, вывод dmesg должен сообщить, установлен ли драйвер карты Ethernet.
○ → dmesg | grep -i ethernet [ 1.998782] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
Приведенный выше вывод показывает, что драйвер с именем r8169 загружен в ядро.
Если вы хотите узнать более подробно об этом драйвере (например, о версии драйвера), вы можете использовать команду modinfo.
Если dmesg не выводит какую- либо информацию о драйвере Ethernet, это означает, что в вашей системе нет подходящего драйвера сетевого устройства.
Способ второй
Второй способ – использовать команду ethtool. Чтобы узнать имя драйвера для интерфейса eth0, выполните следующее.
Способ третий
Введите следующую команду, чтобы получить подробную информацию о доступных картах Ethernet и их драйверах.
Linux: How to find the device driver used for a device?
If my target has one device connected and many drivers for that device loaded, how can I understand what device is using which driver?
8 Answers 8
Example. I want to find the driver for my Ethernet card:
$ sudo lspci . 02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01) $ find /sys | grep drivers.*02:00 /sys/bus/pci/drivers/r8169/0000:02:00.0
First I need to find coordinates of the device using lspci ; then I find driver that is used for the devices with these coordinates.
I know the OP asked for «drivers being used», but what if the driver is not installed nor being used? How to find out just by the vendorID:productID ? Also, what if it is not a PCI device, and you only see it in lsusb for example?
@DrBeco: But if driver is not installed, what do you want to find? You should just google in this case
#!/bin/bash for f in /sys/class/net/*; do dev=$(basename $f) driver=$(readlink $f/device/driver/module) if [ $driver ]; then driver=$(basename $driver) fi addr=$(cat $f/address) operstate=$(cat $f/operstate) printf "%10s [%s]: %10s (%s)\n" "$dev" "$addr" "$driver" "$operstate" done
$ ~/what_eth_drivers.sh eth0 [52:54:00:aa:bb:cc]: virtio_net (up) eth1 [52:54:00:dd:ee:ff]: virtio_net (up) eth2 [52:54:00:99:88:77]: virtio_net (up) lo [00:00:00:00:00:00]: (unknown)
I’d like to find solution which would find also veth and other virtual drivers. IMHO the only solution is to use ethtool or lshw .
sudo lspci -v will show it. like this:
$ sudo lspci -v 00:01.0 VGA compatible controller: Advanced Micro Devices, Inc. . Kernel driver in use: radeon Kernel modules: radeon
You can also combine it with grep like this:
$ sudo lspci -v | grep -A 20 VGA
For USB based devices you can see the driver name by using the lsusb command:
And/or you use lshw which enumerates the devices on all buses including USB, PCI, etc so you can see which driver it uses:
FTR: the driver is shown at line titled configuration , for example: configuration: driver=btusb maxpower=100mA speed=12Mbit/s
If you just want to plainly use sysfs and doesn’t want to deal with all these commands which eventually looks inside sysfs anyways, here’s how:
say, what is the module/driver for eth6? «sfc» it is
# ls -l /sys/class/net/eth6/device/driver lrwxrwxrwx 1 root root 0 Jan 22 12:30 /sys/class/net/eth6/device/driver -> ../../../../bus/pci/drivers/sfc
or better yet.. let readlink resolve the path for you.
# readlink -f /sys/class/net/eth6/device/driver /sys/bus/pci/drivers/sfc
so. to figure out what are the drivers for all of your network interfaces:
# ls -1 /sys/class/net/ | grep -v lo | xargs -n1 -I<> bash -c 'echo -n <> :" " ; basename `readlink -f /sys/class/net/<>/device/driver`' eth0 : tg3 eth1 : tg3 eth10 : mlx4_core eth11 : mlx4_core eth2 : tg3 eth3 : tg3 eth4 : mlx4_core eth5 : mlx4_core eth6 : sfc eth7 : sfc eth8 : sfc eth9 : sfc
Как узнать какой драйвер использует устройство в Ubuntu Linux
Пункт Kernel driver in use.
Как узнать какой драйвер использует устройство в Ubuntu Linux: 6 комментариев
Вася, добавил в исходную заметку картинку, чтобы было понятно что нужно смотреть. Таким образом мы узнаём [b]какой именно драйвер[/b] (правильно всё-таки его называть модулем) использует Linux для устройства. Я не очень понимаю зачем нужна [b]именно версия драйвера[/b], так как она жёстка привязана к версии ядра и обычно для железа говорят, что оно поддерживается, начиная с такой-то версии ядра. Видимо это наследие M$. Если хотите узнать версию ядра, то в терминале нужно выполнить ( $ в начале строки означает, что команда вводится от обычного пользователя и не вводится в терминал. Со второй строки идёт результат выполнения команды. ) :
$ uname -a Linux asus 4.15.0-96-generic #97-Ubuntu SMP Wed Apr 1 03:25:46 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[i]4.15.0-96-generic[/i] и есть версия ядра. Если очень хочется узнать версию модуля, то можно узнать md4-хэш от исходников, использованных для компиляции модуля:
$ modinfo iwlwifi | grep -E '^(src|)version' srcversion: 85B6BF2737FFC0E2C190EE5
Поле version у некоторых модулей тоже присутствует, но редко. Правда, я не знаю для чего может понадобится эта информация.
Версия драйвера важна для видеодрайвера. Тут можно узнать, что для карточки используется драйвер nvidia, а версии нет.
Не забываем, что если устройство работает, то используется модуль, который поддерживает устройство. В случае с проприетарными модулями lspci -v покажет, что используется проприетарный модуль и какой именно. Относительно NVIDIA это должно быть что-то типа (проверить не могу, так как нет доступа к устройству с картой от NVIDIA): nvidia.ko Соответственно, версию нужно уже искать в самом проприетарном модуле:
# modinfo /usr/lib/modules/$(uname -r)/kernel/drivers/video/nvidia.ko | grep ^version
или
# find /usr/lib/modules -name nvidia.ko -exec modinfo <> \; Источник.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.