Upgrading to Raspberry Pi OS Bullseye

In this quick guide, we will be showing you how to upgrade Raspberry Pi OS from Buster to Bullseye.

Raspberry Pi OS Upgrade Buster to Bullseye

Raspberry Pi OS Bullseye brings with it a wealth of changes to both the desktop frontend and the underlying backend.

These changes include adding a new window manager, an updated video driver, an updater plugin for the desktop interface, and a refined file manager.

Upgrading your Pi to use this new version of the operating system is a reasonably straightforward process. However, it can cause issues. If possible, we recommend that you start with a fresh image of Raspberry Pi OS when upgrading to a new major version.

Before you begin, please note that upgrading your Raspberry Pi to use Bullseye is a risky process. There is a chance that this upgrade process can wreck your installation, meaning you will have to start from scratch.

If you do not want to lose files from your SD card, please make sure that you perform a backup before continuing.

Preparing your Sources File for Raspberry Pi OS Bullseye

Our first task is to adjust the source list files to point to “bullseye” instead of “buster“. Changing this will ensure that the package manager will start looking for the newer versions of any existing packages.

1. The first source file that we will be modifying is located at “/etc/apt/sources.list“. This file is the main list of sources.

You can begin editing this file by using the following command on your Raspberry Pi.

sudo nano /etc/apt/sources.list

2. Within this file, you will need to replace any occurrence of “buster” with “bullseye“.

For example, you should see the following line within this file.

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

You will need to change this line so that it looks like the following.

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

3. Once you have changed all occurrences of “buster” to “bullseye” within this file, you can save your changes.

To save your changes, press CTRL + X, then Y, and finally the ENTER key.

4. You may also need to modify some additional source lists. These lists are typically kept within the “/etc/apt/sources.list.d” directory.

It is possible to list all of the files in this directory by running the command below.

ls /etc/apt/sources.list.d/

From this command, you should get a result somewhat like the following.

raspi.list  vscode.list

Each file provided by this command will need to be modified with all references to “buster” being replaced with “bullseye“.

5. For example, to edit the “raspi.list” file, we will run the command below, using the nano text editor to open the file.

sudo nano /etc/apt/sources.list.d/raspi.list

6. Once all files have been modified, you can now proceed to upgrade your Raspberry Pi from Buster to Bullseye

Updating Raspberry Pi OS to Bullseye

With the sources file updated, we can begin upgrading Raspberry Pi OS from Buster to Bullseye.

You are at the point of no return, now is the last time you can back out of the upgrade process without having to restore from a backup.

1. As we modified the source files, we will need to run an update. This update will grab new package lists from our modified repositories.

This is a crucial part of the upgrading process. Up until now, the package manager won’t be aware that packages are now out of date.

sudo apt update

2. As part of the upgrade process to Raspberry Pi OS Bullseye, we will need to install some new packages.

These are a required dependency of the distribution and can not be skipped.

You can install these new packages by running the following command on your device.

sudo apt install libgcc-8-dev gcc-8-base

Please note, quite a few packages will be downloaded and installed as part of this process. So please be patient while it completes.

During this installation, you may be prompted whether you want services to be automatically restarted. It is safe to select the “<Yes>” option.

3. Finally, everything is set up for us to perform the upgrade to Bullseye.

To begin upgrading all of the packages on your system, run the following command.

sudo apt full-upgrade

This upgrade process will take considerable time as a ton of packages will need to be upgraded or installed.

Please note that during the upgrade process you may have to press the ENTER key from time to time to continue the process.

4. Once the upgrade process completes, do not turn off or restart your device.

As the video driver for Raspberry Pi OS has been changed with the move to Bullseye, we will need to make some changes to the boot configuration file.

Modifying the Boot Configuration

The last step upgrading to Raspberry Pi OS Bullseye requires us to modify the boot config file.

For this guide, we will be assuming you are completing these steps on the Raspberry Pi itself. However, you can access this file when you plug your SD card into a computer.

1. Begin modifying the boot configuration file by using the command below on your Pi.

To edit this file, we will be relying on the nano text editor again.

sudo nano /boot/config.txt

2. Within this file, we need to comment out the original “dtoverlay” line by adding a “#” to the front of it.

We need to do this is no longer a Raspberry Pi 4 only driver.


Replace with the following.


3. With that line commented out, our next step is to add the new “dtoverlay” line. With this change, we are telling the Pi to load in the new video driver.

This line will need to be added to the “[all]” section at the bottom of the config file.


Once you have found the “[all]” section, add the following line below it.


4. With the changes made, save and quit out of the file by pressing CTRL + X, then Y, followed by the ENTER key.

5. Finally, it is safe to restart your Raspberry Pi.

You can safely restart your device by using the following command on your device.

sudo reboot

Hopefully, the upgrade process from Raspberry Pi OS Buster to Bullseye has been successful. However, if your Pi fails to boot correctly or you run into issues, the upgrade process will likely not .


