-1

Abandoned post by Unregistered user.

How can i set up my pi zero, so that if I plug it in, it runs a python program, without having to login etc?

The project goal is a device that plays an audio file on the push of a hardware button. I would use another hardware button to safely shutdown. 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. Can i do that using raspbian or is there maybe a 'lighter' OS that is made for use cases like this one?

thanks in advance!

Milliways
  • 59,890
  • 31
  • 101
  • 209
Anton
  • 1
  • 1
  • 2

3 Answers3

1

check this link
https://www.interelectronix.com/raspberry-pi-4-autostart-qt-application-during-boot.html

this was helpful for me I could autostart qt application on a raspberry pi os lite so I think you can run your python program

you just need to create a .service file in the /etc/systemd/system

cd /etc/systemd/system
sudo nano application_one.service

[Unit] Description=Qt application autostart After=graphical.target After=network-online.target Wants=network-online.target

[Service] Type=simple User=pi WorkingDirectory=/home/pi/ ExecStart=/home/pi/your_application

[Install] WantedBy=multi-user.target

edit this file then enable this service

sudo systemctl enable application_one.service

reboot and you will have an autostart of your application

for that you have to remove the login prompt

sudo systemctl disable getty@tty1
sudo systemctl mask plymouth-start.service
mina
  • 377
  • 1
  • 4
  • 14
1

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.

pi@raspberrypi4b:~ $

  • You must know the location of your program - full path specification; e.g. /home/pi/MyPythonProgram.py

  • 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 crontabfor editing:

At the bash prompt (pi@raspberrypi4b:~ $ ), open your crontab for editing (choose nano as your default editor if asked):

$ crontab -e

Your default crontab will open in the nano editor.

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 (stdout or stderr, 2>&1) from your program are re-directed (>>) to a file: /home/pi/logmyprogram.txt

sleep and the redirect are often useful in running cron jobs. 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.

4. Test

Reboot your system (sudo reboot at the shell prompt). Review the logfile for any mesages.

Seamus
  • 21,900
  • 3
  • 33
  • 70
0

The above example solution worked on my PI Zero after I added the exec python3 to the command string.

@reboot (sleep 20; exec python3 /home/pi/MyPythonProgram.py;) >> /home/pi/logmyprogram.txt 2>&1