Some significant bugs, 1 showstopper for FreeBSD, and one universal one for USB

network devices, and possibly some other USB device types. Also some nice new
features.

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

1. SYSTEM: Github user chromer030 in issue #285 - a very nice small enhancement
to -Sxxx line, adding kernel clocksource, and with -Sa, adding available
clocksources. I wish all issues were this clean and easy to implemment, with
such clear benefit.

2. BLUETOOTH: Github user chromer030, issue #286 - extending and adding
bluetooth report feature. This required refactors and some cleanup of bad logic
to make -E more able to handle new data sources, and also made me fix the docs
and add debugger data files to make testing changes for various bluetooth
datasources easier. Adding btmgmt turned out to have a lot of long term benefits
to the bluetooth feature and internal inxi logic, I hadn't realized how hacked
on bluetooth feature was, but code review showed it clearly.

3. SYSTEM: Github user oleg-indeez found a break in FreeBSD compiler data, 2
glitches, one made inxi crash due to is array test on undefined reference, the
other maybe a bad copy paste in the past that assigned compiler data to wrong
hash. See CODE 3 for details on the ref issue.

4. SWAP: Github user chromer030, again, issue #290 suggested some swap
zram/zswap data enhancements, seems good, so thanks.

5. UsbData: Slackware/Linuxquestions.org poster J_W for posting on a device
missing in his output as of 3.3.27 inxi. This exposed bug 3, which usually was
npt visible since the fallback was catching most of the network matches, but
since he had a TP-Link, and it went missing, it triggered the issues, and also
exposed the inconsistent upper/lower case use in device type from kernel.

6. NETWORK: Slackware user babydr on linuxquestions.org tripped a bug in
network, was not counting correctly to limit IP list. Led to showing limit
message on 10th row of network report, not 10th IP of a device. See Bug 4.

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

1. Nothing new.

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

1. BLUETOOTH: with hciconfig, would show wrong LMP/HCI version because either
the syntax changed for those strings, or it was wrong always. I think it changed
because this worked correctly at one point. Should now show the right hci/lmp
versions, and the bluetooth version as expected for hcicconfig/btmgmt.

2. SYSTEM: CPU compiler broke for FreeBSD 13.2, caused by bad test for undefined
array in CompilerVersion::version_bsd(), and also, assigned kernel compiler data
to %dboot instead of %sysctl hash. Thanks oleg-indeez for spotting that one and
figuring it out.

3a. UsbData: Failure to use /i caseinsensitive on regex led to failure to detect
USB type using standard defaults, but then a further regex error, subtle, missed
a | between two elements of a pattern, led to the last fallback case for network
detection failing. This was coupled with a change in the Kernel, which now uses
Uppercase first sometimes, and sometimes lowercase first. I think that's a
change anyway. This resulted in some usb type hashes failing to load specific
devices, network in this case, TP-Link, which was the fallback pattern that
broke.

3b. UsbData::assign_usb_type() improper nesting of tests led to failures that
should not have happened, like a bluetooth device cascading down to network.

4. NETWORK: IP limit was limiting based on total row count, not the actual count
of IPs for that device. Not sure how that slipped up. Now correctly limits the
IPs, not the previous total rows in Network report. Thanks babydr / Slackware
forums for finding yet more issues.

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

1a. BLUETOOTH: added in switches for fake bluetooth data for all bluetooth data
sources.

1b. BLUETOOTH: made --bt-tool load $force{[tool]} to be consistent with rest of
logic in inxi for forcing use of specific tools. No idea why I made a standalone
one only for Bluetooth.

1c. BLUETOOTH: the HCI/LMP version generators were mixing up bluetooth version
string and LMP, leading to wrong results. See BUGS 1. I think this was a syntax
change because I would not have generated this originally if the syntax had not
worked, at least I don't think I would have. See also DOCS DATA item, added in
samples for dev purposes to avoid this type of issue in future.

2. UsbData: Device type from /sys could be upper/lower case first, but inxi was
not testing for anything but lower case, which would lead to fallback tests for
Bluetooth, Network, at least, maybe others. This goes with BUG 3, which exposed
a small torrent of such potential failure cases. The fallback block of regex is
really only designed to catch the few that don't get caught by the generic type
tests.