At this point in the guide, you should now understand how you can upgrade from Raspberry Pi Buster to Bullseye.

OS Bullseye has a lot of under the hood improvements and access to updated versions of numerous packages.

The process of upgrading your existing OS is straightforward but time-consuming. Not all systems will upgrade cleanly, so it’s best to either make a backup or start from a clean Bullseye image.

If you have run into any issues upgrading your system to the latest version, please comment below.

Additionally if you run into any issues when running one of our tutorials on Bullseye, please make a comment on that guide. We will be ensuring compatibility with Bullseye as issues are reported.

With your system upgraded to Bullseye, you can check out our extensive range of Raspberry Pi projects to see what you can do on your system.


  1. Avatar for Rick Crosoer
    Rick Crosoer on

    I get a Putty Fatal Error. Couldn’t agree a key exchange algorithm…
    Looks like an old key needs to be removed. Anybody got this error and found the location of the offending key?

    Looks like the server is running OK, just the SSH problem.

    1. Avatar for Rick
      Rick on

      Oops! Using an old version of Putty. Updated to V0.76. Problem fixed.

  2. Avatar for Egbert Nierop
    Egbert Nierop on

    for me, this wrecked my desktop. It seems that bullseye defaults to using openbox, instead of xfce. I had to add xfce again, reboot, and remove openbox.

    sudo apt install -y  xfce4 xfce4-goodies
    make sure xfce is default
    sudo update-alternatives --config x-session-manager

    remove openbox

    sudo apt remove openbox
    sudo reboot

    after that, I had to install a bluetooth manager and all is working again

  3. Avatar for David Reed
    David Reed on

    Worked fine for me. No problems.

  4. Avatar for ramzez
    ramzez on

    after following this tutorial my raspberry pi no longer works ( I have headless one). just doesn’t connect, waiting on micro hdmi adapter now to figure out what went wrong. if anyone has an idea how to fix it would be great?

    1. Avatar for Laurel Raven
      Laurel Raven on

      If it’s wireless, I’m having the same problem; thankfully, mine is already hooked to a monitor (it’s part of a lab I play around with, figured this would be the best to test the upgrade on), so I’m able to at least troubleshoot. If you have the option, I don’t think this issue affects the ethernet port.

      I don’t really know what the issue is yet, but I’ve been able to do a workaround by getting onto the console, stopping the wpa_supplicant service (sudo systemctl stop wpa_supplicant.service) and manually running the wpa_supplicant pointed at its config file (sudo wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -iwlan0). It then connects to the wifi configured in wpa_supplicant.conf just fine and I’m able to remote on to continue troubleshooting.

      I also had it soft block the wifi on reboot with rfkill, which I fixed with `sudo rfkill unblock all`. I’m not really sure where to go from here but I’m continuing to poke at it and if I find an answer I’ll add it here.

      I have a feeling it’s going to turn out to be yet another wonderful part of systemd that’s causing the problem.

  5. Avatar for Name
    Name on

    on my system this changed network interface name – had to change config files to get connection

    1. Avatar for ramzez
      ramzez on

      what did you need to do?

  6. Avatar for Radu
    Radu on

    Just to test this, i tried with the most useless pi in my house.
    Following this tutorial bricked by RPi3. im stuck in the command line with no wifi working and no desktop environment. so no ssh or vnc.
    Unbelievable that they expect to fresh install each pi, remember how to configure each pi and each app for it…
    not wasting days for this anytime soon, should have been a simple `apt update && apt full-upgrade` not a week long project involving starting from 0. unbelievable.

  7. Avatar for Wian
    Wian on

    FYI, vc4-kms-v3d does not play nice with Pi 1B+. Issues include displays turning off after boot, load average of 7 and inability to reboot due to the logs being spammed with:
    Oct 30 13:32:32 pidisplay kernel: [ 38.861756] vc4-drm soc:gpu: bound 20400000.hvs (ops vc4_hvs_ops [vc4])
    Oct 30 13:32:32 pidisplay kernel: [ 38.871952] Registered IR keymap rc-cec
    Oct 30 13:32:32 pidisplay kernel: [ 38.872382] rc rc0: vc4 as /devices/platform/soc/20902000.hdmi/rc/rc0
    Oct 30 13:32:32 pidisplay kernel: [ 38.872790] input: vc4 as /devices/platform/soc/20902000.hdmi/rc/rc0/input1

    I replaced vc4-kms-v3d with vc4-fkms-v3d and all the sudden it’s fine after a hard power cycle.

  8. Avatar for Jonas Rademacher
    Jonas Rademacher on

    following your instructions I found a problem with the new bullseye-sources.
    The security source has to be changed from “buster” to “bullseye-security”
    –> deb-src http://deb.debian.org/debian-security/ bullseye-security main
    Otherwise an error will occur on apt-update

    Best Regards

Leave a Reply

Your email address will not be published. Required fields are marked *