RAMSPDToolkit-NDD
1.1.3
See the version list below for details.
dotnet add package RAMSPDToolkit-NDD --version 1.1.3
NuGet\Install-Package RAMSPDToolkit-NDD -Version 1.1.3
<PackageReference Include="RAMSPDToolkit-NDD" Version="1.1.3" />
<PackageVersion Include="RAMSPDToolkit-NDD" Version="1.1.3" />
<PackageReference Include="RAMSPDToolkit-NDD" />
paket add RAMSPDToolkit-NDD --version 1.1.3
#r "nuget: RAMSPDToolkit-NDD, 1.1.3"
#addin nuget:?package=RAMSPDToolkit-NDD&version=1.1.3
#tool nuget:?package=RAMSPDToolkit-NDD&version=1.1.3
RAMSPDToolkit
A toolkit for accessing RAMs SPD. Primarily used for reading temperature and data from SPD.<br/> Reading from SPD is standardized by JEDEC, for the most part.<br/>
Warning - writing via SMBus and to SPD is dangerous
It is possible and supported to write data via SMBus, but NOT recommended and dangerous for your hardware.<br/> You can also write data to the SPD via SMBus, when write protection is disabled, which is also NOT recommended.<br/> Doing so COULD brick whatever hardware you're writing to, rendering that hardware part useless.<br/> Writing to something you should not write to means: this piece of hardware WILL be a rock, once again.<br/> Do this at your own risk and only if you know what you are doing.
Project overview
Project | .NET Version[s] |
---|---|
RAMSPDToolkit <br/> RAM SPD functionality for your software / application. <br/> Also includes various SMBus implementations for Windows and Linux. | .NET Framework 4.7.2 & 4.8.1 <br/> .NET 8 & .NET 9 |
ConsoleOutputTest <br/> Example Application to show how some library functionality can be used. | .NET 8 |
GZipSingleFile <br/> Small ("internal") console application used to zip driver files. | .NET 8 |
Tools <br/> Tools for the project. | --- |
What platforms are supported ?
We currently support Windows and Linux.<br/> There is currently no plan to support Mac / Apple Computers.
Which RAM is supported ?
We support DDR4 & DDR5 RAM on Intel & AMD systems.
Where can I download it ?
You can download the latest release from here.
How can I help improve the project ?
Feel free to give feedback and contribute to our project !<br/> Pull requests are welcome. Please include as much information as possible.
Developer information
Integrate the library in your own application
Sample code
static class Program
{
static void Main(string[] args)
{
//You can enable logging and set level, if you need logging output
Logger.Instance.IsEnabled = true;
Logger.Instance.LogLevel = LogLevel.Trace;
//Check for Windows before loading driver
if (OperatingSystem.IsWindows())
{
//Init OLS driver
DriverManager.InitDriver(InternalDriver.OLS);
//Check if OLS driver was initalized and could be loaded
if (DriverManager.DriverImplementation == InternalDriver.OLS
&& DriverManager.Driver.Load())
{
Console.WriteLine("***** Driver is open. *****");
}
else
{
Console.WriteLine($"***** DRIVER ERROR *****");
throw new Exception("Driver is not open.");
}
}
//Detect SMBuses
SMBusManager.DetectSMBuses();
//Go through available SMBuses
foreach (var bus in SMBusManager.RegisteredSMBuses)
{
//Go through possible RAM slots
for (byte i = SPDConstants.SPD_BEGIN; i <= SPDConstants.SPD_END; i++)
{
//Detect what kind of RAM we have
var detector = new SPDDetector(bus, i);
//We have a RAM stick here
if (detector.IsValid)
{
if (detector.Accessor is IThermalSensor ts)
{
//Get temperature, if possible
if (ts.HasThermalSensor && ts.UpdateTemperature())
{
//Output temperature for detected RAM sticks
Console.WriteLine($"DIMM #{i - SPDConstants.SPD_BEGIN}: {ts.Temperature}°C / {TemperatureConverter.CelsiusToFahrenheit(ts.Temperature)}°F.");
}
}
}
}
}
//Check for Windows before unloading driver
if (OperatingSystem.IsWindows())
{
//Unload the driver - this removes extracted driver files and unloads them
DriverManager.Driver.Unload();
Console.WriteLine("***** Closed driver *****");
}
//Save log file to current directory, if you enabled logging output
Logger.Instance.SaveToFile("Log.txt", false);
//All done
Console.WriteLine("Press enter to exit...");
Console.ReadLine();
}
}
Administrator rights
Some functionality requires administrator privileges to access the data.<br/>
Consider adding a manifest file to your application and set requestedExecutionLevel
to requireAdministrator
.
Can I use my own driver ?
Yes, you can implement your own driver via our IDriver interface.<br/> You just have to assign an instance to RAMSPDToolkit and it will use your implementation instead.<br/> Please be sure to use a well tested driver.
License
RAMSPDToolkit is free and open source software licensed under MPL 2.0.<br/> You can use it in private and commercial projects.<br/> Keep in mind that you must include a copy of the license in your project.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Framework | net472 is compatible. net48 was computed. net481 is compatible. |
-
.NETFramework 4.7.2
- System.Management (>= 9.0.5)
-
.NETFramework 4.8.1
- System.Management (>= 9.0.5)
-
net8.0
- System.Management (>= 9.0.5)
-
net9.0
- System.Management (>= 9.0.5)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on RAMSPDToolkit-NDD:
Package | Downloads |
---|---|
LibreHardwareMonitorLib
Monitor the temperature sensors, fan speeds, voltages, load and clock speeds of your computer. |
|
OpenHardwareMonitorLib
Monitor the temperature sensors, fan speeds, voltages, load and clock speeds of your computer. |
GitHub repositories
This package is not used by any popular GitHub repositories.