Wednesday, August 20, 2014

Identify PCI and USB Wired and Wireless Driver in Linux - Identify PCI Driver. Ubuntu, Debian, Mint, CentOS, Fedora & all Linux distro

Read full details here: Identify PCI and USB Wired and Wireless Driver in Linux - Identify PCI Driver. Ubuntu, Debian, Mint, CentOS, Fedora & all Linux distro

This guide shows how you can identify PCI Driver Chipset Information on Linux. Often users troll different forums and blogs to find out they can identify which driver their PCI or USB device is using. This guide applies to all possible scenarios. After reading and following this guide you will be able to identify the followings:

Examples of PCI devices

  1. Identify PCI driver for Processor – CPU
  2. Identify PCI driver for Motherboards
  3. Identify PCI driver for Communication controllers
  4. Identify PCI driver for Network devices
  5. Identify PCI driver for USB devices
  6. Identify PCI driver for USB controllers
  7. Identify PCI driver for High Definition Audio Controller
  8. Identify PCI driver for VGA or graphics cards
  9. Identify PCI driver for Memory (RAM)
  10. Identify PCI driver for Thermal Control Registers
  11. Identify PCI driver for Ethernet devices
  12. Identify PCI driver for DVD R/W devices
  13. Identify PCI driver for Blueray devices
  14. Identify PCI driver for CDROM devices
In short, any device drivers can be identified that is using plugged into a PCI slot.

This guide will work for any Linux distributions, namely -
  1. Linux Mint
  2. Ubuntu
  3. Debian GNU/Linux
  4. Mageia / Mandriva
  5. Fedora
  6. openSUSE / SUSE Linux Enterprise
  7. Arch Linux
  8. CentOS / Red Hat Enterprise Linux
  9. PCLinuxOS
  10. Slackware Linux
  11. Puppy Linux
  12. Kali Linux (my distro ;) )
As usual, I will start with basics first. next few paragraphs are slightly boring but if you really want to understand, you might as well read them, otherwise just skip to the technical bits. Table of contents above.
So let’s start with the basics .. what is a PCI device…

What is Peripheral Component Interconnect or PCI?

Conventional PCI, often shortened to PCI, is a local computer bus for attaching hardware devices in a computer. PCI is an initialism of Peripheral Component Interconnect and is part of the PCI Local Bus standard. The PCI bus supports the functions found on a processor bus but in a standardized format that is independent of any particular processor’s native bus. Devices connected to the PCI bus appear to a bus master to be connected directly to its own bus and are assigned addresses in the processor’s address space.It is a parallel bus, synchronous to a single bus clock.

Attached devices can take either the form of an integrated circuit fitted onto the motherboard itself (called a planar device in the PCI specification) or an expansion card that fits into a slot. The PCI Local Bus was first implemented in IBM PC compatibles, where it displaced the combination of several slow ISA slots and one fast VESA Local Bus slot as the bus configuration. It has subsequently been adopted for other computer types. Typical PCI cards used in PCs include: network cards, sound cards, modems, extra ports such as USB or serial, TV tuner cards and disk controllers. PCI video cards replaced ISA and VESA cards until growing bandwidth requirements outgrew the capabilities of PCI. The preferred interface for video cards then became AGP, itself a superset of conventional PCI, before giving way to PCI Express.

The first version of conventional PCI found in consumer desktop computers was a 32-bit bus using a 33 MHz bus clock and 5 V signalling, although the PCI 1.0 standard provided for a 64-bit variant as well. These have one locating notch in the card. Version 2.0 of the PCI standard introduced 3.3 V slots, physically distinguished by a flipped physical connector to preventing accidental insertion of 5 V cards. Universal cards, which can operate on either voltage, have two notches. Version 2.1 of the PCI standard introduced optional 66 MHz operation. A server-oriented variant of conventional PCI, called PCI-X (PCI Extended) operated at frequencies up to 133 MHz for PCI-X 1.0 and up to 533 MHz for PCI-X 2.0. An internal connector for laptop cards, called Mini PCI, was introduced in version 2.2 of the PCI specification. The PCI bus was also adopted for an external laptop connector standard—the CardBus. The first PCI specification was developed by Intel, but subsequent development of the standard became the responsibility of the PCI Special Interest Group (PCI-SIG).

Conventional PCI and PCI-X are sometimes called Parallel PCI in order to distinguish them technologically from their more recent successor PCI Express, which adopted a serial, lane-based architecture. Conventional PCI’s heyday in the desktop computer market was approximately the decade 1995-2005. PCI and PCI-X have become obsolete for most purposes, however, they are still common on modern desktops for the purposes of backwards compatibility and the low relative cost to produce. Many kinds of devices previously available on PCI expansion cards are now commonly integrated onto motherboards or available in universal serial bus and PCI Express versions. Source: Wikipedia

Question: How do I identify PCI driver for anything in Linux?

This is a million dollar question, just how often you see a similar post in forums and blogs with vague and unreliable answers? I will try my best to answer anything and everything in this post about all devices and their drivers in here. So, stay tuned as this is going to a long a** post.

Identify PCI Driver Chipset Information in Linux

lspci which is a standard command in all Linux distribution will show you 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 will give you a sample output like 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 5 Series Chipset LPC Interface Controller (rev 06)
00:1f.3 SMBus: Intel Corporation 5 Series/3400 Series Chipset SMBus Controller (rev 06)
01:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 210] (rev a2)
root@kali:~#
 
Now you can see the device names, types and some funky numbers at the front. (highlighted in bold-red).

Step 2: Get verbose output for selected device – Identify PCI driver

Let’s say we want to identify the driver used my Linux kernel 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 i.e. 00:19.0 and use it with lspci command to find more info

root@kali:~# lspci -vv -s 00:19.0
This will give you an output like 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: pin A 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 in use: e1000e

So the Kernel is using a driver named e1000e.



Read the rest of it here: Identify PCI and USB Wired and Wireless Driver in Linux - Identify PCI Driver. Ubuntu, Debian, Mint, CentOS, Fedora & all Linux distro

No comments:

Post a Comment