FAQ: Do-It-Yourself Startup/Shutdown Controllers

07-07-2005, 12:21 AM

A startup/shutdown controller (SDC) is a device that automatically starts your computer (usually when the car is started or the key is turned to the ignition or accessory position) or shuts it down when the car is turned off. This prevents you from having to switch the system on using a manual switch or relay and also from having to select "shutdown" from your Start or Apple menu.

There are several purpose built commercial startup/shutdown controllers (SDC's) available. The mp3car.com store carries 3 types (here) and there are others available as well. In addition, most commercial power supplies and regulators include startup and shutdown features in their packages.

The reason you need a shutdown controller is that your PC may hang on shutdown, even after receiving the command to shut down (or hibernate). If this occurs, the PC will continue to run and may drain your battery. Most SDC's will shut power off after a certain amount of time (say, 45 seconds) to prevent this from occuring.

Commercial SDC's have a variety of features that often allow the user to specify how the sequence and timing of the startup/shutdown commands occur and they range in price from around $40-$70 USD.

There are other alternatives, however. Several members have come up with solutions to build your own SDC. Here are links to some of those threads:

Comment

...I understand how the startup/shutdown controller works. However, when it goes to shutdown the PC is it basically doing a "hard" shutdown? Same as holding down the power button on the PC vs Start / Shutdown?

Comment

This would be my first post here. I'm a A+ Certified and an active MCDST. Though I've seen enough idiots who hold these certifications; so it doesn't mean much.

I think I can give helpful input to this discussion.

I don't see why you guys are doing crazy stuff like the huge schematic MATRIXPC posted; when all we want is for the computer to shut off when the car does.

We should just have the serial port monitor ACC voltage and in the absense of such voltage execute shutdown through the operating system. Why mess with relays, components and the power pin headers on the motherboard at all when this can be 100% software driven ensuring a safe and graceful shutdown all the time?

And why pay, when I'm giving you the SOURCE CODE to a probably working program at the bottom of this post?! Compile the program for your computer yourself!

Here's a simple C program that would do the trick in Linux. In Windows, you might have to use some weird API, and surely windows.h, primarly why I hate Windows. It's a pain in the *** to program in.

This program must be run in root. I haven't had a chance to compile and test this program yet on a serial port to see if it works, but it'll have to run under root (since it uses the shutdown command.)

To get the serial port going, just plug in a +3vDC - +12vDC ACC wire in to pin 8 of your serial port. This program will do the rest. (You may have to ground the ports ground to your car chassis, and this is for sure if you're using an inverter)

To compile and run this program just save this code in a file called controller.c -- and type gcc -o controller controller.c -- To start this program simply type ./controller and you're set!

You might want to change this program so after it detects the absense of ACC it will start a countdown (5 minutes?) and at the end of such a countdown have it check again for ACC. If ACC is STILL not present, THEN do the shutdown command. This would be useful if you stop at 7-11, shut the car off, go inside, and them come back out -- since 5 minutes of the PC running off the battery wouldn't drain it (and so when you came back with your Slurpee, you wouldn't have to start the machine back up)

I came up with this idea pretty much myself; and my philosophy is KISS.

Code:

/*Copyright (C) 2006 Jonathan Kelley
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
You should be able to grab a copy of the license at http://www.gnu.org/copyleft/gpl.html
if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
TO DUMB THIS LICENSE DOWN FOR THOSE WHO NEVER
HEARD OF THE GNU/GPL LICENSE BEFORE; IT CONTAINS
THESE 4 MAIN POINTS.
1) Not establish proprietary rights in the software (Once you
write it, everyone gets to enjoy it; altough the software
derrived from this code can be sold commercially);
2) Provide the source code (or access to the source code)
along with the object code. (Basically, requires you to reveal
or "open source" exactly how you make the software do
what it does upon user request);
3) That any programs based off, or using this code must also
be licensed by the GPL in full and include in the software
notice that the code is subject to the GPL (So that everyone
downstream can be warned); and
4) Accept the GPL code without warranties of any kind (You
got it for free, so you cannot complain if it does not work). */
#include <sys/types.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
#include <termios.h>
/* Main program. */
int main(int argc, char **argv)
{
int fd;
int status;
int set_bits = 6;
/* Open monitor device. */
if ((fd = open(argv[1], O_RDWR | O_NDELAY)) < 0) {
fprintf(stderr, "ar-2: %s: %s\n",
argv[1], strerror[errno]);
exit(1);
}
int x = 0;
for ( x = 0; x < 100000; x++ ) {
ioctl(fd, TIOCMSET, &set_bits);
ioctl(fd, TIOCMGET, &status);
if (status & TIOCM_CTS)
puts("ACC Voltage is present. Do nothing");
else
puts("ACC Voltage has been lost! Start shutdown process.");
system("shutdown -h now");
}
close(fd);
}

Comment

This would be my first post here. I'm a A+ Certified and an active MCDST. Though I've seen enough idiots who hold these certifications; so it doesn't mean much.

I think I can give helpful input to this discussion.

I don't see why you guys are doing crazy stuff like the huge schematic MATRIXPC posted; when all we want is for the computer to shut off when the car does.

.......

don't take this the wrong way but there are already programs similar to yours and what you're suggesting is more (or just as) complicated as the other shutdown controler methods. Why not just use UPS software already part of XP? also you're missing a key element, power up. Either way, if you want a carPC you're going to have to get some wiring done with relays, fuses and grounds. I don't mean to shoot down your idea, i just think you still need to learn a bit more about car electronics and carPCs. It's a good thing that you're giving your share of knowlege.

BTW, i agree MatrixPC's idea is very complex but it's an brilliant schematic and could be very useful to someone that understands it. For the rest of us (not electrical engineers) there's plenty of solutions for shutdown controlers varying from cheap and complicated to simple and expensive.

Comment

I'm way over my head here but how hard would it be to design a small circuit that when it senses power off, a small memory chip would send the Tsshutdn command via serial port (or USB?????) and if the Bios had the option, wake on ring?

Seems like a breadboard would be cheap enoug.

I know this might be simplistic and possibly covered before but I searched

on "Tsshutdn" and got no hits.

Comment

Ive looked on this site and couldnt find it, so If I'm posting an already done question, please lemme know and Ill delete....
Anyway,
Can you use this for a laptop? I would have to remove the battery and solder on the contacts for this from my opus? And speakin of opus, my laptop battery is 11.1V 4320mAh, which opus should I get? I dont know about this kind of electronics. I've also got a screen to consider and more than likely a few other add ons...Im thinking an 80 watt opus. But I dont know...
Pardon the n00bness...

Comment

\
Anyway,
Can you use this for a laptop? I would have to remove the battery and solder on the contacts for this from my opus? And speakin of opus, my laptop battery is 11.1V 4320mAh, which opus should I get? I dont know about this kind of electronics. I've also got a screen to consider and more than likely a few other add ons...Im thinking an 80 watt opus. But I dont know...
Pardon the n00bness...

If you are using a laptop...then you are making it too hard on yourself. Go with a remote switch. There are several examples on this site. Here was the simple, quick and cheap one I did....link.

Hey mate, I never saw this before. Thanks for the props
The latest modules I'm shipping out are sweet if I do say so myself. lol I actually built myself one of the newer ones. Though, I'm already looking at ways to improve it.
speaking of which, I have 2 I need to go build and send out as soon as I get off work. Thanks again Peace...