Intel 2600CP SDR File Hacking

Pedro Rocha

New Member
Aug 29, 2016
2
0
1
Hi

@risty thanks for the files , why do you have negative values on the curves ?

edit : ok i think i get it , is it because thermal margin varies on negative values ?
Thanks
 

brundon

New Member
Dec 6, 2016
3
0
1
31
I have modified the SDR file for my custom build.

Here's my build post: Dual E5-2670 build in the smallest case NZXT S340

Here's some background information: The SDR file is quite complicated in a sense that there are a handful of sections you need to edit to be able to achieve controlling the FAN speed based on a different thermal sensor and curve profile. If you use the custom xxxx_RAMP profile, then all fans rely on the single thermal sensor called BB_EDGE to vary their PWM values. This sensor reacts quite slowly so in my case, having noctua fans running at 600RPM and sloooowly ramping up is not enough. I needed the CPU fans to react quickly when the CPU is loaded. After some modification, I have linked the P2_VR sensor to both CPU fans, it approximately matches the CPU temperature and reacts pretty quickly.

I have uploaded my modified SDR file for you to compare. It sets FAN speed based on my all noctua configuration.

CASE FAN 1: NF-P14S Redux PWM-1200 RPM
CASE FAN 3: NF-P14S Redux PWM-1200 RPM
CPU FAN1: NF-F12 PWM-1500 RPM
CPU FAN2: NF-F12 PWM-1500 RPM
REAR FAN: NF-P12 PWM-1300 RPM
This was great thanks for sharing. Installed but now I need case fan 2, 4 to also ramp up. I compared changes and it looks like you are assigning the Stepwise Curve ID near the bottom of the file but I have yet to figure out how you are to identify which SDR TAG such as PROC_1, PROC_2 is assigned to which item at the bottom where you wrote MOD:REAR FAN, MOD: TOP FRONT FAN. I see no identifying features that I am able to trace back and say this is definitely SDR Tag FAN_5 (System Fan 5).

Can anyone possibly explain this?
Here is an example:
Code:
//=============================MOD:TOP FRONT FAN=======================================//
_SDR_TYPE   C0
_SDR_TAG    'OTHER_FR'
_REC_LEN    001B

   // Sensor Record Header
   0132           // Record ID
   51             // SDR Version
   C0             // Record Type
   16             // Record Length

   // Record Body Bytes
   570100         // Manufacturer ID
   0C             // Record Subtype Value (Fan Speed Control SDR Record, rev 2)
   02             // Record Version
   08             // FSC Record Type (08h = Main Domain)
   04             // Domain Mask
   FF             // Fan Profile Support

   // Domain Configuration
   01             // FSC Sub-Record Type (01h = Domain Configuration)
   14             // Normal Control Value
   64             // Ramp Step
   01             // Scan Rate
   64             // Fan Fault Boost Value
   64             // Temperature Threshold Boost Value
   64             // Chassis Cover Boost Value
   00             // Sensor Exclusion Count
                  // Sensor Number To Exclude From Fan Boost
                 
   // Stepwise Sub-Record
   02             // FSC Sub-Record Type (02h = Stepwise)
   01             // Stepwise Header ID
   65             // Stepwise Curve ID

   // Stepwise Sub-Record
   02             // FSC Sub-Record Type (02h = Stepwise)
   01             // Stepwise Header ID
   65             // Stepwise Curve ID
I do not see where that calls an SDR Tag or any identifying information I can use to say changing this Stepwise Curve ID is going to change my FAN_1 (System Fan 1) curve.
 

Pedro Rocha

New Member
Aug 29, 2016
2
0
1
This was great thanks for sharing. Installed but now I need case fan 2, 4 to also ramp up. I compared changes and it looks like you are assigning the Stepwise Curve ID near the bottom of the file but I have yet to figure out how you are to identify which SDR TAG such as PROC_1, PROC_2 is assigned to which item at the bottom where you wrote MOD:REAR FAN, MOD: TOP FRONT FAN. I see no identifying features that I am able to trace back and say this is definitely SDR Tag FAN_5 (System Fan 5).

