VRM modify ICC_MAX to run high TDC/TDP OEM processors

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

ctrl-alt-del

New Member
Feb 28, 2024
2
1
3
8251C - 2666 Mt
Ok, thanks for confirming. Seems that the 2666 MT memory bus rate is a common property of the "C series platinum", then.

People assembling such machines for their homelab can thus pick cheaper 2666 RDIMMs.

I "wasted" a few euros for faster ones, but well, now I am ready when the non-C regular variants flood the market in some 5-10 years. ;)
 

frontleg

New Member
Nov 10, 2021
3
0
1
Thank you! They are TPS53679.

So in principle, I can follow this instruction, am I right?

download and install MCP2221CLI and MCP2221 Terminal from microchip site.
at least you need to install the MCP2221 USB driver.
start in cmd window or create a link.

usage examples:
MCP2221a_iccmax_FF.exe -TPS53679 58 REM X11SPi/X11DPL/X11DPH first
MCP2221a_iccmax_FF.exe -TPS53679 60 REM X11DPL/X11DPH second

my latest APP support a bus scan which can tell you what type of controller found.
View attachment 35593
 

RolloZ170

Well-Known Member
Apr 24, 2016
5,369
1,615
113
Thank you! They are TPS53679.

So in principle, I can follow this instruction, am I right?

download and install MCP2221CLI and MCP2221 Terminal from microchip site.
at least you need to install the MCP2221 USB driver.
start in cmd window or create a link.
REM = remark
replace the addresses with the correct ones of the board, its possible they match 58 and 60.
"MCP2221a_iccmax_FF.exe -TPS53679 58"
"MCP2221a_iccmax_FF.exe -TPS53679 60"
 

Slothstronaut

Member
Apr 27, 2022
34
58
18
Waiting for a MCP2221a to come in stock to get this, does anyone know how this could be done with a Bus Pirate that I already have? I have it connected and the scan does see the devices but unsure of exactly what registers I should be looking at.

Thanks!
 

RolloZ170

Well-Known Member
Apr 24, 2016
5,369
1,615
113
Waiting for a MCP2221a to come in stock to get this, does anyone know how this could be done with a Bus Pirate that I already have? I have it connected and the scan does see the devices but unsure of exactly what registers I should be looking at.
check the devices.xml for EVC on first page
i don't know Bus Pirate. if it is a multi busmaster capable device it should work.
i can not help more this time.
don't let me be misunderstood:

normaly you need vendors USB2I2C device and vendors Software.
i.e. for PXE1610C you need infineon dongle PXDNGL01TOBO1
and the Primarion/Infineon PowerCode software, needs a Licence from Infineon.
even with this all it is difficult to do the mod. because there is BMC and PCH talking on I2C.
For MP2955A (MPS) you need vendor USB dongle and MPS software, same for Texas Instruments TPS53679....

I finaly managed to do this all with a cheap($8usd) Adafruit MCP2221a and my c# app.
 

Slothstronaut

Member
Apr 27, 2022
34
58
18
Thanks for the quick reply.

This BusPirate board does basically the same thing as the MCP2221a, it's just a lot more low-level and you get a console to bit-bang your way thru I2C commands to read/write to the bus. The board I have (SuperMicro X11DPH-T) has the PXE1610C, I have run a query on the board and gotten this back:

Code:
I2C>(1)
Searching I2C address space. Found devices at:
0x00(0x00 W) 0x01(0x00 R) 0x19(0x0C R) 0xB0(0x58 W) 0xB1(0x58 R) 0xB4(0x5A W) 0xB5(0x5A R) 0xB6(0x5B W) 0xB7(0x5B R) 0xB8(0x5C W) 0xB9(0x5C R) 0xBC(0x5E W) 0xBD(0x5E R) 0xC0(0x60 W) 0xC1(0x60 R) 0xC4(0x62 W) 0xC5(0x62 R) 0xC8(0x64 W) 0xC9(0x64 R) 0xCC(0x66 W) 0xCD(0x66 R)
I believe the controllers I need to work with are at 0x60 and 0x62, which translate to 0xC0 for writing to 0x60 and 0xC1 for reading from it etc.

However, I don't know what specific registers and locations I need to read/write to. I tried following your post on the first page that showed the Microchip Terminal and its commands, which translate like this (Your code first, mine below it):

