Skip to content

How to make a config for YAMDCC

Sparronator9999 edited this page Jan 24, 2025 · 4 revisions

With YAMDCC

Open the YAMDCC config editor, and load the config corresponding to your laptop model (9th-gen or older, or 10th-gen or newer):

TODO: screenshot

Go to Options > Get default fan profile from EC...:

TODO: screenshot

Click Yes on the message box that appears, then reboot your laptop.

After rebooting, open YAMDCC again, and you should see a message box like this:

TODO: screenshot. The message will say: "Your laptop's default fan curves have been saved to the currently applied config successfully. Make sure to save your config! (using the "Save config" button)"

Do as it asks (save your new config). Name it after your laptop, e.g. MSI-GF63-Thin-11SC.xml.

Manually (based on other config)

For MSI laptops, one of the included template configs will already have all the correct EC registers for you, and all you need to do is fill the default temperature thresholds.

Open an Administrator Command Prompt to YAMDCC's install directory, and run ec-monitor --dump. You will see output similar to the following (I have added notes for where the fan curves and temp thresholds are located):

C:\Windows\System32>ec-monitor --dump

   | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
---|------------------------------------------------
00 | 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00
10 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20 | 00 00 00 00 00 00 00 00 0A 05 00 00 00 04 09 0B
30 | 03 01 00 0D 00 00 50 81 94 11 88 2C C2 01 C0 00
40 | FC 08 3D 00 46 0D 00 00 F7 07 F0 2C BE 0B FA 32
50 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60 | 00 00 00 00 00 00 00 00 2A 00 37 40 49 4C 52 58    <-- CPU temp up thresholds (0x69-0x6F)
70 | 64 26 26 2B 30 36 3C 46 55 64 08 03 03 03 03 03    <-- CPU fan curve (0x72-0x78), CPU temp down thresholds (0x7A-0x7F)
80 | 00 00 37 3D 43 49 4F 55 63 26 26 2B 30 36 3C 46    <-- GPU temp up thresholds (0x81-0x87), GPU fan curve (0x8A-0x90)
90 | 55 64 08 03 03 03 03 03 06 0F 64 06 0F 64 23 00    <-- GPU temp down thresholds (0x92-0x97)
A0 | 31 36 52 36 45 4D 53 31 2E 31 30 34 31 31 31 34
B0 | 32 30 32 31 31 35 3A 35 36 3A 33 31 00 00 00 28
C0 | 00 00 01 33 00 00 00 00 01 10 00 00 00 00 00 00    <-- Fan RPMs (0xC8-0xC9)
D0 | 00 00 C0 81 4D 00 05 BC 21 01 00 00 00 00 00 00
E0 | E2 00 00 46 0D 00 00 40 00 00 00 00 00 83 00 01
F0 | 40 00 70 00 00 64 00 00 64 00 00 00 00 00 00 00

To get the decimal number, open Windows' built in programmer calculator, switch to Hex input, copy and paste your value in, then switch to Dec(imal) input:

TODO: screenshots

Calculating temperature down thresholds

You may notice that the CPU/GPU temp down thresholds are stored in the EC as an offset of the CPU/GPU up thresholds.

YAMDCC stores temperature thresholds as actual values (not offsets), so the true thresholds must be calculated.

The formula for calculating the true down threshold is as follows:

Tdown = Tup - Toffset

In the case of my laptop, the full temperature thresholds for the CPU fan would look like this:

  • Up threshold: 0, down threshold: 0 (this will always be the same across YAMDCC configs)
  • Up threshold: 55, down threshold: 47
  • Up threshold: 64, down threshold: 61
  • Up threshold: 73, down threshold: 70
  • Up threshold: 76, down threshold: 73
  • Up threshold: 82, down threshold: 79
  • Up threshold: 88, down threshold: 85

And for the GPU fan:

  • Up threshold: 0, down threshold: 0
  • Up threshold: 55, down threshold: 47
  • Up threshold: 61, down threshold: 58
  • Up threshold: 67, down threshold: 64
  • Up threshold: 73, down threshold: 70
  • Up threshold: 79, down threshold: 76
  • Up threshold: 85, down threshold: 82

Writing the config

You will then need to copy your obtained values into the appropriate section of the config (CPU Fan or GPU Fan). Note that laptops with one physical fan still have controls for two "virtual" fans. An example fan curve config follows:

<FanCurveConfs>
    <FanCurveConf>
        <Name>Default</Name>
        <Desc>The manufacturer default CPU fan curve.</Desc>
        <TempThresholds>
            <TempThreshold>
                <UpThreshold>0</UpThreshold>
                <DownThreshold>0</DownThreshold>
                <FanSpeed>38</FanSpeed>
            </TempThreshold>
            <TempThreshold>
                <UpThreshold>55</UpThreshold>
                <DownThreshold>47</DownThreshold>
                <FanSpeed>43</FanSpeed>
            </TempThreshold>
            <TempThreshold>
                <UpThreshold>64</UpThreshold>
                <DownThreshold>61</DownThreshold>
                <FanSpeed>48</FanSpeed>
            </TempThreshold>
            <TempThreshold>
                <UpThreshold>73</UpThreshold>
                <DownThreshold>70</DownThreshold>
                <FanSpeed>54</FanSpeed>
            </TempThreshold>
            <TempThreshold>
                <UpThreshold>76</UpThreshold>
                <DownThreshold>73</DownThreshold>
                <FanSpeed>60</FanSpeed>
            </TempThreshold>
            <TempThreshold>
                <UpThreshold>82</UpThreshold>
                <DownThreshold>79</DownThreshold>
                <FanSpeed>70</FanSpeed>
            </TempThreshold>
            <TempThreshold>
                <UpThreshold>88</UpThreshold>
                <DownThreshold>85</DownThreshold>
                <FanSpeed>85</FanSpeed>
            </TempThreshold>
        </TempThresholds>
    </FanCurveConf>
    ...
</FanCurveConfs>

Manually (from scratch)

You're on your own. See NBFC's wiki for a comprehensive guide on how to reverse-engineer your laptop's EC for fan control purposes.

You can read more about YAMDCC's config layout here.