GithubHelp home page GithubHelp logo

hwinfo's Introduction

hwinfo

Overview

hwinfo/libhd are used to probe for the hardware present in the system. It can be used to generate a system overview log which can be later used for support.

This project provides a hardware probing library libhd.so and a command line tool hwinfo using it. A major project using this library is YaST, the SUSE installation tool.

To give you an idea what kind of information it provides, here's the output it gives when asked about the graphics card:

# hwinfo --gfxcard
27: PCI 200.0: 0300 VGA compatible controller (VGA)
  [Created at pci.378]
  Unique ID: B35A.G9ppNwS+xM4
  Parent ID: _Znp.nMBktMhAWbC
  SysFS ID: /devices/pci0000:00/0000:00:02.0/0000:02:00.0
  SysFS BusID: 0000:02:00.0
  Hardware Class: graphics card
  Model: "nVidia GF119 [NVS 310]"
  Vendor: pci 0x10de "nVidia Corporation"
  Device: pci 0x107d "GF119 [NVS 310]"
  SubVendor: pci 0x10de "nVidia Corporation"
  SubDevice: pci 0x094e
  Revision: 0xa1
  Driver: "nvidia"
  Driver Modules: "nvidia"
  Memory Range: 0xfa000000-0xfaffffff (rw,non-prefetchable)
  Memory Range: 0xf0000000-0xf7ffffff (ro,non-prefetchable)
  Memory Range: 0xf8000000-0xf9ffffff (ro,non-prefetchable)
  I/O Ports: 0xe000-0xefff (rw)
  Memory Range: 0xfb000000-0xfb07ffff (ro,non-prefetchable,disabled)
  IRQ: 82 (3241635 events)
  I/O Ports: 0x3c0-0x3df (rw)
  Module Alias: "pci:v000010DEd0000107Dsv000010DEsd0000094Ebc03sc00i00"
  Driver Info #0:
    Driver Status: nouveau is not active
    Driver Activation Cmd: "modprobe nouveau"
  Driver Info #1:
    Driver Status: nvidia is active
    Driver Activation Cmd: "modprobe nvidia"
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #9 (PCI bridge)

Primary display adapter: #27

If that's a bit too much information, you can ask it also for an abbreviated form. For example:

# hwinfo --short --disk --cdrom
disk:
  /dev/sda             WDC WD10EARS-00Y
  /dev/sdb             ST2000DM001-1CH1
cdrom:
  /dev/sr0             PLDS DVD+-RW DS-8ABSH

You can influence libhd via the hwprobe environment variable resp. the hwprobe boot option. This includes turning on or off probing modules and also manually adding hardware devices (to some degree).

For example

export hwprobe=-bios

will turn off the bios probing module.

For details about hwprobe look here.

For general usage instructions, see hwinfo manual page.

Note

hwinfo has a legacy interface, accepting hwprobe-like options as command argument (For example hwinfo -bios - note the single '-'). Please don't do this. If you are interested, you can read about it here.

Technical documentation

The hardware detection library makes use of a number of technical specifications.

Here is a compilation of external links to technical standards relevant to libhd.

openSUSE Development

To build the library, simply run make. Install with make install.

Basically every new commit into the master branch of the repository will be auto-submitted to all current SUSE products. No further action is needed except accepting the pull request.

Submissions are managed by a SUSE internal jenkins node in the InstallTools tab.

Each time a new commit is integrated into the master branch of the repository, a new submit request is created to the openSUSE Build Service. The devel project is system:install:head.

For maintained branches, the package is submitted to a devel project but the final submission must be triggered manually.

*.changes and version numbers are auto-generated from git commits, you don't have to worry about this.

The spec file is maintained in the Build Service only. If you need to change it for the master branch, submit to the devel project in the build service directly.

The current names of the devel projects for other branches can be seen in the jenkins logs.

Development happens mainly in the master branch. The branch is used for all current products.

In rare cases branching was unavoidable:

  • branch sl_11.1: SLE 11 SP4
  • branch sle12: SLE 12 (not SPx)

You can find more information about the changes auto-generation and the tools used for jenkis submissions in the linuxrc-devtools documentation.

Updating Database for Pci and Usb Ids

For details about updating pci and usb ids look here.

hwinfo's People

Contributors

a1346054 avatar andreas-schwab avatar bjking1 avatar bmwiedemann avatar dirkmueller avatar doughdemon avatar imobachgs avatar jinqingchen-deepin avatar kobliha avatar kpcyrd avatar lamby avatar ledest avatar lordoftherats avatar lslezak avatar markkp avatar maurorodrigues avatar schubi2 avatar wfeldt avatar zhuyaliang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hwinfo's Issues

hd.c:5725]: (style) Redundant condition

hd.c:5725]: (style) Redundant condition: hd->unix_dev_name. '!A || (A && B)' is equivalent to '!A || B'

Source code is

 if(
    hd->sysfs_id &&
    !strcmp(hd->sysfs_id, id) &&
    (
      !hd->unix_dev_name ||
      (
        hd->unix_dev_name &&
        !strcmp(hd->unix_dev_name, devname)
      )
    )
  ) return hd;