Can anyone possibly explain this?
Here is an example:
Code:
//=============================MOD:TOP FRONT FAN=======================================//
_SDR_TYPE   C0
_SDR_TAG    'OTHER_FR'
_REC_LEN    001B

   // Sensor Record Header
   0132           // Record ID
   51             // SDR Version
   C0             // Record Type
   16             // Record Length

   // Record Body Bytes
   570100         // Manufacturer ID
   0C             // Record Subtype Value (Fan Speed Control SDR Record, rev 2)
   02             // Record Version
   08             // FSC Record Type (08h = Main Domain)
   04             // Domain Mask
   FF             // Fan Profile Support

   // Domain Configuration
   01             // FSC Sub-Record Type (01h = Domain Configuration)
   14             // Normal Control Value
   64             // Ramp Step
   01             // Scan Rate
   64             // Fan Fault Boost Value
   64             // Temperature Threshold Boost Value
   64             // Chassis Cover Boost Value
   00             // Sensor Exclusion Count
                  // Sensor Number To Exclude From Fan Boost
                
   // Stepwise Sub-Record
   02             // FSC Sub-Record Type (02h = Stepwise)
   01             // Stepwise Header ID
   65             // Stepwise Curve ID

   // Stepwise Sub-Record
   02             // FSC Sub-Record Type (02h = Stepwise)
   01             // Stepwise Header ID
   65             // Stepwise Curve ID
I do not see where that calls an SDR Tag or any identifying information I can use to say changing this Stepwise Curve ID is going to change my FAN_1 (System Fan 1) curve.

Hi

I think profiles (slow , medium , fast ) are system wide , so they will be applied to all fans configured.
if I rememeber well _SDR_TAG 'OTHER_FR' means FR FASTRAMP UP you can search OTHER_MR (medium ramp) and OTHER_SR (slow ramp ) so this configures profiles not individual fans
i think ...
 

5mall5nail5

Member
Nov 16, 2015
88
12
8
35
Anyone running a S2600CP2J in a Supermicro SC846 chassis? I am, and I can manipulate the chassis fans by modifying the PWM offset in the BIOS to make it tolerable but holy crap at "50" the fans SCREAM. Any advice? In total there are 5 ~80mm fans that have 4 pin headers.
 

marcoi

Well-Known Member
Apr 6, 2013
1,403
224
63
Gotha Florida
for those still looking to modify sdr files, I wanted to share what i found to resolve my intel server crazy fan profile.
I got a R2312GL4GS server. I proceeded to update the latest firmware and run fdrutil. after which the BMC decided to run my fans at 5k at idle. I was like nooooooo.

So after playing with it i found where to modify in the sdr file for the stock fans in the case.
Search for the following section :Global Step Curve Records
I modified the section Global Stepwise Curve Record, below is my current settings. I did a find and replace for the whole line i was changing. It changed it in 3 places for me. but you can see i dropped the values for fan percentage way below the % listed. IE 30% is really 15% now.

Any changes you want to make sure of thermals afterwards. I ran the server with prime95 for 20 mins watching the temps sensors. At some point it leveled off at 5k fan speed with prime running full cores. That was a lot better then idling at 5k and spinning higher when doing mid level cpu usage. I keep the servers in general area in main living room and at 5k idling it was driving me nuts.

YMMV but if you are having this issue keep playing with sdr file, you'll find the section you need to edit eventually!!!

Code:
// Global Step Curve Records
//====================================================================//
_SDR_TYPE   C0
_REC_LEN    0017

   // Sensor Record Header
   F700           // Record ID
   51             // SDR Version
   C0             // Record Type
   12             // Record Length

   // Record Body Bytes
   570100         // Manufacturer ID
   0C             // Record Subtype Value (Fan Speed Control SDR Record)
   02             // FSC version 2
   02             // FSC Record Type (Global Stepwise Curve Record)

   // Global Stepwise Curve Record
   00             // Stepwise Curve ID
   05             // Domain max and count
   0F             //  15C
   0F             //  30%
   19             //  25C
   14             //  35%
   23             //  35C
   1E             //  50%
   28             //  40C
   32             //  75%
   2D             //  45C
   64             //  100%
 

Toetje583

New Member
Dec 26, 2017
5
0
1
30
After playing around with an S2600CP2J, here's the Excel spreadsheet that I used to figure out all the mappings.

Using the built-in UEFI text editor and the spreadsheet on my laptop, I was able to experiment and run UPDATEFRUSDR pretty quickly.

Maybe someone will find it useful !
Wow thanks, i'm new to hex editing and wondering, my fans have a max of 1300, in hex this is 0x514, does this mean I need to do it like this:

@ Fan Sensor Scaling Record

1405 // Placeholder for System Fan 1(SN:0x30), Max RPM: 25000RPM == A861 (the order is LSB, MSB)

Best Regards,

Toetje
 

