The Idiot-Proof Guide to Upgrading Raspberry Pi from Buster to Bullseye
Tags: raspberrypi, linux
Published: 2021-12-07 17:20:54

---
title: The Idiot-Proof Guide to Upgrading Raspberry Pi from Buster to Bullseye
published: true
description: Learn how to perform an in-place upgrade of your Raspberry Pi OS from Buster to Bullseye.
tags: raspberrypi, linux
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kpuj28pfze2kdcbjyvav.jpg
canonical_url: https://blues.io/blog/guide-upgrade-raspberry-pi-buster-bullseye/
---

_Title photo by [Silvan Arnet (https://unsplash.com/@silvanarnet) on [Unsplash](https://unsplash.com/)_

A couple of weeks ago I enjoyed a very traditional Thanksgiving at home: I spent the day avoiding my extended family and proceeded to upgrade my home computers to their latest OS versions!

While migrating to [macOS 12 Monterey](https://www.apple.com/macos/monterey/) and [Windows 11](https://www.microsoft.com/en-us/windows) were relatively painless point-and-click procedures, upgrading my Raspberry Pi 4 model B single-board computer from the Buster release to Bullseye involved a few extra steps. I'll admit the difficulty of this process was exacerbated by the fact that I wanted to perform an _in-place upgrade_ to maintain all previously installed packages and stored files.

## A New Raspberry Pi OS?

You heard that right, a new version of Raspberry Pi OS (codenamed Bullseye 🎯) was released a few weeks ago. It's based upon [Debian 11](https://www.debian.org/News/2021/20210814) and on the right hardware can provide a significant speed boost with certain tasks. There are numerous updates and enhancements to be found in Bullseye, not the least of which include:

- An updated PiCamera driver (which will require re-writing your code BTW);
- Replacing GTK+2 with GTK+3 to provide an improved GUI;
- Using Mutter instead of Openbox for window management (if your Pi has >= 2GB of RAM);
- A fresh new notification manager in the taskbar;
- A better updating experience for installed packages;
- An update to the Chromium browser (v92), which supports hardware-accelerated video playback.

For a complete list of Raspberry Pi Bullseye updates, [consult this article from the folks at Raspberry Pi](https://www.raspberrypi.com/news/raspberry-pi-os-debian-bullseye/).

This new release of Raspberry Pi OS does technically work with any Raspberry Pi SBC (yes, including the Raspberry Pi Zero). However, unless you _need_ features from Bullseye specifically, you might want to stay on your current release. Owners of a "4.x" Raspberry Pi (e.g. the 
[Raspberry Pi 4](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/), [Compute Module 4](https://www.raspberrypi.com/products/compute-module-4/?variant=raspberry-pi-cm4001000), or the [Raspberry Pi 400](https://www.raspberrypi.com/products/raspberry-pi-400/)) 
will likely choose to upgrade regardless.

## Upgrading Caveats

Before you begin, I can't stress enough that the best (and frankly, supported) way to upgrade to Bullseye is to backup all of your critical files and perform a clean install using the [Raspberry Pi Imager](https://www.raspberrypi.com/software/). However, if you're like me and choose to live dangerously, be sure to backup your files anyway and buckle up for the ride.

> Please be aware that the following process is not officially supported AND may temporarily disable Wi-Fi (see the note below) or lead to other unintended issues. Backup any critical files on your RPi before proceeding!

## Step-by-Step Installation of Bullseye

Disclaimers aside (did you read the warning above?), here is a step-by-step set of steps for you to upgrade from Buster to Bullseye via the Raspberry Pi terminal.

1) Open your Raspberry Pi terminal and update the repository lists:

```
$ sudo apt update
```

2) Install all of the latest packages (and their dependencies):

```
$ sudo apt full-upgrade
```

3) Reboot your Pi to activate any packages that require a reboot:

```
$ sudo reboot
```

4) **Optional, if you like to live on the edge!** Update to the latest version of the [Raspberry Pi firmware](https://www.raspberrypi.com/documentation/computers/os.html#using-rpi-update):

```
$ sudo rpi-update
```

Another reboot may be necessary after updating your firmware.

5) Next, edit your `sources.list` file to switch your repository list from Buster to Bullseye:

```
$ sudo nano /etc/apt/sources.list
```

Locate the following line and change `buster` to `bullseye`:

```
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
```

Save your changes and proceed to the next step.

6) Update your repository lists again (this time it will be using the Bullseye-specific repositories):

```
$ sudo apt update
```

7) Install the latest version of Node.js (this helps avoid an error you may receive when running `apt full-upgrade` in step 9). This step may take several minutes.

```
$ sudo apt install nodejs
```

_Note that you may receive a prompt to "Restart services during package upgrades without asking". If so, choose "Yes"._

8) Update to the latest version of GCC 8 (this _also_ helps avoid an error in the next step).

```
$ sudo apt install gcc-8-base
```

9) Run another full upgrade to install any additional Bullseye requirements and downstream dependencies:

```
$ sudo apt full-upgrade
```

**NOTE:** It's at this point your Wi-Fi may go out! We'll fix that in a bit.

10) Clean up your packages to remove any that are obsolete or no longer used:

```
$ sudo apt autoclean
$ sudo apt autoremove
```

11) Next, you need to alter your `/boot/config.txt` file to enable KMS (the new standard video driver). This is done by default with a clean install, but our 
upgrade process requires this change to be performed manually. Thanks to [Linux Uprising](https://www.linuxuprising.com/2021/11/how-to-upgrade-raspberry-pi-os-10.html) for this tip!

```
$ sudo sed -i 's/dtoverlay=vc4-fkms-v3d/#dtoverlay=vc4-fkms-v3d/g' /boot/config.txt
$ sudo sed -i 's/\[all\]/\[all\]\ndtoverlay=vc4-kms-v3d/' /boot/config.txt
```

12) When you're all done, reboot your Pi:

```
$ sudo reboot
```

13) After a reboot, check to see if everything was updated properly:

```
$ cat /etc/os-release
```

This should return the following:

```
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
```

## Wi-Fi Not Working?

To reclaim your Wi-Fi, go to "Preferences" --> "Connman Settings" --> "Wireless" and then click on the SSID to which you want to connect. You may also want to click the ⚙️ icon next to the SSID and enable "autoconnect".

If any wireless or network panels are missing from the taskbar, you can re-add those by right-clicking on the taskbar, choosing "Add/Remove Panel Items", then adding the appropriate panels.

If those suggestions didn't work, consult some forum threads 
[here](https://forums.tomshardware.com/threads/how-to-upgrade-raspberry-pi-os-to-bullseye-from-buster.3733298/) and [here](https://forums.raspberrypi.com/viewtopic.php?f=66&t=317986) that may help.

## Great Success...?

It should be stated again here (at the end, when you've already made the mistake of performing an in-place upgrade 😅) that this process is not officially supported by Raspberry Pi. Rather the supported upgrade path is a clean installation of Bullseye using the [Raspberry Pi Imager](https://www.raspberrypi.com/software/).

While you're here, if you're curious about **adding wireless cellular capabilities to your Raspberry Pi**, check out the [Notecard](https://blues.io/products/notecard?utm_source=devto&utm_medium=web) and get 10 years and 500 MB of cellular data using the [Raspberry Pi starter kit](https://shop.blues.io/products/raspberry-pi-starter-kit?utm_source=devto&utm_medium=web)!

Happy Hacking on the Pi! 👩‍💻