How to parse output?

Just a quick question. I am looking to consume your output for a python program, and I would like to know what would be the best way to parse your output. Do you follow any specific syntax for generating the output? Could you orient me to some web explaining it or a library consuming it?

Thank you in advance :-) and excuse me if this is not the best place to ask this; I didn't know where to ask it.

Hang on hd_list, hw_disk

I am getting a hang on SUSE Linux Enterprise Server 12 SP3, when trying to retrieve hw_disk info,

Using gdb, I can see that it is hanging on ioctl:

#0 0x00002ac618c16327 in ioctl () from /lib64/libc.so.6 #1 0x0000000000605d61 in add_scsi_sysfs_info (hd_data=hd_data@entry=0x1e4f6c0, hd=hd@entry=0x1e9f1b0, sf_dev=sf_dev@entry=0x1e9e9a0 "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1:1.0/host9/target9:0:0/9:0:0:0") at block.c:999 #2 0x0000000000607579 in add_scsi_sysfs_info ( sf_dev=0x1e9e9a0 "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1:1.0/host9/target9:0:0/9:0:0:0", hd=0x1e9f1b0, hd_data=0x1e4f6c0) at block.c:773 #3 get_block_devs (hd_data=hd_data@entry=0x1e4f6c0) at block.c:388 #4 0x0000000000608ae7 in hd_scan_sysfs_block (hd_data=hd_data@entry=0x1e4f6c0) at block.c:83 #5 0x00000000005d9455 in hd_scan_no_hal (hd_data=0x1e4f6c0) at hd.c:2093 #6 hd_scan (hd_data=hd_data@entry=0x1e4f6c0) at hd.c:1924 #7 0x00000000005da07c in hd_list (hd_data=0x1e4f6c0, item=hw_disk, rescan=<optimized out>, hd_old=0x0) at hd.c:3302

Any ideas as to what causes this, and is there a workaround?

Thanks for any help.

John

../src/libhd.a: member ../src/libhd.a(bios.o) in archive is not an object

Hi,

Cannot build ../src/libhd.so.21.70 :

$ echo $CC
arm-linux-gnueabihf-gcc
$ pwd
/home/sebastien/src/openSUSE/hwinfo
$ make
make[1]: Entering directory '/home/sebastien/src/openSUSE/hwinfo/src'
make[2]: Entering directory '/home/sebastien/src/openSUSE/hwinfo/src/hd'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/home/sebastien/src/openSUSE/hwinfo/src/hd'
make[2]: Entering directory '/home/sebastien/src/openSUSE/hwinfo/src/isdn'
make[3]: Entering directory '/home/sebastien/src/openSUSE/hwinfo/src/isdn/cdb'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/sebastien/src/openSUSE/hwinfo/src/isdn/cdb'
make[2]: Leaving directory '/home/sebastien/src/openSUSE/hwinfo/src/isdn'
make[2]: Entering directory '/home/sebastien/src/openSUSE/hwinfo/src/ids'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/home/sebastien/src/openSUSE/hwinfo/src/ids'
arm-linux-gnueabihf-gcc -shared -O2 -Wall -Wno-pointer-sign -pipe -g   -I/home/sebastien/src/openSUSE/hwinfo/src/hd -O2 -Wall -Wno-pointer-sign -pipe -g -fPIC  -I../src/hd  -Lsrc -Wl,--whole-archive ../src/libhd.a -Wl,--no-whole-archive \
	-Wl,-soname=libhd.so.21 \
	-o ../src/libhd.so.21.70 -luuid -lx86emu 
../src/libhd.a: member ../src/libhd.a(bios.o) in archive is not an object
collect2: error: ld returned 1 exit status
Makefile:20: recipe for target '../src/libhd.so.21.70' failed
make[1]: *** [../src/libhd.so.21.70] Error 1
make[1]: Leaving directory '/home/sebastien/src/openSUSE/hwinfo/src'
Makefile.common:52: recipe for target 'subdirs' failed
make: *** [subdirs] Error 2
$ echo $?
2

Can you please help me ?

--framebuffer does not list modes

It prints everything up to "Memory Range:" then omits the "Mode" lines and then prints the "Config Status:" line.
Tested on versions 21.67 (compiled from source) and 21.63 (Debian Buster package).
Last version that I am aware of that works is 21.38 (Debian Stretch package).

# hwinfo --version
21.67
# hwinfo --framebuffer
02: None 00.0: 11001 VESA Framebuffer                           
  [Created at bios.459]
  Unique ID: rdCR._RYrDVnUxd7
  Hardware Class: framebuffer
  Model: "(C) 1988-2005, ATI RS690"
  Vendor: "(C) 1988-2005, ATI Technologies Inc."
  Device: "RS690"
  SubVendor: "ATI ATOMBIOS"
  SubDevice: 
  Revision: "01.00"
  Memory Size: 16 MB
  Memory Range: 0x00000000-0x00ffffff (rw)
  Config Status: cfg=new, avail=yes, need=no, active=unknown

