New version, man. Continuing development of EDID and monitor features, bug

fixes, normal fixes.

--------------------------------------------------------------------------------
KNOWN ISSUES:

1. Failed to handle case for monitor positions of array type: 2-2, 3-1, 1-3,
4-4. I'm not sure what structure those are really arranged in, but might be
worth adding in the x+y pos values along with the row-col values.

2. For Monitors and graphics Device ports, if using non free nvidia driver and:
nvidia-drm.modeset=1 not set in grub kernel boot parameters, there will be no
/sys/class/drm data for the nvidia device, and thus no ports data, and no
monitor data.

3. A class of high count DP or DVI port IDs are changed by Xorg drivers to for
example: DP-6 > DP-2-3. This is very difficult to handle and will in general
probably fail unfortunately because that level of port ID abstraction is just
reazlly hard to deal with dynamically.

4. A to-do item: add bus ID children on --slots. This will probablby be in next
inxi.

--------------------------------------------------------------------------------
BUGS:

1. None outside of the various fixes.

--------------------------------------------------------------------------------
FIXES:

1. In sensors, failed to pull out BAT sensor data. In most cases, this would not
lead to any issues, but it could have.

2. This one just slipped my mind, I'd meant to do it, but in Montitor-x:, the
primary ID should have been the 'real' kernel ID, not the mapped: ID, which is
the X.org ID when different from the kernel ID. So mapped should be the Xorg
version when they are different from the kernel version.

3. In Graphics, monitors can show > 1 ratio, failed to set all to :, resulting
in: ratio: 3:2 or 16/10 modes:. Also fixed ParseEDID to output an array of
ratios, which can then be processed as wanted.

4. Monitor map fixes:
* Handle case in monitors where display ID: eDP and sys ID: eDP-1, this only
works if 1 monitor in array. There's a variety of this type of failure, when
X.org or its drivers decide to call the port ID XYZ with no number at all. All
those possible cases are now handled, like eDP > eDP-1, VGA > VGA-1, and so on.

* Added fallback, if no match, and if only 1 monitor, just map them to eachother
if other mappings failed. Prompted by things like: s: DP-6 > d: DP-2-3;
s: eDP-1 > d: DP-4, which are just impossible to create logic to map.

5. Removed 'ati' driver from xorg drivers list, it's simply a wrapper for r128,
mach64, or radeon (and maybe amdgpu), and shows as failed, unloaded, or loaded,
because of this. ati basically assigns the correct driver, that is, but is not
itself a driver. Thanks mrmazda for spotting this issue.

6. Typo on QDI => Quantum Data.

7. Added fallback for monitor model, now using vendor code plus product code
if nothing found for vendor nice name or model. This will show as 'model-id:'
instead of model: to help differentiate the two.

8. Added Monitor product_code to manufacturer if no model name is found.

9. get_pci_vendor was trimming at ' / ' if the product string also contained
' / '. Fix is to ignore 1 character 'words' in the logic.

10. In Slots, failed to remove_duplicates in the slot info field, leading to
redundant output strings. See Enhancement 3 and Code 4.

11. See Change 3, finally made -S section use full key: value pair, which makes
stuff more explicit, like:

System:
  Host: yawn
  Kernel: 5.16.0-11.1-liquorix-amd64
    arch: x86_64
    bits: 64
    compiler: gcc
      v: 11.2.0
  Desktop: Xfce
    v: 4.16.0
    tk: Gtk
      v: 3.24.24
    info: xfce4-panel
    wm: xfwm
      v: 4.16.1
    vt: 7
    dm:
      1: LightDM
        v: 1.26.0
      2: SDDM
        note: stopped
  Distro: Debian GNU/Linux bookworm/sid

12. Fix for mageia and lsb distro data, force use of os-release for mageia if
detected. That overrides the forced use of lsb release for mandrake/mandriva,
because for some reason mageia has decided to carry ALL the legacy distro files:
'/etc/lsb-release',
'/etc/lsb-release.d',
'/etc/mageia-release',
'/etc/mandrake-release',
'/etc/mandrakelinux-release',
'/etc/mandriva-release',
'/etc/os-release',
'/etc/redhat-release',
'/etc/system-release'
which is really not what this stuff is intended for, if it's an actual derived
distro from a living base, then yes, include the base file, but all these have
the same distro id data for mageia, none for the derived distros.

Also, fixed an lsb release thing to avoid using codename if codename contains
release number as well. Since lsb_release is totally legacy at this point, who
cares if we might miss a specific codename here and there on legacy system.

--------------------------------------------------------------------------------
ENHANCEMENTS:

1. Added Color Characteristics to EDID parser, for some reason that had been
left out.