3. NETWORK: UsbData::set_network_regex(). Bad regex caused bluetooth device:
"Intel Bluetooth wireless interface" to trip an overly loose regex for wireless.
See BUG 3b. The real issue was incorrect test nesting which led to a bluetooth
device falling down to network regex, which it should not have done. It also
failed test the product name for bluetooth, which led to failure as well.

4. SWAP: Was failing to capture some zram syntaxes, regex was too tight. Failed:
/run/initramfs/dev/zram0.

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

1. SYSTEM: added kernel current clocksource for -Sxxx, and alternates for -Sa.

2. BLUETOOTH: added btmgmt as first fallback to hciconfig, that one also
supplies bt version via lmp version, like hciconfig. Note this tool has very
little useful information.

3. Added back in discoverable, active discovery, and pairing status with -Ea.
This data is also crudely available from btmgmt but I would not bet on those
items actually being right. I'm not totally convinced that's good data, so
making it admin for now. Put these in a 'status:' parent container.

4a. SWAP: Added zswap enabled, compressor, max_pool_percent for -ja swap general
features line. If no zswap data and Linux, shows 'N/A'.
https://www.kernel.org/doc/Documentation/vm/zswap.txt

4b. SWAP: Added zram comp_algorithm max_comp_streams to -j per line report, only
for zram, of course.
https://docs.kernel.org/admin-guide/blockdev/zram.html

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

1. None that are obvious.

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

1. DATA: Added new data/bluetooth/, with several sample 'btmgmt info' and
'hciconfig -a' outputs for debugging and reference purposes. These work with
the revised debuggers and force/fake data switches for bluetooth. Should add
some bt-adapter --info samples too to make testing/debugging easier.

2a. DOCS: Made new docs/inxi-bluetooth.txt doc.

2b. DOCS: Moved more data out of inxi-data.txt and inxi-resources.txt, into
inxi-bluetooth.txt, tips-tricks.txt, man-pages.txt. While I'm not going to do it
all at once, I am trying to move relevant data into granular doc file as I hit
that during dev.

2c. DOCS: Updated and organized docs/inxi-tools-mapping.txt more, new mapping
tools added. inxi has so many manually updated mapping tools that it's going to
get more and more important that this document is accurate, and is updated when
required.

3a. MAN/OPTIONS: Added BT tools to --force lists, and updated --bt-tool list.
Also added -Ea options, the status: stuff.

3b. MAN/OPTIONS: Made consistent, lower case rpm, both PM type rpm and rpm as
rotation were switching between RPM and rpm randomly.

3b. MAN/OPTIONS: Updated for --force ip/ifconfig, --ifconfig.

3c. MAN/OPTIONS: Updated for zswap, zram extra -ja data.

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

1. BLUETOOTH: added %force bluetoothctrl, bt-adapter, btmgmt, hciconfig, rfkill,
and added checks to enable $fake{'bluetooth'} in the main callers for each type.
This makes debugging and development a lot easier. Also removed the force tool
block in CheckTools, no idea, again, why I did it that way only for bluetooth.

2. CheckTools: got rid of set_forced_tools(), which was only used for bluetooth
tools, and didn't fit with the rest of the core logic.

3. SYSTEM: CompilerVersion: used array refs wrong, or rather, used refs wrong,
which led to various errors that were confusing. Corrected to start out with an
array ref, then to pass that as is, leaving it the same ref all through, for bsd
and linux. This is the method inxi should have always used for passing array/
hash refs around, create as ref, then pass around, and update, without assigning
a new ref to it.

I had failed to verify that the same ref was being used through the sequence.
Unfortunately this error is probably very widespread in inxi, because no
consistent rule was created and enforced from the first lines of Perl.

4. UsbData: added source type to --dbg 6 output, and added --dbg 55 to output
the per type arrays.

5. NETWORK: IpData:: added --ifconfig/--force [ip|ifconfig], --fake ip-if to
allow for basic debugging for -n / -i IP data sources. Not super useful since so
much comes from /sys, but there was nothing there at all, which is weird for
networking.