hang when probing vbe modes

I tried
sudo hwinfo --vbe
and it hanged on probing video modes.

(gdb) bt
#0 0x00007fbecd31292a in tsc () at include/x86emu_int.h:121
#1 x86emu_run (emu=0x5803519f, flags=25) at decode.c:252
#2 0x000000000207c8d0 in ?? ()
#3 0x00007fbecd9141b1 in vm_run (emu=0x20cc0f0, emu@entry=0x2212a80,

t=0x2212a80, t@entry=0x7ffc46dd1948) at mdt.c:327

#4 0x00007fbecd914948 in list_modes (vm=0x110, vm@entry=0x20cc0f0,

vbe=vbe@entry=0x207c8d0) at mdt.c:557

#5 0x00007fbecd915a85 in get_vbe_info (hd_data=0x2079010, vbe=0x207c8d0)

at mdt.c:181

#6 0x00007fbecd9462db in hd_scan_bios (hd_data=hd_data@entry=0x2079010)

at bios.c:451

#7 0x00007fbecd926bc0 in hd_scan_no_hal (hd_data=0x2079010) at hd.c:2027
#8 hd_scan (hd_data=hd_data@entry=0x2079010) at hd.c:1913
#9 0x00007fbecd9277c8 in hd_list (hd_data=0x2079010, item=item@entry=hw_vbe,

rescan=rescan@entry=1, hd_old=hd_old@entry=0x0) at hd.c:3235

#10 0x0000000000404387 in do_hw (hd_data=hd_data@entry=0x2079010,

f=f@entry=0x0, hw_item=50) at hwinfo.c:548

#11 0x00000000004026f6 in main (argc=2, argv=) at hwinfo.c:365

I've googled out the similar problem here:
http://bugs.rosalinux.ru/show_bug.cgi?id=7299

Unfortunately, while trying to debug it, it have suddenly disappeared.
I guess perhaps something is not properly initialized?

Does this tool behave different if used with root

Thank you for making this tool, quite useful!

I'm wondering if anything changes if you use this tool root? Maybe additional information is provided for certain types of devices?

The reason I noticed is that I am working on packaging this for conda-forge, where users can install this without a "root based" package manager and I noticed that the binaries are all installed in sbin and not bin.

Thank you for the clarification.

Hwinfo 21.7 issue

I am using hwinfo on Arch.I have worked with different versions of hwinfo package.
Hwinfo 21.72 does not show any command (Ex: hwinfo --all) output on terminal.
But Previous version 20.1 do that.
Why Latest version 21.7 eliminate this functionality to show output on terminal.
Or How to use Hwinfo Latest version so that it can show command output on terminal.

too much output

I use "hwinfo --vbe", but the output is very
large, consisting of many many things, not
only vbe. Of course I can use grep, but I
supposed if --HARDWARE_ITEM is specified,
only info about this item is printed.

ADATA SC660H disk not listed in usb short output

Using ADATA SC660H external SSD USB3 drive. The --usb option lists the drive but not the disk:

[exu@centos ~]$ hwinfo --usb --short
disk:                                                           
  /dev/sdb             Hitachi HTS543216A7A384
                       A SC660H

The --disk option lists the drive twice (once with disk, once without):

[exu@centos ~]$ hwinfo --disk --short   
disk:                                                           
  /dev/sda             HP LOGICAL VOLUME
  /dev/sdb             Hitachi HTS543216A7A384
  /dev/sdc             A SC660H
                       A SC660H

error when build net.c hdr incomplete type

i got error when build:

nfo/hwinfo-21.6/src/hd -O2 -Wall -Wno-pointer-sign -pipe -g -fPIC  -I../src/hd -O2 -Wall -Wno-pointer-sign -pipe -g -fPIC  -I../../src/hd -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include    -g -O2 -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow -falign-functions=0 -falign-jumps=0 -falign-loops=0 -mmmx -march=i586  -Wl,-O1 -Lsrc -Lsrc -Lsrc net.c
net.c: En la función ‘get_ethtool_priv’:
net.c:427: error: el campo ‘hdr’ tiene tipo de dato incompleto
net.c:429: error: el nombre del campo no está en el inicializador de record o union
net.c:429: error: (cerca de la inicialización de ‘sset_info.hdr’)
net.c:429: error: ‘ETHTOOL_GSSET_INFO’ no se declaró aquí (primer uso en esta función)
net.c:429: error: (Cada identificador no declarado solamente se reporta una vez
net.c:429: error: ara cada funcion en la que aparece.)
net.c:429: error: el nombre del campo no está en el inicializador de record o union
net.c:429: error: (cerca de la inicialización de ‘sset_info.hdr’)
make[3]: *** [net.o] Error 1

hd.c:2697:3: error: 'for' loop initial declarations are only allowed in C99 mode

Hello!

There is an error blocking update to 21.80 in CentOS 7:

