User Tools

Site Tools


Headless Setup

SD Card with Pi OS Lite (32bit)

Download the Raspberry Pi Imager:

Insert a SD-Card.
Start the "Raspberry Pi Imager" program.


  2. Pi OS Other
  3. Pi OS Lite (32bit)

See also Advanced Options for setting up SSH and WiFi.

Config the Boot Partition

Insert the SD-Card again, after creating of the Image on the SD-Card has finished.
The SD-Card should be visible in the File-Explorer as boot.

To make the Zero able to connect to the WiFi, it must get some settings to get this done.
The easiest way is to create a text file locally named as wpa_supplicant.conf with the following content:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
       ssid="<my SSID1>"
       psk="<my PASSWORD>"
       ssid="<my SSID2>"
       psk="<my PASSWORD>"

Replace the "<my*>" values with the access information of the Access Point.

  • Note: Multiple network definitions may be added. The highest priority will be connected first if available.

Copy an empty file named SSH, and wpa_supplicant.conf to boot. (Under Windows mostly drive D:)

to the boot partition of the SD-Card:

  1. Unmount/Eject the SD-Card.
  2. Insert the SD-Card into the slot on the Raspberry Pi.
  3. Power on the Raspberry Pi.
  4. Wait a few minutes to give Raspbian time to resize the file system. (With a connected monitor, on the Mini-HDMI, the progress can be watched.)

Raspbian SSH Connect

ssh pi@raspberrypi

The standard password is raspberry

Raspbian Update

sudo apt update
sudo apt upgrade


ssh pi@raspberrypi
sudo raspi-config

Python Script

Unzip the, and copy it to the Raspberry Pi:

scp pi@raspberrypi:/home/pi

Install PiCamera

ssh pi@raspberrypi
sudo apt install python3-picamera

Start Script

ssh pi@raspberrypi

Create the script "/home/pi/" with the following content:

cd /home/pi

Make the script executable:

chmod +x


Add the line "@reboot /home/pi/" to the crontab:

ssh pi@raspberrypi
crontab -e

no crontab for pi - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.tiny
  3. /bin/ed

Choose 1-3 [1]: 

Close the nano editor with ctrl+x After edit to save the changes.

Check if the changes are saved:

crontab -l
# Edit this file to introduce tasks to be run by cron.
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# For more information see the manual pages of crontab(5) and cron(8)
# m h  dom mon dow   command
@reboot /home/pi/

Reboot the Raspberry Pi:

sudo reboot

Boot speed

Check the services which are not needed for the headless setup:

systemd-analyze blame

Google "raspberry zero systemd-analyze blame" to find tips, because this is a bit out of scope to include it in the Wiki.

Power consumption


Running a headless Zero, there's no need to power the display circuitry.
Add the following line in /etc/rc.local to disable HDMI on boot.

/usr/bin/tvservice -o

(-p to re-enable).
Approximately 25mA reduction.

Special Boot Options

To be able to use pin 27 and 28 as normal I/O, add an extra line in the /boot/config.txt:



SFTP File Transfer

WinSCP and FileZilla can be used for transferring files to and from the Raspberry Pi.
For more information see:


  • The terminal/console commands ssh and scp are available under Linux, Windows10 and Apple macOS.
  • If "raspberrypi" cannot be resolved, "Could not resolve hostname raspberrypi", check the router and use the IP address instead:

Wait for Network at Boot

Under specific network conditions, the following system option (sudo raspi-conf) must be activated, if the WIOpi or CAM does not start at boot:

  • 1 System Options
    • S6 Network at Boot 1)

Disable screen saver

In case of a connected display, none headless, without user interaction.

Edit the lightdm configuration:

$ sudo nano /etc/lightdm/lightdm.conf

find this section, and add the extra options:

xserver-command=X -s 0 -dpms
Select wait for network connection on boot
rocnet/headless-cam-en.txt · Last modified: 2022/06/17 09:42 by rjversluis