Linux lshw Command – Get Linux Hardware Info

Filed Under: UNIX/Linux
Linux Hardware Information Lshw Command

Linux lshw command lists all the hardware configuration of the system.

Some of the common information we can extract from the lshw command are:

  • RAM Memory information
  • CPU configurations
  • Motherboard information
  • Harddisk information
  • Network devices information

Linux lshw Command Features

  • Ability to produce the output in various formats such as XML, JSON, and HTML.
  • We can dump the output to a file easily using the redirection operator.
  • The default output contains a lot of information, we can get specific hardware information using various options.
  • Supports GUI too, useful for Desktop environments only. Most of the time, we run these commands on a Linux server where we don’t have GUI software.

lshw command limitations

  • It doesn’t detect Firewire devices as of now.
  • It must be run as a superuser, either root or with sudo, to get the correct hardware details.
  • I found that -dump option to save the output in a file is not working.

Linux Hardware Information Examples

Let’s look at some examples to get the linux hardware information using the lshw command.

1. Getting Complete Linux Hardware Information

root@localhost:~# sudo lshw
localhost                   
    description: Computer
    product: Standard PC (Q35 + ICH9, 2009)
    vendor: QEMU
    version: pc-q35-3.1
    width: 64 bits
    capabilities: smbios-2.8 dmi-2.8 vsyscall32
    configuration: boot=normal
  *-core
       description: Motherboard
       physical id: 0
     *-firmware
          description: BIOS
          vendor: SeaBIOS
          physical id: 0
          version: rel-1.12.0-0-ga698c8995f-prebuilt.qemu.org
          date: 04/01/2014
          size: 96KiB
     *-cpu
          description: CPU
          product: AMD EPYC 7501 32-Core Processor
          vendor: Advanced Micro Devices [AMD]
          physical id: 400
          bus info: cpu@0
          version: pc-q35-3.1
          slot: CPU 0
          size: 2GHz
          capacity: 2GHz
          width: 64 bits
          capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp x86-64 rep_good nopl cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw perfctr_core ssbd ibpb vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 virt_ssbd arat
          configuration: cores=1 enabledcores=1 threads=1
     *-memory
          description: System Memory
          physical id: 1000
          size: 2GiB
          capacity: 2GiB
          capabilities: ecc
          configuration: errordetection=multi-bit-ecc
        *-bank
             description: DIMM RAM
             vendor: QEMU
             physical id: 0
             slot: DIMM 0
             size: 2GiB
     *-pci
          description: Host bridge
          product: 82G33/G31/P35/P31 Express DRAM Controller
          vendor: Intel Corporation
          physical id: 100
          bus info: pci@0000:00:00.0
          version: 00
          width: 32 bits
          clock: 33MHz
        *-display UNCLAIMED
             description: VGA compatible controller
             physical id: 1
             bus info: pci@0000:00:01.0
             version: 02
             width: 32 bits
             clock: 33MHz
             capabilities: vga_controller
             configuration: latency=0
             resources: memory:fd000000-fdffffff memory:febd0000-febd0fff memory:c0000-dffff
        *-scsi:0
             description: SCSI storage controller
             product: Virtio SCSI
             vendor: Red Hat, Inc.
             physical id: 2
             bus info: pci@0000:00:02.0
             version: 00
             width: 64 bits
             clock: 33MHz
             capabilities: scsi msix bus_master cap_list
             configuration: driver=virtio-pci latency=0
             resources: irq:22 ioport:c000(size=64) memory:febd1000-febd1fff memory:fe000000-fe003fff
           *-virtio0 UNCLAIMED
                description: Virtual I/O device
                physical id: 0
                bus info: virtio@0
                configuration: driver=virtio_scsi
        *-scsi:1
             description: SCSI storage controller
             product: Virtio SCSI
             vendor: Red Hat, Inc.
             physical id: 3
             bus info: pci@0000:00:03.0
             version: 00
             width: 64 bits
             clock: 33MHz
             capabilities: scsi msix bus_master cap_list
             configuration: driver=virtio-pci latency=0
             resources: irq:23 ioport:c040(size=64) memory:febd2000-febd2fff memory:fe004000-fe007fff
           *-virtio1 UNCLAIMED
                description: Virtual I/O device
                physical id: 0
                bus info: virtio@1
                configuration: driver=virtio_scsi
        *-network
             description: Ethernet controller
             product: Virtio network device
             vendor: Red Hat, Inc.
             physical id: 4
             bus info: pci@0000:00:04.0
             version: 00
             width: 64 bits
             clock: 33MHz
             capabilities: msix bus_master cap_list rom
             configuration: driver=virtio-pci latency=0
             resources: irq:20 ioport:c0c0(size=32) memory:febd3000-febd3fff memory:fe008000-fe00bfff memory:feb80000-febbffff
           *-virtio2
                description: Ethernet interface
                physical id: 0
                bus info: virtio@2
                logical name: eth0
                serial: f2:3c:92:d4:76:9e
                capabilities: ethernet physical
                configuration: autonegotiation=off broadcast=yes driver=virtio_net driverversion=1.0.0 ip=45.79.122.188 link=yes multicast=yes
        *-isa
             description: ISA bridge
             product: 82801IB (ICH9) LPC Interface Controller
             vendor: Intel Corporation
             physical id: 1f
             bus info: pci@0000:00:1f.0
             version: 02
             width: 32 bits
             clock: 33MHz
             capabilities: isa
             configuration: driver=lpc_ich latency=0
             resources: irq:0
        *-storage
             description: SATA controller
             product: 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode]
             vendor: Intel Corporation
             physical id: 1f.2
             bus info: pci@0000:00:1f.2
             version: 02
             width: 32 bits
             clock: 33MHz
             capabilities: storage msi ahci_1.0 bus_master cap_list
             configuration: driver=ahci latency=0
             resources: irq:31 ioport:c0e0(size=32) memory:febd4000-febd4fff
        *-serial UNCLAIMED
             description: SMBus
             product: 82801I (ICH9 Family) SMBus Controller
             vendor: Intel Corporation
             physical id: 1f.3
             bus info: pci@0000:00:1f.3
             version: 02
             width: 32 bits
             clock: 33MHz
             configuration: latency=0
             resources: ioport:700(size=64)
     *-scsi:0
          physical id: 1
          logical name: scsi0
        *-disk
             description: EXT4 volume
             product: QEMU HARDDISK
             vendor: Linux
             physical id: 0.0.0
             bus info: scsi@0:0.0.0
             logical name: /dev/sda
             logical name: /
             version: 1.0
             serial: ccf427b1-b94a-4237-b067-d9e9fc34756f
             size: 49GiB
             capabilities: 5400rpm journaled extended_attributes large_files huge_files dir_nlink recover extents ext4 ext2 initialized
             configuration: ansiversion=5 created=2020-02-19 14:27:58 filesystem=ext4 lastmountpoint=/ logicalsectorsize=512 modified=2020-04-28 08:10:42 mount.fstype=ext4 mount.options=rw,relatime,errors=remount-ro,data=ordered mounted=2020-04-28 08:10:43 sectorsize=512 state=mounted
     *-scsi:1
          physical id: 2
          logical name: scsi1
        *-disk
             description: Linux swap volume
             product: QEMU HARDDISK
             vendor: QEMU
             physical id: 0.1.2
             bus info: scsi@1:0.1.2
             logical name: /dev/sdb
             version: 1
             serial: 179fdb40-6f5a-4973-99fd-2c0dfee57907
             size: 512MiB
             capacity: 512MiB
             capabilities: 5400rpm swap initialized
             configuration: ansiversion=5 filesystem=swap logicalsectorsize=512 pagesize=4096 sectorsize=512