andrewwong2000

New Member
Oct 28, 2017
7
4
3
49
No harm in experimenting ! If you use the uefi editor you can make a change and update flash in about 5 seconds - best way to trial and error


Sent from my iPhone using Tapatalk
 

Toetje583

New Member
Dec 26, 2017
5
0
1
30
Yes according to the comments in the sdr file...


Sent from my iPhone using Tapatalk
No harm in experimenting ! If you use the uefi editor you can make a change and update flash in about 5 seconds - best way to trial and error


Sent from my iPhone using Tapatalk
Thanks, for a complete noob it's kinda hard to understand, especially the domain mapping and fan curves!

Fans on my S2600CP:

CPU1: Arctic F12 Lowest RPM=0 Highest=1300
CPU2: Arctic F12 Lowest RPM=0 Highest=1300

HDD Cage Bot > SYS_FAN_1: Arctic F12 Lowest RPM=0 Highest=1300
HDD Cage Top > SYS_FAN_2: None
Front Fan Bot> SYS_FAN_3: Arctic F14 Lowest RPM=0 Highest=1300
Front Fan Top> SYS_FAN_4: Arctic F14 Lowest RPM=0 Highest=1300
Top Fan 1 > SYS_FAN_5: Arctic F14 Lowest RPM=0 Highest=1300
Top Fan 2 > SYS_FAN_6: Arctic F14 Lowest RPM=0 Highest=1300
Rear Fan > SYS_Fan_7: Arctic F14 Lowest RPM=0 Highest=1300

Lets see how far I can get!

Best Regards,

Toetje
 

Toetje583

New Member
Dec 26, 2017
5
0
1
30
No harm in experimenting ! If you use the uefi editor you can make a change and update flash in about 5 seconds - best way to trial and error


Sent from my iPhone using Tapatalk
I managed to add fan 0x35 to domain 1, I just need to link them now. however i'm stuck on this:


// Record Body Bytes
570100 // Manufacturer ID
0C // Record Subtype Value (Fan Speed Control SDR Record, rev 2)
02 // Record Version
08 // FSC Record Type (08h = Main Domain)
FF // Domain Mask
0F // Fan Profile Support

I don't understand the domain mask section of the excel sheet, what is bitmap?
 

Toetje583

New Member
Dec 26, 2017
5
0
1
30
Is there a guide you are using? Like how to access FRUSDR and edit the cfg file to begin with?
There are no guides, it's just uefi shell + latest firmware on usb stick to run UpdateFRUSDR.nsh. You can use a uefi text editor to change the sdr file:)
 

serverpanda

New Member
Mar 31, 2018
6
0
1
43
I am trying to reduce the fan speed on my S2600WTTR inside an original Intel server. (its different than 2600cp, but this seemed like the best place)

I have managed to lower the idle RPMs from 4400 to ~2400 by adjusting the Curve Record. (had to use trial and error to find the applicable profile).

To further go lower, I successfully adjusted "Lower critical" and "Lower non-critical" monitoring values for all the "System Fan x" and tried to further adjust the curve - no change in RPM.

I then noticed that the RPM that are used in idle are +/- the "Normal Minimum" (used the conversion factor from the critical values)

I have the feeling that I adjusted the curve correctly, but that there still is another variable keeping the fans from spinning lower. Did you all just adjust one curve, or does the system combine multiple profiles to choose the highest minimum.
 

DanimalCrossing

New Member
Dec 17, 2016
1
0
1
23
I am trying to reduce the fan speed on my S2600WTTR inside an original Intel server. (its different than 2600cp, but this seemed like the best place)

I have managed to lower the idle RPMs from 4400 to ~2400 by adjusting the Curve Record. (had to use trial and error to find the applicable profile).

To further go lower, I successfully adjusted "Lower critical" and "Lower non-critical" monitoring values for all the "System Fan x" and tried to further adjust the curve - no change in RPM.

I then noticed that the RPM that are used in idle are +/- the "Normal Minimum" (used the conversion factor from the critical values)

I have the feeling that I adjusted the curve correctly, but that there still is another variable keeping the fans from spinning lower. Did you all just adjust one curve, or does the system combine multiple profiles to choose the highest minimum.
I've been able to do the same thing for my S2600WT2 board (modify appropriate fan curve, change lower critical/non-critical thresholds), and I decided to stop there since I was satisfied with the acoustics and didn't want to push the temperatures too much.

