Completion of the audio fixes and improvements of 3.3.26. Added less common

sound servers like EsounD and aRts, and made state reports more accurate for
ALSA.

Major USB code and data upgrades/refactors. The USB changes prepare inxi for USB
4, and adds lanes and Si/IEC speeds to the report. It is important to determine
what USB mode you are running in with 3.x and 4. These changes conform more
closely to how the USB consortium wants USB speeds refered to.

With more robust USB data, this data now appears in a similar form as pcie: data
for Devices, -A, -E, -G, -N, and for -D drives, as usb: plus rev, speed, lanes,
mode, with the -xx/-a options, like pcie. This has been a long standing
oversight and weakness of inxi USB and Device data, but now the two are fully
integrated, including for drives, which was quite tricky to get working.

Added netpkg and Zenwalk support to packages and repos. Also added repos support
for sbopkg and slpkg, and updated package tools for Slackware.

And more distros added to system base feature, and a few more for main ID.

Improved --recommends report quite a bit, now it's more granular for missing
packages and package manager reports, and also fixed a long standing missing
current shell + version issue. Added the final package manager type, pkgtool
(Slackware), that will be supported, which makes for 4, which is enough. Note
that other package managers can be added following the documentation
instructions for packagers, but this is enough for out of the box pm handling.

Fixed a long standing oddity with how free / /proc/meminfo report MemTotal vs
the actual physical RAM. I believe this issue also showed with GPU assigned RAM,
but now for all but short form, shows Memory/RAM: available: ... used: ...

--------------------------------------------------------------------------------
SPECIAL THANKS:

1. To the Slackware people at linuxquestions.org forums, who helped, again, on
this audio feature, even finding current or not too old systems that use some of
the new / old audio servers (EsoundD) running in the wild, which I never
expected to see. And also for exposing some weak spots in the USB advanced
logic, and helping with the sbopkg and slpkg repo logic and tools reports.

2. To the Manjaro forum users, for providing cases that show where inxi can be
improved. The audio server/api issue, the current USB 3/4 upgrade, were
initiated by threads pointing to things that could be improved in inxi. So I
guess the real thanks are for using inxi enough to trigger cases that show where
it's weak or can be better. Note that this requires that I follow roughly their
forums, however I only look at threads that seem like they might be of general
interest, or which suggest a possible weak spot in inxi, and I don't follow them
consistently. More reliable is to file github issues, since I will always see
those.

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

1. DesktopData: at one point, BunsenLabs Debian OpenBox had XDG_CURRENT_DESKTOP
set to XFCE, which it isn't, but inxi can't work around such hacks, plus I don't
even know if Bunsen is around anymore anyway.

2. DesktopData: CODE 1 reminds us that the time to depend on x tools like xprop
for anything re desktop/wm detections is fast drawing to a close, true Wayland
will not have xprop, unless it's running on xwayland, which is not something
that should be relied on. Maybe recheck Moksha/Enlightenment which depend on
xprop for version detection.

The list of xprop detected wm/desktops in get_env_xprop_misc_data() is almost
all X only wm/desktops, so those should be safe unless one of them decides to
work on a wayland comositor.

3. BSD: ongoing weaknesses in BSD data sources make maintaining feature parity
impossible, but I am trying to get the BSD data as clean and consistent as
possible. I wish this were not the case, but the fact is, /sys is expanding and
creating excellent and reliable data sources with every major Linux kernel
update, and so far nothing comparable has appeared in the BSDs. This is just
reality, it's not a condemnation, but something like the /proc then /sys file
systems are an excellent idea, well worth emulating.

4. For the RAM available/total clarification, there's a slight issue because
free/meminfo show MemAvailable as Free for use RAM, but dmesg shows available
meaning what was available to the system during boot, minus the reserved
percentage. Since we needed one term, available to System offers the closest
in terms of technical precision without being too verbose. Technically available
in this context means: total physical minus 'kernel code' minus 'reserved'.

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

1. CheckRecommends: See Fix 6b, more or less a bug, but really just a fix.

2. AUDIO: for USB devices, put extra data into row 0, no matter which row the
USB device is. This led to the extra data for USB being assigned to the wrong
row. Sigh.

3. OptionsHandler: When show{'ram'} was set, for bsd, set use{'bsd-raid'}, which
makes both show raid and ram fail for BSD. Oops. User mode RAM data only seen in
OpenBSD so far. This made loading $dboot{'ram'} fail, and any raid as well,
sigh, unless -m was also tripped.

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

1. DistroData: typo for Arch base: was ctios, was supposed to be ctlos.

2a. DesktopData: found case where xprop -root not present (Void Linux), so xfce
test failed. Split to new function dedicated to xfce detection that doesn't use
xprop data. Also, XFCE is working on their Wayland version, which would in
theory not even have xprop by default.

Also, the base version number test for xfce depended on xprop, but
xprop doesn't even have that xfce version data anymore, so just checking if
xfce(4|5|)-panel exist and assigning primary version based on that test.

2b. DesktopData: Also see See CODE 1a,1b for further xprop and test fixes that
could have led to false positive or negative test conditions for the items that
used xprop tests. These tests are all xprop agnostic now, if it's there, they
will use it, if not, do the best they can.

3. PackageData: fixed legacy dpkg-query, old version did not support -f shortcut
for --showformat. This made dpkg package listing fail.

4a. GRAPHICS: Added legacy XFree86.0.log to X log path detection, that was an
oversight. Also added legacy module syntax _drv.o (not _drv.so). This gets X
driver data now for very old systems.

4b. GRAPHICS: fixed corner case where no x driver data, running as root, was not
supposed to show 'note: X driver n/a' message, that was a holdover from before
driver output was cleaned up and driver: N/A shows when no drivers at all found.
Just forgot to remove it when doing recent updates in the driver section, maybe?

5. REPOS/PackageData: For netpkg Zenwalk Slackware systems, showed only slackpkg
repo data, empty, and showed the Slackware pm, not netpkg for pm. See
Enhancements 5, 6.

6. REPOS: removed slapt_get file /etc/slapt-get/pubring.kbx, that's not a repo
file. Thanks chrisreturn for pointing that out.

7a. CheckRecommends: See also CODE 6. Fixed case where > 1 package manager is
detected on system, now lists them one by one for detected, and shows package
install options as well. Before only picked first detected, which could lead
to wrong results for Missing Package lists.

7b. CheckRecommends: Fixed glitch, forgot to update the current shell/version
when ShellData was refactored, this led to no current shell + version showing
up in recommends core tools report.

8. RAM: fixed speed_mapper string match to allow for older syntaxes. This is as
far as known OpenBSD only, from dboot data. Matches then converts PC2700 to
PC-2700 which then allows for mapping.

9. RAM/PROCESSES/INFO/SHORT: Finally tracked down a long time oddity, where for
example:
 RAM: total: 31.28 GiB
does not match 32 GiB physical installed. This is because that is the total
available after kernel and system reserved RAM is deducted, and in some cases,
GPU allocated RAM. There are also corner cases where the listed amount can be
less due to physical RAM damage, but that's uncommon.

Added explanation of why it's different, and what available is referring to in
man -m/--memory.

Changed -m, -tm to show:

System RAM: available: 31.28 GiB used 26.23 GiB (83.9%)

and -I to show:

Memory: available: 31.28 GiB used 26.23 GiB (83.9%)

You can get the 'reserved' and 'kernel code' data from dmesg, but since Debian
made that root/sudo tool, can't count on being able to parse that out of dmesg,
plus you can never count no dmesg anyway since it can get overwritten by kernel
oops or wonky device etc. inxi doesn't use dmesg data for Linux for this reason.

... [    0.000000] Memory: 32784756K/33435864K available (10252K kernel code,
1243K rwdata, 3324K rodata, 1584K init, 2280K bss, 651108K reserved, 0K
cma-reserved)

Also removed Raspberry Pi video RAM added back in to total now that it's clear
it's what is available. This may also make systems with GPU using system RAM
more correct.

9. SENSORS: sensors /sys tried to create concatenated string with $unit $value
but these are not necessarily defined, that needed to be protected with defined
tests.

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

1a. AUDIO: JACK: added helper nsmd (new session manager), and its recommended
gui agordejo. That's the drop in replacement for non-session-manager, the dev of
which apparently lost interest in that project. But the ID method will work fine
for for either, since both ran as nsmd.

1b. AUDIO: PULSE: added pulseaudio-alsa plugin support for helpers. This is like
pipewire-alsa plugin, just alsa config file. Only seen in Arch Linux so far, but
if others use similar paths for the glob pattern, they will also work fine.

Also added pulseaudio-esound-compat plugin, which is easier to detect with
/usr/bin/esdcompat.