2. Added advanced EDID output option --edid, that allows for showing more
advanced EDID data than is appropriate for most users cases. Ihcludes errors,
color characteristics chroma: (chromacity), full modes, not just min/max.

3. In --slots, added bus-ID.

Also extended report quality, made more granular, got rid of single blob from
Type and Designation and now get more accurate and useful data.

4. In cases with > 1 DM, check to see if one or more are stopped or disabled, =
and add (stopped) if it was detected in running service as stopped.

--------------------------------------------------------------------------------
CHANGES:

1. Reversed monitor ID and mapped: ID values, that was a mistake, the mapped:
item was supposed to contain the X.org mapped name, and the primary ID was
supposed to be the actual real ID the kernel uses. Not a huge deal either way,
but there it is.

2. Include disabled but connected Monitors. This works around nvidia bug showing
monitors disabled when they are enabled, but also allows for showing connected
monitors, though without as much data.

3. Made the last holdout -S > -Sa use strict full key: value pair output, like
Desktop: XFCE v: 4.14.12 and so on.

--------------------------------------------------------------------------------
DOCUMENTATION:

1. Added help/man for --edid info.

--------------------------------------------------------------------------------
CODE:

1. In ParseEDID: made new key: edid_error, which contains an array ref of 1 or
more edid errors. The previous version did a poor job and returned only the
first error found, so there could have been > 1 error, and you'd never know it.

This changes check_parsed_edid to _check_parsed_edid(). and adds a utility tool
_edid_error, which grabs the message from main::message, giving better output
integration.

This also allows for future error handling expansion quite easily.

2. In map_monitor_ids() fixed matching pattern, made more robust and explicit,
to catch things like s: eDP-1 d: eDP or eDP-1-1, both have been seen. Also added
fallback for single monitor, just map them to eachother if mapping failed.

3. get_pci_vendor() added test for using anything that is 1 character length,
to not break on 1 character length string matches.

4. Fully refactored --slots, that was originally written purely as a proof of
concept in terms of adding a new feature during the original inxi 2.9 rewrite,
and was never actually touched after that.
This commit is contained in:
Harald Hope 2022-03-24 11:45:05 -07:00
parent 7ba2e0220f
commit b3cdcd979a
3 changed files with 827 additions and 274 deletions

878
inxi

File diff suppressed because it is too large Load diff

33
inxi.1
View file

@ -15,7 +15,7 @@
.\" with this program; if not, write to the Free Software Foundation, Inc., .\" with this program; if not, write to the Free Software Foundation, Inc.,
.\" 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. .\" 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
.\" .\"
.TH INXI 1 "2022\-02\-22" "inxi" "inxi manual" .TH INXI 1 "2022\-03\-24" "inxi" "inxi manual"
.SH NAME .SH NAME
inxi \- Command line system information script for console and IRC inxi \- Command line system information script for console and IRC
@ -31,8 +31,9 @@ inxi \- Command line system information script for console and IRC
[\fB\-v NUMBER\fR] [\fB\-W LOCATION\fR] [\fB\-v NUMBER\fR] [\fB\-W LOCATION\fR]
[\fB\-\-weather\-unit\fR {\fBm\fR|\fBi\fR|\fBmi\fR|\fBim\fR}] [\fB\-y WIDTH\fR] [\fB\-\-weather\-unit\fR {\fBm\fR|\fBi\fR|\fBmi\fR|\fBim\fR}] [\fB\-y WIDTH\fR]
\fBinxi\fR [\fB\-\-memory\-modules\fR] [\fB\-\-memory\-short\fR] \fBinxi\fR [\fB\-\-edid\fR] [\fB\-\-memory\-modules\fR]
[\fB\-\-recommends\fR] [\fB\-\-sensors\-default\fR] [\fB\-\-slots\fR] [\fB\-\-memory\-short\fR] [\fB\-\-recommends\fR] [\fB\-\-sensors\-default\fR]
[\fB\-\-slots\fR]
\fBinxi\fB [\fB\-x\fR|\fB\-xx\fR|\fB\-xxx\fR|\fB\-a\fR] \fB\-OPTION(s)\fR \fBinxi\fB [\fB\-x\fR|\fB\-xx\fR|\fB\-xxx\fR|\fB\-a\fR] \fB\-OPTION(s)\fR
@ -253,6 +254,17 @@ or
\fBrfkill unblock bluetooth\fR \fBrfkill unblock bluetooth\fR
.TP
.B \-\-edid\fR
.br
Triggers full \fBEDID\fR data in Graphics, activates \fB\-G\fR and \fB\-a\fR.
\- Adds monitor chromacity (\fBchroma: red:..green:...blue:...white:\fR).
\- Shows all available monitor modes if > 2 present, in comma separated list.
\- Shows \fBEDID\fR errors and warnings if any present.
.TP .TP
.B \-\-filter\fR, \fB\-z\fR .B \-\-filter\fR, \fB\-z\fR
.br .br
@ -295,7 +307,8 @@ Xvesa); for Wayland: GBM/EGL data (not implemented).
Compositor information will show if detected using \fB\-xx\fR option or always Compositor information will show if detected using \fB\-xx\fR option or always
if detected and Wayland since the compositor is the server with Wayland. if detected and Wayland since the compositor is the server with Wayland.
\fB\-Gxx\fR shows monitor data as well, if detected. \fB\-Gxx\fR shows monitor data as well, if detected. \fB\-\-edid\fR shows
advanced monitor data (full modes, chroma, etc.).
.TP .TP
.B \-h \fR, \fB\-\-help\fR .B \-h \fR, \fB\-\-help\fR
@ -770,9 +783,10 @@ of optical drives.
.TP .TP
.B \-v 8 .B \-v 8
\- All system data available. Adds Repos (\fB\-r\fR), PCI slots \- All system data available. Adds advanced EDID data (\fB\-\-edid\fR), Repos
(\fB\-\-slots\fR), processes (\fB\-tcm\fR), admin (\fB\-\-admin\fR). Useful for (\fB\-r\fR), PCI slots (\fB\-\-slots\fR), processes (\fB\-tcm\fR), admin
testing output and to see what data you can get from your system. (\fB\-\-admin\fR). Useful for testing output and to see what data you can get
from your system.
.TP .TP
.B \-w \fR, \fB\-\-weather\fR .B \-w \fR, \fB\-\-weather\fR
@ -1317,6 +1331,11 @@ distributions for this feature. Due to the complexity of distribution
identification, these will only be added as relatively solid methods are identification, these will only be added as relatively solid methods are
found for each distribution system base detection. found for each distribution system base detection.
.TP
.B \-x \-\-slots\fR
\- Adds \fBbus\-ID:\fR. Note that this bus ID does not unfortunately appear to
be readily detected as the source bus ID for any particular device bus ID.
.TP .TP
.B \-x \-t\fR (\fB\-\-processes\fR) .B \-x \-t\fR (\fB\-\-processes\fR)
\- Adds memory use output to CPU (\fB\-xt c\fR), and CPU use to memory \- Adds memory use output to CPU (\fB\-xt c\fR), and CPU use to memory

