This direct shows how yous tin position PCI Driver Chipset Information on Linux. Often users troll dissimilar forums together with blogs to detect out they tin position which driver their PCI or USB device is using. This direct applies to all possible scenarios. After reading together with next this direct yous volition endure able to position the followings:
Examples of PCI devices
- CPU
- Motherboards
- Communication controllers
- Network devices
- High definition Audio Controller
- VGA or graphics cards
- Memory (RAM)
- Thermal Control Registers
- Ethernet devices
- DVD R/W devices
- Blueray devices
- CDROM devices
In short, whatever device drivers tin endure identified that is using plugged into a PCI slot.
This direct volition piece of work for whatever Linux distributions, namely –
- Linux Mint
- Ubuntu
- Debian GNU/Linux
- Mageia / Mandriva
- Fedora
- openSUSE / SUSE Linux Enterprise
- Arch Linux
- CentOS / Red Hat Enterprise Linux
- PCLinuxOS
- Slackware Linux
- Puppy Linux
- Kali Linux (my distro ;) )
As usual, I volition start amongst basics first. adjacent few paragraphs are slightly irksome but if yous actually desire to understand, yous mightiness equally good read them, otherwise simply skip to the technical bits. Table of contents above.
So let’s start amongst the basics .. what is a PCI device…
What is Peripheral Component Interconnect or PCI?
Conventional PCI, oftentimes shortened to PCI, is a local calculator jitney for attaching hardware devices inwards a computer. PCI is an initialism of Peripheral Component Interconnect together with is component division of the PCI Local Bus standard. The PCI jitney supports the functions works life on a processor jitney but inwards a standardized format that is independent of whatever exceptional processor’s native bus. Devices connected to the PCI jitney appear to a jitney principal to endure connected straight to its ain jitney together with are assigned addresses inwards the processor’s address space.It is a parallel bus, synchronous to a unmarried jitney clock.
Attached devices tin stimulate got either the shape of an integrated circuit fitted onto the motherboard itself (called a planar device inwards the PCI specification) or an expansion bill of fare that fits into a slot. The PCI Local Bus was starting fourth dimension implemented inwards IBM PC compatibles, where it displaced the combination of several slowly ISA slots together with 1 fast VESA Local Bus slot equally the jitney configuration. It has after been adopted for other calculator types. Typical PCI cards used inwards PCs include: network cards, audio cards, modems, extra ports such equally USB or serial, TV tuner cards together with disk controllers. PCI video cards replaced ISA together with VESA cards until growing bandwidth requirements outgrew the capabilities of PCI. The preferred interface for video cards hence became AGP, itself a superset of conventional PCI, earlier giving agency to PCI Express.
The starting fourth dimension version of conventional PCI works life inwards consumer desktop computers was a 32-bit jitney using a 33 MHz jitney clock together with v V signalling, although the PCI 1.0 criterion provided for a 64-bit variant equally well. These stimulate got 1 locating notch inwards the card. Version 2.0 of the PCI criterion introduced 3.3 V slots, physically distinguished past times a flipped physical connecter to preventing accidental insertion of v V cards. Universal cards, which tin operate on either voltage, stimulate got ii notches. Version 2.1 of the PCI criterion introduced optional 66 MHz operation. H5N1 server-oriented variant of conventional PCI, called PCI-X (PCI Extended) operated at frequencies upwards to 133 MHz for PCI-X 1.0 together with upwards to 533 MHz for PCI-X 2.0. An internal connecter for laptop cards, called Mini PCI, was introduced inwards version 2.2 of the PCI specification. The PCI jitney was also adopted for an external laptop connecter standard—the CardBus. The starting fourth dimension PCI specification was developed past times Intel, but subsequent evolution of the criterion became the responsibleness of the PCI Special Interest Group (PCI-SIG).
Conventional PCI together with PCI-X are sometimes called Parallel PCI inwards company to distinguish them technologically from their to a greater extent than recent successor PCI Express, which adopted a serial, lane-based architecture. Conventional PCI’s heyday inwards the desktop calculator marketplace position was about the decade 1995-2005. PCI together with PCI-X stimulate got decease obsolete for most purposes, however, they are soundless mutual on modern desktops for the purposes of backwards compatibility together with the depression relative toll to produce. Many kinds of devices previously available on PCI expansion cards are right away unremarkably integrated onto motherboards or available inwards universal series jitney together with PCI Express versions. Source: Wikipedia
Question: How attain I position PCI driver for anything inwards Linux?
This is a 1000000 dollar question, simply how oftentimes yous run into a similar post service inwards forums together with blogs amongst vague together with unreliable answers? I volition endeavor my best to reply anything together with everything inwards this post service close all devices together with their drivers inwards here. So, remain tuned equally this is going to a long a** post.
Identify PCI Driver Chipset Information inwards Linux
lspci which is a criterion command inwards all Linux distribution volition demo yous the PCI devices on your system.
LS = List
PCI = Peripheral Component Interconnect devices
Step 1: List all PCI devices – Identify PCI driver
root@kali: # lspci
This volition give yous a sample output similar the following:
root@kali: # lspci
(some output removed)
00:00.0 Host bridge: Intel Corporation Core Processor DMI (rev 11)
00:03.0 PCI bridge: Intel Corporation Core Processor PCI Express Root Port 1 (rev 11)
00:19.0 Ethernet controller: Intel Corporation 82578DM Gigabit Network Connection (rev 06)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev a6)
00:1f.0 ISA bridge: Intel Corporation v Series Chipset LPC Interface Controller (rev 06)
00:1f.3 SMBus: Intel Corporation v Series/3400 Series Chipset SMBus Controller (rev 06)
01:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 210] (rev a2)
root@kali: #
Now yous tin run into the device names, types together with some funky numbers at the front. (highlighted inwards bold-red).
Step 2: Get verbose output for selected device – Identify PCI driver
Let’s say nosotros desire to position the driver used my Linux marrow for Ethernet controller (which is the wired port on my motherboard).
00:19.0 Ethernet controller: Intel Corporation 82578DM Gigabit Network Connection (rev 06)
Copy the number’s at the front end i.e. 00:19.0 together with work it amongst lspci command to detect to a greater extent than info
root@kali: # lspci -vv -s 00:19.0
This volition give yous an output similar below:
root@kali: # lspci -vv -s 00:19.0
00:19.0 Ethernet controller: Intel Corporation 82578DM Gigabit Network Connection (rev 06)
Subsystem: Acer Incorporated [ALI] Device 8000
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pivot H5N1 routed to IRQ 46
Region 0: Memory at faec0000 (32-bit, non-prefetchable) [size=128K]
Region 1: Memory at faefa000 (32-bit, non-prefetchable) [size=4K]
Region 2: I/O ports at d000 [size=32]
Capabilities: [c8] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=1 PME-
Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0f00c Data: 4192
Capabilities: [e0] PCI Advanced Features
AFCap: TP+ FLR+
AFCtrl: FLR-
AFStatus: TP-
Kernel driver inwards use: e1000e
So the Kernel is using a driver named e1000e.
Step 3: Get driver information for selected device – Identify PCI driver
Now to acquire the total details of the driver yous number the next command:
root@kali: # modinfo e1000e
This volition listing everything together with anything for that driver including the driver file.
root@kali: # modinfo e1000e
filename: /lib/modules/3.14-kali1-amd64/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
version: 2.3.2-k
license: GPL
description: Intel(R) PRO/1000 Network Driver
author: Intel Corporation, <linux.nics@intel.com>
srcversion: 875CF610ED4160DBA055BB2
alias: pci:v00008086d000015A3sv*sd*bc*sc*i*
alias: pci:v00008086d000015A2sv*sd*bc*sc*i*
alias: pci:v00008086d000015A1sv*sd*bc*sc*i*
alias: pci:v00008086d0000105Esv*sd*bc*sc*i*
depends: ptp
intree: Y
vermagic: 3.14-kali1-amd64 SMP mod_unload modversions
parm: debug:Debug grade (0=none,...,16=all) (int)
parm: copybreak:Maximum size of bundle that is copied to a novel buffer on have (uint)
parm: TxIntDelay:Transmit Interrupt Delay (array of int)
parm: TxAbsIntDelay:Transmit Absolute Interrupt Delay (array of int)
parm: RxIntDelay:Receive Interrupt Delay (array of int)
parm: RxAbsIntDelay:Receive Absolute Interrupt Delay (array of int)
parm: InterruptThrottleRate:Interrupt Throttling Rate (array of int)
parm: IntMode:Interrupt Mode (array of int)
parm: SmartPowerDownEnable:Enable PHY smart ability downwards (array of int)
parm: KumeranLockLoss:Enable Kumeran lock loss workaround (array of int)
parm: WriteProtectNVM:Write-protect NVM [WARNING: disabling this tin Pb to corrupted NVM] (array of int)
parm: CrcStripping:Enable CRC Stripping, disable if your BMC needs the CRC (array of int)
So the driver file used for this exceptional Network Controller is:
filename: /lib/modules/3.14-kali1-amd64/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
So right away yous know the device name, details, driver used, vendor, publisher, dependencies, license together with Author details for the selected PCI device.
Step 4: NVIDIA – Identify PCI driver dilemma
Interestingly, NVIDIA driver (I used Proprietary NVIDIA driver – NVIDIA Accelerated Linux Graphics Driver) together with it seems I had some problem getting the right info. Here’s quick rundown:
root@kali: # lspci | grep VGA*
01:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 210] (rev a2)
root@kali: # lspci -vv -s 01:00.0
(some output removed)
Kernel driver inwards use: nvidia
So naturally I thought, O’yeah, it’s using nvidia driver. So modinfo should simply listing the driver file.
So when I tried that, I got NADA
root@kali: # modinfo nvidia
ERROR: Module nvidia non found.
Bloody hell, this was annoying. Then I simply pressed TAB primal after the get upwards nvidia together with I had ii options
- nvidia-current and
- nvidia-uvm
root@kali: # modinfo nvidia-
nvidia-current nvidia-uvm
root@kali: # modinfo nvidia-current
filename: /lib/modules/3.14-kali1-amd64/nvidia/nvidia-current.ko
alias: char-major-195-*
version: 331.67
supported: external
license: NVIDIA
alias: pci:v000010DEd00000E00sv*sd*bc04sc80i00*
alias: pci:v000010DEd00000AA3sv*sd*bc0Bsc40i00*
alias: pci:v000010DEd*sv*sd*bc03sc02i00*
alias: pci:v000010DEd*sv*sd*bc03sc00i00*
depends: i2c-core
vermagic: 3.14-kali1-amd64 SMP mod_unload modversions
parm: NVreg_Mobile:int
parm: NVreg_ResmanDebugLevel:int
parm: NVreg_RmLogonRC:int
parm: NVreg_ModifyDeviceFiles:int
parm: NVreg_DeviceFileUID:int
parm: NVreg_DeviceFileGID:int
parm: NVreg_DeviceFileMode:int
parm: NVreg_RemapLimit:int
parm: NVreg_UpdateMemoryTypes:int
parm: NVreg_InitializeSystemMemoryAllocations:int
parm: NVreg_RMEdgeIntrCheck:int
parm: NVreg_UsePageAttributeTable:int
parm: NVreg_MapRegistersEarly:int
parm: NVreg_RegisterForACPIEvents:int
parm: NVreg_CheckPCIConfigSpace:int
parm: NVreg_EnablePCIeGen3:int
parm: NVreg_EnableMSI:int
parm: NVreg_MemoryPoolSize:int
parm: NVreg_RegistryDwords:charp
parm: NVreg_RmMsg:charp
parm: NVreg_AssignGpus:charp
root@kali: #
So looks similar NVIDIA-Current is the driver that beingness used together with it’s soft-linked to NVIDIA inwards MODINFO. Anyone would similar to comment/enlighten on this discrepancy?
Step 5: More ways to Identify PCI driver details
Last but non the least, I saved the best 3 options for the in conclusion … this is a quicker agency to position PCI driver on Linux. (yeah, I know what you’re thinking .. what a jerk .. could’ve posted it starting fourth dimension … but learning the difficult agency is improve drive right away yous volition NEVER forget this … EVER).. So anywho …
Step 5.1: Identify PCI driver using lspci -k command
Easy undertaking .. simply number the next command that volition listing the get upwards of the driver straightway…
root@kali: # lspci -k
-k flag shows marrow drivers treatment each device for all PCI devices.
root@kali: # lspci -k
(some outputs removed)
0000:00:19.0 Ethernet controller: Intel Corporation 82578DM Gigabit Network Connection (rev 06)
Subsystem: Acer Incorporated [ALI] Device 8000
Kernel driver inwards use: e1000e
01:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 210] (rev a2)
Kernel driver inwards use: nvidia
01:00.1 Audio device: NVIDIA Corporation High definition Audio Controller (rev a1)
Kernel driver inwards use: snd_hda_intel
In this agency yous tin skip Step 1.2 all together (getting verbose output).
Step 5.2: Identify PCI driver using lshw command
lshw is some other command that tin endure used to listing hardware info.
ls = List
hw = Hardwares
First yous demand to install lshw inwards your Linux system. Easy job.. Install using the next command:
root@kali: # apt-get install lshw
Now listing all hardware together with detailed information using the next command
root@kali: # lshw
and yous run into a gazillion things. Go through the output together with yous volition detect all the things yous volition always demand for a exceptional device. This tin endure quite painful to browse through. There’s a easier agency to attain that.. nosotros tin narrow downwards each things according to it’s class.
For VGA/Display related output, yous tin work -C Display amongst lshw command.
root@kali: # lshw -C Display
For Audio/Multimedia related output, yous tin work -C Multimedia amongst lshw command.
root@kali: # lshw -C Multimedia
For Network related output, yous tin work -C Network amongst lshw command.
root@kali: # lshw -C Network
and finally in conclusion but non the least, lshw also got a GUI version (lshw-gtk). Install that if yous don’t desire to work command draw tools.
Step 5.3: Identify PCI driver using lshw-gtk tool
root@kali: # apt-get install lshw-gtk
Launch GTK+ front-end for lshw using the next command on terminal
root@kali: # lshw-gtk &
Refresh the window together with yous volition run into everything equally per order. Double-click to expand each section.
Note: For all 3 option, (1.5.1, 1.5.2 together with 1.5.3) yous demand to work modinfo equally the concluding step. For illustration my ACPI Processor is using the next driver:
root@kali: # modinfo acpi_cpufreq
filename: /lib/modules/3.14-kali1-amd64/kernel/drivers/cpufreq/acpi-cpufreq.ko
alias: acpi
license: GPL
description: ACPI Processor P-States Driver
author: Paul Diefenbaugh, Dominik Brodowski
alias: x86cpu:vendor:*:family:*:model:*:feature:*00E8*
alias: x86cpu:vendor:*:family:*:model:*:feature:*0016*
alias: acpi*:ACPI0007:*
alias: acpi*:LNXCPU:*
depends: processor
intree: Y
vermagic: 3.14-kali1-amd64 SMP mod_unload modversions
parm: acpi_pstate_strict:value 0 or non-zero. non-zero -> strict ACPI checks are performed during frequency changes. (uint)
[1]+ Done lshw-gtk
Summary
I was planning to write a unmarried Article on how to position PCI together with USB driver but it seems that would endure rattling very long post. So I’ve decided to separate the post service into Two parts,
Follow to the adjacent post service if you’re using a USB device together with trying to position USB driver used for it. Thanks for reading, delight share.