How to find hardware/chipset name using terminal in Linux

16,924

Your particular chipset’s PCI id is shared by the four variants in the family, and distinguishing between them involves looking at the capability identifier in the PCI configuration registers. Section 19.1.36 of the datasheet has the details; the relevant information is stored at offset 0xE5 in the configuration registers, and bits 2 to 4 at that offset will tell you which variant you have:

  • 111 = PM45
  • 001 = GM45
  • 011 = GL40
  • 100 = GS45

You should be able to see this with lspci -xxx -d 8086:2a40. But I doubt you’ll find a utility which would give you the name of the chipset using this information.

In your case, the relevant line in the output of lspci -xxx is

e0: 09 00 0a 61 b1 6d 51 1f b9 e1 00 00 00 00 00 00

This needs to be read backwards; the 80 capability bits are 0xE1B91F516DB1610A0009. Bits 44:42 are 011 (the sixth value in the line is 0x6D, 0b01101101, and bits 4:2 in that are 011).

Share:
16,924

Related videos on Youtube

Rafał Malinowski
Author by

Rafał Malinowski

Updated on September 18, 2022

Comments

  • Rafał Malinowski
    Rafał Malinowski over 1 year

    How can I reliably determine the chipset of a machine?  I tried to use the lspci, hwinfo, lshw and dmidecode commands on my old Asus K50IJ with Linux Mint, but the output does not provide precise enough information about the northbridge.  I found out that its chipset is Intel® Mobile GL40 Express +ICH9M on Asus's website, but I would like to be able to find that using only the terminal, if that's possible.  The above commands return a lot of information, but not what I'm looking for.  For instance, one line of output from lspci is:

    Host bridge: Intel corporation Mobile 4 Series Chipset Memory Controller Hub (rev09)
    

    but my output expectation would be:

    Intel® Mobile GL40 Express Chipset +ICH9M
    

    The output of lspci narrows down chipsets to this list, but that's still a lot to pick from: https://ark.intel.com/content/www/us/en/ark/products/series/34468/intel-4-series-chipsets.html

    Because of output about SATA controller, I could identify the southbridge:

      PCI 1f.2: 0106 SATA controller (AHCI 1.0)
      [Created at pci.378]
      Unique ID: w7Y8.1UWGXuPHmx0
      SysFS ID: /devices/pci0000:00/0000:00:1f.2
      SysFS BusID: 0000:00:1f.2
      Hardware Class: storage
      Model: "Intel 82801IBM/IEM (ICH9M/ICH9M-E) 4 port SATA Controller [AHCI mode]
      Vendor: pci 0x8086 "Intel Corporation"
    

    and with that, I could check on the Intel chipset list that it pairs with the GL40 northbridge.  But it feels like a lot of work for a simple piece of information, especially since, on my other machines, lspci outputs the precise chipset model name.

    (response to a comment) the full output of lspci -nn -d 8086:

    00:00.0 Host bridge [0600]: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub [8086:2a40] (rev 09)
    00:02.0 VGA compatible controller [0300]: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller [8086:2a42] (rev 09)
    00:02.1 Display controller [0380]: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller [8086:2a43] (rev 09)
    00:1a.0 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 [8086:2937] (rev 03)
    00:1a.1 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 [8086:2938] (rev 03)
    00:1a.2 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 [8086:2939] (rev 03)
    00:1a.7 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 [8086:293c] (rev 03)
    00:1b.0 Audio device [0403]: Intel Corporation 82801I (ICH9 Family) HD Audio Controller [8086:293e] (rev 03)
    00:1c.0 PCI bridge [0604]: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 [8086:2940] (rev 03)
    00:1c.1 PCI bridge [0604]: Intel Corporation 82801I (ICH9 Family) PCI Express Port 2 [8086:2942] (rev 03)
    00:1c.5 PCI bridge [0604]: Intel Corporation 82801I (ICH9 Family) PCI Express Port 6 [8086:294a] (rev 03)
    00:1d.0 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 [8086:2934] (rev 03)
    00:1d.1 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 [8086:2935] (rev 03)
    00:1d.2 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 [8086:2936] (rev 03)
    00:1d.7 USB controller [0c03]: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 [8086:293a] (rev 03)
    00:1e.0 PCI bridge [0604]: Intel Corporation 82801 Mobile PCI Bridge [8086:2448] (rev 93)
    00:1f.0 ISA bridge [0601]: Intel Corporation ICH9M LPC Interface Controller [8086:2919] (rev 03)
    00:1f.2 SATA controller [0106]: Intel Corporation 82801IBM/IEM (ICH9M/ICH9M-E) 4 port SATA Controller [AHCI mode] [8086:2929] (rev 03)
    

    Output of cat /proc/cpuinfo:

    processor       : 0
    vendor_id       : GenuineIntel
    cpu family      : 6
    model           : 23
    model name      : Pentium(R) Dual-Core CPU       T4300  @ 2.10GHz
    stepping        : 10
    microcode       : 0xa0b
    cpu MHz         : 1196.901
    cache size      : 1024 KB
    physical id     : 0
    siblings        : 2
    core id         : 0
    cpu cores       : 2
    apicid          : 0
    initial apicid  : 0
    fpu             : yes
    fpu_exception   : yes
    cpuid level     : 13
    wp              : yes
    flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl cpuid aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm xsave lahf_lm pti dtherm
    bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
    bogomips        : 4189.09
    clflush size    : 64
    cache_alignment : 64
    address sizes   : 36 bits physical, 48 bits virtual
    power management:
    
    processor       : 1
    vendor_id       : GenuineIntel
    cpu family      : 6
    model           : 23
    model name      : Pentium(R) Dual-Core CPU       T4300  @ 2.10GHz
    stepping        : 10
    microcode       : 0xa0b
    cpu MHz         : 1196.897
    cache size      : 1024 KB
    physical id     : 0
    siblings        : 2
    core id         : 1
    cpu cores       : 2
    apicid          : 1
    initial apicid  : 1
    fpu             : yes
    fpu_exception   : yes
    cpuid level     : 13
    wp              : yes
    flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl cpuid aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm xsave lahf_lm pti dtherm
    bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
    bogomips        : 4189.09
    clflush size    : 64
    cache_alignment : 64
    address sizes   : 36 bits physical, 48 bits virtual
    power management:
    

    Edit, output of sudo lspci -vv -d 8086:2a40:

    00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub (rev 09)
            Subsystem: ASUSTeK Computer Inc. Mobile 4 Series Chipset Memory Controller Hub
            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
            Capabilities: [e0] Vendor Specific Information: Len=0a <?>
    

    I don't know where to look in the output of lspci -xxx -d 8086:2a40:

    00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub (rev 09)
    00: 86 80 40 2a 06 00 90 20 09 00 00 06 00 00 00 00
    10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 67 18
    30: 00 00 00 00 e0 00 00 00 00 00 00 00 00 00 00 00
    40: 01 90 d1 fe 00 00 00 00 01 00 d1 fe 00 00 00 00
    50: 00 00 50 03 19 00 00 00 00 00 00 00 00 00 00 00
    60: 01 00 00 e0 00 00 00 00 01 80 d1 fe 00 00 00 00
    70: 00 00 00 00 00 00 00 00 01 08 00 00 00 00 00 00
    80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    90: 10 11 11 00 00 33 33 00 40 00 4f 00 00 1a 38 00
    a0: 20 00 00 14 00 00 00 00 00 00 00 00 00 00 00 00
    b0: 00 c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    d0: 00 00 00 00 00 00 00 00 00 00 00 00 70 02 00 00
    e0: 09 00 0a 61 b1 6d 51 1f b9 e1 00 00 00 00 00 00
    f0: 00 00 00 00 00 00 00 00 a0 0f 09 00 00 00 00 00
    
    • G-Man Says 'Reinstate Monica'
      G-Man Says 'Reinstate Monica' over 2 years
      I can’t find “Mobilny” (in English) anywhere on the Internet (except in this question), but the Internet does tell me that it’s the Polish word for “mobile”.  Did you perhaps mistake a word for a name and transcribe it when you should have translated it?
    • Rafał Malinowski
      Rafał Malinowski over 2 years
      yes, my bad, it's a polish word, but it does not have an impact on the question. I copied the info here as expected output. I checked outputs "manually".
  • Rafał Malinowski
    Rafał Malinowski over 4 years
    I forgot to mention that the LinuxMint on that machine was installed on a different PC and I only swapped the hard drive. Does it matter? Could you point me even further in looking for those 3 bits?
  • Stephen Kitt
    Stephen Kitt over 4 years
    It doesn’t matter. See my update, hopefully that clarifies things!
  • SebMa
    SebMa about 3 years
    @StephenKitt Very interesting :). How can I apply this for AMD chipset, I only 5 hexadecimal lines in the output of lspci -s 0:0.0 -xxx
  • Stephen Kitt
    Stephen Kitt about 3 years
    @SebMa you need to find the corresponding datasheet, and determine which part of the configuration registers is relevant in your case.
  • Rafał Malinowski
    Rafał Malinowski over 2 years
    your answer does not seem to be accurate, are there options that you mean to use?