6. SWAP: Changed to passing data using scalar references, not returning an
array of the items, and got rid of the copies in the swap_data_advanced() tool.
It's less readable, but incurs basically very little overhead, and with the new
function / method arg lists I'm using more now, it's clear what the references
are.

7. IpData: got rid of extra array copies for push, pointless.
This commit is contained in:
Harald Hope 2023-08-15 20:07:26 -07:00
parent 7a79e846de
commit 9cca058f5d
3 changed files with 655 additions and 198 deletions

574
inxi

File diff suppressed because it is too large Load diff

66
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\-07\-10" "inxi" "inxi manual" .TH INXI 1 "2023\-08\-15" "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
@ -278,9 +278,9 @@ for many more features.
.TP .TP
.B \-E\fR, \fB\-\-bluetooth\fR .B \-E\fR, \fB\-\-bluetooth\fR
Show bluetooth device(s), drivers. Show \fBReport:\fR with HCI ID, state, Show bluetooth device(s), drivers. Show \fBReport:\fR with HCI ID, state,
address per device (requires \fBbt\-adapter\fR or \fBhciconfig\fR), address per device (requires \fBbtmgmt\fR, \fBbt\-adapter\fR, or
and if available (hciconfig only) bluetooth version (\fBbt\-v\fR). \fBhciconfig\fR), and if available (hciconfig, btmgmt only) bluetooth version
See \fBExtra Data Options\fR for more. (\fBbt\-v\fR). See \fBExtra Data Options\fR for more.
If bluetooth shows as \fBstatus: down\fR, shows \fBbt\-service:\fR\fB state If bluetooth shows as \fBstatus: down\fR, shows \fBbt\-service:\fR\fB state
and rfkill\fR software and hardware blocked states, and rfkill ID. and rfkill\fR software and hardware blocked states, and rfkill ID.
@ -697,8 +697,8 @@ Show distro repository data. Currently supported repo types:
\fBAPK\fR (Alpine Linux + derived versions) \fBAPK\fR (Alpine Linux + derived versions)
\fBAPT\fR (Debian, Ubuntu + derived versions, as well as RPM based \fBAPT\fR (Debian, Ubuntu + derived versions, as well as rpm based
APT distros like PCLinuxOS or Alt\-Linux) apt distros like PCLinuxOS or Alt\-Linux)
\fBCARDS\fR (NuTyX + derived versions) \fBCARDS\fR (NuTyX + derived versions)
@ -1358,9 +1358,9 @@ specific vendor [product] information.
\- Adds driver version (if available) for each device. \- Adds driver version (if available) for each device.
\- Adds (if available, and \fBhciconfig\fR only) LMP (HCI if no LMP data, \- Adds (if available, \fBbtmgmt\fR, \fBhciconfig\fR only) LMP (HCI if no LMP
and HCI if HCI/LMP versions are different) version (if available) data, and HCI if HCI/LMP versions are different) version (if available) for each
for each HCI ID. HCI ID.
.TP .TP
.B \-x \-G\fR .B \-x \-G\fR
@ -1555,14 +1555,14 @@ For a PCIe 3 NVMe drive, with speed of \fB8 GT/s\fR and \fB4\fR lanes
.B \-xx \-E\fR (\fB\-\-bluetooth\fR) .B \-xx \-E\fR (\fB\-\-bluetooth\fR)
\- Adds vendor:product ID of each device. \- Adds vendor:product ID of each device.
\- Adds (\fBhciconfig \fRonly) LMP subversion (and/or HCI revision
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). \- Adds for USB devices USB rev, speed, lanes (lanes Linux only).
\- Adds (\fBhciconfig \fRonly) LMP subversion (and/or HCI revision if
applicable) for each device.
.TP .TP
.B \-xx \-G\fR .B \-xx \-G\fR
Triggers much more complete Screen/Monitor output. Triggers much more complete Screen/Monitor output.
@ -1818,6 +1818,8 @@ are spinning, no rpm data will show.
.B \-xxx \-E\fR (\fB\-\-bluetooth\fR) .B \-xxx \-E\fR (\fB\-\-bluetooth\fR)
\- Adds, if present, PCI/USB class ID. \- Adds, if present, PCI/USB class ID.
\- Adds, if present, bluetooth device class ID.
\- Adds (\fBhciconfig \fRonly) HCI version, revision. \- Adds (\fBhciconfig \fRonly) HCI version, revision.
.TP .TP
@ -1908,6 +1910,8 @@ RAID events)
.TP .TP
.B \-xxx \-S\fR .B \-xxx \-S\fR
\- Adds current kernel clock source, if available (Linux only).
\- Adds, if in X, or with \fB--display\fR, bar/dock/panel/tray items \- Adds, if in X, or with \fB--display\fR, bar/dock/panel/tray items
(\fBinfo\fR). If none found, shows nothing. Supports desktop items like (\fBinfo\fR). If none found, shows nothing. Supports desktop items like
gnome\-panel, lxpanel, xfce4\-panel, lxqt\-panel, tint2, cairo-dock, trayer, gnome\-panel, lxpanel, xfce4\-panel, lxqt\-panel, tint2, cairo-dock, trayer,
@ -2141,6 +2145,9 @@ shown. Bluetooth PCIe rare).
\- Adds for USB devices USB mode (Linux only). \- Adds for USB devices USB mode (Linux only).
\- Adds, if present, bluetooth \fBstatus:\fR discoverable, active discoverable,
and pairing items.
.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
@ -2295,6 +2302,13 @@ For \fB\-j\fR row 1 output:
\fBKernel: swappiness: 60 (default) cache\-pressure: 90 (default 100)\fR \fBKernel: swappiness: 60 (default) cache\-pressure: 90 (default 100)\fR
\- Adds zswap data for row 1 output:
\fBzswap: [yes/no] compressor: [type] max-pool: xx%\fR
\- Adds for zram swap type: active compression type, available compression
types, and max compression streams.
\- Adds device kernel major:minor number (Linux only). \- Adds device kernel major:minor number (Linux only).
.TP .TP
@ -2388,6 +2402,8 @@ Component report to 1 component per line.
.TP .TP
.B \-a \-S\fR .B \-a \-S\fR
\- Adds alternate kernel clock sources, if available (Linux only).
\- Adds kernel boot parameters to \fBKernel\fR section (if detected). Support \- Adds kernel boot parameters to \fBKernel\fR section (if detected). Support
varies by OS type. varies by OS type.
@ -2443,9 +2459,8 @@ basically forces the downloader selection to use \fBPerl 5.x\fR
may help bypass issues with downloading. may help bypass issues with downloading.
.TP .TP
.B \-\-bt\-tool [bt\-adapter|hciconfig|rfkill]\fR .B \-\-bt\-tool [bt\-adapter|btmgmt|hciconfig|rfkill]\fR
Force the use of the given tool for bluetooth report (\fB\-E\fR). \fBrfkill\fR See \fB\-\-force [tool name]\fR. Used to set \fB\-E\fR report tool.
does not support mac address data.
.TP .TP
.B \-\-dig\fR .B \-\-dig\fR
@ -2484,6 +2499,10 @@ as a comma separated list:
\fBinxi \-MJ --force dmidecode,lsusb\fR \fBinxi \-MJ --force dmidecode,lsusb\fR
\- \fBbt\-adapter\fR \- Force use of bt\-adapter tool in \fB\-E\fR.
\- \fBbtmgmt\fR \- Force use of btmgmt tool in \fB\-E\fR.
\- \fBcolors\fR \- Same as \fB\-Y \-2\fR . Do not remove colors from piped or \- \fBcolors\fR \- Same as \fB\-Y \-2\fR . Do not remove colors from piped or
redirected output. redirected output.
@ -2492,18 +2511,25 @@ redirected output.
\- \fBhddtemp\fR \- Force use of hddtemp instead of /sys temp data for disks. \- \fBhddtemp\fR \- Force use of hddtemp instead of /sys temp data for disks.
\- \fBifconfig\fR \- Force use of IF tool ifconfig for \fB\-i\fR.
\- \fBip\fR \- Force use of IF ip tool for \fB\-i\fR (default).
\- \fBlsusb\fR \- Forces the USB data generator to use \fBlsusb\fR as data \- \fBlsusb\fR \- Forces the USB data generator to use \fBlsusb\fR as data
source (default). Overrides \fBUSB_SYS\fR in user configuration file(s). source (default). Overrides \fBUSB_SYS\fR in user configuration file(s).
\- \fBrpm\fR, \fBpkg\fR \- Force override of disabled RPM package counts on \- \fBrfkill\fR \- Force use of rfkill tool in \fB\-E\fR. \fBrfkill\fR does not
primarily RPM run systems due to unacceptably slow execution times for this support mac address data.
\- \fBrpm\fR, \fBpkg\fR \- Force override of disabled rpm package counts on
primarily rpm run systems due to unacceptably slow execution times for this
command: command:
.nf .nf
\fBrpm \-qa \-\-nodigest \-\-nosignature\fR \fBrpm \-qa \-\-nodigest \-\-nosignature\fR
.fi .fi
Even on newer RPM systems, in virtual machines, running rpm package list query Even on newer rpm systems, in virtual machines, running rpm package list query
takes more than 0.15 seconds (compared to 0.01 to 0.05 for dpkg, pacman, pkgtool takes more than 0.15 seconds (compared to 0.01 to 0.05 for dpkg, pacman, pkgtool
etc) for just this single feature, which is north of 10% of total execution time etc) for just this single feature, which is north of 10% of total execution time
for \fBinxi \-bar\fR. On bare metal this can hit 1 second or more in our tests. for \fBinxi \-bar\fR. On bare metal this can hit 1 second or more in our tests.
@ -2542,6 +2568,10 @@ Temporary override of \fBNO_HTML_WAN\fR configuration item. Only use to test
w/wo HTML downloaders for WAN IP. Restores default behavior for WAN IP, which is w/wo HTML downloaders for WAN IP. Restores default behavior for WAN IP, which is
use HTML downloader if present and if dig failed. use HTML downloader if present and if dig failed.
.TP
.B \-\-ifconfig\fR
Shortcut. See \fB\-\-force ifconfig\fR.
.TP .TP
.B \-\-man\fR .B \-\-man\fR
Updates / installs man page with \fB\-U\fR if \fBpinxi\fR or using \fB\-U 3\fR Updates / installs man page with \fB\-U\fR if \fBpinxi\fR or using \fB\-U 3\fR

