Skip to the content
PCBKitNew board
2 layers55 × 45 mmAtx psu controller, the printed circuit board in 3D

Atx psu controller

ffosilva/psu-controller

Discrete ACPI-coordinated ATX power supply controller with remote ESP wake and telemetry latching

Size
55 × 45 mm
Copper layers
2
Thickness
1.6 mm
Parts
23
Nets
15
Pads
53
Tracks, vias
60, 0
Pours
1
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
19 Oct 2026
Updated
19 Oct 2026

Overview

Atx psu controller is an open-source printed circuit board by ffosilva, from the ffosilva/psu-controller repository on GitHub, published under the MIT licence. It is a 2-layer board of 55 × 45 mm with 23 parts on 15 nets, routed with 60 tracks and 0 vias.

It is built around the BS250. Its parts include 5 resistors, 5 transistors, 5 connectors and 3 diodes. It belongs with the power and computers and single-board computers boards of this library.

Main components

1

README

README.md

ATX Power Supply Controller (psu-controller)

License: MIT KiCad Version PCB Stackup Through-Hole

A discrete, analog hardware controller designed to sequence and manage standard ATX power supplies for non-standard motherboards, repurposed compute platforms (such as the AMD BC-250 mining board), single-board computers, and custom electronics fixtures.


📖 Table of Contents


⚡ Motivation & Problem Solved

Repurposed compute hardware (such as headless crypto-mining boards like the AMD BC-250, embedded industrial boards, and retro computing conversions) often lack standard front-panel ATX power management circuits.

Without a dedicated controller:

  1. The Green Wire Hack: Operators typically short the ATX PS_ON# wire (green) to Ground (black) with a jumper clip or switch.
  2. 24/7 Power Waste & Wear: The power supply and all chassis fans remain powered continuously at high wattage—even after the operating system cleanly halts and unmounts disks.
  3. Loss of ACPI Control: Pressing a chassis button cannot trigger an ACPI graceful shutdown, risking filesystem corruption.

The ATX Power Supply Controller eliminates jumpers by providing an intelligent, fully autonomous, discrete hardware sequency bridge between any ATX power supply, the host motherboard, and your chassis buttons/LEDs.


✨ Key Features

  • Cold Boot RC Sequencing: Momentary chassis button tap charges a timing capacitor ($C_{hold} = 22\ \mu\text{F}$ via $R_{bleed} = 120\text{ k}\Omega$), asserting ATX PS_ON# for ~3.5 seconds to allow the host to spin up.
  • Active Telemetry Latching: Continuously monitors host power state via a 3.3V telemetry pin (e.g., TPM header pin HOST_ON). Once booted, host voltage locks PS_ON# low indefinitely.
  • Safe ACPI Button Mirroring: Routes button pulses to the host's power button pad (BTN_OUT) through an open-drain N-channel MOSFET (2N7000), allowing:
    • Short tap (200 ms): Graceful OS ACPI shutdown without dropping ATX main power prematurely.
    • Long press (4.0 seconds): Hardware-level emergency forced power cut when OS kernel freezes.
  • Automated Standby Transition: When the operating system finishes shutting down, HOST_ON drops to 0V. The controller de-asserts PS_ON# within 300 ms, putting the ATX power supply back into standby ($< 50\ \mu\text{A}$ quiescent draw).
  • Remote Microcontroller Wake (ESP_WAKE): Accepts a 3.3V logic pulse from an ESP32, ESP8266, or Raspberry Pi Pico to power on the system remotely over WiFi/Bluetooth.
  • Hardware Remote Inhibit: Uses an NPN transistor clamp to hardware-shunt ESP_WAKE directly to ground whenever the system is running, preventing accidental resets or wake loops.
  • Chassis Power LED Driver: Built-in low-side switched driver (~15 mA) indicates true host system state.
  • 100% Discrete Through-Hole Parts: Built entirely with cheap, universally available "jellybean" components (TO-92 transistors, axial 1/4W resistors, DO-41 diodes, radial capacitors).
  • DIY Single-Sided PCB Design: 1-layer bottom copper routing (B.Cu only, zero vias, zero top-side copper traces) designed specifically for home etching (toner transfer / photoresist) or desktop CNC milling.