Also added paman, pulseaudio manager.

1c. AUDIO: ESOUND,ARTS: added legacy esd (EsounD aka: Enlightened Sound Daemon)
and aRts sound server support, with basic help/tools. These are quite old, but
are still occasionally seen in the wild on newer systems, surprisingly enough.

1d. AUDIO: ALSA: added alsactl to alsa tools. Missed that one, it's an /sbin
type utility.

1e. AUDIO: ALSA: First try at ALSA compiled in but inactive report,  previously
depended on active only state of the API. Now uses compiled in SND_ kernel
switch using the /boot/config-[kernel] file, which is a big expensive parse but
only will activate on Linux kernels with no /proc/asound present. This fallback
fails if kernel config file not present: /boot/config-$(uname -r).

1f. AUDIO: OSS: added tool ossctl.

1g. AUDIO: NAS: added helper: audiooss which is an OSS compat layer.

2a. DistroData: added Arch base distros: ArchEX, Bridge Linux, Condres OS,
Feliz, LiriOS, Magpie, Namib, Porteus, RevengeOS, SalientOS, VeltOS.

None of these are verified. Some don't exist anymore.
Source: https://www.slant.co/topics/7603/~arch-linux-based-distributions

2b. DistroData: added ubuntu lunar 23-4 release id.

2c. DistroData: added porteux, added porteux, zenwalk to slackware systembase

3. DesktopData/GRAPHICS: added Smithay Wayland compositor. Not verified.

4a. UsbData/UsbItem: added USB lanes (-Jxx) and mode (-Ja), to add more useful
data about USB revision and mode names the USB group has created. Otherwise it's
too difficult to try to explain it. Note that -Jxx lanes follows other inxi
items that show PCIe lanes as an -xx item to try to keep it consistent.

This also consolidates the bsd and linux data sources, see CODE 5.

Note modes and lanes are Linux only because the revision number, lanes, and
speed used to determine mode are only natively available in Linux as actual
internal data values. If this changes BSD support will be added in the future.

The BSD rev and speed data is synthesized completely by inxi using some string
values, and thus is not reliable, which means that pretending inxi can get this
granular with data that is not coming directly from the system itself is
probably not a good idea.

Following wikipedia mode names: https://en.wikipedia.org/wiki/USB4

These are the known possible combinations:
rev: 1.0 mode: 1.0 lanes: 1 speed: 1.5 Mbps
rev: 1.1 mode: 1.0 lanes: 1 speed: 1.5 Mbps
rev: 1.1 mode: 1.1 lanes: 1 speed: 12 Mbps
rev: 2.0 mode: 1.0 lanes: 1 speed: 1.5 Mbps
rev: 2.0 mode: 1.1 lanes: 1 speed: 12 Mbps
rev: 2.0 mode: 2.0 lanes: 1 speed: 480 Mbps
rev: 2.1 mode: 2.0 lanes: 1 speed: 480 Mbps
rev: 3.0 mode: 3.2 gen-1x1 lanes: 1 speed:  5 Gbps
rev: 3.0 mode: 3.2 gen-1x2 lanes: 2 speed: 10 Gbps
rev: 3.1 mode: 3.2 gen-1x1 lanes: 1 speed:  5 Gbps
rev: 3.1 mode: 3.2 gen-1x2 lanes: 2 speed: 10 Gbps
rev: 3.1 mode: 3.2 gen-2x2 lanes: 2 speed: 20 Gbps [seen this case]
rev: 3.2 mode: 3.2 gen-1x1 lanes: 1 speed:  5 Gbps [wrong rev: seen this case]
rev: 3.2 mode: 3.2 gen-1x2 lanes: 2 speed: 10 Gbps [wrong rev: possible case]
rev: 3.2 mode: 3.2 gen-2x1 lanes: 1 speed: 10 Gbps
rev: 3.2 mode: 3.2 gen-2x2 lanes: 2 speed: 20 Gbps
rev: 3.2 mode: 4-v1 gen-3x2 lanes: 2 speed: 40 Gbps [not seen, but possible]
rev: 4 mode: 4-v1 gen-2x1 lanes; 1 speed: 10 Gbps
rev: 4 mode: 4-v1 gen-2x2 lanes: 2 speed: 20 Gbps
rev: 4 mode: 4-v1 gen-3x1 lanes: 1 speed: 20 Gbps
rev: 4 mode: 4-v2 gen-3x2 lanes: 2 speed: 40 Gbps
rev: 4 mode: 4-v2 gen-4x1 lanes: 1 speed: 40 Gbps
rev: 4 mode: 4-v2 gen-4x2 lanes: 2 speed: 80 Gbps
rev: 4 mode: 4-v2 gen-4x3-asymmetric lanes: 3 up, 1 down speed:120 Gbps

I believe 120Gbps takes the 2 lanes of tx/rx and converts 2 rx lanes to tx so
the entire lane is dedicated to transmit. and the third lane is dedicated to rx.

Includes error message for unknown usb 3/4 rev/speed match combos. These can be
bad hardware self reporting or unknown other issues.

4b. USB: Added Si/IEC speeds (base 2, base 10). -Ja triggers extra IEC, base 2
Bytes (xxx [MG]iB/s). -Jx triggers basic standard Si xxx [MG]b/s base 10 bits.

5a. PackageData: added netpkg as package tool. This stores data in same location
as slackpkg, but assume if exists directory /var/netpkg, then the system is
using netpkg as pm, not slackpkg.

5b. PackageData: added Slackware sbopkg, sboui as tools for pkgtool and netpkg.

6a. REPOS: added netpkg (Zenwalk Slackware based pm) repo report.

6b. REPOS: added sbopkg basic repo report. This handles both value syntax types,
as well as the ability of /root config file to overwrite /etc config repo.

6c. REPOS: added slpkg repo report. This handles their old and newer syntax.

7a. CheckRecommends: For Slackware users, added pkgtool missing package name,
also will use netpkg so hopefully Zenwalk uses same package names.

7b. CheckRecommends: Added radeon to kernel modules checks.

8. AUDIO/BLUETOOTH/DRIVES/GRAPHICS/NETWORK: For USB, -[ADEGN]xx adds rev, speed,
lanes. -[ADEGN]a adds mode.

9. RAM: Updated RAM PC DDR in speed_mapper(), which is as far as I know only
used by OpenBSD, which allows for MT/s speeds as non-root user, which is nice.
That list hadn't been updated in a long time, so filled out DDR 1-5 PCx-yyyy
ids.

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

1a. USB: For -Jxy1, speed is now a child of rev: parent. This goes along with
mode: and lanes: being children of rev:. This follows how USB consortium wants
to refer to USB revisions now: by speed, lanes, and modes, the latter being the
technical term, the speed being the marketing term.

1b. USB: If no speed data found, show N/A. This should almost never happen
except for very old Linux and rarely with BSD.

1c. USB: Device type is lower cased except for abbreviations (type-C, HID). This
makes it more consistent as a value.

1d. USB: Show basic Si speed with -Jx, and adds new IEC speed with -Ja.

2. CheckRecommends: See ENHANCEMENT, CODE 6. Now showing row by row package
managers and missing packages, by package manager(s).

3. DRIVES: Changed long standing redundant use of 'type':
type: USB ... type: HDD
to:
type: USB ... tech: HDD
'tech:' means the technology used, HDD, SDD, and if we can ever figure out how
to detect it, Hybrid Hard Drive (HHD),

4. AUDIO/BLUETOOTH/DRIVES/GRAPHIC/NETWORK: moved 'type: USB' pair to after
driver for -A/-E/-G/-N, which allows it to be the parent of the new USB data
block. Negative is it moves it a bit further back in the line.

For Drives, it moves it from after /dev.. maj-min to after block-size, However,
with -D/-Dx, it's last in the line, which is nice. This is the only way I could
find to make it more consistent across all possible USB device/drive type
reports.

5. INFO/RAM/PROCESSES: Changed -I:

Memory: [total] used:
to:
Memory: available: [total] used:

Changed -tm/-m to be consistent:

Memory: RAM: total: .. used..
to:
Memory: System RAM: available: ... used:..

This corrects a long standing inaccuracy where MemTotal is not actually the full
system RAM, but is the RAM minus reserved stuff for system and kernel, and GPU
memory in some cases.

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

1a. DOCS: docs/inxi-audio.txt: ongoing updates, adding more information, more
on helpers, detection methods, etc.

1b. DOCS: New: docs/inxi-usb.txt: USB info, update, added more, a work in
progress.

1c. DOCS: docs/inxi-custom-recommends.txt: name in inxi comment did not match,
and updated to new comment cleaned up syntax in example. Fixed inxi comment file
name.