D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -Wall -Wno-pointer-sign -pipe -g -fPIC  -I../src/hd -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -Wall -Wno-pointer-sign -pipe -g -fPIC  -I../../src/hd  -Wl,-z,relro  -Lsrc hd.c
hd.c: In function 'read_dir_canonical':
hd.c:2652:3: error: 'for' loop initial declarations are only allowed in C99 mode
   for(str_list_t *sl = list; sl; sl = sl->next) {
   ^
hd.c:2652:3: note: use option -std=c99 or -std=gnu99 to compile your code
hd.c: In function 'subcomponent_list':
hd.c:2697:3: error: 'for' loop initial declarations are only allowed in C99 mode
   for(str_list_t *sl = list; sl; sl = sl->next) {
   ^
hd.c: In function 'get_sysfs_attr':
hd.c:6135:8: warning: ignoring return value of 'fgets', declared with attribute warn_unused_result [-Wunused-result]
   fgets(buf, 127, fp);
        ^
make[2]: *** [hd.o] Error 1
make[2]: Leaving directory `/builddir/build/BUILD/hwinfo-21.80/src/hd'

See https://kojipkgs.fedoraproject.org//work/tasks/8232/84568232/build.log

Is it possible to fix somehow? Adding the -std=gnu99 flag fixes this particular issue, but generates lot of others.

Thanks!

Doesn't show the second port

hwinfo doesn't seem to handle multi-port USB serial like FT2232C. Let me know if you need any other info.

$ ls -l /dev/ttyUSB*
crw-rw----+ 1 root plugdev 188, 0 Mar 17 17:22 /dev/ttyUSB0
crw-rw----+ 1 root plugdev 188, 1 Mar 17 17:22 /dev/ttyUSB1
$ ls -lH /sys/bus/usb-serial/devices
total 0
lrwxrwxrwx 1 root root 0 Mar 17 17:22 ttyUSB0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.4/1-6.4.3/1-6.4.3:1.0/ttyUSB0
lrwxrwxrwx 1 root root 0 Mar 17 17:22 ttyUSB1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.4/1-6.4.3/1-6.4.3:1.1/ttyUSB1
$ sudo hwinfo --usb --only '/dev/ttyUSB0'
03: USB 00.0: 0700 Serial controller                            
  [Created at usb.122]
  Unique ID: +kkE.aQvBPLKVgz2
  Parent ID: Sc54.DFkaVl_rzX0
  SysFS ID: /devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.4/1-6.4.3/1-6.4.3:1.0
  SysFS BusID: 1-6.4.3:1.0
  Hardware Class: unknown
  Model: "Future Technology Devices International FT2232C/D/H Dual UART/FIFO IC"
  Hotplug: USB
  Vendor: usb 0x0403 "Future Technology Devices International, Ltd"
  Device: usb 0x6010 "FT2232C/D/H Dual UART/FIFO IC"
  Revision: "5.00"
  Driver: "ftdi_sio"
  Driver Modules: "usbserial", "ftdi_sio"
  Device File: /dev/ttyUSB0
  Device Files: /dev/ttyUSB0, /dev/serial/by-path/pci-0000:00:14.0-usb-0:6.4.3:1.0-port0, /dev/serial/by-id/usb-FTDI_Dual_RS232-if00-port0
  Device Number: char 188:0
  Speed: 12 Mbps
  Module Alias: "usb:v0403p6010d0500dc00dsc00dp00icFFiscFFipFFin00"
  Driver Info #0:
    Driver Status: ftdi_sio is active
    Driver Activation Cmd: "modprobe ftdi_sio"
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #9 (Hub)
$ sudo hwinfo --usb --only '/dev/ttyUSB1'
$ lsusb -d 0403:6010 -v

Bus 001 Device 059: ID 0403:6010 Future Technology Devices International, Ltd FT2232C/D/H Dual UART/FIFO IC
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x0403 Future Technology Devices International, Ltd
  idProduct          0x6010 FT2232C/D/H Dual UART/FIFO IC
  bcdDevice            5.00
  iManufacturer           1 FTDI
  iProduct                2 Dual RS232
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0037
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower               90mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              2 Dual RS232
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              2 Dual RS232
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x04  EP 4 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
Device Status:     0x0000
  (Bus Powered)

smbios.c: 2 * Redundant condition

smbios.c:1577]: (style) Redundant condition: If '!EXPR', the comparison 'EXPR != 255' is always true.

Source code is

    if(
      !sm->memdevicemap.interleave_pos ||
      sm->memdevicemap.interleave_pos != 0xff
    ) {

smbios.c:1583]: (style) Redundant condition: If '!EXPR', the comparison 'EXPR != 255' is always true.

Duplicate

wrong git repo in hwinfo(8)

It points to git://git.opensuse.org/projects/hwinfo.git:

Source repository: git://git.opensuse.org/projects/hwinfo.git.

which obviously doesn't exist:

$ git clone git://git.opensuse.org/projects/hwinfo.git
Cloning into 'hwinfo'...
fatal: remote error: access denied or repository not exported: /projects/hwinfo.git

It should point to this repo IMO, instead.

Cannot built on macOS : No rule to make target 'byteswap.h', needed by 'bios.o'. Stop.

Hi,
I'm trying to build hwinfo on macOS :

$ system_profiler SPSoftwareDataType | grep Version
      System Version: macOS 12.6.6 (21G646)
      Kernel Version: Darwin 21.6.0
$ git clone https://github.com/openSUSE/hwinfo
Cloning into 'hwinfo'...
remote: Enumerating objects: 14729, done.
remote: Counting objects: 100% (151/151), done.
remote: Compressing objects: 100% (73/73), done.
remote: Total 14729 (delta 85), reused 135 (delta 78), pack-reused 14578
Receiving objects: 100% (14729/14729), 11.26 MiB | 3.32 MiB/s, done.
Resolving deltas: 100% (8706/8706), done.
$ cd hwinfo
$ gmake -v
GNU Make 4.4
Built for x86_64-apple-darwin21.6.0
Copyright (C) 1988-2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ gmake
clang: warning: argument unused during compilation: '-Lsrc' [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-Lsrc' [-Wunused-command-line-argument]
make[2]: *** No rule to make target `byteswap.h', needed by `bios.o'.  Stop.
make[1]: *** [subdirs] Error 2
gmake: *** [Makefile.common:52: subdirs] Error 2

Some questions about cross compiling hwinfo

Hello. I'm trying to cross compile hwinfo. I have noticed several things:

  • hwinfo likes to execute things that it compiles
    • it uses check_hd to make hd_ids.h, hd.ids and hd_ids_tiny.h in src/ids
    • it uses isdn_cdb to make isdn_cdb.h in src/isdn/cdb
    • it uses mk_isdnhwdb to make ISDN.CDB.hwdb in src/isdn/cdb
  • hwinfo uses $ARCH (found with uname -m) to decide some things

I'm not familiar with hwinfo's code nor its internal structure so I'm asking here for clarification.

I have two questions: Are there any other things that I should be aware of that might cause problems while cross compiling and are the three programs I mentioned above influenced the system (and its architecture) they are being run on?

About the second question: I'm compiling these three programs in host architecture, so the files can be generated, then I make the files with those programs, then I remove the host architecture programs and use the generated files while compiling hwinfo in target architecture. If the files generated by those three programs are architecture-dependent, then I will be mixing the generated files, which were generated by programs compiled in host architecture and the rest of the code, which is in compiled in target architecture, which is bad.

This is possibly related to #91.

error: hwinfo: signature from "Alexander F. Rødseth <[email protected]>" is marginal trust

Getting the following error when trying to update from 21.81-1 to 22.1-1 in arch.

hwinfo-22.1-1-x86_64 downloading... error: hwinfo: signature from "Alexander F. Rødseth <[email protected]>" is marginal trust :: File /var/cache/pacman/pkg/hwinfo-22.1-1-x86_64.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)). Do you want to delete it? [Y/n] y error: failed to commit transaction (invalid or corrupted package) -> error installing repo packages