root@localhost:~# 

As you can see that it’s a lot of information, if you want quick hardware information, then run it with -short option.

root@localhost:~# sudo lshw -short
H/W path     Device    Class      Description
=============================================
                       system     Standard PC (Q35 + ICH9, 2009)
/0                     bus        Motherboard
/0/0                   memory     96KiB BIOS
/0/400                 processor  AMD EPYC 7501 32-Core Processor
/0/1000                memory     2GiB System Memory
/0/1000/0              memory     2GiB DIMM RAM
/0/100                 bridge     82G33/G31/P35/P31 Express DRAM Controller
/0/100/1               display    VGA compatible controller
/0/100/2               storage    Virtio SCSI
/0/100/2/0             generic    Virtual I/O device
/0/100/3               storage    Virtio SCSI
/0/100/3/0             generic    Virtual I/O device
/0/100/4               network    Virtio network device
/0/100/4/0   eth0      network    Ethernet interface
/0/100/1f              bridge     82801IB (ICH9) LPC Interface Controller
/0/100/1f.2            storage    82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode]
/0/100/1f.3            bus        82801I (ICH9 Family) SMBus Controller
/0/1         scsi0     storage    
/0/1/0.0.0   /dev/sda  volume     49GiB QEMU HARDDISK
/0/2         scsi1     storage    
/0/2/0.1.2   /dev/sdb  volume     512MiB QEMU HARDDISK
root@localhost:~# 