1d. DOCS: New: docs/inxi-unit-handling.txt: To document how inxi handles
size/speed data internally, and ideally, to help integrate all those methods
into one big tool one day, not spread across many area.

1e. DOCS: New: docs/inxi-repo-package-manager.txt: To start to document arcana
and methods and commands and outputs for package managers. Since this is a late
start, will take time to complete, but better late than never.

2a. MAN/OPTIONS: updated for USB -Jx, -Jxx, -Ja, adding lanes, mode, iec speed
items.

2b. MAN/OPTIONS: fixed error which had USB speed as -Jxxx instead of -Jxx. Also
then changed speed to be -Jx.

2c. MAN/OPTIONS: updated for repos for SBOPKG, SBOUI, SLPKG, and added
SLAPT_GET, I'd forgotten that one.

2d. MAN/OPTIONS: updated for -xx[ADEGN] USB rev, speed, lanes; for -a[ADEGN]
updated for USB mode.

2e. MAN/OPTIONS: updated for memory available/used changed.

3. MAN: fixed some inconsistent use of short/long form display in extra data
options.

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

1a. DesktopData: New function for xfce only detections, turns out xprop is not
necessarily installed, Void Linux for example had failed ID. Old version
required xprop to do the tests, which was not robust and failed in this case.
Function: get_env_xfce_data(). Also made xprop data optional for all the
xxx_xprop_data desktop tests, not just some of them. This will forward proof
the desktops

1b. DesktopData: Fixed bad parens in test cases, was not correctly organized.
if (a || b || (c || d) && e)
was supposed to be:
if (a || b || ((c || d) && e))
Odd how those types of glitches creep in, one fix is also to just make the lines
break more reasonably so the conditions are easier to parse visually.

2a. DEBUGGER: Added /etc/X11/XF86Config-4 xorg conf file to debugger.

2b. DEBUGGER: audio_data(): added audio server versions to cover all known ones.

3. MemoryData: changed all $memory to array references, got rid of split :
separators, which were clearly legacy items leftover from bash/gawk days. Also
changed MemoryData::get('splits') to get('full') to reflect this change.

This change should be transparent though it may introduce corner case undefined
value situation but that should not happen since array values are defined first.

4. UsbData: Refactor of usb speed, rev, added lanes, mode. Refactored most of
the bsd/linux rev/speed logic, merged some of bsd speed/rev into the new
version_data() function, which loads all the data based on what is calling it.
This helps consolidate the logic across usb data sources.

5a. GLOBAL: made functions/methods use same comment syntax for args:
 args: 0:...; 1:...
always starting with 0, to match array index. Same syntax for return array index
values. In some cases simply note a variable is passed by ref:
 args: $value passed by reference.

5b. GLOBAL: made all sub/functions/methods follow the same spacing syntax. This
seems to be a good compromise for space/readability. Note that adding in these
new lines added about 400 lines to the total length, plus the line breaks that
were already there. Yes, inxi has a lot of sub routines! aka functions and
sometimes aka methods.