There was one thing that I didn't do, which was change the sensor used in the curve record. The sensor that's used to control the default curves is the front panel temp sensor. You could try changing it to a different sensor and see if it lowers it further.

I'm uploading the original SDR, and my two modified SDR files (one with only the critical limits changed, one with modified limits and fan curves) so you can see what was changed.
 

Attachments

LazaroM

New Member
Jun 8, 2019
1
0
1
I have modified the SDR file for my custom build.

Here's my build post: Dual E5-2670 build in the smallest case NZXT S340

Here's some background information: The SDR file is quite complicated in a sense that there are a handful of sections you need to edit to be able to achieve controlling the FAN speed based on a different thermal sensor and curve profile. If you use the custom xxxx_RAMP profile, then all fans rely on the single thermal sensor called BB_EDGE to vary their PWM values. This sensor reacts quite slowly so in my case, having noctua fans running at 600RPM and sloooowly ramping up is not enough. I needed the CPU fans to react quickly when the CPU is loaded. After some modification, I have linked the P2_VR sensor to both CPU fans, it approximately matches the CPU temperature and reacts pretty quickly.

I have uploaded my modified SDR file for you to compare. It sets FAN speed based on my all noctua configuration.

CASE FAN 1: NF-P14S Redux PWM-1200 RPM
CASE FAN 3: NF-P14S Redux PWM-1200 RPM
CPU FAN1: NF-F12 PWM-1500 RPM
CPU FAN2: NF-F12 PWM-1500 RPM
REAR FAN: NF-P12 PWM-1300 RPM
About two years ago I got a surplus S2600CP board with a pair of Xeon E5-2670 CPUs, which I then sold and replaced with two Xeon E5-2667 v2 CPUs. The machine has been great but the fans ... were never 100% satisfactory.

If I didnt run them with enough of a PWM boost, usually 20 to 25, they would get too hot and throttle, but this was noisy. If I ran a 5 PWM adjustment, and loaded the SDR with "no fan" across the board except the 2 CPU fans, itd be quiet but thermal throttle when under load at well over 85C.

I never had much luck messing with the SDR file but since I have similar fans to you, all with Noctua fans, on a whim I just downloaded your file and flashed it. I ran y-cruncher twice. The all-core max turbo for these CPUs is 3600mhz. They would oscillate from 3500 and 3600mhz, never throttle, and the fans all ramped up in a slow then faster way, keeping the core temps in the 75C +/- 3C range. When the peak temp of 78C was seen by one of the cores I could hear the fans tick up a bit and the temps immediately went back down, targeting the 72-74C range.

This is VERY nice work. Thank you so much for sharing it.
 

MrMeeb

New Member
Aug 12, 2019
4
0
1
I know this thread is kind of old now, but there have been a few updates on it, so here goes.

Just got hold of an S2600CP4, and put it in a generic 4U 24 Bay server chassis. I've installed a total of 8 fans with the following specifications

3 x Arctic 120mm PWM fans - 230RPM-1350RPM - (SYS_FAN 1-3)
2 x Arctic 92mm PWM fans - 500RPM-2000RPM - (CPU 1-2)
3 x Arctic 80mm PWM fans - 300RPM-2000RPM - (Rear fan (header 7...two chained together) and SYS_FAN 4)

I've been trying to get my head around the information in this thread, but I simply cannot come to terms with it. I've tried making various changes to the SDR files, for fan curves, and fan speeds etc etc, and none of my changes have had any effects; the fans continue to run at 100% at all times, making too much noise considering it will have to be in a room that people use regularly.

I would really appreciate it if someone who has had success with SDR modifications could offer some support on this, since everything I have tried just hasn't seemed to work.
 

mb300sd

Active Member
Aug 1, 2016
197
74
28
30
Very useful info, will dig into it more later. My S2600STB in Supermicro SC836 runs relatively quiet for now but the build isn't done yet. I had to rewire the chassis sensor since apparently Intel uses a NC sensor and SM uses a NO sensor.
 

marcoi

Well-Known Member
Apr 6, 2013
1,403
224
63
Gotha Florida
you could set the board for factory mode but you need to edit the master.cfg file before running updateFRUSDR.nsh file.
If you look at the master.cfg gile you will see a section, uncomment out the SET factory like so:

//If it's for factory use, please un-comment FACTORY_MODE tag
SET "FACTORY_MODE"

I havent done this in a while so my instructions might be off. But if it does work you will see a new menu option for factory mode. it will set the fans to run lower then 100%. I dont know exactly but it might help you while you figure out the specific changes you need to do.