View file

@ -1,3 +1,214 @@
================================================================================
Version: 3.3.29
Patch: 00
Date: 2023-08-15
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------
Some significant bugs, 1 showstopper for FreeBSD, and one universal one for USB
network devices, and possibly some other USB device types. Also some nice new
features.
--------------------------------------------------------------------------------
SPECIAL THANKS:
1. SYSTEM: Github user chromer030 in issue #285 - a very nice small enhancement
to -Sxxx line, adding kernel clocksource, and with -Sa, adding available
clocksources. I wish all issues were this clean and easy to implemment, with
such clear benefit.
2. BLUETOOTH: Github user chromer030, issue #286 - extending and adding
bluetooth report feature. This required refactors and some cleanup of bad logic
to make -E more able to handle new data sources, and also made me fix the docs
and add debugger data files to make testing changes for various bluetooth
datasources easier. Adding btmgmt turned out to have a lot of long term benefits
to the bluetooth feature and internal inxi logic, I hadn't realized how hacked
on bluetooth feature was, but code review showed it clearly.
3. SYSTEM: Github user oleg-indeez found a break in FreeBSD compiler data, 2
glitches, one made inxi crash due to is array test on undefined reference, the
other maybe a bad copy paste in the past that assigned compiler data to wrong
hash. See CODE 3 for details on the ref issue.
4. SWAP: Github user chromer030, again, issue #290 suggested some swap
zram/zswap data enhancements, seems good, so thanks.
5. UsbData: Slackware/Linuxquestions.org poster J_W for posting on a device
missing in his output as of 3.3.27 inxi. This exposed bug 3, which usually was
npt visible since the fallback was catching most of the network matches, but
since he had a TP-Link, and it went missing, it triggered the issues, and also
exposed the inconsistent upper/lower case use in device type from kernel.
6. NETWORK: Slackware user babydr on linuxquestions.org tripped a bug in
network, was not counting correctly to limit IP list. Led to showing limit
message on 10th row of network report, not 10th IP of a device. See Bug 4.
--------------------------------------------------------------------------------
KNOWN ISSUES:
1. Nothing new.
--------------------------------------------------------------------------------
BUGS:
1. BLUETOOTH: with hciconfig, would show wrong LMP/HCI version because either
the syntax changed for those strings, or it was wrong always. I think it changed
because this worked correctly at one point. Should now show the right hci/lmp
versions, and the bluetooth version as expected for hcicconfig/btmgmt.
2. SYSTEM: CPU compiler broke for FreeBSD 13.2, caused by bad test for undefined
array in CompilerVersion::version_bsd(), and also, assigned kernel compiler data
to %dboot instead of %sysctl hash. Thanks oleg-indeez for spotting that one and
figuring it out.
3a. UsbData: Failure to use /i caseinsensitive on regex led to failure to detect
USB type using standard defaults, but then a further regex error, subtle, missed
a | between two elements of a pattern, led to the last fallback case for network
detection failing. This was coupled with a change in the Kernel, which now uses
Uppercase first sometimes, and sometimes lowercase first. I think that's a
change anyway. This resulted in some usb type hashes failing to load specific
devices, network in this case, TP-Link, which was the fallback pattern that
broke.
3b. UsbData::assign_usb_type() improper nesting of tests led to failures that
should not have happened, like a bluetooth device cascading down to network.
4. NETWORK: IP limit was limiting based on total row count, not the actual count
of IPs for that device. Not sure how that slipped up. Now correctly limits the
IPs, not the previous total rows in Network report. Thanks babydr / Slackware
forums for finding yet more issues.
--------------------------------------------------------------------------------
FIXES:
1a. BLUETOOTH: added in switches for fake bluetooth data for all bluetooth data
sources.
1b. BLUETOOTH: made --bt-tool load $force{[tool]} to be consistent with rest of
logic in inxi for forcing use of specific tools. No idea why I made a standalone
one only for Bluetooth.
1c. BLUETOOTH: the HCI/LMP version generators were mixing up bluetooth version
string and LMP, leading to wrong results. See BUGS 1. I think this was a syntax
change because I would not have generated this originally if the syntax had not
worked, at least I don't think I would have. See also DOCS DATA item, added in
samples for dev purposes to avoid this type of issue in future.
2. UsbData: Device type from /sys could be upper/lower case first, but inxi was
not testing for anything but lower case, which would lead to fallback tests for
Bluetooth, Network, at least, maybe others. This goes with BUG 3, which exposed
a small torrent of such potential failure cases. The fallback block of regex is
really only designed to catch the few that don't get caught by the generic type
tests.
3. NETWORK: UsbData::set_network_regex(). Bad regex caused bluetooth device:
"Intel Bluetooth wireless interface" to trip an overly loose regex for wireless.
See BUG 3b. The real issue was incorrect test nesting which led to a bluetooth
device falling down to network regex, which it should not have done. It also
failed test the product name for bluetooth, which led to failure as well.
4. SWAP: Was failing to capture some zram syntaxes, regex was too tight. Failed:
/run/initramfs/dev/zram0.
--------------------------------------------------------------------------------
ENHANCEMENTS:
1. SYSTEM: added kernel current clocksource for -Sxxx, and alternates for -Sa.
2. BLUETOOTH: added btmgmt as first fallback to hciconfig, that one also
supplies bt version via lmp version, like hciconfig. Note this tool has very
little useful information.
3. Added back in discoverable, active discovery, and pairing status with -Ea.
This data is also crudely available from btmgmt but I would not bet on those
items actually being right. I'm not totally convinced that's good data, so
making it admin for now. Put these in a 'status:' parent container.
4a. SWAP: Added zswap enabled, compressor, max_pool_percent for -ja swap general
features line. If no zswap data and Linux, shows 'N/A'.
https://www.kernel.org/doc/Documentation/vm/zswap.txt
4b. SWAP: Added zram comp_algorithm max_comp_streams to -j per line report, only
for zram, of course.
https://docs.kernel.org/admin-guide/blockdev/zram.html
--------------------------------------------------------------------------------
CHANGES:
1. None that are obvious.
--------------------------------------------------------------------------------
DOCUMENTATION:
1. DATA: Added new data/bluetooth/, with several sample 'btmgmt info' and
'hciconfig -a' outputs for debugging and reference purposes. These work with
the revised debuggers and force/fake data switches for bluetooth. Should add
some bt-adapter --info samples too to make testing/debugging easier.
2a. DOCS: Made new docs/inxi-bluetooth.txt doc.
2b. DOCS: Moved more data out of inxi-data.txt and inxi-resources.txt, into
inxi-bluetooth.txt, tips-tricks.txt, man-pages.txt. While I'm not going to do it
all at once, I am trying to move relevant data into granular doc file as I hit
that during dev.
2c. DOCS: Updated and organized docs/inxi-tools-mapping.txt more, new mapping
tools added. inxi has so many manually updated mapping tools that it's going to
get more and more important that this document is accurate, and is updated when
required.
3a. MAN/OPTIONS: Added BT tools to --force lists, and updated --bt-tool list.
Also added -Ea options, the status: stuff.
3b. MAN/OPTIONS: Made consistent, lower case rpm, both PM type rpm and rpm as
rotation were switching between RPM and rpm randomly.
3b. MAN/OPTIONS: Updated for --force ip/ifconfig, --ifconfig.
3c. MAN/OPTIONS: Updated for zswap, zram extra -ja data.
--------------------------------------------------------------------------------
CODE:
1. BLUETOOTH: added %force bluetoothctrl, bt-adapter, btmgmt, hciconfig, rfkill,
and added checks to enable $fake{'bluetooth'} in the main callers for each type.
This makes debugging and development a lot easier. Also removed the force tool
block in CheckTools, no idea, again, why I did it that way only for bluetooth.
2. CheckTools: got rid of set_forced_tools(), which was only used for bluetooth
tools, and didn't fit with the rest of the core logic.
3. SYSTEM: CompilerVersion: used array refs wrong, or rather, used refs wrong,
which led to various errors that were confusing. Corrected to start out with an
array ref, then to pass that as is, leaving it the same ref all through, for bsd
and linux. This is the method inxi should have always used for passing array/
hash refs around, create as ref, then pass around, and update, without assigning
a new ref to it.
I had failed to verify that the same ref was being used through the sequence.
Unfortunately this error is probably very widespread in inxi, because no
consistent rule was created and enforced from the first lines of Perl.
4. UsbData: added source type to --dbg 6 output, and added --dbg 55 to output
the per type arrays.
5. NETWORK: IpData:: added --ifconfig/--force [ip|ifconfig], --fake ip-if to
allow for basic debugging for -n / -i IP data sources. Not super useful since so
much comes from /sys, but there was nothing there at all, which is weird for
networking.
6. SWAP: Changed to passing data using scalar references, not returning an
array of the items, and got rid of the copies in the swap_data_advanced() tool.
It's less readable, but incurs basically very little overhead, and with the new
function / method arg lists I'm using more now, it's clear what the references
are.
7. IpData: got rid of extra array copies for push, pointless.
--------------------------------------------------------------------------------
-- Harald Hope - Tue, 15 Aug 2023 19:45:54 -0700
================================================================================ ================================================================================
Version: 3.3.28 Version: 3.3.28
Patch: 00 Patch: 00
@ -5998,7 +6209,7 @@ Includes a fallback report Report-ID: case where for some reason, inxi could not
match the HCI ID with the device. That's similar to IF-ID in -n, which does the match the HCI ID with the device. That's similar to IF-ID in -n, which does the
same when some of the IFs could not be matched to a specific device. same when some of the IFs could not be matched to a specific device.
3. For -A, -G, -N, and -E, new item for -xxx, classID, I realized this is 3. For -A, -G, -N, and -E, new item for -xxx, class-ID, I realized this is
actually useful for many cases of trying to figure out what devices are, though actually useful for many cases of trying to figure out what devices are, though
most users would not know what to do with that information, but that's why it's most users would not know what to do with that information, but that's why it's
an -xxx option! an -xxx option!