[empty line]
[comments]
sub [name] {

Packages/classes now also all follow the same spacing rules:

[empty line]
[comments]
{
package [name];
[empty line]
[comments]
sub [name] {
...
}
}

Internally, subs generally do not use any empty lines unless it makes sense to
do so for some specific reason.

5c: GLOBAL: made start of sub comments be upper case, I have a bad habit of
typing comments in lower case, easier to read if it's reads like a normal
sentence.

6. CheckRecommends: refactored entire items logic, set global hash for test
items. Made support > 1 detected package manager.

7. REPOS: cleaned up comments for package manager/repo blocks.

8. SENSORS: sensors_sys failed to reset to undefined $unit and $value, and also
failed to test if they were defined before using them in concatenation.
This commit is contained in:
Harald Hope 2023-05-07 11:59:56 -07:00
parent beddf67370
commit ed7049fcc1
3 changed files with 2686 additions and 1074 deletions

3116
inxi

File diff suppressed because it is too large Load diff

158
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 "2023\-03\-28" "inxi" "inxi manual" .TH INXI 1 "2023\-05\-07" "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
@ -131,8 +131,9 @@ keep things simple.
Show Audio/sound device(s) information, including device driver. Shows active Show Audio/sound device(s) information, including device driver. Shows active
sound API(s) and sound server(s). sound API(s) and sound server(s).
Supported servers/APIs: ALSA, JACK, OSS, NAS, PipeWire, PulseAudio, RoarAudio, Supported APIs: ALSA, OSS, sndio. Supported servers: aRts (artsd), Enlightened
sndio. Sound Daemon (esound, esd), JACK, NAS (Network Audio System, nasd), PipeWire,
PulseAudio, RoarAudio, sndiod.
Use \fB\-Ax\fR to show all sound APIs/servers detected, including inactive, Use \fB\-Ax\fR to show all sound APIs/servers detected, including inactive,
\fB\-Axx\fR to see API/Server helper daemons/plugin/modules, and \fB\-Aa\fR to \fB\-Axx\fR to see API/Server helper daemons/plugin/modules, and \fB\-Aa\fR to
@ -242,7 +243,7 @@ Sample:
.TP .TP
.B \-d \fR, \fB\-\-disk\-full\fR,\fB\-\-optical\fR .B \-d \fR, \fB\-\-disk\-full\fR,\fB\-\-optical\fR
Show optical drive data as well as \fB\-D\fR hard drive data. With \fB\-x\fR, Show optical drive data as well as \fB\-D\fR HDD/SSD drive data. With \fB\-x\fR,
adds a feature line to the output. Also shows floppy disks if present. Note adds a feature line to the output. Also shows floppy disks if present. Note
that there is no current way to get any information about the floppy device that there is no current way to get any information about the floppy device
that we are aware of, so it will simply show the floppy ID without any extra that we are aware of, so it will simply show the floppy ID without any extra
@ -250,9 +251,9 @@ data. \fB\-xx\fR adds a few more features.
.TP .TP
.B \-D \fR, \fB\-\-disk\fR .B \-D \fR, \fB\-\-disk\fR
Show Hard Disk info. Shows total disk space and used percentage. The disk used Show HDD/SSD drive info. Shows total drive space and used percentage. The drive
percentage includes space used by swap partition(s), since those are not usable used percentage includes space used by swap partition(s), since those are not
for data storage. Also, unmounted partitions are not counted in disk use usable for data storage. Also, unmounted partitions are not counted in drive use
percentages since inxi has no access to the used amount. percentages since inxi has no access to the used amount.
If the system has RAID or other logical storage, and if inxi can determine If the system has RAID or other logical storage, and if inxi can determine
@ -269,10 +270,10 @@ Without logical storage detected:
\fBLocal Storage: total: 2.89 TiB used: 1.51 TiB (52.3%)\fR \fBLocal Storage: total: 2.89 TiB used: 1.51 TiB (52.3%)\fR
Also shows per disk information: Disk ID, type (if present), vendor (if Also shows per drive information: Disk ID, type (FireWire, Removable, USB if
detected), model, and size. See \fBExtra Data Options\fR (\fB\-x\fR options) present), vendor (if detected), model, and size. See \fBExtra Data Options\fR
and \fBAdmin Extra Data Options\fR (\fB\-\-admin\fR options) for many more (\fB\-x\fR options) and \fBAdmin Extra Data Options\fR (\fB\-\-admin\fR options)
features. for many more features.
.TP .TP
.B \-E\fR, \fB\-\-bluetooth\fR .B \-E\fR, \fB\-\-bluetooth\fR
@ -386,8 +387,10 @@ Show Information: processes, uptime, memory, IRC client (or shell type if run
in shell, not IRC), inxi version. See \fB\-Ix\fR, \fB\-Ixx\fR, and \fB\-Ia\fR in shell, not IRC), inxi version. See \fB\-Ix\fR, \fB\-Ixx\fR, and \fB\-Ia\fR
for extra information (init type/version, runlevel/target, packages). for extra information (init type/version, runlevel/target, packages).
Note: if \fB\-m\fR is used or triggered, the memory item will show in the main Note: if \fB\-m\fR or \fB\-tm\fR are active, the memory item will show in the
Memory: report of \fB\-m\fR, not in \fB\Info:\fR. main Memory: report of \fB\-m\fR/\fB\-tm\fR/, not in \fB\Info:\fR.
See \fB\-m\fR for explanation of \fBMemory: available:\fR.
Raspberry Pi only: uses \fBvcgencmd get_mem gpu\fR to get gpu RAM amount, if Raspberry Pi only: uses \fBvcgencmd get_mem gpu\fR to get gpu RAM amount, if
user is in video group and \fBvcgencmd\fR is installed. Uses this result to user is in video group and \fBvcgencmd\fR is installed. Uses this result to
@ -418,7 +421,10 @@ generally shows BusID / DeviceID (except for tree view, which shows ports).
Examples: \fBDevice\-3: 4\-3.2.1:2\fR or \fBHub: 4\-0:1\fR Examples: \fBDevice\-3: 4\-3.2.1:2\fR or \fBHub: 4\-0:1\fR
The \fBrev: 2.0\fR item refers to the USB revision number, like \fB1.0\fR or The \fBrev: 2.0\fR item refers to the USB revision number, like \fB1.0\fR or
\fB3.1\fR. \fB3.1\fR.
Use \fB\-Jx\fR for basic Si base 10 bits/s speed, \fB\-Jxx\fR for Si and IEC
base 2 Bytes/s speeds. \fB\-Ja\fR adds USB mode.
.TP .TP
.B \-l \fR, \fB\-\-label\fR .B \-l \fR, \fB\-\-label\fR
@ -514,7 +520,7 @@ to permit dmidecode to read \fB/dev/mem\fR as user. \fBspeed\fR and
\fBbus\-width\fR will not show if \fBNo Module Installed\fR is found in \fBbus\-width\fR will not show if \fBNo Module Installed\fR is found in
\fBsize\fR. \fBsize\fR.
Note: If \fB\-m\fR is triggered RAM total/used report will appear in this Note: If \fB\-m\fR is triggered RAM available/used report will appear in this
section, not in \fB\-I\fR or \fB\-tm\fR items. section, not in \fB\-I\fR or \fB\-tm\fR items.
Because \fBdmidecode\fR data is extremely unreliable, inxi will try to make Because \fBdmidecode\fR data is extremely unreliable, inxi will try to make
@ -532,9 +538,9 @@ Under dmidecode, \fBSpeed:\fR is the expected speed of the memory
is what the actual speed is now. To handle this, if speed and configured speed is what the actual speed is now. To handle this, if speed and configured speed
values are different, you will see this instead: values are different, you will see this instead:
\fBspeed: spec: [specified speed] MT/S actual: [actual] MT/S\fR \fBspeed: spec: [specified speed] MT/s actual: [actual] MT/s\fR
Also, if DDR, and speed in MHz, will change to: \fBspeed: [speed] MT/S Also, if DDR, and speed in MHz, will change to: \fBspeed: [speed] MT/s
([speed] MHz)\fR ([speed] MHz)\fR
If the detected speed is logically absurd, like 1 MT/s or 69910 MT/s, adds: If the detected speed is logically absurd, like 1 MT/s or 69910 MT/s, adds:
@ -542,7 +548,7 @@ If the detected speed is logically absurd, like 1 MT/s or 69910 MT/s, adds:
.nf .nf
\fBMemory: \fBMemory:
RAM: total: 31.38 GiB used: 20.65 GiB (65.8%) System RAM: available: 31.38 GiB used: 20.65 GiB (65.8%)
Array\-1: capacity: N/A slots: 4 note: check EC: N/A Array\-1: capacity: N/A slots: 4 note: check EC: N/A
Device\-1: DIMM_A1 type: DDR3 size: 8 GiB speed: 1600 MT/s (800 MHz) Device\-1: DIMM_A1 type: DDR3 size: 8 GiB speed: 1600 MT/s (800 MHz)
Device\-2: DIMM_A2 type: DDR3 size: 8 GiB speed: spec: 1600 MT/s (800 MHz) Device\-2: DIMM_A2 type: DDR3 size: 8 GiB speed: spec: 1600 MT/s (800 MHz)
@ -555,6 +561,11 @@ If the detected speed is logically absurd, like 1 MT/s or 69910 MT/s, adds:
See \fB\-\-memory\-modules\fR and \fB\-\-memory\-short\fR if you want a See \fB\-\-memory\-modules\fR and \fB\-\-memory\-short\fR if you want a
shorter report. shorter report.
Note: the \fBSystem Ram: available:\fR is actually the total installed RAM minus
some reserved and kernel code RAM (and in some cases GPU assigned main system
RAM) that is allocated on system boot, and thus is generally less than the
actual physical RAM installed.
.TP .TP
.B \-\-memory\-modules\fR, \fB\-\-mm\fR .B \-\-memory\-modules\fR, \fB\-\-mm\fR
Memory (RAM) data. Show only RAM arrays and modules in Memory report. Memory (RAM) data. Show only RAM arrays and modules in Memory report.
@ -657,6 +668,8 @@ APT distros like PCLinuxOS or Alt\-Linux)
\fBEOPKG\fR (Solus) \fBEOPKG\fR (Solus)
\fBNETPKG\fR (Zenwalk/Slackware)
\fBNIX\fR (NixOS + other distros as alternate package manager) \fBNIX\fR (NixOS + other distros as alternate package manager)
\fBPACMAN\fR (Arch Linux, KaOS + derived versions) \fBPACMAN\fR (Arch Linux, KaOS + derived versions)
@ -671,10 +684,18 @@ APT distros like PCLinuxOS or Alt\-Linux)
\fBPORTS\fR (OpenBSD, FreeBSD, NetBSD + derived OS types) \fBPORTS\fR (OpenBSD, FreeBSD, NetBSD + derived OS types)
\fBSBOPKG\fR (Slackware + derived versions)
\fBSBOUI\fR (Slackware + derived versions)
\fBSCRATCHPKG\fR (Venom + derived versions) \fBSCRATCHPKG\fR (Venom + derived versions)
\fBSLACKPKG\fR (Slackware + derived versions) \fBSLACKPKG\fR (Slackware + derived versions)
\fBSLAPT_GET\fR (Slackware + derived versions)
\fBSLPKG\fR (Slackware + derived versions)
\fBTCE\fR (TinyCore) \fBTCE\fR (TinyCore)
\fBURPMI\fR (Mandriva, Mageia + derived versions) \fBURPMI\fR (Mandriva, Mageia + derived versions)
@ -763,6 +784,8 @@ Make sure that there is no space between letters and numbers (e.g. write as
If the \fB\-I\fR or \fB\-m\fR lines are not triggered, will also show the If the \fB\-I\fR or \fB\-m\fR lines are not triggered, will also show the
system RAM used/total information. system RAM used/total information.
See \fB\-m\fR for explanation of \fBRAM: total\-available:\fR.
.TP .TP
.B \-t cm\fR .B \-t cm\fR
\- CPU+memory. With \fB\-x\fR, shows also CPU or memory for that process on \- CPU+memory. With \fB\-x\fR, shows also CPU or memory for that process on
@ -833,7 +856,7 @@ min/max speeds, if available) + \fB\-G\fR + basic Disk + \fB\-I\fR.
.TP .TP
.B \-v 4 .B \-v 4
\- Adds partition size/used data (\fB\-P\fR) for (if present): \fB/ /home /var/ \- Adds partition size/used data (\fB\-P\fR) for (if present): \fB/ /home /var/
/boot\fR. Shows full disk data (\fB\-D\fR) /boot\fR. Shows full drive data (\fB\-D\fR)
.TP .TP
.B \-v 5 .B \-v 5
@ -1286,7 +1309,7 @@ doas users: see \fBman doas.conf\fR for setup.
You can force use of \fBhddtemp\fR for all drives using \fB\-\-hddtemp\fR. You can force use of \fBhddtemp\fR for all drives using \fB\-\-hddtemp\fR.
\- If free LVM volume group size detected (root required), show \fBlvm-free:\fR \- If free LVM volume group size detected (root required), show \fBlvm\-free:\fR
on Local Storage line. This is how much unused space the VGs contain, that is, on Local Storage line. This is how much unused space the VGs contain, that is,
space not assigned to LVs. space not assigned to LVs.
@ -1366,15 +1389,21 @@ discover those.
available. available.
.TP .TP
.B \-x \-j\fR, \fB\-x \-\-swap\fR .B \-x \-j\fR (\fB\-\-swap\fR)
Add \fBmapper:\fR. See \fB\-x \-o\fR. Add \fBmapper:\fR. See \fB\-x \-o\fR.
.TP .TP
.B \-x \-J\fR (\fB\-\-usb\fR) .B \-x \-J\fR (\fB\-\-usb\fR)
\- For Devices, adds driver(s). \- For Devices, adds driver(s).
\- Adds, if available, USB speed in base 10 bits/s (Si) units \fBMb/s\fR or
\fBGb/s\fR (may be incorrect on BSDs due to non reliable data source). These are
base 10 bits per second. This unit corresponds to the standard units the USB
consortium uses to indicate speeds, but not to how most of the rest of your
system reports sizes. Use \fB\-Jxx\fR to add base 2 IEC Byte/second speeds.
.TP .TP
.B \-x \-L\fR, \fB\-x \-\-logical\fR .B \-x \-L\fR (\fB\-\-logical\fR)
\- Adds \fBdm: dm-x\fR to VG > LV and other Device types. This can help \- Adds \fBdm: dm-x\fR to VG > LV and other Device types. This can help
tracking down which device belongs to what. tracking down which device belongs to what.
@ -1450,6 +1479,8 @@ found for each distribution system base detection.
\- Adds PCIe speed and lanes item (Linux only, if detected). \- Adds PCIe speed and lanes item (Linux only, if detected).
\- Adds for USB devices USB rev, speed, lanes (lanes Linux only).
\- Adds \fBwith: [item] \fBstatus: [state/plugin]\fR helper daemons/plugins for \- Adds \fBwith: [item] \fBstatus: [state/plugin]\fR helper daemons/plugins for
the sound API/server. the sound API/server.
@ -1459,9 +1490,9 @@ the sound API/server.
.TP .TP
.B \-xx \-D\fR .B \-xx \-D\fR
\- Adds disk serial number. \- Adds HDD/SSD drive serial number.
\- Adds disk speed (if available). This is the theoretical top speed of the \- Adds drive speed (if available). This is the theoretical top speed of the
device as reported. This speed may be restricted by system board limits, device as reported. This speed may be restricted by system board limits,
eg. a SATA 3 drive on a SATA 2 board may report SATA 2 speeds, but this is eg. a SATA 3 drive on a SATA 2 board may report SATA 2 speeds, but this is
not completely consistent, sometimes a SATA 3 device on a SATA 2 board reports not completely consistent, sometimes a SATA 3 device on a SATA 2 board reports
@ -1478,7 +1509,9 @@ For a PCIe 3 NVMe drive, with speed of \fB8 GT/s\fR and \fB4\fR lanes
\fBspeed: 31.6 Gb/s lanes: 4\fR \fBspeed: 31.6 Gb/s lanes: 4\fR
\- Adds disk duid, if available. Some BSDs have it. \- Adds HDD/SSD drive duid, if available. Some BSDs have it.
\- Adds for USB drives USB rev, speed, lanes (lanes Linux only).
.TP .TP
.B \-xx \-E\fR (\fB\-\-bluetooth\fR) .B \-xx \-E\fR (\fB\-\-bluetooth\fR)
@ -1490,6 +1523,8 @@ if applicable) for each device.
\- Adds PCIe speed and lanes item (Linux only, and if PCIe bluetooth, which is \- Adds PCIe speed and lanes item (Linux only, and if PCIe bluetooth, which is
rare). rare).
\- Adds for USB devices USB rev, speed, lanes (lanes Linux only).
.TP .TP
.B \-xx \-G\fR .B \-xx \-G\fR
Triggers much more complete Screen/Monitor output. Triggers much more complete Screen/Monitor output.
@ -1517,6 +1552,8 @@ or more \fBMonitors\fR.
\- Adds PCIe speed and lanes item (Linux only, and if PCIe device and detected). \- Adds PCIe speed and lanes item (Linux only, and if PCIe device and detected).
\- Adds for USB devices USB rev, speed, lanes (lanes Linux only).
\- Adds output port IDs, active, off (connected but disabled, like a closed \- Adds output port IDs, active, off (connected but disabled, like a closed
laptop lid) and empty. Example: laptop lid) and empty. Example:
@ -1609,8 +1646,12 @@ swap types (for \fB\-j\fR).
.B \-xx \-J\fR (\fB\-\-usb\fR) .B \-xx \-J\fR (\fB\-\-usb\fR)
\- Adds vendor:chip id. \- Adds vendor:chip id.
\- Adds USB lanes. Uses tx (transmit) lane count for total unless rx and tx
counts are different (eg: \fBlanes: rx: 2 tx: 4\fR). Linux only.
See \fB\-Ja\fR for sample output.
.TP .TP
.B \-xx \-L\fR, \fB\-xx \-\-logical\fR .B \-xx \-L\fR (\fB\-\-logical\fR)
\- Adds internal LVM Logical volumes, like raid image and meta data volumes. \- Adds internal LVM Logical volumes, like raid image and meta data volumes.
\- Adds full list of Components, sub\-components, and their physical devices. \- Adds full list of Components, sub\-components, and their physical devices.
@ -1647,6 +1688,8 @@ ROM size if using \fBdmidecode\fR.
\- Adds PCIe speed and lanes item (Linux only, and if PCIe device and detected). \- Adds PCIe speed and lanes item (Linux only, and if PCIe device and detected).
\- Adds for USB devices USB rev, speed, lanes (lanes Linux only).
.TP .TP
.B \-xx \-r\fR .B \-xx \-r\fR
\- Adds to \fBPackages:\fR info. See \fB\-Ixx\fR \- Adds to \fBPackages:\fR info. See \fB\-Ixx\fR
@ -1721,16 +1764,16 @@ CPU does not support SMT.
.TP .TP
.B \-xxx \-D\fR .B \-xxx \-D\fR
\- Adds disk firmware revision number (if available). \- Adds HDD/SSD drive firmware revision number (if available).
\- Adds disk partition scheme (in most cases), e.g. \fBscheme: GPT\fR. \- Adds drive partition scheme (in most cases), e.g. \fBscheme: GPT\fR.
Currently not able to detect all schemes, but handles the most common, e.g. Currently not able to detect all schemes, but handles the most common, e.g.
\fBGPT\fR or \fBMBR\fR. \fBGPT\fR or \fBMBR\fR.
\- Adds disk type (\fBHDD\fR/\fBSSD\fR), rotation speed (in some but not all \- Adds drive tech (\fBHDD\fR/\fBSSD\fR), rotation speed (in some but not all
cases), e.g. \fBtype: HDD rpm: 7200\fR, or \fBtype: SSD\fR if positive SSD cases), e.g. \fBtech: HDD rpm: 7200\fR, or \fBtech: SSD\fR if positive SSD
identification was made. If no HDD, rotation, or positive SSD ID found, shows identification was made. If no HDD, rotation, or positive SSD ID found, shows
\fBtype: N/A\fR. Not all HDD spinning disks report their speed, so even if they \fBtech: N/A\fR. Not all HDD spinning disks report their speed, so even if they
are spinning, no rpm data will show. are spinning, no rpm data will show.
.TP .TP
@ -1784,8 +1827,6 @@ uses the \fBwhoami\fR test.
\- Adds \fBinterfaces:\fR for non hub devices. \- Adds \fBinterfaces:\fR for non hub devices.
\- Adds, if available, USB speed in \fBMbits/s\fR or \fBGbits/s\fR.
\- Adds, if present, USB class ID. \- Adds, if present, USB class ID.
\- Adds, if non 0, max power in mA. \- Adds, if non 0, max power in mA.
@ -1870,6 +1911,8 @@ shown).
\- Adds list of detected audio server tools (\fBtools: [tools]\fR) to API/Server \- Adds list of detected audio server tools (\fBtools: [tools]\fR) to API/Server
lines, like alsamixer, jack_control, pactl, pavuctl, pw-cli, sndioctl, etc. lines, like alsamixer, jack_control, pactl, pavuctl, pw-cli, sndioctl, etc.
\- Adds for USB devices USB mode (Linux only).
.TP .TP
.B \-a \-C\fR .B \-a \-C\fR
.br .br
@ -2042,8 +2085,11 @@ any further action.
\- Adds, for USB or other external drives, actual model name/serial if \- Adds, for USB or other external drives, actual model name/serial if
available, and different from enclosure model/serial, and corrects block sizes available, and different from enclosure model/serial, and corrects block sizes
if necessary. Adds in drive temperature for some drives as well, and other if necessary.
useful data.
\- Adds for USB drives USB mode (Linux only).
\- Adds in drive temperature for some drives as well, and other useful data.
.TP .TP
.B \-a \-E\fR (\fB\-\-bluetooth\fR) .B \-a \-E\fR (\fB\-\-bluetooth\fR)
@ -2055,6 +2101,8 @@ and Service Classes.
or lanes, \fBlink\-max: gen: speed: lanes:\fR (only items different from primary or lanes, \fBlink\-max: gen: speed: lanes:\fR (only items different from primary
shown. Bluetooth PCIe rare). shown. Bluetooth PCIe rare).
\- Adds for USB devices USB mode (Linux only).
.TP .TP
.B \-a \-G\fR .B \-a \-G\fR
\- Adds, if present, possible \fBalternate:\fR kernel modules capable of driving \- Adds, if present, possible \fBalternate:\fR kernel modules capable of driving
@ -2077,6 +2125,8 @@ Includes extended non free Nvidia legacy informatin (Linux and Nvidia only), and
issues, shows extra data that can help diagnose/debug. Adds \fBcode:\fR item if issues, shows extra data that can help diagnose/debug. Adds \fBcode:\fR item if
found and not the same as \fBarch:\fR. found and not the same as \fBarch:\fR.
\- Adds for USB devices USB mode (Linux only).
.nf .nf
\fBinxi \-Gaz \fBinxi \-Gaz
Graphics: Graphics:
@ -2172,6 +2222,7 @@ Graphics:
API: GBM/EGL API: GBM/EGL
Message: Wayland GBM/EGL data currently not available. Message: Wayland GBM/EGL data currently not available.
.fi .fi
.TP .TP
.B \-a \-I\fR .B \-a \-I\fR
\- Adds to Packages number of lib packages detected per package manager. Also \- Adds to Packages number of lib packages detected per package manager. Also
@ -2193,7 +2244,7 @@ rc\-service rcctl service sv /etc/rc.d /etc/init.d\fR. Can be useful to know
which you need when using an unfamiliar machine. which you need when using an unfamiliar machine.
.TP .TP
.B \-a \-j\fR, \fB\-a \-P\fR [swap], \fB\-a \-P\fR [swap] .B \-a \-j\fR (\fB\-\-swap\fR), \fB\-a \-P\fR [swap], \fB\-a \-P\fR [swap]
\- Adds swappiness and vfs cache pressure, and a message to indicate if the \- Adds swappiness and vfs cache pressure, and a message to indicate if the
value is the default value or not (Linux only, and only if available). If not value is the default value or not (Linux only, and only if available). If not
the default value, shows default value as well, e.g. the default value, shows default value as well, e.g.
@ -2209,7 +2260,38 @@ For \fB\-j\fR row 1 output:
\- Adds device kernel major:minor number (Linux only). \- Adds device kernel major:minor number (Linux only).
.TP .TP
.B \-a \-L\fR .B \-a \-J\fR (\fB\-\-usb)\fR
\- Adds, if available, USB speed in IEC units \fBMiB/s\fR or \fBGiB/s\fR (may
be incorrect on BSDs due to non reliable data source). These are base 2 Bytes
per second.
\- Adds USB mode (Linux only), which is the technical terms the USB group uses
to describe USB revisions. In cases where speed and rev are an unknown
combination, (and probably at least one is wrong) shows message.
There are no granular data sources in BSDs for accurate revision/lane/speed
information, so mode cannot be determined.
Sample:
.nf
\fB
Hub\-1: 1\-0:1 info: hi\-speed hub with single TT ports: 14 rev: 2.0
speed: 480 Mb/s (57.2 MiB/s) lanes: 1 mode: 2.0 chip\-ID: 1d6b:0002
class\-ID: 0900
Device\-1: 1-4:2 info: Wacom ET\-0405A [Graphire2 (4x5)] type: mouse
driver: usbhid,wacom interfaces: 1 rev: 1.1 speed: 1.5 Mb/s (183 KiB/s)
lanes: 1 mode: 1.0 power: 40mA chip\-ID: 056a:0011 class\-ID: 0301
Hub\-2: 2\-0:1 info: Super\-speed hub ports: 8 rev: 3.1
speed: 10 Gb/s (1.16 GiB/s) lanes: 1 mode: 3.2 gen\-2x1 chip\-ID: 1d6b:0003
class\-ID: 0900
Device\-1: 2\-8:5 info: SanDisk Ultra type: mass storage driver: usb\-storage
interfaces: 1 rev: 3.0 speed: 5 Gb/s (596.0 MiB/s) lanes: 1 mode: 3.2 gen\-1x1
power: 896mA chip\-ID: 0781:5581 class\-ID: 0806
serial: <filter>\fR
.fi
.TP
.B \-a \-L\fR (\fB\-\-logical)
\- Expands Component report, shows size / maj-min of components and devices, and \- Expands Component report, shows size / maj-min of components and devices, and
mapped name for logical components. Puts each component/device on its own line. mapped name for logical components. Puts each component/device on its own line.
@ -2231,6 +2313,8 @@ knows could possibly be used instead.
or lanes, \fBlink\-max: gen: speed: lanes:\fR (only items different from primary or lanes, \fBlink\-max: gen: speed: lanes:\fR (only items different from primary
shown). shown).
\- Adds for USB devices USB mode (Linux only).
.TP .TP
.B \-a \-o\fR .B \-a \-o\fR
\- Adds device kernel major:minor number (Linux only). \- Adds device kernel major:minor number (Linux only).

