How to setup your Raspberry Pi 2/3 with Ubuntu 16.04, without cables (headlessly)

Claudio Carnino
Aug 1, 2016 · 4 min read

I am working on a robotic project which has at its core a Raspberry Pi with Ubuntu minimal (no GUI) and Swift 3.0.

The problem with a vanilla Ubuntu is that it requires you to have a monitor, keyboard and mouse. All of this in inconvenient and I would love to just do everything by ssh-ing into the machine. Sadly, it’s not possible out of the box.

After some experimenting I’ve been able to achieve that. What follows is the tale of this mighty nerd.

Step 1: Preparation

Get your Raspberry Pi 2 or 3, an SD memory card with 8Gb or more memory (class 10 or more), a micro USB cable (for power), an ethernet cable and the Wifi USB dongle.

Step 2: Flashing Ubuntu 16.04 server minimal on the SD card

Download Ubuntu server classic from here or here. This is a flavour of Ubuntu server, which have been stripped out of everything which is not strictly necessary, so it’s very light.

Now you have to flash the image on the SD card. On the web you will find a lot of multi step command line guides. But that’s nuts, since there’s a great apps, called Etcher.io, that make the process incredibly simple, fast and safe.

Download Etcher app (for all platform), then select the Ubuntu image, the SD card (which you have to insert in your computer) and flash it. Few minutes and it will be done and verified.

Put the SD card into the RPi, you’re ready to rock!

Step 3: Ssh-ing into your RPi

After you’ve inserted the freshly backed SD card into your RPi connect the ethernet cable between the RPi and your router. Turn the RPi on by connecting the micro USB cable to the electricity or to your computer.

Wait few minutes, since the first boot takes longer than usual. Then open your router’s dashboard and look at the ethernet connected devices. You will see a device hostname ubuntu-minimal. Take a note of the IP of that device.

Open your terminal and type:

You should be in!

You are now connected to the RPi via the network. The only problem is that you still need to keep the RPi connected to the network throughout the ethernet cable. But let’s address that.

Step 4: Going wireless

First we need to update the operating system:

Install the wifi support:

Now reboot. It’s important to do it now, since my wireless interface changed name after this step. From a nice “wlan0” to a weird “wlx000f6005a699”.

Attach the USB dongle to your RPi. Then, ssh again into it. Then, list the wireless network interfaces with:

Take note of the wireless interface name (e.g. wlan0 or wlx000f6005a699).

Open the network interfaces configuration:

At the bottom of the file add (replacing the wlan0 with the name of your interface):

Now, open the wireless configuration file:

and add at the end of the file the informations about your wifi network:

Save and exit the editor. Remove the ethernet cable and then reboot:

Now in about 30 seconds your RPi should be up an running. If you try again to ssh into the RPi (still looking for its IP in the router dashboard), you should just be able to connect to it via wifi!!

Step 5: Ssh-ing into the RPi with a dynamic IP

As you’ve already noticed, checking the the RPi’s IP every time you want to connect to it, it’s a bit of a pain in the ass.

So, let’s install avahi which will make you able to connect to the RPi via its hostname.

Now, after a reboot, you will be able to ssh into the machine:

Step 6: Securing the ssh authentication

I suggest you to secure your login with a rsa key authentication and enabling it only the port 22.

From your Mac laptop:

Now you should be able to ssh into RPi without password:

The-wise-guy-last-step: Backup your RPi

It’s very easy to burn an SD card by writing to it too many times. Or irreversibly fuckup your configuration by doing what sudoer should not do. Cloning your SD card, as an image that you can flash on a new card when you need it, is the perfect backup strategy. Here you find how.

You are now ready to install Swift 3.0 developer preview on your sexy Raspberry Pi Ubuntu box.

To get my latest Swift misadventures subscribe to the publication. Cheers.

A Swift misadventure

A journey in the Swift programming language and its…

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store