diff --git a/inxi b/inxi index edc3633..e8bb254 100755 --- a/inxi +++ b/inxi @@ -49,8 +49,8 @@ use POSIX qw(ceil uname strftime ttyname); ## INXI INFO ## my $self_name='inxi'; -my $self_version='3.3.30'; -my $self_date='2023-09-25'; +my $self_version='3.3.31'; +my $self_date='2023-10-31'; my $self_patch='00'; ## END INXI INFO ## @@ -111,7 +111,7 @@ my ($wan_url,$wl_compositors) = ('',''); my ($bits_sys,$cpu_arch,$ppid); my ($cpu_sleep,$dl_timeout,$limit,$ps_cols,$ps_count) = (0.35,4,10,0,5); my $sensors_cpu_nu = 0; -my ($dl_ua,$weather_source,$weather_unit) = ('s-tools/' . $self_name . '-',100,'mi'); +my ($weather_source,$weather_unit) = (100,'mi'); ## Tools my ($display,$ftp_alt); @@ -424,9 +424,9 @@ sub set_basics { $b_root = $< == 0; # root UID 0, all others > 0 $dl{'dl'} = 'curl'; $dl{'curl'} = 1; + $dl{'fetch'} = 1; $dl{'tiny'} = 1; # note: two modules needed, tested for in set_downloader $dl{'wget'} = 1; - $dl{'fetch'} = 1; $client{'console-irc'} = 0; $client{'dcop'} = (check_program('dcop')) ? 1 : 0; $client{'qdbus'} = (check_program('qdbus')) ? 1 : 0; @@ -2654,6 +2654,7 @@ sub ram_use { #### DOWNLOADER #### ------------------------------------------------------------------- +# args: 0: download type; 1: url; 2: file; 3: [ua type string] sub download_file { my ($type, $url, $file,$ua) = @_; my ($cmd,$args,$timeout) = ('','',''); @@ -2675,7 +2676,7 @@ sub download_file { ## NOTE: 1 is success, 0 false for Perl if ($dl{'dl'} eq 'tiny'){ $cmd = "Using tiny: type: $type \nurl: $url \nfile: $file"; - $result = get_file_tiny_http($type, $url, $file); + $result = get_file_http_tiny($type,$url,$file,$ua); $debug_data = ($type ne 'stdout') ? $result : 'Success: stdout data not null.'; } # But: 0 is success, and 1 is false for these @@ -2707,9 +2708,11 @@ sub download_file { return $result; } -sub get_file_tiny_http { - my ($type, $url, $file) = @_; - my $tiny = HTTP::Tiny->new; +sub get_file_http_tiny { + my ($type,$url,$file,$ua) = @_; + $ua = ($ua && $dl{'ua'}) ? $dl{'ua'} . $ua: ''; + my %headers = ($ua) ? ('agent' => $ua) : undef; + my $tiny = HTTP::Tiny->new(%headers); # note: default is no verify, so default here actually is to verify unless overridden $tiny->verify_SSL => 1 if !$use{'no-ssl'}; my $response = $tiny->get($url); @@ -2756,6 +2759,7 @@ sub get_file_tiny_http { sub set_downloader { eval $start if $b_log; my $quiet = ''; + my $ua_raw = 's-tools/' . $self_name . '-'; $dl{'no-ssl'} = ''; $dl{'null'} = ''; $dl{'spider'} = ''; @@ -2782,6 +2786,7 @@ sub set_downloader { $dl{'file'} = ''; $dl{'stdout'} = ''; $dl{'timeout'} = ''; + $dl{'ua'} = $ua_raw; } elsif ($dl{'curl'} && check_program('curl')){ $quiet = '-s ' if !$dbg[1]; @@ -2790,7 +2795,7 @@ sub set_downloader { $dl{'no-ssl'} = ' --insecure'; $dl{'stdout'} = " -L ${quiet}"; $dl{'timeout'} = ' -y '; - $dl{'ua'} = ' -A ' . $dl_ua; + $dl{'ua'} = ' -A ' . $ua_raw; } elsif ($dl{'wget'} && check_program('wget')){ $quiet = '-q ' if !$dbg[1]; @@ -2800,7 +2805,7 @@ sub set_downloader { $dl{'spider'} = " ${quiet}--spider"; $dl{'stdout'} = " $quiet -O -"; $dl{'timeout'} = ' -T '; - $dl{'ua'} = ' -U ' . $dl_ua; + $dl{'ua'} = ' -U ' . $ua_raw; } elsif ($dl{'fetch'} && check_program('fetch')){ $quiet = '-q ' if !$dbg[1]; @@ -2809,6 +2814,7 @@ sub set_downloader { $dl{'no-ssl'} = ' --no-verify-peer'; $dl{'stdout'} = " ${quiet}-o -"; $dl{'timeout'} = ' -T '; + $dl{'ua'} = ' --user-agent=' . $ua_raw; } # at least openbsd/netbsd elsif ($bsd_type && check_program('ftp')){ @@ -2817,6 +2823,7 @@ sub set_downloader { $dl{'null'} = ' 2>/dev/null'; $dl{'stdout'} = ' -o - '; $dl{'timeout'} = ''; + $dl{'ua'} = ' -U ' . $ua_raw; } else { $dl{'dl'} = ''; @@ -6260,7 +6267,7 @@ sub show_options { (Linux only)."], ['1', '', '--wan-ip-url', "[URL] Skips dig, uses supplied URL for WAN IP (-i). URL output must end in the IP address. See man. - Example:^$self_name^-i^--wan-ip-url^https://yoursite.com/ip.php"], + Example:^$self_name^-i^--wan-ip-url^https://yoursite.com/remote-ip"], ['1', '', '--wm', "Force wm: to use wmctrl as data source. Default uses ps."], ['0', '', '', $line ], ['0', '', '', "Debugging Options:"], @@ -6951,9 +6958,11 @@ sub make_line { return $line; } +# args: 0: type; 1: info [optional]; 2: info [optional] sub message { - my ($type,$id) = @_; + my ($type,$id,$id2) = @_; $id ||= ''; + $id2 ||= ''; my %message = ( 'arm-cpu-f' => 'Use -f option to see features', 'audio-server-on-pipewire-pulse' => 'off (using pipewire-pulse)', @@ -7018,8 +7027,9 @@ sub message { 'note-est' => 'est.', 'note-not-reliable' => 'not reliable', 'nv-current' => "current (as of $id)", + 'nv-current-eol' => "current (as of $id; EOL~$id2)", 'nv-legacy-active' => "legacy-active (EOL~$id)", - 'nv-legacy-eol' => 'legacy (EOL)', + 'nv-legacy-eol' => "legacy (EOL~$id)", 'optical-data' => 'No optical or floppy data found.', 'optical-data-bsd' => 'No optical or floppy data found.', 'output-control' => "-:: 'Enter' to continue to next block. Any key + 'Enter' to exit:", @@ -16120,9 +16130,10 @@ sub gl_data { # $file = "$fake_data_dir/graphics/glxinfo/glxinfo-partial-intel-5500-1.txt"; # $file = "$fake_data_dir/graphics/glxinfo/glxinfo-vbox-debian-etch-1.txt"; $file = "$fake_data_dir/graphics/glxinfo/glxinfo-x11-neomagic-lenny-1.txt"; - $file = "$fake_data_dir/graphics/glxinfo/glxinfo-nvidia-gl4.6-chr.txt"; - $file = "$fake_data_dir/graphics/glxinfo/glxinfo-intel-atom-dell_studio-bm.txt"; - $file = "$fake_data_dir/graphics/glxinfo/glxinfo-asus_1025c-atom-bm.txt"; + # $file = "$fake_data_dir/graphics/glxinfo/glxinfo-nvidia-gl4.6-chr.txt"; + # $file = "$fake_data_dir/graphics/glxinfo/glxinfo-intel-atom-dell_studio-bm.txt"; + # $file = "$fake_data_dir/graphics/glxinfo/glxinfo-asus_1025c-atom-bm.txt"; + # $file = "$fake_data_dir/graphics/glxinfo/glxinfo-2011-nvidia-glx1.4.txt"; $gl_data= main::reader($file,'','ref'); } } @@ -17984,7 +17995,7 @@ sub set_amd_data { '689b|689c|689d|689e|68a0|68a1|68a8|68a9|68b8|68b9|68ba|68be|68bf|68c0|68c1|' . '68c7|68c8|68c9|68d8|68d9|68da|68de|68e0|68e1|68e4|68e5|68e8|68e9|68f1|68f2|' . '68f8|68f9|68fa|68fe|9640|9641|9642|9643|9644|9645|9647|9648|9649|964a|964b|' . - '964c|964e|964f|9802|9803|9804|9805|9806|9807|9808|9809|980a', + '964c|964e|964f|9802|9803|9804|9805|9806|9807|9808|9809|980a|9925|9926', 'code' => 'Evergreen', 'process' => 'TSMC 32-40nm', 'years' => '2009-15', @@ -18014,14 +18025,15 @@ sub set_amd_data { '1312|1313|1315|1316|1317|1318|131b|131c|131d|6640|6641|6646|6647|6649|664d|' . '6650|6651|6658|665c|665d|665f|67a0|67a1|67a2|67a8|67a9|67aa|67b0|67b1|67b8|' . '67b9|67be|9830|9831|9832|9833|9834|9835|9836|9837|9838|9839|983d|9850|9851|' . - '9852|9853|9854|9855|9856|9857|9858|9859|985a|985b|985c|985d|985e|985f|9920', + '9852|9853|9854|9855|9856|9857|9858|9859|985a|985b|985c|985d|985e|985f|991e|' . + '9920|9922', 'code' => 'Sea Islands', 'process' => 'GF/TSMC 16-28nm', 'years' => '2013-17', }, {'arch' => 'GCN-3', 'ids' => '6900|6901|6902|6907|6920|6921|6929|692b|692f|6930|6938|6939|693b|' . - '7300|730f|9874|98e4', + '7300|730f|9874|98c0|98e4', 'code' => 'Volcanic Islands', 'process' => 'TSMC 28nm', 'years' => '2014-19', @@ -18065,16 +18077,22 @@ sub set_amd_data { 'years' => '2020-22', }, {'arch' => 'RDNA-3', - 'ids' => '73a8|73f0|7448|744c|745e|7480|7483|7489', + 'ids' => '73a8|73c4|73c5|73c8|7448|744c|745e|7460|7461|7470|7478|747e', 'code' => 'Navi-3x', 'process' => 'TSMC n5 (5nm)', 'years' => '2022+', }, {'arch' => 'RDNA-3', - 'ids' => '15bf|15c8|164f', + 'ids' => '73f0|7480|7481|7483|7487|7489|748b|749f', + 'code' => 'Navi-33', + 'process' => 'TSMC n6 (6nm)', + 'years' => '2023+', + }, + {'arch' => 'RDNA-3', + 'ids' => '15bf|15c8|164f|1900|1901', 'code' => 'Phoenix', 'process' => 'TSMC n4 (4nm)', - 'years' => '2022+', + 'years' => '2023+', }, {'arch' => 'CDNA-1', 'ids' => '7388|738c|738e', @@ -18220,15 +18238,16 @@ sub set_intel_data { }, # gen10 was cancelled., {'arch' => 'Gen-11', - 'ids' => '0d16|0d26|0d36|4555|4571|4e55|4e61|4e71|8a50|8a51|8a52|8a53|8a54|' . - '8a56|8a57|8a58|8a59|8a5a|8a5b|8a5c|8a5d|8a71|9840|9841', + 'ids' => '0d16|0d26|0d36|4541|4551|4555|4557|4571|4e51|4e55|4e57|4e61|4e71|' . + '8a50|8a51|8a52|8a53|8a54|8a56|8a57|8a58|8a59|8a5a|8a5b|8a5c|8a5d|8a70|8a71|' . + '9840|9841', 'code' => '', 'process' => 'Intel 10nm', 'years' => '2019-21', }, {'arch' => 'Gen-12.1', - 'ids' => '4905|4908|4c8a|4c8b|4c8c|4c90|4c9a|9a40|9a49|9a60|9a68|9a70|9a78|' . - '9ac0|9ac9|9ad9|9af8', + 'ids' => '4905|4907|4908|4c80|4c8a|4c8b|4c8c|4c90|4c9a|9a40|9a49|9a59|9a60|' . + '9a68|9a70|9a78|9ac0|9ac9|9ad9|9af8', 'code' => '', 'process' => 'Intel 10nm', 'years' => '2020-21', @@ -18241,29 +18260,28 @@ sub set_intel_data { 'years' => '2021-22+', }, {'arch' => 'Gen-12.5', - 'ids' => '', - 'code' => 'Arctic Sound', - 'pattern' => 'Arctic', + 'ids' => '0bd0|0bd5|0bd6|0bd7|0bd9|0bda|0bdb', + 'code' => '', 'process' => 'Intel 10nm', - 'years' => '2021-22+', + 'years' => '2021-23+', }, # Jupiter Sound cancelled? {'arch' => 'Gen-12.7', - 'ids' => '5690|5691|5692|5693|5694|5698|56a0|56a1|56a3|56a4|56a5|56a6|56a7|' . - '56a8|56a9', + 'ids' => '5690|5691|5692|5693|5694|5695|5696|5697|5698|56a0|56a1|56a3|56a4|' . + '56a5|56a6|56a7|56a8|56a9|56b0|56b1|56b2|56b3', 'code' => 'Alchemist', 'process' => 'TSMC n6 (7nm)', 'years' => '2022+', }, {'arch' => 'Gen-12.7', 'ids' => '56c0|56c1', - 'code' => 'XeHPG', + 'code' => '', 'process' => 'TSMC n6 (7nm)', 'years' => '2022+', }, {'arch' => 'Gen-13', - 'ids' => 'a720|a721|a780|a781|a782|a783|a788|a789|a78a|a78b|a7a0|a7a1|a7a8|' . - 'a7a9', + 'ids' => 'a720|a721|a74d|a780|a781|a782|a783|a788|a789|a78a|a78b|a7a0|a7a1|' . + 'a7a8|a7a9|a7aa|a7ab|a7ac|a7ad', 'code' => '', 'process' => 'Intel 7 (10nm)', 'years' => '2022+', @@ -18283,7 +18301,7 @@ sub set_nv_data { # 0008|0009|0010|0018|0019 # and these are vendor id: 10de for 73.14 # 0020|0028|0029|002c|002d|00a0|0100|0101|0103|0150|0151|0152|0153 - my $status_eol = main::message('nv-legacy-eol'); + # generic fallback if we don't have the actual EOL termination date my $date = $self_date; $date =~ s/-\d+$//; my $status_current = main::message('nv-current',$date); @@ -18299,7 +18317,7 @@ sub set_nv_data { 'process' => 'TSMC 220-350nm', 'release' => '71.86.15', 'series' => '71.86.xx', - 'status' => $status_eol, + 'status' => main::message('nv-legacy-eol','2011-08-xx'), 'xorg' => '1.7', 'years' => '1998-2000', }, @@ -18311,7 +18329,7 @@ sub set_nv_data { 'process' => 'TSMC 150-220nm', 'release' => '71.86.15', 'series' => '71.86.xx', - 'status' => $status_eol, + 'status' => main::message('nv-legacy-eol','2011-08-xx'), 'xorg' => '1.7', 'years' => '1999-2005', }, @@ -18324,7 +18342,7 @@ sub set_nv_data { 'process' => 'TSMC 150-220nm', 'release' => '96.43.23', 'series' => '96.43.xx', - 'status' => $status_eol, + 'status' => main::message('nv-legacy-eol','2012-09-xx'), 'xorg' => '1.12', 'years' => '1999-2005', }, @@ -18332,17 +18350,18 @@ sub set_nv_data { 'ids' => '0170|0171|0172|0173|0174|0175|0176|0177|0178|0179|017a|017c|017d|' . '0181|0182|0183|0185|0188|018a|018b|018c|01f0|0200|0201|0202|0203|0250|0251|' . '0253|0258|0259|025b|0280|0281|0282|0286|0288|0289|028c', - 'code' => 'NV[12]x', + 'code' => 'NV2x', 'kernel' => '3.6', 'legacy' => 1, 'process' => 'TSMC 150nm', 'release' => '96.43.23', 'series' => '96.43.xx', - 'status' => $status_eol, + 'status' => main::message('nv-legacy-eol','2012-09-xx'), 'xorg' => '1.12', - 'years' => '2001-03', + 'years' => '2001-2003', }, ## Legacy 173.14.xx + # process: IBM 130, TSMC 130-150 {'arch' => 'Rankine', 'ids' => '00fa|00fb|00fc|00fd|00fe|0301|0302|0308|0309|0311|0312|0314|031a|' . '031b|031c|0320|0321|0322|0323|0324|0325|0326|0327|0328|032a|032b|032c|032d|' . @@ -18350,14 +18369,16 @@ sub set_nv_data { 'code' => 'NV3x', 'kernel' => '3.12', 'legacy' => 1, - 'process' => '130-150nm', # IBM 130, TSMC 130-150 + 'process' => '130-150nm', 'release' => '173.14.39', 'series' => '173.14.xx', - 'status' => $status_eol, + 'status' => main::message('nv-legacy-eol','2013-12-xx'), 'xorg' => '1.15', - 'years' => '2003-05', + 'years' => '2003-2005', }, ## Legacy 304.xx + # code: hard to get these, roughly MCP[567]x/NV4x/G7x + # process: IBM 130, TSMC 90-110 {'arch' => 'Curie', 'ids' => '0040|0041|0042|0043|0044|0045|0046|0047|0048|004e|0090|0091|0092|' . '0093|0095|0098|0099|009d|00c0|00c1|00c2|00c3|00c8|00c9|00cc|00cd|00ce|00f1|' . @@ -18368,18 +18389,20 @@ sub set_nv_data { '0292|0293|0294|0295|0297|0298|0299|029a|029b|029c|029d|029e|029f|02e0|02e1|' . '02e2|02e3|02e4|038b|0390|0391|0392|0393|0394|0395|0397|0398|0399|039c|039e|' . '03d0|03d1|03d2|03d5|03d6|0531|0533|053a|053b|053e|07e0|07e1|07e2|07e3|07e5', - 'code' => '', # hard to get these, roughly MCP[567]x/NV4x/G7x + 'code' => '', 'kernel' => '4.13', 'legacy' => 1, - 'process' => '90-130nm', # IBM 130, TSMC 90-110 + 'process' => '90-130nm', 'release' => '304.137', 'series' => '304.xx', - 'status' => $status_eol, + 'status' => main::message('nv-legacy-eol','2017-09-xx'), 'xorg' => '1.19', - 'years' => '2003-13', + 'years' => '2003-2013', }, ## Legacy 340.xx # these are both Tesla and Tesla 2.0 + # code: not clear, 8800/GT2xx/maybe G7x + # years: 2006-2010 Tesla 2007-2013 Tesla 2.0 {'arch' => 'Tesla', 'ids' => '0191|0193|0194|0197|019d|019e|0400|0401|0402|0403|0404|0405|0406|' . '0407|0408|0409|040a|040b|040c|040d|040e|040f|0410|0420|0421|0422|0423|0424|' . @@ -18398,28 +18421,28 @@ sub set_nv_data { '0a65|0a66|0a67|0a68|0a69|0a6a|0a6c|0a6e|0a6f|0a70|0a71|0a72|0a73|0a74|0a75|' . '0a76|0a78|0a7a|0a7c|0ca0|0ca2|0ca3|0ca4|0ca5|0ca7|0ca8|0ca9|0cac|0caf|0cb0|' . '0cb1|0cbc|10c0|10c3|10c5|10d8', - 'code' => '', # not clear, 8800/GT2xx/maybe G7x + 'code' => '', 'kernel' => '5.4', 'legacy' => 1, 'process' => '40-80nm', 'release' => '340.108', 'series' => '340.xx', - 'status' => $status_eol, + 'status' => main::message('nv-legacy-eol','2019-12-xx'), 'xorg' => '1.20', - 'years' => '2006-13', + 'years' => '2006-2013', }, ## Legacy 367.xx {'arch' => 'Kepler', 'ids' => '0fef|0ff2|11bf', 'code' => 'GKxxx', - 'kernel' => '', + 'kernel' => '5.4', 'legacy' => 1, 'process' => 'TSMC 28nm', 'release' => '', 'series' => '367.xx', - 'status' => main::message('nv-legacy-active','late 2022'), - 'xorg' => '', - 'years' => '2012-18', + 'status' => main::message('nv-legacy-eol','2017'), + 'xorg' => '1.20', + 'years' => '2012-2018', }, ## Legacy 390.xx # this is Fermi, Fermi 2.0 @@ -18434,14 +18457,14 @@ sub set_nv_data { '1207|1208|1210|1211|1212|1213|1241|1243|1244|1245|1246|1247|1248|1249|124b|' . '124d|1251', 'code' => 'GF1xx', - 'kernel' => '', + 'kernel' => '6.0', 'legacy' => 1, 'process' => '40/28nm', - 'release' => '', + 'release' => '390.157', 'series' => '390.xx+', - 'status' => main::message('nv-legacy-active','late 2022'), - 'xorg' => '', - 'years' => '2010-16', + 'status' => main::message('nv-legacy-eol','2022-11-22'), + 'xorg' => '1.21', + 'years' => '2010-2016', }, ## Legacy 470.xx {'arch' => 'Fermi 2', @@ -18452,10 +18475,12 @@ sub set_nv_data { 'process' => 'TSMC 28nm', 'release' => '', 'series' => '470.xx+', - 'status' => main::message('nv-legacy-active','2023/24'), + 'status' => main::message('nv-legacy-active','2024-09-xx'), 'xorg' => '', - 'years' => '2010-16', + 'years' => '2010-2016', }, + # GT 720M and 805A/810A are the same cpu id. + # years: 2012-2018 Kepler 2013-2015 Kepler 2.0 {'arch' => 'Kepler', 'ids' => '0fc6|0fc8|0fc9|0fcd|0fce|0fd1|0fd2|0fd3|0fd4|0fd5|0fd8|0fd9|0fdf|' . '0fe0|0fe1|0fe2|0fe3|0fe4|0fe9|0fea|0fed|0fee|0ff6|0ff8|0ff9|0ffa|0ffb|0ffc|' . @@ -18471,9 +18496,9 @@ sub set_nv_data { 'process' => 'TSMC 28nm', 'release' => '', 'series' => '470.xx+', - 'status' => main::message('nv-legacy-active','2023/24'), + 'status' => main::message('nv-legacy-active','2024-09-xx'), 'xorg' => '', - 'years' => '2012-18', + 'years' => '2012-2018', }, ## Current Active Series # load microarch data, as stuff goes legacy, these will form new legacy items. @@ -18482,47 +18507,45 @@ sub set_nv_data { '1380|1381|1382|1390|1391|1392|1393|1398|1399|139a|139b|139c|139d|13b0|13b1|' . '13b2|13b3|13b4|13b6|13b9|13ba|13bb|13bc|13c0|13c2|13d7|13d8|13d9|13da|13f0|' . '13f1|13f2|13f3|13f8|13f9|13fa|13fb|1401|1402|1406|1407|1427|1430|1431|1436|' . - '1617|1618|1619|161a|1667|174d|174e|179c|17c8|17f0|17f1|17fd|1c8c|1c8d|1c90|' . - '1c91|1d10|1d12|1e91|1ed1|1ed3|1f14|1f54', + '1617|1618|1619|161a|1667|174d|174e|179c|17c8|17f0|17f1|17fd|1c90|1d10|1d12', 'code' => 'GMxxx', 'kernel' => '', 'legacy' => 0, 'process' => 'TSMC 28nm', 'release' => '', - 'series' => '535.xx+', - 'status' => $status_current, + 'series' => '545.xx+', + 'status' => main::message('nv-current-eol',$date,'2026-12-xx'), 'xorg' => '', - 'years' => '2014-19', + 'years' => '2014-2019', }, {'arch' => 'Pascal', 'ids' => '15f0|15f7|15f8|15f9|17c2|1b00|1b02|1b06|1b30|1b38|1b80|1b81|1b82|' . - '1b83|1b84|1b87|1ba0|1ba1|1ba2|1bb0|1bb1|1bb4|1bb5|1bb6|1bb7|1bb8|1bb9|1bbb|' . - '1bc7|1be0|1be1|1c02|1c03|1c04|1c06|1c07|1c09|1c20|1c21|1c22|1c23|1c30|1c31|' . - '1c60|1c61|1c62|1c81|1c82|1c83|1c8c|1c8d|1c8f|1c90|1c91|1c92|1c94|1c96|1cb1|' . - '1cb2|1cb3|1cb6|1cba|1cbb|1cbc|1cbd|1cfa|1cfb|1d01|1d02|1d11|1d13|1d16|1d33|' . - '1d34|1d52', + '1b83|1b84|1b87|1ba0|1ba1|1ba2|1bb0|1bb1|1bb3|1bb4|1bb5|1bb6|1bb7|1bb8|1bb9|' . + '1bbb|1bc7|1be0|1be1|1c02|1c03|1c04|1c06|1c07|1c09|1c20|1c21|1c22|1c23|1c30|' . + '1c31|1c60|1c61|1c62|1c81|1c82|1c83|1c8c|1c8d|1c8f|1c90|1c91|1c92|1c94|1c96|' . + '1cb1|1cb2|1cb3|1cb6|1cba|1cbb|1cbc|1cbd|1cfa|1cfb|1d01|1d02|1d11|1d13|1d16|' . + '1d33|1d34|1d52', 'code' => 'GP10x', 'kernel' => '', 'legacy' => 0, 'process' => 'TSMC 16nm', 'release' => '', - 'series' => '535.xx+', - 'status' => $status_current, + 'series' => '545.xx+', + 'status' => main::message('nv-current-eol',$date,'2026-12-xx'), 'xorg' => '', - 'years' => '2016-21', + 'years' => '2016-2021', }, {'arch' => 'Volta', - 'ids' => '1d81|1db1|1db3|1db4|1db5|1db6|1db7|1db8|1dba|1df0|1df2|1df6|1fb0|' . - '20b0|20b6', + 'ids' => '1d81|1db1|1db3|1db4|1db5|1db6|1db7|1db8|1dba|1df0|1df2|1df6|1fb0', 'code' => 'GV1xx', 'kernel' => '', 'legacy' => 0, 'process' => 'TSMC 12nm', 'release' => '', - 'series' => '535.xx+', - 'status' => $status_current, + 'series' => '545.xx+', + 'status' => main::message('nv-current-eol',$date,'2026-12-xx'), 'xorg' => '', - 'years' => '2017-20', + 'years' => '2017-2020', }, {'arch' => 'Turing', 'ids' => '1e02|1e04|1e07|1e09|1e30|1e36|1e78|1e81|1e82|1e84|1e87|1e89|1e90|' . @@ -18536,53 +18559,55 @@ sub set_nv_data { 'legacy' => 0, 'process' => 'TSMC 12nm FF', 'release' => '', - 'series' => '535.xx+', - 'status' => $status_current, + 'series' => '545.xx+', + 'status' => main::message('nv-current-eol',$date,'2026-12-xx'), 'xorg' => '', - 'years' => '2018-22', + 'years' => '2018-2022', }, {'arch' => 'Ampere', - 'ids' => '20b0|20b2|20b3|20b5|20b7|20bd|20f1|20f3|20f5|20f6|2203|2204|2206|' . - '2207|2208|220a|220d|2216|2230|2231|2232|2233|2235|2236|2237|2238|2414|2420|' . - '2438|2460|2482|2484|2486|2487|2488|2489|248a|249c|249d|24a0|24b0|24b1|24b6|' . - '24b7|24b8|24b9|24ba|24bb|24c7|24c9|24dc|24dd|24e0|24fa|2503|2504|2507|2508|' . - '2520|2521|2523|2531|2544|2560|2563|2571|2582|25a0|25a2|25a5|25ab|25ac|25b6|' . - '25b8|25b9|25ba|25bb|25bc|25bd|25e0|25e2|25e5|25ec|25f9|25fa|25fb|2838', + 'ids' => '20b0|20b2|20b3|20b5|20b6|20b7|20bd|20f1|20f3|20f5|20f6|2203|2204|' . + '2206|2207|2208|220a|220d|2216|2230|2231|2232|2233|2235|2236|2237|2238|2414|' . + '2420|2438|2460|2482|2484|2486|2487|2488|2489|248a|249c|249d|24a0|24b0|24b1|' . + '24b6|24b7|24b8|24b9|24ba|24bb|24c7|24c9|24dc|24dd|24e0|24fa|2503|2504|2507|' . + '2508|2520|2521|2523|2531|2544|2560|2563|2571|2582|25a0|25a2|25a5|25ab|25ac|' . + '25b6|25b8|25b9|25ba|25bb|25bc|25bd|25e0|25e2|25e5|25ec|25f9|25fa|25fb|2838', 'code' => 'GAxxx', 'kernel' => '', 'legacy' => 0, 'process' => 'TSMC n7 (7nm)', 'release' => '', - 'series' => '535.xx+', - 'status' => $status_current, + 'series' => '545.xx+', + 'status' => main::message('nv-current-eol',$date,'2026-12-xx'), 'xorg' => '', - 'years' => '2020-23', + 'years' => '2020-2023', }, {'arch' => 'Hopper', - 'ids' => '2321|2330|2331|2339', + 'ids' => '2321|2322|2324|2330|2331|2339|233a', 'code' => 'GH1xx', 'kernel' => '', 'legacy' => 0, 'process' => 'TSMC n4 (5nm)', 'release' => '', - 'series' => '535.xx+', + 'series' => '545.xx+', 'status' => $status_current, 'xorg' => '', 'years' => '2022+', }, {'arch' => 'Lovelace', - 'ids' => '2684|26b1|26b5|2704|2717|2757|2782|2786|27a0|27b8|27e0|2803|2805|' . - '2820|2860|2882|28a0|28a1|28e0|28e1', + 'ids' => '2684|26b1|26b2|26b5|26b9|2704|2717|2730|2757|2770|2782|2786|27a0|' . + '27b0|27b1|27b2|27b8|27ba|27bb|27e0|27fb|2803|2805|2820|2860|2882|28a0|28a1|' . + '28e0|28e1', 'code' => 'AD1xx', 'kernel' => '', 'legacy' => 0, 'process' => 'TSMC n4 (5nm)', 'release' => '', - 'series' => '535.xx+', + 'series' => '545.xx+', 'status' => $status_current, 'xorg' => '', - 'years' => '2022-23+', + 'years' => '2022+', }, + ], } @@ -20778,15 +20803,16 @@ sub wan_ip { my ($b_dig,$b_html,$ip,$ua); my $num = 0; # time: 0.06 - 0.07 seconds - # cisco opendns.com may be terminating supporting this one, sometimes works, sometimes not: - # use -4/6 to force ipv 4 or 6, but generally we want the 'natural' native - # ip returned. - # dig +short +time=1 +tries=1 myip.opendns.com @resolver1.opendns.com - # dig +short @ns1-1.akamaitech.net ANY whoami.akamai.net - # this one can take forever, and sometimes requires explicit -4 or -6 - # dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com + # Cisco opendns.com may be terminating supporting this one, sometimes works, sometimes not: + # use -4/6 to force ipv 4 or 6, but generally we want the 'natural' native ip returned. + # dig +short +time=1 +tries=1 myip.opendns.com @resolver1.opendns.com :: 0.021s + # Works but is slow: + # dig +short @ns1-1.akamaitech.net ANY whoami.akamai.net :: 0.156s + # This one can take forever, and sometimes requires explicit -4 or -6 + # dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com :: 0.026s; 1.087ss if (!$force{'no-dig'} && (my $program = main::check_program('dig'))){ $ip = (main::grabber("$program +short +time=1 +tries=1 \@ns1-1.akamaitech.net ANY whoami.akamai.net 2>/dev/null"))[0]; + $ip =~ s/"//g if $ip; # some return IP in quotes, when using TXT $b_dig = 1; } if (!$ip && !$force{'no-html-wan'}){ @@ -20794,16 +20820,19 @@ sub wan_ip { if (!defined $dl{'no-ssl'}){ main::set_downloader(); } - # note: tests: akamai: 0.055 - 0.065 icanhazip.com: 0.177 0.164 - # smxi: 0.525, so almost 10x slower. Dig is fast too + # note: tests: akamai: 0.015 - 0.025 icanhazip.com: 0.020 0.030 + # smxi: 0.230, so ~10x slower. Dig is not as fast as you'd expect + # dig: 0.167s 0.156s # leaving smxi as last test because I know it will always be up. # --wan-ip-url replaces values with user supplied arg - # 0.059s: http://whatismyip.akamai.com/ - # 0.255s: https://get.geojs.io/v1/ip - # 0.371s: http://icanhazip.com/ - # 0.430s: https://smxi.org/opt/ip.php + # 0.020s: http://whatismyip.akamai.com/ + # 0.136s: https://get.geojs.io/v1/ip + # 0.024s: http://icanhazip.com/ + # 0.027s: ifconfig.io + # 0.230s: https://smxi.org/opt/ip.php + # 0.023s: https://api.ipify.org :: NOTE: hangs, widely variable times, don't use my @urls = (!$wan_url) ? qw(http://whatismyip.akamai.com/ - http://icanhazip.com/ https://smxi.org/opt/ip.php) : ($wan_url); + http://icanhazip.com/ https://smxi.org/opt/ip.php) : ($wan_url); foreach (@urls){ $ua = 'ip' if $_ =~ /smxi/; $ip = main::download_file('stdout',$_,'',$ua); @@ -21904,8 +21933,8 @@ sub set_filters { # mergerfs, mhddfs, overla(id|y)(fs)?, squashfs, unionfs; # ISO/Archive: archive(mount)?, atlas, avfs. borg, erofs, fuse-archive, # fuseiso, gzipfs, iso9660, lofs, vdfuse, wimmountfs, xbfuse - # FUSE: adbfs, apfs-fuse, gvfs, gvfs-mtp, ifuse, jmtpfs, mtpfs, ptpfs, - # simple-mtpfs, vramfs, xmlfs + # FUSE: adbfs, apfs-fuse, atomfs, gvfs, gvfs-mtp, ifuse, jmtpfs, mtpfs, ptpfs, + # puzzlefs, simple-mtpfs, vramfs, xmlfs # System fs: cgmfs, configfs, debugfs, devfs, devtmpfs, efivarfs, fdescfs, # hugetlbfs, kernfs, linprocfs, linsysfs, lxcfs, procfs, ptyfs, run, # securityfs, shm, swap, sys, sysfs, tmpfs, tracefs, type, udev, vartmp @@ -21915,11 +21944,11 @@ sub set_filters { my @all = qw%au av e?crypt enc ero gocrypt i (fuse-?)?iso iso9660 lo merger mhdd overla(id|y) splitview(-?fuse)? squash union xbfuse%; ## These are fuse/archive/distributed/remote/clustered mostly - my @exclude = (@all,qw%9p (open-?)?a adb archive(mount)? astream atlas + my @exclude = (@all,qw%9p (open-?)?a adb archive(mount)? astream atlas atom beeg borg c ceph chiron ci cloudstore curlftp d dav dce g gdrive gfarm git gluster gmail gocrypt google-drive-ocaml gp gphoto gv gzip hd httpd hubic ip juice k(osmos)? .*la lizard lustre magma mapr moose .*mtp - null p?n objective oc one orange pan .*ptp pv rclone restic rozo + null p?n objective oc one orange pan .*ptp puzzle pv rclone restic rozo s s3 scality sheepdog sp ssh smb v9 vd vm vram weka wim(mount)? xb xml xtreem%); # Various RAM based system FS @@ -36041,12 +36070,16 @@ sub process_power { } } -# note: seen instance in android where reading file hangs endlessly!!! +# note: seen android instance where reading file wakeup_count hangs endlessly. +# Some systems also report > 1 wakeup events per wakeup with +# /sys/power/wakeup_count, thus, we are using /sys/power/suspend_stats/success +# which does not appear to have that issue. sub get_wakeups { eval $start if $b_log; return if %risc; - my ($wakeups); - my $path = '/sys/power/wakeup_count'; + my ($path,$wakeups); + # this increments on suspend, but you can't see it until wake, numbers work. + $path = '/sys/power/suspend_stats/success'; $wakeups = reader($path,'strip',0) if -r $path; eval $end if $b_log; return $wakeups; diff --git a/inxi.1 b/inxi.1 index 8739392..fbaac8e 100644 --- a/inxi.1 +++ b/inxi.1 @@ -15,7 +15,7 @@ .\" with this program; if not, write to the Free Software Foundation, Inc., .\" 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. .\" -.TH INXI 1 "2023\-09\-25" "inxi" "inxi manual" +.TH INXI 1 "2023\-10\-31" "inxi" "inxi manual" .SH NAME inxi \- Command line system information script for console and IRC diff --git a/inxi.changelog b/inxi.changelog index 8f480c2..c54e684 100644 --- a/inxi.changelog +++ b/inxi.changelog @@ -1,3 +1,137 @@ +================================================================================ +Version: 3.3.31 +Patch: 00 +Date: 2023-10-31 +-------------------------------------------------------------------------------- +RELEASE NOTES: +-------------------------------------------------------------------------------- + +A small point release, mainly for fixes and bugs, plus a few minor matching +table updates. Also some core tools updates, which make supporting gpu devices +easier over time, particularly nvidia ones. Also some gpu data updates, new +nvidia 545, which was unexpected, came out, extending the time to next legacy by +some months. + +-------------------------------------------------------------------------------- +SPECIAL THANKS: + +1. GRAPHICS: GPU DATA: codeberg user malcolmlewis who also posted both the first +pinxi issue, and the first codeberg issue. I had not thought nvidia would forget +to add their own device IDs to their lists, but they did. This prompted an +upgrade to the gpu_raw.pl/gpu_ids.pl to better handle manual add files for +Nvidia, as well as better overall consistency for gpu data files and processing. + +2. SYSTEM: Wakeups: Mint user senjoz for alerting me to the well done but +unfortunately localized to mint forums report on the wrong wakeup count report, +because the data source was not what I thought it was. + +-------------------------------------------------------------------------------- +KNOWN ISSUES: + +1. Any distro forum person who finds issues related to inxi maybe being wrong or +operating from false assumptions in terms of data sources should ideally find a +way to report these issues directly, either via a codeberg issue, an email, or +something else. It's not possible or practical to track every forum that uses +inxi to debug user issues, so if members of those forums can be more proactive +in terms of sending what appear to be valid issue reports to the inxi project, +that will help a lot. + +2. GRAPHICS: GPU: no data for things like Biren and other non AMD/Intel/Nvidia +GPUs. If you are into GPUs, by all means, help us out here! + +-------------------------------------------------------------------------------- +BUGS: + +1. INFO: main::get_wakeups(): I'd say that despite in the past largely being +correct, using /sys/power/wakeup_count is a bug, but a bug that is excusable +because the docs are just too opaque about what this thing actually refers to. +My assumption re its meaning was clearly wrong. + +-------------------------------------------------------------------------------- +FIXES: + +1. INFO: main::get_wakeups(): Issue reported via a Mint forum posting which I +was alerted to. + +https://forums.linuxmint.com/viewtopic.php?p=2378107#p2378107 + +This would have made it into inxi 3.3.30 easily since the patch is changing file +name, but I unfortunetly did not become aware of it until right after the +release, On my system, for example, with systemctl suspend instead of the not +working xfce suspend from gui, I get 7 wakeup_count type events counted for each +suspend event. On another system I have, almost same everything, except fully +functioning xfce suspend feature, the success and wakeup_counts are matched. + +I found a value of 49000+ digging through my datasets, and I can find no +pattern, nor can I find this clearly documented, so the behavior is simply going +to be use the value, including 0, from /sys/power/suspend_stats/success and +using it if it is defined, and getting rid of /sys/power/wakeup_count completely +as a data source, which I am now no longer sure at all about the meaning of. 1 +of my systems has 7 events per resume, one, almost the same setup, has 1. + +2. GRAPHICS: GPU DATA: Many nvidia fixes, device ID lists updated and corrected. + +-------------------------------------------------------------------------------- +ENHANCEMENTS: + +1a. PARTITIONS: added puzzlefs, atomfs to excludes. It's unclear, but both sound +like they are like isofs or something like that. + +2a. GRAPHICS: GPU DATA: added Nvidia Pascal, Hopper, Lovelace device IDs. See +Code 1 for fixes to detections. Added AMD, Intel newer GPU IDs, going with Code +1 and GPU data fixes. + +2b. GRAPHICS: GPU DATA: updated lists, added Nvidia current EOL data, added +newer kernel/X.org last supported. Added two more memssage types for current, +legacy messages. Found a site that lists EOL for the drivers, that helps. + +2c. GRAPHCIS: GPU_DATA: added new 545 driver IDs, updated nv current to 545 + +-------------------------------------------------------------------------------- +CHANGES: + +1. DATA: pinxi/tools/lists: made file names consistent for gpu data types. + +-------------------------------------------------------------------------------- +DOCUMENTATION: + +1. DOCS: docs/inxi-graphics.txt, docs/inxi-partitions.txt - ongoing updates for +features. More GPU data added, new file system types. + +-------------------------------------------------------------------------------- +CODE: + +1a. GRAPHICS: GPU DATA: pinxi/tools/gpu_raw.pl, pinxi/tools/gpu_ids.pl. Upgraded +to enable basic manual additions to nvidia drivers. Also fixed detections for +Hopper and Lovelace, those were too tight and I missed some device IDs there. + +Redid tools/gpu_raw.pl and gpu_ids.pl to have the more predictable file names. + +Also changed the file names to be consistent for nv data in pinxi/tools/lists/ + gpu.[amd|intel].full + gpu.[amd|intel].full.sorted + gpu.[amd|intel].manual + gpu.amd.github + gpu.intel.com + gpu.nv.[driver].full + gpu.nv.[driver].full.sorted + gpu.nv.[driver].manual + gpu.nv.[driver].raw + +This let me bring all the lists up to date, and some manual fixes added in to +some driver sets. + +1b. GRAPHICS: GPU_DATA: pinxi/tools/gpu_ids.pl - updated for Nvidia: new +messages, current eol, filled out legacy drivers with their eol based on last +nvidia driver release date. + +2. CORE: there were some pointless globals being used, as part of the overall +effort to get rid of globals where sensible, else move them into hashes/arrays, +makes code easier to maintain long term. + +-------------------------------------------------------------------------------- +-- Harald Hope - Tue, 31 Oct 2023 13:08:12 -0700 + ================================================================================ Version: 3.3.30 Patch: 00