🏗 System Architecture

text
+---------------------+               +-----------------------+
|   Chassis Front     |               |    ATX Power Supply   |
|       Panel         |               |      (24-Pin Main)    |
|                     |               |                       |
| [Power Button]      |               |  Pin 9  (+5VSB, Purp) |
| [Power LED Ring]    |               |  Pin 16 (PS_ON#, Grn) |
|                     |               |  Pin 3  (GND, Blk)    |
+----------+----------+               +-----------+-----------+
           |                                      |
           | 4 wires                              | 3 wires
           v                                      v
     +-----+--------------------------------------+-----+
     |                                                  |
     |         ATX POWER SUPPLY CONTROLLER PCB          |
     |          (55 mm x 45 mm Single-Sided)            |
     |                                                  |
     +-----+--------------------------------------+-----+
           ^                                      ^
           | 2-3 wires                            | 2 wires
           |                                      |
+----------+----------+               +-----------+-----------+
| ESP32 / ESP8266     |               |   Host Motherboard    |
| Microcontroller     |               |     (AMD BC-250)      |
|                     |               |                       |

🔬 Theory of Operation

text
========================================================================================
                          CIRCUIT SCHEMATIC OVERVIEW
========================================================================================

                                  +5VSB (J1 Pin 1, ATX Pin 9)
                                       |
                +----------------------+-------------------------------+
                |                      |                               |
            [R1: 10k]             Source [Q1: BS250]               [R_led: 330R]
                |                    (P-Ch MOSFET)                     |
  BTN_IN -------+------------------+ Gate                              v Anode
  (J3 Pin 1)    |                      | Drain                      [Power LED]
             [C_deb: 100nF]        [D2: 1N5819]                     (J4 Pin 1)
                |                      |                               | Cathode
  GND ----------+                      v                               (J4 Pin 2)
                                 Node [V_GATE]                         |
  HOST_ON (3.3V TPM) -----[D1: 1N5819]-+                               |
  (J2 Pin 1)                           |                               |
                                       |                               |
  ESP_WAKE (3.3V) ----[R5: 1k]---------+-----[D3: 1N5819]--+          |
  (J5 Pin 2)          |                                    |          |
                   Collector                               v          |
                      |                             +-------------+   |
  HOST_ON ---[R6: 10k]+ Base [Q5: 2N3904]           | [C_hold]    |   |
  1. Standby (Off): ATX mains is plugged in. +5VSB is active. Node V_GATE is 0V, $Q_2$ is OFF, PS_ON# floats at 5V, power draw is $< 50\ \mu\text{A}$.
  2. Cold Power-On: Pressing the chassis button pulls $Q_1$ gate low, turning $Q_1$ ON. A 5V pulse charges $C_{hold}$ ($22\ \mu\text{F}$) through Schottky diode $D_2$ in $< 2\text{ ms}$, immediately turning ON $Q_2$ and pulling PS_ON# to GND.
  3. Hold-Up Timer: Once released, $C_{hold}$ discharges through $R_{bleed}$ ($120\text{ k}\Omega$). $Q_2$ remains fully saturated for ~3.5 seconds, giving the host ample time to power on and initialize.
  4. Active Latching: As the host boots, its 3.3V TPM header asserts HOST_ON. Diode $D_1$ conducts, locking V_GATE to ~3.05V indefinitely.
  5. ACPI Button Mirroring: While running, pressing the front panel button turns on $Q_3$, pulling the motherboard power pad (BTN_OUT) to ground. The OS registers the ACPI event and initiates a clean shutdown. PS_ON# stays grounded by HOST_ON during shutdown.
  6. Graceful Power Cut: When the OS halts, the motherboard turns off and HOST_ON drops to 0V. $D_1$ stops conducting, $C_{hold}$ discharges in ~300 ms, $Q_2$ turns off, and the ATX supply turns off main rails.
  7. Emergency 4-Second Override: If the OS freezes, holding the button for 4.0 seconds holds BTN_OUT low, triggering the motherboard hardware supervisor force-off.
  8. Remote Wake & Hardware Inhibit: A 3.3V pulse on ESP_WAKE charges $C_{hold}$ via $D_3$, turning on the PSU. When the host is already running, $Q_5$ clamps the wake input directly to GND, preventing unexpected glitches.

🔌 Header Pinout & Wiring

HeaderPinSignalTarget ConnectionDescription
J1: ATX PSU1+5VSBATX 24-Pin Pin 9 (Purple)Standby +5V DC power
2PS_ON#ATX 24-Pin Pin 16 (Green)Active-low main rail enable
3GNDATX 24-Pin Pin 3/5/7/15/17 (Black)Common system ground return
J2: Host Board1HOST_ONMotherboard TPM Header Pin 1 (3.3V)Active power telemetry sense line
2BTN_OUTMotherboard PWR_BTN# Solder PadOpen-drain ACPI button pulse output
J3: Chassis Button1BTN_INPushbutton Terminal 1Momentary switch active-low input
2GNDPushbutton Terminal 2Switch ground return
J4: Power LED1LED+Power LED Anode (+)+5V DC current-limited via onboard 330Ω
2LED-Power LED Cathode (-)Low-side switched ground via $Q_4$
J5: Remote MCU1+5VSBESP32 VIN / 5VStandby power for external MCU
2ESP_WAKEESP32 GPIO (Output)Remote wake active-high (3.3V) pulse
3GNDESP32 GNDShared ground return

[!TIP] Use an ATX 24-pin extension cable to tap Pin 9 (+5VSB), Pin 16 (PS_ON#), and Ground without altering or cutting your power supply harness.

For full pinouts, motherboard solder points, and step-by-step assembly advice, see docs/wiring-guide.md.


📦 Bill of Materials (BOM)

All components are standard through-hole parts with wide global availability:

RefQtyPart / ValueDescriptionPackageExample MPN
Q11BS250P-Channel Logic MOSFET (-45V, 180mA)TO-92BS250P (or 2N3906 PNP)
Q2, Q322N7000N-Channel Logic MOSFET (60V, 200mA)TO-922N7000
Q4, Q522N3904NPN General Purpose BJT (40V, 200mA)TO-922N3904
D1, D2, D331N5819Schottky Barrier Diode (40V, 1A, $V_F \approx 0.25\text{V}$)DO-41 Axial1N5819
C_hold122 µF, 25VRadial Aluminum Electrolytic CapacitorRadial Ø5mmECA-1EHG220
C_deb, C_byp2100 nF (0.1 µF)Multilayer Ceramic Capacitor (50V)Radial 2.54mmC315C104K5R5TA
R1, R6210 kΩ, 1/4WMetal / Carbon Film Resistor (5%)Axial 7.62mmCFR-25JB-52-10K
R2, R521 kΩ, 1/4WMetal / Carbon Film Resistor (5%)Axial 7.62mmCFR-25JB-52-1K
R414.7 kΩ, 1/4WMetal / Carbon Film Resistor (5%)Axial 7.62mmCFR-25JB-52-4K7
R_bleed1120 kΩ, 1/4WMetal / Carbon Film Resistor (5%)Axial 7.62mmCFR-25JB-52-120K
R_led1330 Ω, 1/4WMetal / Carbon Film Resistor (5%)Axial 7.62mmCFR-25JB-52-330R
J1, J523-Pin Header2.54mm (0.1") Male Pin Header1x03 THTStandard 2.54mm Header
J2, J3, J432-Pin Header2.54mm (0.1") Male Pin Header1x02 THTStandard 2.54mm Header

For detailed component substitutions, pinouts, and purchasing links, see docs/bom.md.


🛠 PCB Layout & Manufacturing Specs

The PCB is built in KiCad 8 as a true single-sided layout:

  • Board Dimensions: $55.0\text{ mm} \times 45.0\text{ mm}$
  • Layer Stackup: 1-Layer Copper (B.Cu bottom solder side only). Zero copper traces on F.Cu, zero vias.
  • Top-Side Crossover Strategy: Resistor R2 ($10.16\text{ mm}$ axial span) and diode D1 ($7.62\text{ mm}$ axial span) act as natural component bridges across bottom copper traces on B.Cu, avoiding the need for wire jumpers.
  • DIY Etch / Desktop CNC Milling Tolerances:
    • Power / Ground Traces: 0.80 mm
    • Signal Traces: 0.60 mm
    • Minimum Copper Clearance: $\ge 0.45\text{ mm}$
    • Component Pads: 1.80 mm outer diameter (0.8 mm drill)
    • Connector Pads: 2.00 mm outer diameter (1.0 mm drill)
    • Expanded TO-92 Footprints: $\ge 2.54\text{ mm}$ lead spread for easy hand soldering and generous isolation.

Manufacturing Files (kicad/gerbers/)

  • atx-psu-controller-B_Cu.gbr — Bottom copper layer (traces & ground plane)
  • atx-psu-controller-B_Mask.gbr — Solder mask (bottom)
  • atx-psu-controller-F_SilkS.gbr — Top silkscreen (component placement & polarity)
  • atx-psu-controller-Edge_Cuts.gbr — Board outline
  • atx-psu-controller-PTH.drl — Excellon drill file (component holes only, no via drills)

🧪 Bench Testing & Verification

Before installing into your system, complete bench verification using a DC power supply and multimeter:

  1. Pre-Power Continuity Check: Measure resistance between +5VSB and GND ($> 100\text{ k}\Omega$), and between PS_ON# and GND ($> 1\text{ M}\Omega$).
  2. Standby Current Draw: Apply 5.0V to J1.1. Quiescent current must measure $< 50\ \mu\text{A}$ (typically $\sim 12\ \mu\text{A}$).
  3. Cold Boot Hold-Up Time: Tap BTN_IN to GND. PS_ON# drops to $< 0.1\text{V}$ instantly and remains low for $2.5\text{s}$ to $3.5\text{s}$ before releasing.
  4. Telemetry Latch: Apply 3.3V to HOST_ON within 2 seconds of button press. PS_ON# stays latched low indefinitely; the status LED lights up.
  5. ACPI Button Mirroring: Tap BTN_IN. BTN_OUT pulses low ($< 0.1\text{V}$) while PS_ON# remains held low without interruption.
  6. Graceful Shutdown: Remove 3.3V from HOST_ON. PS_ON# releases within 300 ms, and the LED turns off.
  7. Remote Wake & Inhibit: 3.3V pulse on ESP_WAKE starts the PSU. When HOST_ON is 3.3V, ESP_WAKE is clamped to ground by $Q_5$.

For full testing protocols and verification logs, see docs/testing.md.


⚙ Host BIOS Configuration

To take full advantage of automated cold-boot sequencing:

  1. Enter your motherboard BIOS setup during boot (DEL or F2).
  2. Go to Advanced $\rightarrow$ ACPI Configuration / Power Management.
  3. Set "Restore on AC Power Loss" (or "State After G3") to Power On (or Always On).
  4. Save and exit (F10).

The host motherboard will now automatically boot the moment the ATX controller supplies +12V power!


📁 Repository Structure

text
psu-controller/
├── docs/
│   ├── schematic.md         # Full ASCII schematic, netlist & circuit theory
│   ├── bom.md               # Complete Bill of Materials, footprints & substitutions
│   ├── wiring-guide.md      # Pinout, cable harnesses & motherboard solder points
│   ├── testing.md           # Bench test protocol, checklist & measurements
│   └── circuit-ideas.md     # Reference comparison (555 timers, flip-flops, latches)
├── kicad/
│   ├── atx-psu-controller.kicad_pro   # KiCad 8 project file
│   ├── atx-psu-controller.kicad_sch   # KiCad schematic
│   ├── atx-psu-controller.kicad_pcb   # KiCad single-sided PCB layout
│   └── gerbers/                       # Gerber RS-274X & Excellon drill files
├── openspec/
│   ├── config.yaml          # OpenSpec workspace configuration
│   ├── specs/               # Active system specifications
│   │   ├── atx-power-control/spec.md
│   │   └── pcb-layout/spec.md
│   └── changes/archive/     # Archived design proposals and implementation tasks
└── README.md                # Project documentation and user guide

📚 Documentation Index


📄 License

This hardware project is open-source and released under the MIT License.

Parts

23
QtyValueFootprintReferences
31N5819Diode_THT:D_DO-41_SOD81_P7.62mm_HorizontalD1, D2, D3
2100nFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.54mmC_byp, C_deb
210kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R6
21kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR2, R5
22N3904Package_TO_SOT_THT:TO-92_HandSolderQ4, Q5
22N7000Package_TO_SOT_THT:TO-92_HandSolderQ2, Q3
1120kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR_bleed
122uFCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC_hold
1330RResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR_led
14.7kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR4
1ATX_PSUConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ1
1BS250Package_TO_SOT_THT:TO-92_HandSolderQ1
1CHASSIS_BTNConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ3
1ESP_WAKE_HDRConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ5
1HOST_BC250Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ2
1PWR_LEDConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ4

Questions

How big is the Atx psu controller PCB?

It measures 55 × 45 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Atx psu controller use?

23 parts, built around the BS250. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Atx psu controller KiCad files?

From the ffosilva/psu-controller repository on GitHub, at the commit this page was made from: the board is kicad/atx-psu-controller.kicad_pcb and its schematic kicad/atx-psu-controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Atx psu controller design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layersRaposfly UPS, the printed circuit board in 3D

    Raposfly UPS

    LenaicElsig/ups-RaspberryPi

    Uninterrupted power supply for Raspberry Pi

    45 parts4
  • 4 layers151.1 × 71.1 mmMakeItRain, the printed circuit board in 3D

    MakeItRain

    TJLTM/MakeItRain

    DIY ESP-32 Based sprinkler Controller

    76 parts3
  • 2 layers125 × 72 mmGPS Tracker V1, the printed circuit board in 3D

    GPS Tracker V1

    Amazon-Master/gps-rtk-tracker

    Firmware, dashboard, and prototype PCB files for a portable RTK GNSS tracker built around a Heltec WiFi LoRa 32 V4 and a Waveshare/Quectel LG290P receiver.

    48 parts1MIT
  • 2 layers55 × 34 mmKnurCAN V2, the printed circuit board in 3D

    KnurCAN V2

    chrumck/KnurDash

    A racing logger for an ND2 Mazda MX-5, integrating wide ranging functionality into one unit:

    23 parts1MIT
  • 2 layers190 × 95 mmEausure measurement node, the printed circuit board in 3D

    Eausure measurement node

    adam-dev-hub/eausure-v1

    Complete IoT water quality monitoring ecosystem spanning embedded firmware, LoRa gateways, cloud APIs, mobile/web supervision, and PCB/mechanical design.

    53 parts
  • 2 layers100.4 × 100 mmECE4450 FinalProject, the printed circuit board in 3D

    ECE4450 FinalProject

    bakerbass/ece4450filter

    This project is to create a functioning circuit on a Tangible Waves form-factor module.

    64 parts
  • 2 layers109 × 64 mmHyundai Dash V1.1, the printed circuit board in 3D

    Hyundai Dash V1.1

    eymenyg/sim_dash

    Download hyundaidashv1bng .zip from the Releases page and copy it to:

    29 parts