Any thoughts... Is this an issue in the repo or is this an issue with the package itself?

Hwinfo against Amlogic Meson G12B (S922X) returning inconsistent data

ARM big.LITTLE CPU showing up with incorrect details.
It should show up as a 2 cluster CPU with 4+2 cores. Where as the cores per socket numbers don’t match this. The Model name does not match the big.LITTLE nature of this either.

This particular CPU is in an Odroid N2+, it is part of the G12B http://linux-meson.com/

SoC – Amlogic S922X Rev.C hexa-core big.LITTLE processor with 4x Arm Cortex A73 cores @ up to 2.2/2.4GHz, 2x Arm Cortex A53 cores @ 2.0GHz, Arm Mali-G52 GPU @ 846MHz; 12nm manufacturing process

root@groovy-server:# hwinfo | pastebinit
https://paste.ubuntu.com/p/DCnHb87qQW/
root@groovy-server:
# hwinfo --version
21.70

uname -a

Linux groovy-server 5.10.0-odroid-panfrost-arm64 #1 SMP PREEMPT Ubuntu 5.10.0-202011272305~groovy (2020-11-27) aarch64 aarch64 aarch64 GNU/Linux

dmesg | grep -e soc0 -e EL

[ 0.008807] CPU features: detected: 32-bit EL0 Support
[ 0.008817] CPU features: detected: 32-bit EL1 Support
[ 0.022467] CPU: All CPU(s) started at EL2
[ 1.353064] soc soc0: Amlogic Meson G12B (S922X) Revision 29:c (40:2) Detected

In the below cpu info you will note 2 * 0xd03 and 4 * 0xd09 CPU parts

cat /proc/cpuinfo

BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4

processor : 1
BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4

processor : 2
BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd09
CPU revision : 2

processor : 3
BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd09
CPU revision : 2

processor : 4
BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd09
CPU revision : 2

processor : 5
BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd09
CPU revision : 2

How long build time of ./check_hd --check --sort --cfile hd_ids ?