View file

@ -1,3 +1,193 @@
================================================================================
Version: 3.3.14
Patch: 00
Date: 2022-03-24
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------
New version, man. Continuing development of EDID and monitor features, bug
fixes, normal fixes.
--------------------------------------------------------------------------------
KNOWN ISSUES:
1. Failed to handle case for monitor positions of array type: 2-2, 3-1, 1-3,
4-4. I'm not sure what structure those are really arranged in, but might be
worth adding in the x+y pos values along with the row-col values.
2. For Monitors and graphics Device ports, if using non free nvidia driver and:
nvidia-drm.modeset=1 not set in grub kernel boot parameters, there will be no
/sys/class/drm data for the nvidia device, and thus no ports data, and no
monitor data.
3. A class of high count DP or DVI port IDs are changed by Xorg drivers to for
example: DP-6 > DP-2-3. This is very difficult to handle and will in general
probably fail unfortunately because that level of port ID abstraction is just
reazlly hard to deal with dynamically.
4. A to-do item: add bus ID children on --slots. This will probablby be in next
inxi.
--------------------------------------------------------------------------------
BUGS:
1. None outside of the various fixes.
--------------------------------------------------------------------------------
FIXES:
1. In sensors, failed to pull out BAT sensor data. In most cases, this would not
lead to any issues, but it could have.
2. This one just slipped my mind, I'd meant to do it, but in Montitor-x:, the
primary ID should have been the 'real' kernel ID, not the mapped: ID, which is
the X.org ID when different from the kernel ID. So mapped should be the Xorg
version when they are different from the kernel version.
3. In Graphics, monitors can show > 1 ratio, failed to set all to :, resulting
in: ratio: 3:2 or 16/10 modes:. Also fixed ParseEDID to output an array of
ratios, which can then be processed as wanted.
4. Monitor map fixes:
* Handle case in monitors where display ID: eDP and sys ID: eDP-1, this only
works if 1 monitor in array. There's a variety of this type of failure, when
X.org or its drivers decide to call the port ID XYZ with no number at all. All
those possible cases are now handled, like eDP > eDP-1, VGA > VGA-1, and so on.
* Added fallback, if no match, and if only 1 monitor, just map them to eachother
if other mappings failed. Prompted by things like: s: DP-6 > d: DP-2-3;
s: eDP-1 > d: DP-4, which are just impossible to create logic to map.
5. Removed 'ati' driver from xorg drivers list, it's simply a wrapper for r128,
mach64, or radeon (and maybe amdgpu), and shows as failed, unloaded, or loaded,
because of this. ati basically assigns the correct driver, that is, but is not
itself a driver. Thanks mrmazda for spotting this issue.
6. Typo on QDI => Quantum Data.
7. Added fallback for monitor model, now using vendor code plus product code
if nothing found for vendor nice name or model. This will show as 'model-id:'
instead of model: to help differentiate the two.
8. Added Monitor product_code to manufacturer if no model name is found.
9. get_pci_vendor was trimming at ' / ' if the product string also contained
' / '. Fix is to ignore 1 character 'words' in the logic.
10. In Slots, failed to remove_duplicates in the slot info field, leading to
redundant output strings. See Enhancement 3 and Code 4.
11. See Change 3, finally made -S section use full key: value pair, which makes
stuff more explicit, like:
System:
Host: yawn
Kernel: 5.16.0-11.1-liquorix-amd64
arch: x86_64
bits: 64
compiler: gcc
v: 11.2.0
Desktop: Xfce
v: 4.16.0
tk: Gtk
v: 3.24.24
info: xfce4-panel
wm: xfwm
v: 4.16.1
vt: 7
dm:
1: LightDM
v: 1.26.0
2: SDDM
note: stopped
Distro: Debian GNU/Linux bookworm/sid
12. Fix for mageia and lsb distro data, force use of os-release for mageia if
detected. That overrides the forced use of lsb release for mandrake/mandriva,
because for some reason mageia has decided to carry ALL the legacy distro files:
'/etc/lsb-release',
'/etc/lsb-release.d',
'/etc/mageia-release',
'/etc/mandrake-release',
'/etc/mandrakelinux-release',
'/etc/mandriva-release',
'/etc/os-release',
'/etc/redhat-release',
'/etc/system-release'
which is really not what this stuff is intended for, if it's an actual derived
distro from a living base, then yes, include the base file, but all these have
the same distro id data for mageia, none for the derived distros.
Also, fixed an lsb release thing to avoid using codename if codename contains
release number as well. Since lsb_release is totally legacy at this point, who
cares if we might miss a specific codename here and there on legacy system.
--------------------------------------------------------------------------------
ENHANCEMENTS:
1. Added Color Characteristics to EDID parser, for some reason that had been
left out.
2. Added advanced EDID output option --edid, that allows for showing more
advanced EDID data than is appropriate for most users cases. Ihcludes errors,
color characteristics chroma: (chromacity), full modes, not just min/max.
3. In --slots, added bus-ID.
Also extended report quality, made more granular, got rid of single blob from
Type and Designation and now get more accurate and useful data.
4. In cases with > 1 DM, check to see if one or more are stopped or disabled, =
and add (stopped) if it was detected in running service as stopped.
--------------------------------------------------------------------------------
CHANGES:
1. Reversed monitor ID and mapped: ID values, that was a mistake, the mapped:
item was supposed to contain the X.org mapped name, and the primary ID was
supposed to be the actual real ID the kernel uses. Not a huge deal either way,
but there it is.
2. Include disabled but connected Monitors. This works around nvidia bug showing
monitors disabled when they are enabled, but also allows for showing connected
monitors, though without as much data.
3. Made the last holdout -S > -Sa use strict full key: value pair output, like
Desktop: XFCE v: 4.14.12 and so on.
--------------------------------------------------------------------------------
DOCUMENTATION:
1. Added help/man for --edid info.
--------------------------------------------------------------------------------
CODE:
1. In ParseEDID: made new key: edid_error, which contains an array ref of 1 or
more edid errors. The previous version did a poor job and returned only the
first error found, so there could have been > 1 error, and you'd never know it.
This changes check_parsed_edid to _check_parsed_edid(). and adds a utility tool
_edid_error, which grabs the message from main::message, giving better output
integration.
This also allows for future error handling expansion quite easily.
2. In map_monitor_ids() fixed matching pattern, made more robust and explicit,
to catch things like s: eDP-1 d: eDP or eDP-1-1, both have been seen. Also added
fallback for single monitor, just map them to eachother if mapping failed.
3. get_pci_vendor() added test for using anything that is 1 character length,
to not break on 1 character length string matches.
4. Fully refactored --slots, that was originally written purely as a proof of
concept in terms of adding a new feature during the original inxi 2.9 rewrite,
and was never actually touched after that.
--------------------------------------------------------------------------------
-- Harald Hope - Thu, 24 Mar 2022 12:01:50 -0800
================================================================================ ================================================================================
Version: 3.3.13 Version: 3.3.13
Patch: 00 Patch: 00