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)

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: 2021/03/17 13:50 by rjversluis