./check_hd --check --sort --cfile hd_ids.h src/bus src/class src/extra src/special src/scanner src/network src/usb src/usb2 src/isapnp src/monitor src/camera src/tv2 src/tv src/dvb2 src/dvb src/chipcard src/modem src/pcmcia src/s390 src/sdio src/x11.i386 src/modem.i386 src/pci src/storage src/sound src/mouse src/braille

check_hd progress running 30 minute.

--framebuffer option gives no output

Hi, I have tried to find out supported framebuffer modes using "hwinfo --framebuffer".
Unfortunately it looks like hwinfo cannot find the values, and is stuck a loop. I need to stop hwinfo manually with Crtl+C.

# hwinfo --framebuffer
> bios.4.2: mode info

Thank you!

Thank you!

Thank you for your project and software!

Thank you for maintenance in the past and in the future!

Kind regards and season's greetings!

Serial ID for drives attached by USB adapter

I have a drive attached via a usb adapter.

gnome-disks reports its serial number as 2040E4B47BF1.
image

Would it be possible to get the the Serial ID field populated below?

$ hwinfo --version
22.1
Current output as of version 22.1
28: SCSI 00.0: 10600 Disk
  [Created at block.255]
  Unique ID: R7kM.zynKYvrMQSD
  Parent ID: qnJ_.vLanFUR9+nE
  SysFS ID: /class/block/sda
  SysFS BusID: 0:0:0:0
  SysFS Device Link: /devices/pci0000:00/0000:00:0d.0/usb2/2-2/2-2:1.0/host0/target0:0:0/0:0:0:0
  Hardware Class: disk
  Model: "CT2000MX 500SSD1"
  Vendor: "CT2000MX"
  Device: "500SSD1"
  Revision: "0"
  Driver: "uas", "sd"
  Driver Modules: "uas"
  Device File: /dev/sda (/dev/sg0)
  Device Files: /dev/sda, /dev/disk/by-path/pci-0000:00:0d.0-usb-0:2:1.0-scsi-0:0:0:0, /dev/disk/by-id/wwn-0x500a0751e4b47bf1, /dev/disk/by-id/ata-CT2000MX500SSD1_2040E4B47BF1
  Device Number: block 8:0-8:15 (char 21:0)
  Drive status: no medium
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #3 (USB Controller)

Can't build from zip version

I am able to build the package when I download the package with git, but not when I download the zip file, or the latest release (21.51). I get the following errors when running make:

cat: VERSION: No such file or directory
cat: /home/gustav/Downloads/hwinfo-master/VERSION: No such file or directory

Also, perhaps there is a good idea to mention that libx86emu id a dependency somewhere in the readme.

[ERROR] error: unrecognized -mtune target: generic (when building on armv7h)

I get the above mentioned error when I try building this on arm7h architecture.
But not on aarch64.

Here's the output I get from my make command:

cc -c -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16  -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -fPIC -I/home/manjaro/build/src/hwinfo-21.53/src/hd -D_FORTIFY_SOURCE=2 -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -Lsrc -Lsrc -Lsrc bios.c
cc1: error: unrecognized -mtune target: generic
cc1: note: valid arguments are: arm2 arm250 arm3 arm6 arm60 arm600 arm610 arm620 arm7 arm7d arm7di arm70 arm700 arm700i arm710 arm720 arm710c arm7100 arm7500 arm7500fe arm7m arm7dm arm7dmi arm8 arm810 strongarm strongarm110 strongarm1100 strongarm1110 fa526 fa626 arm7tdmi arm7tdmi-s arm710t arm720t arm740t arm9 arm9tdmi arm920 arm920t arm922t arm940t ep9312 arm10tdmi arm1020t arm9e arm946e-s arm966e-s arm968e-s arm10e arm1020e arm1022e xscale iwmmxt iwmmxt2 fa606te fa626te fmp626 fa726te arm926ej-s arm1026ej-s arm1136j-s arm1136jf-s arm1176jz-s arm1176jzf-s mpcorenovfp mpcore arm1156t2-s arm1156t2f-s cortex-m1 cortex-m0 cortex-m0plus cortex-m1.small-multiply cortex-m0.small-multiply cortex-m0plus.small-multiply generic-armv7-a cortex-a5 cortex-a7 cortex-a8 cortex-a9 cortex-a12 cortex-a15 cortex-a17 cortex-r4 cortex-r4f cortex-r5 cortex-r7 cortex-r8 cortex-m7 cortex-m4 cortex-m3 marvell-pj4 cortex-a15.cortex-a7 cortex-a17.cortex-a7 cortex-a32 cortex-a35 cortex-a53 cortex-a57 cortex-a72 cortex-a73 exynos-m1 xgene1 cortex-a57.cortex-a53 cortex-a72.cortex-a53 cortex-a73.cortex-a35 cortex-a73.cortex-a53 cortex-a55 cortex-a75 cortex-a75.cortex-a55 cortex-m23 cortex-m33 cortex-r52 native
make[2]: *** [../../Makefile.common:44: bios.o] Error 1
make[2]: Leaving directory '/home/manjaro/build/src/hwinfo-21.53/src/hd'
make[1]: *** [../Makefile.common:52: subdirs] Error 2
make[1]: Leaving directory '/home/manjaro/build/src/hwinfo-21.53/src'
make: *** [Makefile.common:52: subdirs] Error 2
make: Leaving directory '/home/manjaro/build/src/hwinfo-21.53'

