My question is: How do I configure the pi so that i can plug it back in, it boots up itself and runs the program without having to use ssh or a keyboard and monitor to login.
You don't have to do anything to the RPi to have it start (boot) when power is connected - this is the way it works!
You can use
cron to start a Python program upon startup - this is very simple. Use the terminal (via SSH if necessary) and Command Line Interface (CLI) as follows:
1. Take care of two (2) prerequisites
Once you are logged in as default user
pi, you are presented with a terminal screen in the
bash shell. You will see a prompt similar to the one shown below indicating where to begin your input.
You must know the location of your program - full path specification; e.g.
Your program must be marked as executable; you can ensure the program is executable with this command:
pi@raspberrypi4b:~ $ chmod a+x /home/pi/MyPythonProgram.py
2. Open your
bash prompt (
pi@raspberrypi4b:~ $ ), open your
crontab for editing (choose
nano as your default editor if asked):
$ crontab -e
crontab will open in the
3. "Schedule" your program to start each time the RPi boots:
Move the "insertion point" in
nano just below any existing text in
crontab, and type the following:
@reboot (sleep 20; /home/pi/MyPythonProgram.py) >> /home/pi/logmyprogram.txt 2>&1
Here's what this does:
@reboot simply instructs
cron to execute the following commands each time the system boots.
sleep 20 waits 20 seconds after
cron is started before it starts your program
- your program (assumed to be
/home/pi/MyPythonProgram.py) is started
- any output or errors (
2>&1) from your program are re-directed (
>>) to a file:
sleep and the redirect are often useful in running
sleep provides additional time for all system resources to get started (e.g. networking services). redirect (
>>) is useful as your interactive shell won't be available to receive any output or error messages - instead, they will be written to the logfile you choose.
Reboot your system (
sudo reboot at the shell prompt). Review the logfile for any mesages.