Skip to content

Commit

Permalink
system() added Raspberry CM5 detection
Browse files Browse the repository at this point in the history
  • Loading branch information
sebhildebrandt committed Dec 8, 2024
1 parent 3a92931 commit 5603260
Show file tree
Hide file tree
Showing 4 changed files with 112 additions and 49 deletions.
148 changes: 101 additions & 47 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,13 @@

#### Breaking Changes

**Be aware**, that the new version 5.x **is NOT fully backward compatible** to version 4.x ...
**Be aware**, that the new version 5.x **is NOT fully backward compatible** to
version 4.x ...

We had to make **several interface changes** to keep systeminformation as consistent as possible. We highly [recommend to go through the complete list](https://systeminformation.io/changes.html) and adapt your own code to be again compatible to the new version 5.
We had to make **several interface changes** to keep systeminformation as
consistent as possible. We highly
[recommend to go through the complete list](https://systeminformation.io/changes.html)
and adapt your own code to be again compatible to the new version 5.

| Function | Old | New (V5) | Comments |
| ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
Expand Down Expand Up @@ -54,7 +58,8 @@ We had to make **several interface changes** to keep systeminformation as consis
- `diskLayout()`: added S.M.R.R.T. (win)
- `fsSize()`: added available
- `fsSize()`: improved calculation of used
- `getData()`: support for passing parameters and filters (see section General / getData)
- `getData()`: support for passing parameters and filters (see section General /
getData)
- `graphics()`: extended properties (mac OS)
- `graphics()`: extended nvidia-smi parsing
- `networkInterfaces()`: type detection improved (win - wireless)
Expand All @@ -74,15 +79,18 @@ We had to make **several interface changes** to keep systeminformation as consis

#### Test Full Version 5 Functionality

If you want to see all function results on your machine, please head over to [Testing section](https://systeminformation.io/tests.html). We implemented a tiny test suite where you can easily go through all functions and test resuls on your machine without coding.

If you want to see all function results on your machine, please head over to
[Testing section](https://systeminformation.io/tests.html). We implemented a
tiny test suite where you can easily go through all functions and test resuls on
your machine without coding.

For major (breaking) changes - **version 4, 3 and 2** - see end of page.

## Version History

| Version | Date | Comment |
| ------- | ---------- | --------------------------------------------------------------------------------------------------- |
| 5.23.6 | 2024-12-08 | `system()` added Raspberry CM5 detection |
| 5.23.5 | 2024-08-21 | `processLoad()` fixed * process list (linux) |
| 5.23.4 | 2024-08-06 | `baseboard()` `chassis()` cleaned defaults (linux) |
| 5.23.3 | 2024-08-02 | `usb()` fixed duplicate entries (windows) |
Expand Down Expand Up @@ -254,7 +262,7 @@ For major (breaking) changes - **version 4, 3 and 2** - see end of page.
| 5.9.5 | 2021-10-08 | `battery()` fixed isCharging (windows) |
| 5.9.4 | 2021-09-23 | `processes()` fixed memVsz, Memrss (macOS M1) |
| 5.9.3 | 2021-09-17 | `cpuTemperature()` improved tdie detection (linux) |
| 5.9.2 | 2021-09-16 | `graohics()` (macOS), `memLayout()` (win) improvements |
| 5.9.2 | 2021-09-16 | `graohics()` (macOS), `memLayout()` (win) improvements |
| 5.9.1 | 2021-09-15 | `diskLayout()` fix size (macOS) |
| 5.9.0 | 2021-09-15 | `graphics()` new XML parser, added properties (macOS) |
| 5.8.9 | 2021-09-13 | `battery()` fix linux |
Expand Down Expand Up @@ -735,35 +743,57 @@ For major (breaking) changes - **version 4, 3 and 2** - see end of page.

**Breaking Changes**

- `networkStats()`: will provide an **array** of stats for all given interfaces. In previous versions only one interface was provided as a parameter. Pass '*' for all interfaces
- `networkStats()`: will provide an **array** of stats for all given interfaces.
In previous versions only one interface was provided as a parameter. Pass '*'
for all interfaces
- `networkStats()`: `rx` and `tx` changed to `rx_bytes` and `tx_bytes`
- `dockerContainerStats()`: will provide an **array** of stats for all given docker containers. In previous versions only one interface was provided as a parameter. Pass '*' for all docker containers
- `dockerContainerStats()`: will provide an **array** of stats for all given
docker containers. In previous versions only one interface was provided as a
parameter. Pass '*' for all docker containers

**Other Changes**

- `system()` optimized system detection (e.g. new Raspberry Pi models, ...), additional flags
- `system()` optimized system detection (e.g. new Raspberry Pi models, ...),
additional flags
- `system()`, `bios()`, `baseboard()` information also as non-root (linux)
- `graphics()` better controller and display detection, fixes
- `versions()` optimization, fixes
- `networkInterfaces()` added `operstate`, `type`, `duplex`, `mtu`, `speed`, `carrierChanges`
- `networkInterfaces()` added `operstate`, `type`, `duplex`, `mtu`, `speed`,
`carrierChanges`
- `networkStats()` added stats for `errors`, `dropped`
- added TypeScript definitions

**Be aware**, that the new version 4.x is **NOT fully backward compatible** to version 3.x ...
**Be aware**, that the new version 4.x is **NOT fully backward compatible** to
version 3.x ...

### Major (breaking) Changes - Version 3

- works only with [node.js][nodejs-url] **v4.0.0** and above (using now internal ES6 promise function, arrow functions, ...)
- **Promises**. As you can see in the documentation, you can now also use it in a promise oriented way. But callbacks are still supported.
- **Async/Await**. Due to the promises support, systeminformation also works perfectly with the `async/await` pattern (available in [node.js][nodejs-url] **v7.6.0** and above). See example in the docs.
- `cpuCurrentspeed`: now returns an object with current minimal, maximal and average CPU frequencies of all cores.
- `mem`: now supports also newer versions of `free` (Version 3.3.10 and above); extended information `avaliable` (potentially available memory)
- `fsStats`: added information sum bytes read + write (tx) and sum transfer rate/sec (tx_sec)
- `networkInterfaces`: now providing one more detail: internal - true if this is an internal interface like "lo"
- `networkConnections`: instead of only counting sockets, you now get an array of objects with connection details for each socket (protocol, local and peer address, state)
- `users`: now provides an array of objects with users online including detailed session information (login date/time, ip address, terminal, command)
- `inetLatency`: now you can provide a host against which you want to test latency (default is 8.8.8.8)
- `getDynamicData`: changed order of parameters (callback - if provided - is now the last one): `getDynamicData(srv, network, callback)`
- `getAllData`: changed order of parameters (callback - if provided - is now the last one): `getAllData(srv, network, callback)`
- works only with [node.js][nodejs-url] **v4.0.0** and above (using now internal
ES6 promise function, arrow functions, ...)
- **Promises**. As you can see in the documentation, you can now also use it in
a promise oriented way. But callbacks are still supported.
- **Async/Await**. Due to the promises support, systeminformation also works
perfectly with the `async/await` pattern (available in [node.js][nodejs-url]
**v7.6.0** and above). See example in the docs.
- `cpuCurrentspeed`: now returns an object with current minimal, maximal and
average CPU frequencies of all cores.
- `mem`: now supports also newer versions of `free` (Version 3.3.10 and above);
extended information `avaliable` (potentially available memory)
- `fsStats`: added information sum bytes read + write (tx) and sum transfer
rate/sec (tx_sec)
- `networkInterfaces`: now providing one more detail: internal - true if this is
an internal interface like "lo"
- `networkConnections`: instead of only counting sockets, you now get an array
of objects with connection details for each socket (protocol, local and peer
address, state)
- `users`: now provides an array of objects with users online including detailed
session information (login date/time, ip address, terminal, command)
- `inetLatency`: now you can provide a host against which you want to test
latency (default is 8.8.8.8)
- `getDynamicData`: changed order of parameters (callback - if provided - is now
the last one): `getDynamicData(srv, network, callback)`
- `getAllData`: changed order of parameters (callback - if provided - is now the
last one): `getAllData(srv, network, callback)`

New Functions

Expand All @@ -773,42 +803,60 @@ New Functions
- Windows support: for some basic functions (new in version 3.17 ff)
- `cpuCache`: returns CPU cache (L1, L2, L3) sizes (new in version 3.14)
- `cpuFlags`: returns CPU flags (new in version 3.14)
- `currentLoad.cpus`: returns current load per cpu/core in an array (new in version 3.14)
- `currentLoad.cpus`: returns current load per cpu/core in an array (new in
version 3.14)
- `shell`: returns standard shell e.g. /bin/bash (new in version 3.13)
- `blockDevices`: returns array of block devices like disks, partitions, raids, roms (new in version 3.10)
- `dockerContainerProcesses`: returns processes for a specific docker container (new in version 3.8)
- `versions`: returns object of versions - kernel, ssl, node, npm, ...(new in version 3.6)
- `graphics`: returns arrays of graphics controllers and displays (new in version 3.5)
- `networkInterfaceDefault`: returns default network interface (new in version 3.4)
- `processes`: now returns also a process list with all process details (new in version 3.3)
- `blockDevices`: returns array of block devices like disks, partitions, raids,
roms (new in version 3.10)
- `dockerContainerProcesses`: returns processes for a specific docker container
(new in version 3.8)
- `versions`: returns object of versions - kernel, ssl, node, npm, ...(new in
version 3.6)
- `graphics`: returns arrays of graphics controllers and displays (new in
version 3.5)
- `networkInterfaceDefault`: returns default network interface (new in version
3.4)
- `processes`: now returns also a process list with all process details (new in
version 3.3)
- `battery`: retrieves battery status and charging level (new in version 3.2)
- `dockerContainers`: returns a list of all docker containers (new in version 3.1)
- `dockerContainerStats`: returns statistics for a specific docker container (new in version 3.1)
- `dockerAll`: returns a list of all docker containers including their stats (new in version 3.1)
- `disksIO`: returns overall diskIO and IOPS values for all mounted volumes (new in version 3.0)
- `dockerContainers`: returns a list of all docker containers (new in version
3.1)
- `dockerContainerStats`: returns statistics for a specific docker container
(new in version 3.1)
- `dockerAll`: returns a list of all docker containers including their stats
(new in version 3.1)
- `disksIO`: returns overall diskIO and IOPS values for all mounted volumes (new
in version 3.0)

Bug Fixes / improvements

- improvement `cpuTemperature` - works now also on Raspberry Pi
- bugfix `disksIO` - on OSX read and write got mixed up
- several bug fixes (like assess errors in `cpuCurrentspeed`, potentially incorrect results in `users`, ...)
- several bug fixes (like assess errors in `cpuCurrentspeed`, potentially
incorrect results in `users`, ...)
- testet on even more platforms and linux distributions

**Be aware**, that the new version 3.x is **NOT fully backward compatible** to version 2.x ...
**Be aware**, that the new version 3.x is **NOT fully backward compatible** to
version 2.x ...

### Major (breaking) Changes - Version 2

There had been a lot of changes in version 2 of systeminformation! Here is a quick overview (for those who come from version 1):
There had been a lot of changes in version 2 of systeminformation! Here is a
quick overview (for those who come from version 1):

New Functions

- `version`: returns systeminformation version (semver) of this library
- `system`: hardware info (manufacturer, product/model name, version, serial, uuid)
- `system`: hardware info (manufacturer, product/model name, version, serial,
uuid)
- `networkConnections`: number of active connections
- `inetLatency`: latency in ms to external resource (internet)
- `getStaticData`: returns on json object with static data at once (OS, CPU, Network Interfaces - they should not change until restarted)
- `getDynamicData`: returns on json object with all dynamic data at once (e.g. for monitoring agents)
- `getAllData`: returns on json object with all data (static and dynamic) at once
- `getStaticData`: returns on json object with static data at once (OS, CPU,
Network Interfaces - they should not change until restarted)
- `getDynamicData`: returns on json object with all dynamic data at once (e.g.
for monitoring agents)
- `getAllData`: returns on json object with all data (static and dynamic) at
once

Renamed Functions (now all camelCase)

Expand All @@ -827,13 +875,18 @@ Renamed Functions (now all camelCase)

Function Changes

- `cpu_temperature`/`cpuTemperature`: -1 is new default (and indicates that non sensors are installed)
- `cpu_temperature`/`cpuTemperature`: new result `max` which returns max temperature of all cores
- `cpu_temperature`/`cpuTemperature`: -1 is new default (and indicates that non
sensors are installed)
- `cpu_temperature`/`cpuTemperature`: new result `max` which returns max
temperature of all cores
- `cpu_currentspeed`/`cpuCurrentspeed`: now in GHz
- `cpu`: splitted `manufacturer` (e.g. Intel) and `brand` (e.g. Core 2 Duo)
- `network_speed`/`networkStats`: now better support for OS X (also support for `operstate`)
- `network_speed`/`networkStats`: overall received and transferred bytes (rx, tx)
- `mem`: now better support for OS X (also support for `swaptotal`, `swapused`, `swapfree`)
- `network_speed`/`networkStats`: now better support for OS X (also support for
`operstate`)
- `network_speed`/`networkStats`: overall received and transferred bytes (rx,
tx)
- `mem`: now better support for OS X (also support for `swaptotal`, `swapused`,
`swapfree`)
- `fs_size`/`fsSize`: use-values now in % (0 - 100% instead of 0 - 1)
- `fs_speed`/`fsStats`: now also full support for OS X
- `checksite`/`inetChecksite`: new result structure - see command reference
Expand All @@ -843,6 +896,7 @@ Other changes

- osx-temperature-sensor: now added as an optional dependency
- no more external dependencies: `request` is not longer needed
- where possible results are now integer or float values (instead of strings) because it is easier to calculate with numbers ;-)
- where possible results are now integer or float values (instead of strings)
because it is easier to calculate with numbers ;-)

[nodejs-url]: https://nodejs.org/en/
5 changes: 5 additions & 0 deletions docs/history.html
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,11 @@ <h3>Full version history</h3>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">5.23.6</th>
<td>2024-12-08</td>
<td><span class="code">system()</span> added Raspberry CM5 detection</td>
</tr>
<tr>
<th scope="row">5.23.5</th>
<td>2024-08-21</td>
Expand Down
4 changes: 2 additions & 2 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@
<img class="logo" src="assets/logo.png" alt="logo">
<div class="title">systeminformation</div>
<div class="subtitle"><span id="typed"></span>&nbsp;</div>
<div class="version">New Version: <span id="version">5.23.5</span></div>
<div class="version">New Version: <span id="version">5.23.6</span></div>
<button class="btn btn-light" onclick="location.href='https://github.com/sebhildebrandt/systeminformation'">View on Github <i class=" fab fa-github"></i></button>
</div>
<div class="down">
Expand Down Expand Up @@ -212,7 +212,7 @@
<div class="title">Downloads last month</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-4 col-12">
<div class="numbers">722</div>
<div class="numbers">782</div>
<div class="title">Dependents</div>
</div>
</div>
Expand Down
4 changes: 4 additions & 0 deletions lib/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -1018,7 +1018,11 @@ function decodePiCpuinfo(lines) {
'13': '400',
'14': 'CM4',
'15': 'CM4S',
'16': 'Internal use only',
'17': '5',
'18': 'CM5 (EMMC)',
'19': 'Internal use only',
'1a': 'CM5 (Lite)',
};

const revisionCode = getValue(lines, 'revision', ':', true);
Expand Down

0 comments on commit 5603260

Please sign in to comment.