bios output

Hi,

I am trying to get the version of my bios but it doesn't seem to work or I am doing things wrongly.

$ hwinfo --bios
 01: None 00.0: 10105 BIOS
  [Created at bios.186]
  Unique ID: xxxxxxxxxxxxxx
  Hardware Class: bios
  BIOS Keyboard LED Status:
    Scroll Lock: off
    Num Lock: off
    Caps Lock: off
  Config Status: cfg=new, avail=yes, need=no, active=unknown

I expect something like BIOS 6101
The motherboard is an ASUS crosshair VI Hero.

From the overall response given by hwinfo it seems to be good, I didn't see anything wrong no mistakes apparently except for the bios so I wonder if I use it the right way to obtain this info ?
Thanks .

Os: Archlinux
hwinfo: version 21.53-1

Code smell in hddb.c

hddb.c: In function 'hddb_dump_skey':
hddb.c:1225:37: warning: comparison of constant '9' with boolean expression is always false [-Wbool-compare]
         if(!*str_val && !str_val[1] == '\t') break;
                                     ^
hddb.c:1225:37: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]

Eisa bus in the output for monitors

Hi,

Could you please explain why bus of all monitors is indicated as eisa?

33: None 00.0: 10002 LCD Monitor
  [Created at monitor.125]
  Unique ID: rdCR.mWVnEVlN7y6
  Parent ID: vSkL.iFdhUrIgu40
  Hardware Class: monitor
  Model: "AUO LCD Monitor"
  Vendor: AUO "AUO"
  Device: eisa 0x205c 
  Resolution: 1366x768@60Hz
  Size: 256x144 mm
  Year of Manufacture: 2011
  Week of Manufacture: 0
  Detailed Timings #0:
     Resolution: 1366x768
     Horizontal: 1366 1390 1406 1446 (+24 +40 +80) -hsync
       Vertical:  768  770  774  818 (+2 +6 +50) -vsync
    Frequencies: 71.00 MHz, 49.10 kHz, 60.03 Hz
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #14 (VGA compatible controller)

Thank you.

hwinfo takes loooong to execute if a serial device is present

Noticed this behavior when enabling a serial port in the configuration of a VirtualBox VM.

For example with the --modem option it's taking long then:

# hwinfo --modem
> modem.1: serial

Looking at it via strace, it's stuck at:

openat(AT_FDCWD, "/dev/ttyS0", O_RDWR|O_NONBLOCK) = 3

for ~12 seconds, until it continues its execution.

Same for hwinfo --mouse:

# hwinfo --mouse
> mouse.2: serial

Also when invoking hwinfo without any options (so modem + mouse etc are all active), it's taking looong, incl. sitting at the irq stage (when/after reading /proc/interrupts):

# hwinfo
> misc.2.3.: irq

Execution of hwinfo takes around 1 minute and 25 seconds for me as soon as a serial device(s) is present. Without a serial device
the execution time is down to 7-8 seconds in my test VM. Is there maybe anything one could do to speed-up execution of hwinfo? :)

Thanks for hwinfo!

No rule to make target '/tmp/guix-build-hwinfo-21.75.drv-0/source/src/libhd.a'

Hi,

I'm attempting to build the hwinfo on Guix and I run into problem of not having the correct path to libhd.a.

