Running DeepSeek-R1 on refubrished blade server: 03 Power+

Welcome back, Previous part here: Running DeepSeek-R1 on refubrished blade server: 02 Power.

Introduction/Plan

I this part I am planning to design proper PCB for power delivery and communicating with motherboard. Note:

Starting with 42A, thats a lot for PCB.

Handling currents

Calculation is actually quite easy, but there is a lot of online calculators:

All of them are based on standard published by IPC: IPC-2221A Appendix B, page 116, if you are interested in math and methods behind it

With 40A of current; 2oz copper and allowing Temperature rise of 40C we get something around of 10mm width and power loss of 1W. PCB trace width calculator results for 40A current with 2 oz copper, showing required trace widths, resistance, voltage drop, and power loss for internal and external layers.

Required pins

Now, going back to data that known about motherboard connector, and skipping unconnected traces, SATA cabling and 5V rail, we have:

S connectorVoltage in S5/G2Function
13.3V
24.8V
30V
40VPWR_OK
63.3VSMBCLK
73.2VSMBDAT
80V
144.82V
153.1V
163.1V
170V
180.2V-4.8VUID_LED
192.8V
200.2-4.8VETH_LED

Categorizing voltages, we get: 6x3.3V pins: 1,6,7,15,16,19 that can be connected to MCU directly, since their voltage is <3.3V. 8x5V pins: 2,3,4,8,14,17,18,20 that should be level converted to be used safely.

Additional nice to have: is to add voltage monitoring on 12V rail to pull down PWR_OK in cases when 12V is under ATX spec to protect motherboard and it's pci devices, small voltage divider would work ok for this, this would require 1 analog pin. So, in total 15 pins needed.

PCB design

ItemFunc
ESP32-S2-DevKitC-1MCU
TXS0108EPWRLogic level shifter
DD2712SADC-DC Step-down Buck Converter
0805 SMD Resistors

For design kicad was used. Schematic: Electronic schematic in KiCad showing ESP32-S2 connections, a TXS0108E voltage level translator, connectors, resistors, and labeled signal lines.

KiCad PCB layout showing traces, component outlines, and copper fills for a custom board with an ESP32-S2 and power connectors. And rendered version: 3D render of a custom PCB in KiCad featuring an ESP32-S2 development board footprint, gold-plated edge connector. I ordered PCBs from Allpcb, because it was the cheapest one to get 2oz copper PCB.

First try is always a failure?

2 weeks later...

It never works from first try and this time is not an exception:

  1. Incorrectly placed screw hole, so for now it's hold only by motherboard connector
  2. Wrong ESP32 ordered but I managed to fit it anyways
  3. GPIO0 is strapping pin and shouldn't be used
  4. ESP32S3 doesn't support WiFi when ADC when pin 11 is used so no voltage monitoring

But anyway, I decided to at least to try program it and check how and if it works

It doesn't, after checking with multimeter I notcied that I don't see voltages on the other side of the voltage converter. After a bit of googling, I understood that I need to tie OE pin high to enable it and also while checking schematic I found that I forgot to connect ground :(. KiCad PCB design view highlighting an unconnected pad labeled '11 unconnected'

But, simple wires connected to 3.3V and GND did the trick, now I could see pins switch between high and low. Close-up photo of a custom PCB labeled 'SuperMicro ADP Emulator v0.1' with an ESP32-S2 development board, connected wires, and a voltage regulator module. Web interface displaying GPIO states and controls for an ESP32 board, listing signals such as LED_ETHERNET, LED_UID, PS_ON State, and PWR_OK with on/off toggles. After a bit of tweaking:

Anyway, with just pulling PWR_OK high it was able to boot, once again, nice. All 256Gb RAM is visible, power consumption of booted system is around 50W (5-10W power supply, 2W for esp32, 5W for IPMI, so actual usage by CPU and RAM is around 40W) and temps are around 55C idle (without any cooling). Screenshot of the htop system monitor showing running processes, CPU usage, memory usage, and system uptime on a Linux terminal.

I next part, I will probably cover:

Thanks for reading, and until next time.

Next part: insert link when avaliable