The last time Hackerfall tried to access this page, it returned a not found error. A cached version of the page is below, or click here to continue anyway

Raspberry Pi Zero Headless Setup David Maitland Medium

So last Thursday (26th Nov 2015) the Raspberry Pi Zero was announced and made available that very day. Basically the Zero is a small and ultra cheap (4) fully functioning Raspberry Pi, but it doesnt have any native networking and has only one USB port (which you need an OTG adapter to use).

In the UK I was lucky enough to be able to order two Pi Zeros and have them delivered the next day. The only problem was I didnt have an HDMI monitor or a USB hub to connect a keyboard and a WiFi adapter at the same time. My intended use for the Zeros is for them to be little headless Linux boxes that I can put into various electronic projects and program them over WiFi (Think IoT), so I didnt want to mess around with HDMI and GUI interfaces.

So here is a little guide showing you how to setup a Raspberry Pi Zero without an HDMI monitor or a keyboard / mouse. We will just use a USB WiFi adapter (connected to the OTG USB port) and a Linux machine to do the setup. If you dont have a Linux machine available, you could even use another Rasberry Pi with a card reader to set this up.

This should be possible to do on other platforms as well but you will need to be able to mount an Ext4 partition natively.

Step OneInstall the Linuximage

First you will need to install a copy of Raspbian Jessie onto your micro SD card. You can find the downloads here and the installation guides are on the same page as well. For Linux I will be using this guide.

Step TwoMounting itlocally

After you have copied the Raspbian image onto the SD card you will need to mount it to your system. The easiest way to do this is just unplug your card reader and plug it back in.

Once the drive has mounted to your system you will need to find where it has mounted. An easy way to do this is using the command df -h. For me it returns:

Filesystem                       Size  Used Avail Use% Mounted on/dev/mapper/fedora_dhcppc8-root   25G  9.8G   14G  43% //dev/sda1                        477M  258M  190M  58% /boot/dev/mapper/fedora_dhcppc8-home   85G   24G   58G  29% /home/dev/sdc1                         60M   20M   41M  34% /run/media/davidmaitland/boot/dev/sdc2                         59G  3.4G   53G   6% /run/media/davidmaitland/ad6203a1-ec50-4f44-a1c0-e6c3dd4c9202

I can see from this my 64GB SD card is the device /dev/sdc and the boot and main partition are mounted under /run/media/davidmaitland/. Change directory into the main partition as root ready to edit the files. This is likely to be the same drive that was referenced during the image installation earlier.

[user@linux ~]# sudo su[root@linux ~]# cd /run/media/davidmaitland/ad6203a1-ec50-4f44-a1c0-e6c3dd4c9202[root@linux ad6203a1-ec50-4f44-a1c0-e6c3dd4c9202]# lsbin  boot  boot.bak  dev  etc  home  lib  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

Step ThreeConfigure yourWiFi

Next were going to configure the network interface. Edit the interfaces file etc/network/interfaces. Pay attention to the path in the files I reference, there is no leading slash as you want to edit the files on your SD card and not the ones on your host system!

If youre not sure how to edit files on Linux, try nano etc/network/interfaces then Ctrl + x to save when done.

Find this block in the file:

allow-hotplug wlan0iface wlan0 inet manual    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Then change it to this:

auto wlan0allow-hotplug wlan0iface wlan0 inet dhcp    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

If you want to have a static IP instead of using DHCP (easier to find once the Pi has come up on your network) then change it to this instead:

auto wlan0allow-hotplug wlan0iface wlan0 inet static    address 192.168.1.20 # IP for the Zero    netmask 255.255.255.0    gateway 192.168.1.1 # Your router IP    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

As pointed out by someone on Reddit, if youre using static networking you will want to setup your DNS servers as well. Edit etc/resolv.conf and add the following:

# Google's public DNS serversnameserver 8.8.8.8nameserver 8.8.4.4

Now lets setup the WiFi connection and passkey. Edit the file etc/wpa_supplicant/wpa_supplicant.conf. Add this to the end:

network={  ssid="my network name"  psk="my network password"  proto=RSN  key_mgmt=WPA-PSK  pairwise=CCMP  auth_alg=OPEN}

Update (16/02/17)

@stevegraken in the comments pointed out that in newer versions of Raspbian SSH is disabled by default, which is something we will need.

You can read more about this here.

To make it work again you need to create an empty file named ssh in the boot mount. This is a completely different mount point, so you will have to change directories to get there. (Thanks to Chris T for pointing out what I had overlooked)

Here are the results of the command df -h which we ran earlier, you can see the sdc partitions and their corresponding mount points at the bottom:

Filesystem                       Size  Used Avail Use% Mounted on/dev/mapper/fedora_dhcppc8-root   25G  9.8G   14G  43% //dev/sda1                        477M  258M  190M  58% /boot/dev/mapper/fedora_dhcppc8-home   85G   24G   58G  29% /home/dev/sdc1                         60M   20M   41M  34% /run/media/davidmaitland/boot/dev/sdc2                         59G  3.4G   53G   6% /run/media/davidmaitland/ad6203a1-ec50-4f44-a1c0-e6c3dd4c9202

On my system Im currently on partition 2 (/dev/sdc2) which is mounted at /run/media/davidmaitland/ad6203a1-ec50-4f44-a1c0-e6c3dd4c9202 (my current directory). We need to change to partition 1 (/dev/sdc1) by running cd /run/media/davidmaitland/boot.

Now all you have to do is add an empty file named ssh:

touch ssh
Remember to change the default password (use `passwd`) after you have setup yourPi!

Finally remove the SD card from your computer (you may wish to unmount it first) and place into your Zero.

Step FourBoot the PiZero!

Now its time to boot the Raspberry Pi Zero. Make sure you have your WiFi adapter plugged into the Zero and give it some power. For me it takes about 45 seconds to boot and connect to my WiFi network.

Now you can SSH directly into your Raspberry Pi Zero!

If you configured your Zero to use DHCP you will need to find its IP address. There are a few ways you can do this:

The default password is raspberry.

[user@linux ~]# ssh pi@192.168.1.20pi@raspberrypi:~ $

Continue reading on davidmaitland.me