How To Upgrade Raspberry Pi OS to Bullseye from Buster

Upgrade Raspberry Pi OS to Bullseye
(Image credit: Tom's Hardware)

A new Raspberry Pi OS based upon Debian 11 (Codenamed: Bullseye, following a Toy Story character naming convention) has been dropped and it has Raspberry Pi fans clamouring to install the latest OS on their favorite single board computer.

There are big changes for the latest Raspberry Pi OS, including a free speed boost for Raspberry Pi 4 / Compute Module 4 owners who have a certain SoC model, and a new compositing window manager which speeds up overall desktop performance.

Raspberry Pi OS “Bullseye” works with all models of Raspberry Pi, but the best performance is found using Raspberry Pi 4, Compute Module 4 and Pi 400. These models can benefit from the speed boost (except the Pi 400, where it is the default). If they have 2GB of RAM or greater, they can also use the new compositing window manager.

The ideal way to install the latest OS is to backup all your project and data files and then do a clean install using Raspberry Pi Imager to write to a microSD card, but it is possible to upgrade an old Debian 10 “Buster” based Raspberry Pi OS to Bullseye.There is a caveat, however, as it may not be the smoothest of upgrades. So before you take the plunge make sure that you have a backup of any important files and projects.

How to Upgrade to the Latest Raspberry Pi OS

1. Open a terminal and update the software repositories lists.

$ sudo apt update

(Image credit: Tom's Hardware)

2. Run a full upgrade of your installation.

$ sudo apt dist-upgrade -y

3. Update the Raspberry Pi firmware.

$ sudo rpi-update

4. Open the sources.list file ready for editing.

$ sudo nano /etc/apt/sources.list

5. Using the arrow keys, scroll down the file and locate the following line.

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

6. Change the line from buster to bullseye and press CTRL + X, then press Y and Enter to save and exit.

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

(Image credit: Tom's Hardware)

7. Update the Bullseye software repositories.

$ sudo apt update

8. Run another distribution upgrade to install the Bullseye software requirements.

$ sudo apt dist-upgrade

(Image credit: Tom's Hardware)

9. Clean up the installation files.

$ sudo apt autoclean

10. Reboot your Raspberry Pi for the change to take effect.

$ sudo reboot

(Image credit: Tom's Hardware)

You are now running the latest version of Raspberry Pi OS based upon “Bullseye”.

Les Pounder

Les Pounder is an associate editor at Tom's Hardware. He is a creative technologist and for seven years has created projects to educate and inspire minds both young and old. He has worked with the Raspberry Pi Foundation to write and deliver their teacher training program "Picademy".

  • Jesper E. Siig
    Hi Les,
    I followed your fine guide and I am now (almost) happily running Bullseye on my Pi 400. I was a little hesitant about updating the firmware, because of the warning about only upgrading it, when a Raspberry Pi engineer has told you to :eek: but heck, we're living on the edge, and it went fine.
    When I say almost, it is because of two peculiarities, that I am experiencing:
    The Num Lock is ON, after I reboot - mildly annoying
    Midways during the upgrade WiFi was turned off. I know because I was following it on VNC on my Mac, and it suddenly went black, even though the Pi 400 was merrily upgrading away. And now every time I reboot, I get "wlan0: Not associated". I can just hit "Turn On Wireless LAN", and everything is fine again - but... equally mildly annoying :)Any ideas on what could have caused these oddities?
    Thx,
    Jesper

    PS: The Raspberry guys advocate against during upgrading from Buster, and say you should do fresh image installs - any opinions on that position?
    Reply
  • Steve Avery
    I get the following error:

    pi@raspberrypi:~ $ sudo apt dist-upgrade

    Reading package lists... Done

    Building dependency tree

    Reading state information... Done

    Calculating upgrade... Error!

    Some packages could not be installed. This may mean that you have

    requested an impossible situation or if you are using the unstable

    distribution that some required packages have not yet been created

    or been moved out of Incoming.

    The following information may help to resolve the situation:



    The following packages have unmet dependencies:

    libc6-dev : Breaks: libgcc-8-dev (< 8.4.0-2~) but 8.3.0-6+rpi1 is to be installed

    E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
    Reply
  • Jesper E. Siig
    I got that error too, but I managed to upgrade somehow. I think it was by using
    $ sudo apt-get upgrade
    BR,
    Jesper
    Reply
  • TJ Hooker
    Steve Avery said:
    libc6-dev : Breaks: libgcc-8-dev (< 8.4.0-2~) but 8.3.0-6+rpi1 is to be installed
    I worked around that by executing sudo apt install gcc-8-base, then running dist-upgrade again.

    The upgrade broke wireless networking on my Pi Zero W though (I think relating to errors preventing dhcpcd from starting). My 4B is ethernet connected and stayed connected after the upgrade, but I also saw some errors relating to networking/dhcp in the systemd logs. Ended up wiping and doing a clean Bullseye install for both.
    Reply
  • redstonemason
    I burned a new sd card and started fresh and the process was impressive.
    Fortunately I have 4GB RAM.

    If you keep running into dist-upgrade problems then cut your losses and burn a new card.
    I copied the old card to an SSD and mounted it so I can selectively move my stuff over to the SD card.
    Once I am happy and stable then I will clone the SD card to SSD and go back to booting from SSD.

    SSD screams on the USB3! Special note, I have a USB powered hub that does not backfeed power into the Pi thru the USB connection.
    Both by HUB and SSD Card Holder are from Orico. Very coampatible and reliable stuff for me.
    Reply
  • Romogino
    Steve Avery said:
    The following packages have unmet dependencies:

    libc6-dev : Breaks: libgcc-8-dev (< 8.4.0-2~) but 8.3.0-6+rpi1 is to be installed

    E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

    Try:

    apt full-upgrade libgcc1-

    and after reboot:

    sudo pip install powerline-shell
    Reply
  • soccernut43
    Thanks guys for the input. I also got stuck updating but this helped get through it. Thank you.
    Reply
  • Steve Avery
    TJ Hooker said:
    I worked around that by executing sudo apt install gcc-8-base, then running dist-upgrade again.

    Thanks, TJ, this worked!
    Reply
  • dwwaddell
    Steve Avery said:
    I get the following error:

    pi@raspberrypi:~ $ sudo apt dist-upgrade

    Reading package lists... Done

    Building dependency tree

    Reading state information... Done

    Calculating upgrade... Error!

    Some packages could not be installed. This may mean that you have

    requested an impossible situation or if you are using the unstable

    distribution that some required packages have not yet been created

    or been moved out of Incoming.

    The following information may help to resolve the situation:



    The following packages have unmet dependencies:

    libc6-dev : Breaks: libgcc-8-dev (< 8.4.0-2~) but 8.3.0-6+rpi1 is to be installed

    E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
    I had a 64-bit buster release and I had to run:
    sudo apt install libsdl2-2.0-0 libc6-dev libibus-1.0-dev libsdl2-dev libgcc-8-dev gcc-8-basebefore doing the full-upgrade. After that, all proceeded well and, after a reboot, everything is working great.
    Reply
  • vjuliano
    Dont we have to go into /etc/apt/sources.list.d/ and update the references in these files as well? Otherwise I still see APT using buster for some of the 'HIT's
    Reply