Code:
write byte addr=00h, value=3Fh REM set Page to 63
write word addr=27h, value=B37Ch REM set reg_pwd - allow to change registers
write byte addr=00h, value=20h REM set Page to 32
write word addr=73h, value=00FFh REM set icc_max to 255Amps

[0xC0 0x0 0x3F]            Set Page 63
[0xC0 0x27 0xB3 0x7C]    Remove reg_pwd to allow hack
[0xC0 0x0 0x20]            Set Page 32
[0xC0 0x73 0x0 0xFF]    Set ICC_MAX to 255A
For the Bus Pirate, the "[" symbol is the I2C START command, followed by the address, then the register and then any data byte(s), closed off with a I2C STOP command "]"

I am able to get some responses, but I wasn't sure if the post is an example for your specific board or if those registers/values are the same for all the same board. Here is an example of the above code, which is trying to read out the ICC_MAX value without making any changes:

Code:
I2C>[0xC0 0x0 0x3F]
I2C START BIT
WRITE: 0xC0 ACK
WRITE: 0x00 ACK
WRITE: 0x3F ACK
I2C STOP BIT
I2C>[0xC0 0x27 0xB3 0x7C]
I2C START BIT
WRITE: 0xC0 ACK
WRITE: 0x27 ACK
WRITE: 0xB3 ACK
WRITE: 0x7C ACK
I2C STOP BIT
I2C>[0xC0 0x0 0x20]
I2C START BIT
WRITE: 0xC0 ACK
WRITE: 0x00 ACK
WRITE: 0x20 ACK
I2C STOP BIT
I2C>[0xC0 0x73 [0xC1 r:4]
I2C START BIT
WRITE: 0xC0 ACK
WRITE: 0x73 NACK
I2C START BIT
WRITE: 0xC1 ACK
READ: 0xFF  ACK 0xFF  ACK 0xFF  ACK 0xFF
NACK
I2C STOP BIT
I2C>
The last command [0xC0 0x73 [0xC1 r:4] is where I think I am making a mistake because the response (0xFFFFFFFF) doesn't seem right. I understand how to make the BusPirate communicate on the I2C bus, i'm just stuck translating the instructions from the Microchip XML to the commands I need to run.

At this point I might just wait until I can get a MCP2221a, so far they have been all out of stock. I had this device from tinkering on another project and thought I would give it a go but it has been a head scratcher!

Thanks again for the assistance, I know I am blazing my own trail here, I will keep tinkering.
 

Slothstronaut

Member
Apr 27, 2022
34
58
18
OK, more coffee, found my error with how I was running those commands and now get some output and realized my actual question I was trying to ask.

I understand the structure of the command is <start> <device> <register> <data> but where do pages come in and how are they requested? I understand the concept of pages in memory devices, and assuming that is what is going on here but I haven't dealt with them on an I2C bus. I tried <start> <device> <register> <page> <data> and it got some output, but not what i was expecting. I am assuming the datasheet for the PXE1610C would give me the exact info I need but the one's I have found didn't have I2C info in them.
 

RolloZ170

Well-Known Member
Apr 24, 2016
5,369
1,615
113
I understand the structure of the command is <start> <device> <register> <data> but where do pages come in and how are they requested?
the page reg. is on adr. 00h (PMBus spec)
i understand the concept of pages in memory devices, and assuming that is what is going on here but I haven't dealt with them on an I2C bus. I tried <start> <device> <register> <page> <data> and it got some output, but not what i was expecting. I am assuming the datasheet for the PXE1610C would give me the exact info I need but the one's I have found didn't have I2C info in them.
i mentioned the device.xml without still knwing what you want to do.
they are for MP2955A and TI TPS53679, not for PXE1610C.
I am assuming the datasheet for the PXE1610C would give me the exact info I need but the one's I have found didn't have I2C info in them.
with a company background and a NDA contract you will get it.
 

Slothstronaut

Member
Apr 27, 2022
34
58
18
Perfect, that makes WAY more sense now that I see the responses I am getting. Right now the goal is to read the values out and make sure I am looking at the right thing before modifying them for 255A.

Two (hopefully) last questions. 1. The page register is located at addr 0x0, but when trying to read from register 0x82 I get a NACK, I believe my command format is not correct, what would be an example for reading out a single byte value. 2. What should I expect an unmodified SM X11DPH-T ICC_MAX value to be?

I assumed I wouldn't find a datasheet with that info, they will protect that very well.

Thanks again for the help, I might have found a MCP2221a in stock but it will be 2+ weeks to get here :(

The MCP2221a and the Bus Pirate both speak the same language (I2C) but the BP doesn't do a lot of the control commands automatically like the Microchip app does so I'm struggling thru it manually, but it's teaching me a lot about I2C/PMBus!
 

RolloZ170

Well-Known Member
Apr 24, 2016
5,369
1,615
113
1. The page register is located at addr 0x0, but when trying to read from register 0x82 I get a NACK, I believe my command format is not correct, what would be an example for reading out a single byte value.
just a read. don't expect data.
2. What should I expect an unmodified SM X11DPH-T ICC_MAX value to be?
ICC_MAX=228A
 
  • Like
Reactions: Slothstronaut

Slothstronaut

Member
Apr 27, 2022
34
58
18
Your help has gotten me further this morning than all of last week. Thanks!

Here is where I am stuck, and I am betting its something dumb:

Code:
## Commands I ran with comments added
I2C>[0xC0 0x0 0x20]    # Write to device 0xC0 register 0, page 0x20
I2C START BIT
WRITE: 0xC0 ACK
WRITE: 0x00 ACK
WRITE: 0x20 ACK    # got an ACK, all good
I2C STOP BIT
I2C>[0xC0 0x73 [0xC1 r:2] # Write to device 0xC0 again with the command 0x73, followed by read from same device
I2C START BIT
WRITE: 0xC0 ACK
WRITE: 0x73 NACK ###### Uh oh, NACK received, didn't like that command
I2C START BIT
WRITE: 0xC1 ACK
READ: 0xFF  ACK 0xFF # Gibberish data back
NACK
I2C STOP BIT
Clearly my read command is not correct, as it balks at the 0x73 command and dumps 0xFF as a reply. If i sniff around using other commands, I do get results back. Reverse-engineering your application a bit, it appears you are doing basically the exact same thing but handing off the actual SMBus communication to the DLL which is where i lose visibility into how the packets are constructed. Can you offer any guidance? Once i can get this packet formatted correctly, the rest I can figure out.

Again, thank you so much for the quick assistance!
 

RolloZ170

Well-Known Member
Apr 24, 2016
5,369
1,615
113
it appears you are doing basically the exact same thing but handing off the actual SMBus communication to the DLL which is where i lose visibility into how the packets are constructed. Can you offer any guidance?
its not my dll, ask microchip.
did also not work with EVC, so i tried MCP2221a.
 

frontleg

New Member
Nov 10, 2021
3
0
1
REM = remark
replace the addresses with the correct ones of the board, its possible they match 58 and 60.
"MCP2221a_iccmax_FF.exe -TPS53679 58"
"MCP2221a_iccmax_FF.exe -TPS53679 60"
Hi, RolloZ170, need you kindly help, again. Any suggestions according to the following snapshot? Thank you!

1.png
 

codypendant

New Member
Jan 12, 2024
15
2
3
@RolloZ170 I just want to shout out for making these guides! My mcp2221a just came in and I got the breadboard wires soldered onto the board. My server (Dell R740xd) didn’t have the holes blocked off on P4 header so the breadboard wires worked out perfect. I just held all 3 in the header holes with my finger and already had console up on my laptop and hit enter. Thanks to his amazing guides (and console app!) my server now has 2x platinum 8272cl. The actual programming took all of 3 seconds. Thanks again!
 
  • Like
Reactions: RolloZ170

RolloZ170

Well-Known Member
Apr 24, 2016
5,369
1,615
113
need Adafruit MCP2221A (or similar with microchip MCP2221A)
locate on your X11DAi JVRM1 & JVRM2
Remove the JVRM1/2 jumpers and connect the I2C :
JVRM1 pin2 = SCL
JVRM2 pin2 = SDA
JTPM Header Pin6 = GND (or any other GND pin)
VRM controller should be TPS53679 addr 58 & 60
check the readme in my c# console app package