fixes a single scenario with apt, where there is only sources.list, no .d/*.list files.
I was assuming that the file name would print out in the output of single file grep,
but that only happens with multiple files.
bsds: removed dragonly specific used mem hack, now will work for any bsd, if avm in vmstat is 0
adds a flag to value, and removes it when used.
Nothing else of note.
Added support, basic, for bsd hard disks, and optical disks.
Added hard disk total/percent used for BSDs, sort of.
These are mostly just hacks since the data isn't easily available from system
standard tools, though I could on freebsd use gpart I guess but that's another tool
needed, and another method, too much work imo for small results.
Now the short form, the -b/-v1 form, and the -C forms are all similar.
Also, added a few hacks to try to extract cpu max speed from cpu model string in
either sysctl -a OR /var/run/dmesg.boot data in freebsd/openbsd. Sometimes it may
work if that data was in the model string. It's a hack, but will do until we get
better data sources or they update their sources to list more data.
handling. Or rather, non handling, since that data only showed in rare cases on short form
(inxi no args) output. Now it uses /sys query to determine min/max speed of cpu, and uses
that data to override any other min/max data discovered.
Still uses /proc/cpuinfo for actual speeds per core. The assumption in this is that all
cares will have the same min/max speeds, which is generally going to be a safe assumption.
Now in short form, inxi, output, it will show actual speed then (max speed) or just (max)
if actual speed matches max speed. Same for -b short CPU output.
For long, -C output, shows max speed before the actual cpu core speeds per core.
With -xx, and in multi cpu/core systems only, shows if available min/max speeds.
Note that not all /sys have this data, so it doesn't show any N/A if it's missing.
permit wget/curl/(openbsd ftp)/(bsd fetch) interchangeably.
This lets more standard downloader defaults in bsds, as well as curl on gnu/linux systems
without triggering an error of missing wget.
1. Fixed cpu core issues on bsds, now shows core count + if > 1, cpus total.
2. Now shows OS instead of Distro on short/long output, since each bsd is an OS.
3. fixed vmstat issues for used memory outputs
Also fixed potential failures with cpu core count array by making it a ',' separated array.
-m/-M would always show requires root for dmidecode no matter what. Also improved dmidecode
error messages/handling.
Also, a fix for no display card data, now shows as expected no card data
Most other fixes are for bsd, mostly openbsd.
1. Added a class for network devices in freebsd pciconf
2. Added -r support for openbsd
3. Fixed some cpu issues for openbsd
4. Fixed an issue in openbsd/freebsd where client version data failed to get cleaned
5. Changed inxi short form output for bsds to show OS data instead of kernel data.
6. BSDs, maybe all, different syntax in xorg.0.log made unloaded gfx drivers not show,
that is fixed now.
-p fixed file system type in -p/-P for openbsd, now shows.
-I / inxi short - fixed used memory, did not show in openbsd, now does.
-f fixed cpu flags in openbsd, now works
-C corrected corrupted cpu data outputs, in openbsd at least, maybe also freebsd
-C added an openbsd hack to sometimes show cpu L2 cache
-m/-M fixed/improved dmidecode error handling for all systems
Modified handling of dmesg.boot data, synched so gawk can parse better.
Now all lines are stripped of ending whitespaces automatically.
Also a dmidecode error handler correction, that was not working right in bsd systems.
Added some debuggers for bsd systems.
output, like so, instead of the old quotes "XFCE4" it shows like this:
XFCE_DESKTOP_WINDOW(WINDOW): window id # 0x1000003
Updated and added a much less strict fallback test case.
I have collected enough datasamples to allow for reasonably fine grained corrections, estimates,
warnings about unreliable capacity now, and have fixed all major failures.
Also, because this stuff is filled out by people somewhere, or not, some fields often are just
empty, or contain the default values, ie, they are worthless. inxi shows N/A for those situations,
it means there is really no actual data to show you.
This feature, sadly, well never be totally reliable, because dmi data is frankly junk, especially
dmi type 5 and 16, which is what is supposed to tell you total capacity of memory array, and the
maximum module size (type 5). However, this data is totally random, often it is right, sometimes
it is wrong. Sometimes type 5 is right and type 16 is wrong, sometimes the other way. And since
type 5 is only present in some systems, it's not reliable anyway.
What is reliable and always right is the actually installed memory per device, ie, sticks. I have
not seen any errors in that, so that seems to be actually coming from the system itself. type 5 / 16
sadly are clearly entered in manually by some poorly paid engineers out there in the world, and are
often total fictions, either far too small, or far too big, or whatever.
inxi will attempt to correct all clear logic errors, and whenever it changes the listed data from
type 5/16, it notes either (est) or (check). (est) means it is a good guess, one I am comfortable making,
(check) means it is either an unreliable guess, or that what the system is reporting is so unlikely that
even though inxi is showing it, it doubts it could actually be true, or at least, it thinks you
should check this yourself.
-m has 3 extra data options, -x prints the part number, if found, and the max module size, if type 5
is present. inxi does NOT attempt to guess at max module size based on what is installed, it only will
correct a listed max module size if installed modules are > than listed max size. Usually part numbers,
if present, are all you need to order a new stick.
-xx shows serial number, manufacturer (often empty, or just random alphanumeric identifiers, but sometimes
they list the actual company name, which is helpful. It also shows, if type 5 data is present, single/double
bank.
-xxx as usual shows largely useless data that may be of interest to soemone, like if ram type is synchronous,
memory bus width data, and module voltage (type 5 data).
This feature will never be reliable I am sad to say because the source data itself is random and much
has been filled out, or not filled out, by engineering drones somewhere out there in the underpaid
world. The ranges of errors are so wide that inxi just has to check what is possible, reasonable, unlikely,
etc, to generate its numbers. In other words, this is NOT just parsing dmidecode output, that is the raw
material only, sad to say.
So this is it, for better or worse. All bug / issue reports with this MUST come with a full:
inxi -xx@14
hardware data upload, run as root.
Also, much to my annoyance, this feature requires root, since /dev/mem needs root to be read, and I assume
the dmi table, so that is a departure from normal inxi standards, as is the low quality input, and thus,
output, data, though I can guarantee that what inxi tells you is in most cases on average more accurate than
what dmidecode tells you, since dmidecode simply prints out what it finds in the dmi table, and nothing else,
in whatever order it finds it, from what I can see, ie, you also cannot trust the order of dmidecode output.
I had been hoping that /sys would start to contain memory data like it does mobo/system data, but it never
happened so I finally decided to just do the ram thing, require dmidecode, require root/sudo, and that's
that.
There will be issue reports, you can help them by looking up the mobo stats/specs yourself and listing them
in the issue, so I don't have to do it. I use the tool at crucial.com which is very accurate and also very
complete in terms of all possible hardware out there.
I would trust that tool before trusting the companies that have the least reliable data, like ASUS.
Much thanks to everyone who is contributing datasets, and the distros, particularly siduction, that really
were very helpful in this process, by finding more and more failure cases that helped me start to tighten
the logic, and make it more and more robust. Special thanks to Mikaela, of #smxi irc.oftc.net, who came up
with two systems that both required a full redo of the logic, and thus who helped a lot in this process.
size, derived mod size 2gb, listed cap 8, but 2 slots, ie, 2gb x 2 == 4. Made this
retain the listed size, but adds (check) to it because either max mod size is wrong
or cap is wrong.
types, in at least one case, it is last, so can't use that as trigger to start loop.
Now using: Table at .. which is always at start of dmi output.
Also, changed size output per module to be in MB GB TB instead of all mB, since modules
are sold by GB or MB, the data should show that as well. Also shortens output.
type 17 in front of type 16), now each array is created as a multidimenstional, 2x array,
and each device is a 3 dimensional array. This seems to clean up the problems with bad
ordering of dmidecode data.
at least making good guesses when the data is bad for ram, and hopefully will not break
too many cases where it was actually right but seemed wrong.
Unfortunately, dmidecode data simply cannot be relied on, and is FAR inferior to the type
of data inxi tries in general to present users, ie, taken directly from the system, and,
ideally, more accurate than most other tools. But in this case, there is just no way to get
the data truly accurate no matter how many hacks I add.
But if you have bad data, then submit: inxi -xx@ 14 so I can take a look at the system,
and see if I can modify the hacks to improve that data.
it is too big, and sometimes too small. Changed data gathering to use arrays, then print/process
the arrays once they are assembled.
Now it will get rid of any max module size if it's greater than the calculated capacity, and it
will generate an estimated capacity/max module size if they are clearly wrong because actual
module sizes are greater than listed max size, or capacity is less than greatest module sizes times
number of devices.
Not perfect, but it never is, this covers more cases now correctly than before.
maximum supported module size, and module voltage. Most systems do not have this data,
but some do. It's Type 5 item in dmidecode.
Getting the type 6 data however is too hard, and even using type 5 assumes that the
system only has one physical memory array, but that's fine given how few systems
probably will have this information in the first place.
features. Changed output syntax to be more consistent, now each main array line starts with:
Array-X capacity: (where X is an integer, counting from 1)
and each device line starts with:
Device-X: (where X is an integer incremented by 1 for each device, and starting at 1
for each array. I have no data sets that contain > 1 physical memory array, if one appears,
I may need to patch the output to link the array handles with the device handles explicitly.
Made memory bus width output more clear, and added in a hack to correct dmidecode output errors,
sometimes total width > data width, and sometimes data width is > total width, so using always
greatest value for total if not equal to other width.
I think this will be close to it barring any user feedback or bugs, if nothing comes to
mind within a few days, I'll move the number to the new major version, 2.2.0
items and am now just generating one: Locator item, usually from Slot/DIMM locator info,
but sometimes from Bank Locator info when it is more reliable based on my data samples.
Updated help menu, updated man page, now shows working -x -xx -xxx extra data. This may
change slightly over time.
Also removed speed output when No Module Installed is returned for device size. This
also wills switch off width if both total/data are empty.
This is much closer now to live 2.2.0, but I'll leave a few more tests before putting
it at 2.2.0.
working, but help/man does not have that yet, until I finalize the order.
Fixed dmidecode issues, showing extra data types for -m, added line length handling
so -m is properly integrated with rest of inxi re max line lengths.
support. This feature requires dmidecode, and usually that needs to be run as root.
Significantly improved dmidecode error handling and output, and have as 2.1.90 testing/initial
release basic ram data.
In subsequent releases, extra info for -x and -xx and -xxx will be added as well to the output.
For those who want to jump on board early for ram data, update your repos, for those who want to
wait for the full featured version, with -x type data, wait for 2.2.0
And that's that.
have the odd feature in our test data of having > 1 IF id, like ib0 ib1 per pcibusid.
Added support for virtual nics as well. This required refactoring the networking functions
significantly, so hopefully nothing breaks for existing systems. It should in theory be more
robust now than it was before, with more accurate output, particularly with multiple port
devices, like two port nics etc.
that this method will be super long lived, I expect LXDE to change how it shows itself
to the system when the gtk variant goes away. Good for lxde by the way in dumping gtk.
added in an abstracted kernel_compiler method, not just gcc, that may work on freebsd,
and in the future, it may also work if distros or kernel people start using either
clang or LLVM-GCC or LLVM for compiling linux kernels. I'd need some data sets to
show that however before adding that full linux kernel support, but the framework
is now there.
That continues the abstraction of certain features, like kernel compiler, init system,
display server. Display server still needs full data sets from mir/wayland, at least
wayland, and the bsd display servers as well, I have no idea how to get that data
at this point, but the starting framework is present anyway for that time I get
those datasets.
Almost all these changes are for darwin osx, and that is about all I will do for that
junky broken platform, they have no tools, they have no discipline when it comes to
following unix like conventions, they even use spaces in program names, like windows.
Given it has no native lspci or pciconf tool that I am aware of, or dmesg.boot,
there's little point in putting more time into it. dmidecode does not run on darwin,
so there's nothing to learn there either, you can get a silly 3rd party program to
generate a dmidecode.bin data file that dmidecode can then read, but since that
requires not one, but two third party programs be installed, that's not going to
happen.
Next time an osx user calls this system 'unix' I will laugh.
experiment, just to get it running, so you can all ignore this release.
Added in darwin cpu, init, distro version support, and updated inxi to support
darwin/osx without exiting.
No linux changes.
used percentage, there are too many possible remote file systems to safely exclude, so
sticking with using the test that partition is /dev mounted.
Howeve, did add excludes of nfs/smbfs types, as well as future bsd excludes of those.
particularly with fringe or broken sensors outputs. See inxi issue 58 for details.
http://code.google.com/p/inxi/issues/detail?id=58
Added temp3, and an override to capture cases where temp3 is the actual cpu temp.
Added PECI overrides for cases like msi/asus mobos have defective CPUTIN return data.
Added core0 overrides as well, for cases where the temp returned is too low.
It is absolutely 100% guaranteed that these changes will break some outputs that were
working, but it's also certain that I believe that more wrong outputs will be corrected.
With sensors, really the only way you can get reliable sensors is to use the lm-sensors
config files for your motherboard, then set: CPU: temp and MB: temp explicitly.
inxi will always use CPU: or MB: to override anything found.
It turns out I'd neglected to include /dev/disk partitions, oops, in the df data.
Since this is a long time bug, it warrants a new release even though I just did
2.1.22.
disk used percentage as well. Since swap space is not available as disk space, it
makes sense to me to count it as used. -P/-p show the percent of swap used as well.
to identify a partition, but rather the basic /dev/sdc for example.
This made -D show wrong disk used percentage.
Also, I added --total for df that have that supported, there is however an oddity which you
can see here:
df --total -P -T --exclude-type=aufs --exclude-type=devfs --exclude-type=devtmpfs \
--exclude-type=fdescfs --exclude-type=iso9660 --exclude-type=linprocfs --exclude-type=procfs \
--exclude-type=squashfs --exclude-type=sysfs --exclude-type=tmpfs --exclude-type=unionfs | \
awk 'BEGIN {total=0} !/total/ {total = total + $4 }END {print total}'
result:
614562236
df --total -P -T --exclude-type=aufs --exclude-type=devfs --exclude-type=devtmpfs \
--exclude-type=fdescfs --exclude-type=iso9660 --exclude-type=linprocfs --exclude-type=procfs \
--exclude-type=squashfs --exclude-type=sysfs --exclude-type=tmpfs --exclude-type=unionfs | \
awk 'BEGIN {total=0} /^total/ {total = total + $4 }END {print total}'
result:
614562228
df -P -T --exclude-type=aufs --exclude-type=devfs --exclude-type=devtmpfs \
--exclude-type=fdescfs --exclude-type=iso9660 --exclude-type=linprocfs --exclude-type=procfs \
--exclude-type=squashfs --exclude-type=sysfs --exclude-type=tmpfs --exclude-type=unionfs | \
awk 'BEGIN {total=0} {total = total + $4 }END {print total}'
result:
614562236
In my tests, using --total gives a greater disk user percentage than adding the results
up manually, as inxi did before, and still does for systems without --total for df.
df --total -P -T --exclude-type=aufs --exclude-type=devfs --exclude-type=devtmpfs \
--exclude-type=fdescfs --exclude-type=iso9660 --exclude-type=linprocfs \
--exclude-type=procfs --exclude-type=squashfs --exclude-type=sysfs --exclude-type=tmpfs \
--exclude-type=unionfs
Filesystem Type 1024-blocks Used Available Capacity Mounted on
/dev/disk/by-label/root-data ext3 12479556 12015624 335816 98% /
/dev/sdc9 ext3 20410156 18013360 1979432 91% /home
/dev/sdc7 ext3 4904448 3785460 1016672 79% /media/sdb2
/dev/sdc5 ext3 30382896 27467220 2295720 93% /var/www/m
/dev/sdc8 ext3 61294356 41849300 18196972 70% /home/me/1
/dev/sdb1 ext3 307532728 285159432 20810456 94% /home/me/2
/dev/sdd1 ext3 26789720 18153076 7542620 71% /home/me/3
/dev/sdd2 ext3 213310776 206932912 2040960 100% /home/me/4
/dev/sda7 ext3 10138204 1185772 8434348 13% /home/me/5
total - 687242840 614562156 62652996 91% -
Strange, no? the data is in blocks, and it should of course in theory add up to exactly the
same thing. However, because --total lets df do the math, I'm going to use that for now,
unless someone can show it's not good.
inxi still falls back for bsds and older df to the standard method.
of disk drive lists. Was showing USB ID-1: /dev/sde now shows: ID-1: USB /dev/sde
that is more intuitive and keeps the columns in alignment more or less, easier
to read.
Second, fixes a bug with some file systems / usb drives
where they do not use usb- in the /dev/disk/by-id line but only wwn-
https://access.redhat.com/site/documentation/en
-US/Red_Hat_Enterprise_Linux/5/html/Online_Storage_Reconfiguration_Guide/persistent_naming.html
explains it somewhat.
the fix is adding a second if null test of the device /dev/sdx in by-path, that seems
to fix the issue. by-path does have the usb- item, though it does not have the name
so it's not as reliable in absolute terms, but it's fine as a second step fallback
option.
for the next major feature, -m / memory, so there is no particular reason to package
this release. There is a new development option, -! 33, which lets me override /sys
data use for -M, which is useful to debug dmidecode output for -m and other features.
No new version, new man. There may be a few more of these releases, but functionally
there is no particular reason to make a new package if you are a maintainer, so there
is no new version number. This release is a preparation for some branches/one/inxi
tests that will be run in the future.
The man/help document -! 33 just to have it there, but it should make no difference
to anyone but me at this stage.
way to handle bad ARM data, when bogomips are too low, < 50, we try to get the data
from /sys, but now this runs on all the cores, so it may work as well on the multicore
arm if the /proc/cpuinfo has bogomip that is too low and no cpu frequency.
unmounted drives.
IMPORTANT: some distros use inxi for detecting partitions, the syntax on the following
have changed slightly:
HDD: per drive changes from: 1: id: to ID-1:
Partitions: per partition changes from ID: to ID-1:
Unmounted partitions: per unmounted changes from ID: to ID-1
You see the pattern, they are all the same now, and they are all numbered. I think this
is easier to read when scanning long lines of drives/partitions, or even short ones.
Also fixed a long standing oddity, not a bug, but for some weird reason, -p did not
include the location, like /dev/sda1, unless -l or -u were used. That makes no sense
so I have moved the dev/remote location output to standard -p/-P
Except for bug fixes, this completes the overally line wrap update, all lines wrap,
you can set widths with -y now, and the old issue of not fitting nicely into 80 column
wide widths is solved. Note that in some areas, p/P for example, at times if the mount
point or remote location is very long the line may still wrap, but making this perfect
is too convoluted so I'm calling it good enough now, all lines are handled reasonably well,
certainly radically better than before 2.1.0.
of width settings. This overrides any dynamically detected widths, as well as the globals:
COLS_MAX_CONSOLE='115'
COLS_MAX_IRC='105'
Now that inxi widths are largely dynamic in terminal, with a few lingering exceptions, it made sense
to also allow for overrides of this. This is useful in cases where for example you want to output
inxi to text file or for other purposes, or if you just want to test the widths, as in my case.
-y cannot be used with --recommends, but otherwise it works fine, with --help/-c 94-99 you have to
put -y first in the list of options.
Example: inxi -v7 -y150 > inxi.txt will ignore the terminal settings and output the lines at basically
max length.