Sorting out PC chassis power switches for ATX power supplies

December 25, 2022

My problematic home desktop continues to be problematic, so recently over on the Fediverse I had a clever idea about 'replacing' the case front panel with just a stand-alone ATX chassis power switch tucked away somewhere, which @penguin42 suggested improving by relying on setting the BIOS to 'always power on when AC is restored' and not having a chassis power switch at all. This left me with a certain amount of curiosity about ATX chassis power switches and the matrix of possibilities for what you can do to your computer and how that interacts with BIOS 'AC loss' settings.

Famously, ATX power supplies are really controlled by the motherboard, not by any front panel case switches (although better PSUs will have a hard power switch so you don't have to yank the cord). The front panel case power switch is a soft switch that communicates with the BIOS or triggers power on, and your motherboard can have the PSU 'turn off' (which still leaves standby power flowing to the motherboard), which is what enabled modern PC Unixes to have commands like 'poweroff' and 'halt -p'. Physically, an ATX chassis power switch (the front panel switch) is normally a momentary-contact switch. It is normally off (no current flowing), but when pushed it connects the circuit for as long as you keep it pressed. Since the circuit is normally open, not having a chassis power switch connected is the same as not pressing it, so your system can still power up in this state under the appropriate conditions.

(I was reasonably certain of this but not completely sure, so I looked it up.)

BIOSes for ATX motherboards tend to have three options for what to do if AC power is lost and then return: they can stay powered off, they can always power on, or they can return to their last state (either powered off if you turned them off, or powered on if you'd turned them on). If you run 'poweroff' on your Linux system and your BIOS is set to either 'stay powered off' or 'return to last state', you will have to use the chassis power button to trigger the motherboard to power up (or possibly use the BMC on servers with it). If you run 'poweroff' on a system set to always power on when AC comes back, you can cut AC power and then turn it back on in order to get the motherboard to power back up.

(The downside of 'always power on when AC comes back' is that you need to make physical changes to make a system stay down after a power loss and restart, even if the changes are only flipping a switch.)

If you don't have a chassis power button, you can no longer power off the system from the front panel, either by triggering some sort of orderly shutdown or by holding the front panel power button down long enough that the BIOS does an immediate power off (and if you have no reset switch too, you can't trigger that either). Instead, your only option is an immediate hard power off by flipping the PSU switch. You can also no longer power the system on from the front panel; instead you need the BIOS to be set to 'always power on after AC loss' (and stay that way) and then switch AC power off and back on again, or you're going to have to open up the case to get the system back on. Some motherboards (including my home desktop) have an a motherboard push switch that you can use to trigger a power on; otherwise you'll have to reconnect the front panel (or connect a stand alone switch).

(Naturally, you want to make sure that your BIOS has a reliable 'always power on when AC power comes back' setting before you disconnect the chassis power switch from the motherboard. Otherwise you may wind up having an annoying time. This is definitely one of those changes that you want to make in the right order.)

Written on 25 December 2022.
« The systemd journal is primarily time-based
More use of Rust is inevitable in open source software »

Page tools: View Source, Add Comment.
Search:
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Sun Dec 25 23:09:36 2022
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.