2. Getting Linux CPU Information

We can run lshw -C class_name to get the specific hardware class information. Let’s see how to get the CPU information.

root@localhost:~# sudo lshw -C cpu
  *-cpu                     
       description: CPU
       product: AMD EPYC 7501 32-Core Processor
       vendor: Advanced Micro Devices [AMD]
       physical id: 400
       bus info: cpu@0
       version: pc-q35-3.1
       slot: CPU 0
       size: 2GHz
       capacity: 2GHz
       width: 64 bits
       capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp x86-64 rep_good nopl cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw perfctr_core ssbd ibpb vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 virt_ssbd arat
       configuration: cores=1 enabledcores=1 threads=1
root@localhost:~# 

If you have multiple CPUs, then the command will provide information of all the CPUs.

The lshw -C processor command will also print the CPU information.

If you are not sure of the Class name, then look at it in the lshw short output.

3. Getting Linux Memory Information

root@localhost:~# sudo lshw -C memory
  *-firmware                
       description: BIOS
       vendor: SeaBIOS
       physical id: 0
       version: rel-1.12.0-0-ga698c8995f-prebuilt.qemu.org
       date: 04/01/2014
       size: 96KiB
  *-memory
       description: System Memory
       physical id: 1000
       size: 2GiB
       capacity: 2GiB
       capabilities: ecc
       configuration: errordetection=multi-bit-ecc
     *-bank
          description: DIMM RAM
          vendor: QEMU
          physical id: 0
          slot: DIMM 0
          size: 2GiB
root@localhost:~# 

4. Getting Linux Harddisk Information

root@localhost:~# sudo lshw -C storage

5. Getting Linux Motherboard Information

root@localhost:~# sudo lshw -C bus
  *-core                    
       description: Motherboard
       physical id: 0
  *-serial UNCLAIMED
       description: SMBus
       product: 82801I (ICH9 Family) SMBus Controller
       vendor: Intel Corporation
       physical id: 1f.3
       bus info: pci@0000:00:1f.3
       version: 02
       width: 32 bits
       clock: 33MHz
       configuration: latency=0
       resources: ioport:700(size=64)
root@localhost:~# 

6. Getting Linux Network Interfaces Information

root@localhost:~# sudo lshw -C network
  *-network                 
       description: Ethernet controller
       product: Virtio network device
       vendor: Red Hat, Inc.
       physical id: 4
       bus info: pci@0000:00:04.0
       version: 00
       width: 64 bits
       clock: 33MHz
       capabilities: msix bus_master cap_list rom
       configuration: driver=virtio-pci latency=0
       resources: irq:20 ioport:c0c0(size=32) memory:febd3000-febd3fff memory:fe008000-fe00bfff memory:feb80000-febbffff
     *-virtio2
          description: Ethernet interface
          physical id: 0
          bus info: virtio@2
          logical name: eth0
          serial: f2:3c:92:d4:76:9e
          capabilities: ethernet physical
          configuration: autonegotiation=off broadcast=yes driver=virtio_net driverversion=1.0.0 ip=45.79.122.188 link=yes multicast=yes