...
starting phase `build'
gcc -c -O2 -Wall -Wno-pointer-sign -pipe -g   -I/tmp/guix-build-hwinfo-21.75.drv-0/source/src/hd  -Lsrc hwinfo.c
make: *** No rule to make target '/tmp/guix-build-hwinfo-21.75.drv-0/source/src/libhd.a', needed by 'hwinfo'.  Stop.
make: *** Waiting for unfinished jobs....
make[1]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.
make[1]: Entering directory '/tmp/guix-build-hwinfo-21.75.drv-0/source/src'
make[2]: Entering directory '/tmp/guix-build-hwinfo-21.75.drv-0/source/src/hd'
gcc -c -O2 -Wall -Wno-pointer-sign -pipe -g   -I/tmp/guix-build-hwinfo-21.75.drv-0/source/src/hd -O2 -Wall -Wno-pointer-sign -pipe -g -fPIC  -I../src/hd -O2 -Wall -Wno-pointer-sign -pipe -g -fPIC  -I../../src/hd  -Lsrc bios.c
...
make[2]: Leaving directory '/tmp/guix-build-hwinfo-21.75.drv-0/source/src/ids'
gcc -shared -O2 -Wall -Wno-pointer-sign -pipe -g   -I/tmp/guix-build-hwinfo-21.75.drv-0/source/src/hd -O2 -Wall -Wno-pointer-sign -pipe -g -fPIC  -I../src/hd  -Lsrc -Wl,--whole-archive ../src/libhd.a -Wl,--no-whole-archive \
	-Wl,-soname=libhd.so.21 \
	-o ../src/libhd.so.21.75 -luuid -lx86emu 
ln -snf libhd.so.21.75 libhd.so.21
ln -snf libhd.so.21 libhd.so
make[1]: Leaving directory '/tmp/guix-build-hwinfo-21.75.drv-0/source/src'
command "make" "-j" "16" "DESTDIR=/gnu/store/68lynd13flfqzk2jxyybnpvvb10lpspz-hwinfo-21.75" "CC=gcc" "HWINFO_VERSION=21.75" failed with status 2

Yet when I check the directory the files are there.

$ ls /tmp/guix-build-hwinfo-21.75.drv-5/source/src/
hd/  ids/  isdn/  libhd.a  libhd.so  libhd.so.21  libhd.so.21.75  Makefile  smp/

Could you help me? I'm not that familiar with multiple levels of Makefiles.

Can we optimize the compilation time of hwinfo?

the check_items, join_items_by_value and join_items_by_key functions be executed for a long time during hwinfo compilation, Can this be optimized? Two loops are used to remove duplicate information, it's algorithm complexity is O(n2).
Can be optimized by using hash to search for keys or multi-thread parallel computing?
for(item0 = hd->first; item0; item0 = item0->next) { if(item0->remove) continue; for(item1 = item0->next; item1 && !item0->remove; item1 = item1->next) { if(item1->remove) continue;

incorrect specifier in format string

ADD2LOG("libhd version %s%s (%s) [%ld]\n", HD_VERSION_STRING, getuid() ? "u" : "", HD_ARCH, sizeof (hd_data_t));

sizeof returns size_t, so %zu should be used instead of %lu.

This may sound insignificant, but on some platforms size_t is unsigned int, and this is different from unsigned long.

make[4]: Entering directory '/home/user/git/openwrt/build_dir/target-mipsel_24kc_musl/hwinfo-21.71'
make[5]: Entering directory '/home/user/git/openwrt/build_dir/target-mipsel_24kc_musl/hwinfo-21.71/src'
make[6]: Entering directory '/home/user/git/openwrt/build_dir/target-mipsel_24kc_musl/hwinfo-21.71/src/hd'
mipsel-openwrt-linux-musl-gcc -c -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -fno-caller-saves -fno-plt -fhonour-copts -msoft-float -fmacro-prefix-map=/home/user/git/openwrt/build_dir/target-mipsel_24kc_musl/hwinfo-21.71=hwinfo-21.71 -mips16 -minterlink-mips16 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro  -I/home/user/git/openwrt/staging_dir/toolchain-mipsel_24kc_gcc-12.3.0_musl/usr/include -I/home/user/git/openwrt/staging_dir/toolchain-mipsel_24kc_gcc-12.3.0_musl/include/fortify -I/home/user/git/openwrt/staging_dir/toolchain-mipsel_24kc_gcc-12.3.0_musl/include  -Wall -Wno-pointer-sign   -I/home/user/git/openwrt/build_dir/target-mipsel_24kc_musl/hwinfo-21.71/src/hd -Wall -Wno-pointer-sign -fPIC  -I../src/hd -Wall -Wno-pointer-sign -fPIC  -I../../src/hd  -L/home/user/git/openwrt/staging_dir/toolchain-mipsel_24kc_gcc-12.3.0_musl/usr/lib -L/home/user/git/openwrt/staging_dir/toolchain-mipsel_24kc_gcc-12.3.0_musl/lib -fuse-ld=bfd -znow -zrelro  -Lsrc -Lsrc -Lsrc hd.c
In file included from hd.c:61:
hd.c: In function 'hd_scan':
hd.c:1823:15: warning: format '%ld' expects argument of type 'long int', but argument 6 has type 'unsigned int' [-Wformat=]
 1823 |       ADD2LOG("libhd version %s%s (%s) [%ld]\n", HD_VERSION_STRING, getuid() ? "u" : "", HD_ARCH, sizeof (hd_data_t));
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                   ~~~~~~~~~~~~~~~~~~
      |                                                                                                   |
      |                                                                                                   unsigned int
hd_int.h:66:46: note: in definition of macro 'ADD2LOG'
   66 | #define ADD2LOG(a...) hd_log_printf(hd_data, a)
      |                                              ^
hd.c:1823:43: note: format string is defined here
 1823 |       ADD2LOG("libhd version %s%s (%s) [%ld]\n", HD_VERSION_STRING, getuid() ? "u" : "", HD_ARCH, sizeof (hd_data_t));
      |                                         ~~^
      |                                           |
      |                                           long int
      |                                         %d
mipsel-openwrt-linux-musl-gcc-ar r ../../src/libhd.a hd.o
make[6]: Leaving directory '/home/user/git/openwrt/build_dir/target-mipsel_24kc_musl/hwinfo-21.71/src/hd'

Critique on your examples using hwinfo

I'm not quite sure devs do this constantly, but

$hwinfo --gfxcard won't produce any results.

You must be either accessing root directly [a no-no] or use the sudo command.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.