View file

@ -1,3 +1,489 @@
================================================================================
Version: 3.3.27
Patch: 00
Date: 2023-05-07
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------
Completion of the audio fixes and improvements of 3.3.26. Added less common
sound servers like EsounD and aRts, and made state reports more accurate for
ALSA.
Major USB code and data upgrades/refactors. The USB changes prepare inxi for USB
4, and adds lanes and Si/IEC speeds to the report. It is important to determine
what USB mode you are running in with 3.x and 4. These changes conform more
closely to how the USB consortium wants USB speeds refered to.
With more robust USB data, this data now appears in a similar form as pcie: data
for Devices, -A, -E, -G, -N, and for -D drives, as usb: plus rev, speed, lanes,
mode, with the -xx/-a options, like pcie. This has been a long standing
oversight and weakness of inxi USB and Device data, but now the two are fully
integrated, including for drives, which was quite tricky to get working.
Added netpkg and Zenwalk support to packages and repos. Also added repos support
for sbopkg and slpkg, and updated package tools for Slackware.
And more distros added to system base feature, and a few more for main ID.
Improved --recommends report quite a bit, now it's more granular for missing
packages and package manager reports, and also fixed a long standing missing
current shell + version issue. Added the final package manager type, pkgtool
(Slackware), that will be supported, which makes for 4, which is enough. Note
that other package managers can be added following the documentation
instructions for packagers, but this is enough for out of the box pm handling.
Fixed a long standing oddity with how free / /proc/meminfo report MemTotal vs
the actual physical RAM. I believe this issue also showed with GPU assigned RAM,
but now for all but short form, shows Memory/RAM: available: ... used: ...
--------------------------------------------------------------------------------
SPECIAL THANKS:
1. To the Slackware people at linuxquestions.org forums, who helped, again, on
this audio feature, even finding current or not too old systems that use some of
the new / old audio servers (EsoundD) running in the wild, which I never
expected to see. And also for exposing some weak spots in the USB advanced
logic, and helping with the sbopkg and slpkg repo logic and tools reports.
2. To the Manjaro forum users, for providing cases that show where inxi can be
improved. The audio server/api issue, the current USB 3/4 upgrade, were
initiated by threads pointing to things that could be improved in inxi. So I
guess the real thanks are for using inxi enough to trigger cases that show where
it's weak or can be better. Note that this requires that I follow roughly their
forums, however I only look at threads that seem like they might be of general
interest, or which suggest a possible weak spot in inxi, and I don't follow them
consistently. More reliable is to file github issues, since I will always see
those.
--------------------------------------------------------------------------------
KNOWN ISSUES:
1. DesktopData: at one point, BunsenLabs Debian OpenBox had XDG_CURRENT_DESKTOP
set to XFCE, which it isn't, but inxi can't work around such hacks, plus I don't
even know if Bunsen is around anymore anyway.
2. DesktopData: CODE 1 reminds us that the time to depend on x tools like xprop
for anything re desktop/wm detections is fast drawing to a close, true Wayland
will not have xprop, unless it's running on xwayland, which is not something
that should be relied on. Maybe recheck Moksha/Enlightenment which depend on
xprop for version detection.
The list of xprop detected wm/desktops in get_env_xprop_misc_data() is almost
all X only wm/desktops, so those should be safe unless one of them decides to
work on a wayland comositor.
3. BSD: ongoing weaknesses in BSD data sources make maintaining feature parity
impossible, but I am trying to get the BSD data as clean and consistent as
possible. I wish this were not the case, but the fact is, /sys is expanding and
creating excellent and reliable data sources with every major Linux kernel
update, and so far nothing comparable has appeared in the BSDs. This is just
reality, it's not a condemnation, but something like the /proc then /sys file
systems are an excellent idea, well worth emulating.
4. For the RAM available/total clarification, there's a slight issue because
free/meminfo show MemAvailable as Free for use RAM, but dmesg shows available
meaning what was available to the system during boot, minus the reserved
percentage. Since we needed one term, available to System offers the closest
in terms of technical precision without being too verbose. Technically available
in this context means: total physical minus 'kernel code' minus 'reserved'.
--------------------------------------------------------------------------------
BUGS:
1. CheckRecommends: See Fix 6b, more or less a bug, but really just a fix.
2. AUDIO: for USB devices, put extra data into row 0, no matter which row the
USB device is. This led to the extra data for USB being assigned to the wrong
row. Sigh.
3. OptionsHandler: When show{'ram'} was set, for bsd, set use{'bsd-raid'}, which
makes both show raid and ram fail for BSD. Oops. User mode RAM data only seen in
OpenBSD so far. This made loading $dboot{'ram'} fail, and any raid as well,
sigh, unless -m was also tripped.
--------------------------------------------------------------------------------
FIXES:
1. DistroData: typo for Arch base: was ctios, was supposed to be ctlos.
2a. DesktopData: found case where xprop -root not present (Void Linux), so xfce
test failed. Split to new function dedicated to xfce detection that doesn't use
xprop data. Also, XFCE is working on their Wayland version, which would in
theory not even have xprop by default.
Also, the base version number test for xfce depended on xprop, but
xprop doesn't even have that xfce version data anymore, so just checking if
xfce(4|5|)-panel exist and assigning primary version based on that test.
2b. DesktopData: Also see See CODE 1a,1b for further xprop and test fixes that
could have led to false positive or negative test conditions for the items that
used xprop tests. These tests are all xprop agnostic now, if it's there, they
will use it, if not, do the best they can.
3. PackageData: fixed legacy dpkg-query, old version did not support -f shortcut
for --showformat. This made dpkg package listing fail.
4a. GRAPHICS: Added legacy XFree86.0.log to X log path detection, that was an
oversight. Also added legacy module syntax _drv.o (not _drv.so). This gets X
driver data now for very old systems.
4b. GRAPHICS: fixed corner case where no x driver data, running as root, was not
supposed to show 'note: X driver n/a' message, that was a holdover from before
driver output was cleaned up and driver: N/A shows when no drivers at all found.
Just forgot to remove it when doing recent updates in the driver section, maybe?
5. REPOS/PackageData: For netpkg Zenwalk Slackware systems, showed only slackpkg
repo data, empty, and showed the Slackware pm, not netpkg for pm. See
Enhancements 5, 6.
6. REPOS: removed slapt_get file /etc/slapt-get/pubring.kbx, that's not a repo
file. Thanks chrisreturn for pointing that out.
7a. CheckRecommends: See also CODE 6. Fixed case where > 1 package manager is
detected on system, now lists them one by one for detected, and shows package
install options as well. Before only picked first detected, which could lead
to wrong results for Missing Package lists.
7b. CheckRecommends: Fixed glitch, forgot to update the current shell/version
when ShellData was refactored, this led to no current shell + version showing
up in recommends core tools report.
8. RAM: fixed speed_mapper string match to allow for older syntaxes. This is as
far as known OpenBSD only, from dboot data. Matches then converts PC2700 to
PC-2700 which then allows for mapping.
9. RAM/PROCESSES/INFO/SHORT: Finally tracked down a long time oddity, where for
example:
RAM: total: 31.28 GiB
does not match 32 GiB physical installed. This is because that is the total
available after kernel and system reserved RAM is deducted, and in some cases,
GPU allocated RAM. There are also corner cases where the listed amount can be
less due to physical RAM damage, but that's uncommon.
Added explanation of why it's different, and what available is referring to in
man -m/--memory.
Changed -m, -tm to show:
System RAM: available: 31.28 GiB used 26.23 GiB (83.9%)
and -I to show:
Memory: available: 31.28 GiB used 26.23 GiB (83.9%)
You can get the 'reserved' and 'kernel code' data from dmesg, but since Debian
made that root/sudo tool, can't count on being able to parse that out of dmesg,
plus you can never count no dmesg anyway since it can get overwritten by kernel
oops or wonky device etc. inxi doesn't use dmesg data for Linux for this reason.
... [ 0.000000] Memory: 32784756K/33435864K available (10252K kernel code,
1243K rwdata, 3324K rodata, 1584K init, 2280K bss, 651108K reserved, 0K
cma-reserved)
Also removed Raspberry Pi video RAM added back in to total now that it's clear
it's what is available. This may also make systems with GPU using system RAM
more correct.
9. SENSORS: sensors /sys tried to create concatenated string with $unit $value
but these are not necessarily defined, that needed to be protected with defined
tests.
--------------------------------------------------------------------------------
ENHANCEMENTS:
1a. AUDIO: JACK: added helper nsmd (new session manager), and its recommended
gui agordejo. That's the drop in replacement for non-session-manager, the dev of
which apparently lost interest in that project. But the ID method will work fine
for for either, since both ran as nsmd.
1b. AUDIO: PULSE: added pulseaudio-alsa plugin support for helpers. This is like
pipewire-alsa plugin, just alsa config file. Only seen in Arch Linux so far, but
if others use similar paths for the glob pattern, they will also work fine.
Also added pulseaudio-esound-compat plugin, which is easier to detect with
/usr/bin/esdcompat.
Also added paman, pulseaudio manager.
1c. AUDIO: ESOUND,ARTS: added legacy esd (EsounD aka: Enlightened Sound Daemon)
and aRts sound server support, with basic help/tools. These are quite old, but
are still occasionally seen in the wild on newer systems, surprisingly enough.
1d. AUDIO: ALSA: added alsactl to alsa tools. Missed that one, it's an /sbin
type utility.
1e. AUDIO: ALSA: First try at ALSA compiled in but inactive report, previously
depended on active only state of the API. Now uses compiled in SND_ kernel
switch using the /boot/config-[kernel] file, which is a big expensive parse but
only will activate on Linux kernels with no /proc/asound present. This fallback
fails if kernel config file not present: /boot/config-$(uname -r).
1f. AUDIO: OSS: added tool ossctl.
1g. AUDIO: NAS: added helper: audiooss which is an OSS compat layer.
2a. DistroData: added Arch base distros: ArchEX, Bridge Linux, Condres OS,
Feliz, LiriOS, Magpie, Namib, Porteus, RevengeOS, SalientOS, VeltOS.
None of these are verified. Some don't exist anymore.
Source: https://www.slant.co/topics/7603/~arch-linux-based-distributions
2b. DistroData: added ubuntu lunar 23-4 release id.
2c. DistroData: added porteux, added porteux, zenwalk to slackware systembase
3. DesktopData/GRAPHICS: added Smithay Wayland compositor. Not verified.
4a. UsbData/UsbItem: added USB lanes (-Jxx) and mode (-Ja), to add more useful
data about USB revision and mode names the USB group has created. Otherwise it's
too difficult to try to explain it. Note that -Jxx lanes follows other inxi
items that show PCIe lanes as an -xx item to try to keep it consistent.
This also consolidates the bsd and linux data sources, see CODE 5.
Note modes and lanes are Linux only because the revision number, lanes, and
speed used to determine mode are only natively available in Linux as actual
internal data values. If this changes BSD support will be added in the future.
The BSD rev and speed data is synthesized completely by inxi using some string
values, and thus is not reliable, which means that pretending inxi can get this
granular with data that is not coming directly from the system itself is
probably not a good idea.
Following wikipedia mode names: https://en.wikipedia.org/wiki/USB4
These are the known possible combinations:
rev: 1.0 mode: 1.0 lanes: 1 speed: 1.5 Mbps
rev: 1.1 mode: 1.0 lanes: 1 speed: 1.5 Mbps
rev: 1.1 mode: 1.1 lanes: 1 speed: 12 Mbps
rev: 2.0 mode: 1.0 lanes: 1 speed: 1.5 Mbps
rev: 2.0 mode: 1.1 lanes: 1 speed: 12 Mbps
rev: 2.0 mode: 2.0 lanes: 1 speed: 480 Mbps
rev: 2.1 mode: 2.0 lanes: 1 speed: 480 Mbps
rev: 3.0 mode: 3.2 gen-1x1 lanes: 1 speed: 5 Gbps
rev: 3.0 mode: 3.2 gen-1x2 lanes: 2 speed: 10 Gbps
rev: 3.1 mode: 3.2 gen-1x1 lanes: 1 speed: 5 Gbps
rev: 3.1 mode: 3.2 gen-1x2 lanes: 2 speed: 10 Gbps
rev: 3.1 mode: 3.2 gen-2x2 lanes: 2 speed: 20 Gbps [seen this case]
rev: 3.2 mode: 3.2 gen-1x1 lanes: 1 speed: 5 Gbps [wrong rev: seen this case]
rev: 3.2 mode: 3.2 gen-1x2 lanes: 2 speed: 10 Gbps [wrong rev: possible case]
rev: 3.2 mode: 3.2 gen-2x1 lanes: 1 speed: 10 Gbps
rev: 3.2 mode: 3.2 gen-2x2 lanes: 2 speed: 20 Gbps
rev: 3.2 mode: 4-v1 gen-3x2 lanes: 2 speed: 40 Gbps [not seen, but possible]
rev: 4 mode: 4-v1 gen-2x1 lanes; 1 speed: 10 Gbps
rev: 4 mode: 4-v1 gen-2x2 lanes: 2 speed: 20 Gbps
rev: 4 mode: 4-v1 gen-3x1 lanes: 1 speed: 20 Gbps
rev: 4 mode: 4-v2 gen-3x2 lanes: 2 speed: 40 Gbps
rev: 4 mode: 4-v2 gen-4x1 lanes: 1 speed: 40 Gbps
rev: 4 mode: 4-v2 gen-4x2 lanes: 2 speed: 80 Gbps
rev: 4 mode: 4-v2 gen-4x3-asymmetric lanes: 3 up, 1 down speed:120 Gbps
I believe 120Gbps takes the 2 lanes of tx/rx and converts 2 rx lanes to tx so
the entire lane is dedicated to transmit. and the third lane is dedicated to rx.
Includes error message for unknown usb 3/4 rev/speed match combos. These can be
bad hardware self reporting or unknown other issues.
4b. USB: Added Si/IEC speeds (base 2, base 10). -Ja triggers extra IEC, base 2
Bytes (xxx [MG]iB/s). -Jx triggers basic standard Si xxx [MG]b/s base 10 bits.
5a. PackageData: added netpkg as package tool. This stores data in same location
as slackpkg, but assume if exists directory /var/netpkg, then the system is
using netpkg as pm, not slackpkg.
5b. PackageData: added Slackware sbopkg, sboui as tools for pkgtool and netpkg.
6a. REPOS: added netpkg (Zenwalk Slackware based pm) repo report.
6b. REPOS: added sbopkg basic repo report. This handles both value syntax types,
as well as the ability of /root config file to overwrite /etc config repo.
6c. REPOS: added slpkg repo report. This handles their old and newer syntax.
7a. CheckRecommends: For Slackware users, added pkgtool missing package name,
also will use netpkg so hopefully Zenwalk uses same package names.
7b. CheckRecommends: Added radeon to kernel modules checks.
8. AUDIO/BLUETOOTH/DRIVES/GRAPHICS/NETWORK: For USB, -[ADEGN]xx adds rev, speed,
lanes. -[ADEGN]a adds mode.
9. RAM: Updated RAM PC DDR in speed_mapper(), which is as far as I know only
used by OpenBSD, which allows for MT/s speeds as non-root user, which is nice.
That list hadn't been updated in a long time, so filled out DDR 1-5 PCx-yyyy
ids.
--------------------------------------------------------------------------------
CHANGES:
1a. USB: For -Jxy1, speed is now a child of rev: parent. This goes along with
mode: and lanes: being children of rev:. This follows how USB consortium wants
to refer to USB revisions now: by speed, lanes, and modes, the latter being the
technical term, the speed being the marketing term.
1b. USB: If no speed data found, show N/A. This should almost never happen
except for very old Linux and rarely with BSD.
1c. USB: Device type is lower cased except for abbreviations (type-C, HID). This
makes it more consistent as a value.
1d. USB: Show basic Si speed with -Jx, and adds new IEC speed with -Ja.
2. CheckRecommends: See ENHANCEMENT, CODE 6. Now showing row by row package
managers and missing packages, by package manager(s).
3. DRIVES: Changed long standing redundant use of 'type':
type: USB ... type: HDD
to:
type: USB ... tech: HDD
'tech:' means the technology used, HDD, SDD, and if we can ever figure out how
to detect it, Hybrid Hard Drive (HHD),
4. AUDIO/BLUETOOTH/DRIVES/GRAPHIC/NETWORK: moved 'type: USB' pair to after
driver for -A/-E/-G/-N, which allows it to be the parent of the new USB data
block. Negative is it moves it a bit further back in the line.
For Drives, it moves it from after /dev.. maj-min to after block-size, However,
with -D/-Dx, it's last in the line, which is nice. This is the only way I could
find to make it more consistent across all possible USB device/drive type
reports.
5. INFO/RAM/PROCESSES: Changed -I:
Memory: [total] used:
to:
Memory: available: [total] used:
Changed -tm/-m to be consistent:
Memory: RAM: total: .. used..
to:
Memory: System RAM: available: ... used:..
This corrects a long standing inaccuracy where MemTotal is not actually the full
system RAM, but is the RAM minus reserved stuff for system and kernel, and GPU
memory in some cases.
--------------------------------------------------------------------------------
DOCUMENTATION:
1a. DOCS: docs/inxi-audio.txt: ongoing updates, adding more information, more
on helpers, detection methods, etc.
1b. DOCS: New: docs/inxi-usb.txt: USB info, update, added more, a work in
progress.
1c. DOCS: docs/inxi-custom-recommends.txt: name in inxi comment did not match,
and updated to new comment cleaned up syntax in example. Fixed inxi comment file
name.
1d. DOCS: New: docs/inxi-unit-handling.txt: To document how inxi handles
size/speed data internally, and ideally, to help integrate all those methods
into one big tool one day, not spread across many area.
1e. DOCS: New: docs/inxi-repo-package-manager.txt: To start to document arcana
and methods and commands and outputs for package managers. Since this is a late
start, will take time to complete, but better late than never.
2a. MAN/OPTIONS: updated for USB -Jx, -Jxx, -Ja, adding lanes, mode, iec speed
items.
2b. MAN/OPTIONS: fixed error which had USB speed as -Jxxx instead of -Jxx. Also
then changed speed to be -Jx.
2c. MAN/OPTIONS: updated for repos for SBOPKG, SBOUI, SLPKG, and added
SLAPT_GET, I'd forgotten that one.
2d. MAN/OPTIONS: updated for -xx[ADEGN] USB rev, speed, lanes; for -a[ADEGN]
updated for USB mode.
2e. MAN/OPTIONS: updated for memory available/used changed.
3. MAN: fixed some inconsistent use of short/long form display in extra data
options.
--------------------------------------------------------------------------------
CODE:
1a. DesktopData: New function for xfce only detections, turns out xprop is not
necessarily installed, Void Linux for example had failed ID. Old version
required xprop to do the tests, which was not robust and failed in this case.
Function: get_env_xfce_data(). Also made xprop data optional for all the
xxx_xprop_data desktop tests, not just some of them. This will forward proof
the desktops
1b. DesktopData: Fixed bad parens in test cases, was not correctly organized.
if (a || b || (c || d) && e)
was supposed to be:
if (a || b || ((c || d) && e))
Odd how those types of glitches creep in, one fix is also to just make the lines
break more reasonably so the conditions are easier to parse visually.
2a. DEBUGGER: Added /etc/X11/XF86Config-4 xorg conf file to debugger.
2b. DEBUGGER: audio_data(): added audio server versions to cover all known ones.
3. MemoryData: changed all $memory to array references, got rid of split :
separators, which were clearly legacy items leftover from bash/gawk days. Also
changed MemoryData::get('splits') to get('full') to reflect this change.
This change should be transparent though it may introduce corner case undefined
value situation but that should not happen since array values are defined first.
4. UsbData: Refactor of usb speed, rev, added lanes, mode. Refactored most of
the bsd/linux rev/speed logic, merged some of bsd speed/rev into the new
version_data() function, which loads all the data based on what is calling it.
This helps consolidate the logic across usb data sources.
5a. GLOBAL: made functions/methods use same comment syntax for args:
args: 0:...; 1:...
always starting with 0, to match array index. Same syntax for return array index
values. In some cases simply note a variable is passed by ref:
args: $value passed by reference.
5b. GLOBAL: made all sub/functions/methods follow the same spacing syntax. This
seems to be a good compromise for space/readability. Note that adding in these
new lines added about 400 lines to the total length, plus the line breaks that
were already there. Yes, inxi has a lot of sub routines! aka functions and
sometimes aka methods.
[empty line]
[comments]
sub [name] {
Packages/classes now also all follow the same spacing rules:
[empty line]
[comments]
# Package Name
{
package [name];
[empty line]
[comments]
sub [name] {
...
}
}
Internally, subs generally do not use any empty lines unless it makes sense to
do so for some specific reason.
5c: GLOBAL: made start of sub comments be upper case, I have a bad habit of
typing comments in lower case, easier to read if it's reads like a normal
sentence.
6. CheckRecommends: refactored entire items logic, set global hash for test
items. Made support > 1 detected package manager.
7. REPOS: cleaned up comments for package manager/repo blocks.
8. SENSORS: sensors_sys failed to reset to undefined $unit and $value, and also
failed to test if they were defined before using them in concatenation.
--------------------------------------------------------------------------------
-- Harald Hope - Sun, 7 May 2023 14:00:00 -0700
================================================================================ ================================================================================
Version: 3.3.26 Version: 3.3.26
Patch: 00 Patch: 00