-
Notifications
You must be signed in to change notification settings - Fork 4
Fan config layout
- Config file layout
- Basic config information
- FanConf
- FanCurveConf
- FullBlastConf (optional)
- ChargeLimitConf (optional)
- RegConf (optional)
This page is still a work-in-progress.
<?xml version="1.0" encoding="utf-8"?>
<YAMDCC_Config xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Ver="1">
<!-- Basic config information (laptop manufacturer + model, config author)-->
<FanConfs>
<FanConf>
<!-- Fan configuration: stores information on how to apply fan profiles -->
<FanCurveConf>
<!-- Fan curve configuration: stores user-created fan profiles -->
</FanCurveConf>
</FanConf>
</FanConfs>
<!-- MSI-specific features (FullBlastConf, ChargeLimitConf, PerfModeConf, KeySwapConf, KeyLightConf) -->
<RegConfs>
<!-- Register write configuration: any number of <RegConf> elements. -->
</RegConfs>
</FanControlConfig>
For an example of a good fan config, see any config in the Configs folder.
All numeric values MUST be written in decimal format. Hex values will cause an error while loading a config.
You can use Windows' programmer calculator to convert between hex and decimal values.
The manufacturer of the laptop the config was written for.
The model of the laptop the config was written for.
The author of the config file.
There must be at least one FanConf
present in the FanConfs
array in the config file.
A descriptive name of the fan to be controlled, e.g. CPU Fan
for the CPU fan(s).
The value that will set the target fan speed to its lowest speed (or turn it off).
The value that will set the target fan speed to its highest speed.
For MSI laptops, this is either 100
or 150
.
The zero-indexed FanCurveConf
that will be applied when the config is loaded by the service.
If this is too high/low, it will be automatically reset to 0
on the next config load by any YAMDCC application.
The EC register from which the fan speed (as a percentage of the highest fan speed) can be read.
The value read from this register is assumed to already be a percentage, from 0 to 100 percent.
The EC register from which the temperature of the component being cooled is read.
For example, assuming this FanConf
is for the CPU fan, this would be the register that would read the CPU temperature.
This section of the FanConf
is optional.
The EC register from which the fan RPM can be read.
The following options affect the output of this register:
If set to true
, the fan RPM is read as a 16-bit value (instead of the default 8-bit).
Only has an effect if RPMIs16Bit
is set to true
.
If this option is set to true
, the RPM value read from the EC will be treated as big-endian
instead of the default little-endian.
The value to multiply the RPM value read from the EC by. Defaults to 1.
If set to true
, the RPM value read from the EC will be divided by RPMMult
instead of being multiplied by them (the default behaviour).
If set to true
, the reciprocal of the value is taken (1 / value
) and used as the fan RPM.
All of the following sections are required.
The UpThresholdRegs
and DownThresholdRegs
sections must have the same number of registers.
FanCurveRegs
must have one more register than UpThresholdRegs
/DownThresholdRegs
.
An array of EC registers that the fan curve up thresholds are written to.
An array of EC registers that the fan curve down thresholds are written to.
NOTE:
YAMDCC is currently hardcoded to write down thresholds as an offset from up thresholds (calculated using: upThreshold - downThreshold
).
This works for MSI laptops, but may not be true for other laptop brands that use similar fan curves.
An array of EC registers that the fan curve speeds are written to.
All fan profiles for a fan live in their respective FanCurveConfs
section.
There must always be at least one FanCurveConf
per fan in a config.
A brief description of the fan profile, e.g. Default
for your laptop's default fan profile, Performance
for a more agressive fan profile, and Silent
for a quieter fan profile.
A longer description of the fan profile.
This will be shown in the tooltip when mousing over the fan profile selector in the config editor.
An array of temperature thresholds to be written to the fan registers (described above).
All values below must be between 0 and 255, unless otherwise described below.
All values below should start low and increase for each additional temperature threshold.
The temperature up threshold to be written to the corresponding up threshold register, in degrees Celsius (°C).
This should be 0
for the first UpThreshold
.
The temperature down threshold to be written to the corresponding down threshold register, in degrees Celsius (°C).
This should be 0
for the first DownThreshold
.
This value is converted to an offset from the up threshold before writing (see above).
The fan speed to write to the corresponding fan profile register.
The value must be between MinSpeed
and MaxSpeed
.
The following settings are likely specific to MSI laptops.
This consists of two values:
The register that controls whether Full Blast is enabled.
The bit(s) that should get toggled on full blast toggle (should be 128
on MSI laptops).
The reason a bit mask is used instead of an absolute value is because the value initially stored in this register appears to vary between MSI laptops.
This controls how much the battery in a laptop will charge to when plugged in.
The register that controls the charge limit.
The minimum/disabled charge limit value for your laptop (for MSI laptops, 128
).
The maximum charge limit value for your laptop (for MSI laptops, 228
, or 100 above MinVal
).
The value to apply to the charge limit configuration.
Must be between 0
and MaxVal - MinVal
.
Should be set to the default value for your laptop before publishing your config.
This controls the performance mode of an MSI laptop (usually just modifies the fan profiles applied to a laptop).
The register to write a performance mode to.
The zero-indexed performance mode to apply from the list of PerfModes.
An array of performance modes (see below).
This represents a single performance mode, and contains the following:
The name of the performance mode (shown in the performance mode list in the config editor).
A longer description of the performance mode (e.g. what it does).
In the config editor, this is shown in the tooltip when mousing over the performance mode list.
The value to write to the EC register (set by the parent PerfModeConf
) when this performance mode is selected.
This is an advanced setting, and ModeSel
should be left on 3
(Advanced) for MSI laptops.
This config is identical to PerfModeConf
, except with a FanModes
array containing FanMode
elements. Otherwise, all properties (Reg
, ModeSel
, Name
, Desc
, Value
) are identical.
This config setting allows for the Windows and FN keys to be swapped on laptops that support it.
This config setting allows for YAMDCC to control the keyboard backlight.
For MSI laptops, only white/single-colour keyboard backlights are supported with this setting (i.e. RGB keyboard backlights are not supported).
The register that controls the keyboard backlight.
This register will also be read for the initial keyboard backlight brightness.
Values read by the YAMDCC service outside the range specified by MinVal
and MaxVal
will result in an error.
The value that turns off the keyboard backlight (or sets it to its minimum brightness).
The value that sets the keyboard backlight to its maximum brightness.
An array of EC register configs to apply to the laptop.
These may be used to enable fan control via YAMDCC (e.g. by fixing fan profiles not being applied correctly), or to provide simple setting toggles (NOTE: RegConfs are not yet exposed in the config editor).
A single EC register config.
Contains the following settings:
Sets which of the values to write to the EC register.
If true
, writes OnVal
to the EC register on config apply,
otherwise OffVal
is written instead.
A short name for this EC register config (e.g. "YAMDCC compatibility fix").
A longer description of what this RegConf does.
The register to write either OnVal
or OffVal
to.
The value to write when this RegConf is enabled.
The value to write when this RegConf is disabled.
Wiki under construction (that means stuff is going to be missing)!
The contents of this wiki are licensed under CC BY-SA 4.0.
YAMDCC, including the program and documentation (including this wiki) are not endorsed by or affiliated with Micro-Star International Co., Ltd. in any way, shape, or form.