root@localhost:~# 

7. Linux Hardware Information in HTML, XML, and JSON Formats

The default output of lshw command is in plain text. We can get the output in HTML, XML, and JSON formats by specifying corresponding options.

XML:

root@localhost:~# sudo lshw -C bus -xml
<?xml version="1.0" standalone="yes" ?>
<!-- generated by lshw-B.02.18 -->
<!-- GCC 7.3.0 -->
<!-- Linux 4.15.0-88-generic #88-Ubuntu SMP Tue Feb 11 20:11:34 UTC 2020 x86_64 -->
<!-- GNU libc 2 (glibc 2.27) -->
<list>
  <node id="core" claimed="true" class="bus" handle="">
   <description>Motherboard</description>
   <physid>0</physid>
  <node id="serial" class="bus" handle="PCI:0000:00:1f.3">
   <description>SMBus</description>
   <product>82801I (ICH9 Family) SMBus Controller</product>
   <vendor>Intel Corporation</vendor>
   <physid>1f.3</physid>
   <businfo>pci@0000:00:1f.3</businfo>
   <version>02</version>
   <width units="bits">32</width>
   <clock units="Hz">33000000</clock>
   <configuration>
    <setting id="latency" value="0" />
   </configuration>
   <resources>
    <resource type="ioport" value="700(size=64)" />
   </resources>
  </node>
  </node>
</list>
root@localhost:~# 

JSON:

root@localhost:~# sudo lshw -C memory -json
          {                 
    "id" : "firmware",
    "class" : "memory",
    "claimed" : true,
    "description" : "BIOS",
    "vendor" : "SeaBIOS",
    "physid" : "0",
    "version" : "rel-1.12.0-0-ga698c8995f-prebuilt.qemu.org",
    "date" : "04/01/2014",
    "units" : "bytes",
    "size" : 98304
  },
            {
    "id" : "memory",
    "class" : "memory",
    "claimed" : true,
    "handle" : "DMI:1000",
    "description" : "System Memory",
    "physid" : "1000",
    "units" : "bytes",
    "size" : 2147483648,
    "capacity" : 2147483648,
    "configuration" : {
      "errordetection" : "multi-bit-ecc"
    },
    "capabilities" : {
      "ecc" : "Multi-bit error-correcting code (ECC)"
    },
    "children" : [
      {
        "id" : "bank",
        "class" : "memory",
        "claimed" : true,
        "handle" : "DMI:1100",
        "description" : "DIMM RAM",
        "vendor" : "QEMU",
        "physid" : "0",
        "slot" : "DIMM 0",
        "units" : "bytes",
        "size" : 2147483648
      }
    ]
  },
                                                                                          
root@localhost:~# 

HTML:

root@localhost:~# sudo lshw -C memory -html

8. Saving Linux Hardware Information to a File

I tried to use the -dump option with the lshw command but it didn’t worked for me. But, we can always use the redirection operator (>) to save it into a new file.

# sudo lshw -html > hardware_info.html
Linux Hardware Information Lshw Html File
Linux Hardware Information – lshw Html File

Conclusion

Linux lshw command is a simple tool to get the complete hardware information. The various options to get the specific hardware information and in multiple formats such as HTML and JSON is very useful in sharing the details with others also.

Reference: HardwareLiSter

Comments

  1. Anik Kumar Bhushan says:

    Great article Pankaj.
    Didn’t knew “lshw ” command can produce output in XML,JSON and HTML formats.
    Nice descriptive info.

Leave a Reply

Your email address will not be published. Required fields are marked *

close
Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages