How To Upgrade Raspberry Pi OS to Bullseye from Buster
Upgrade an existing Raspberry Pi OS to the latest version, all from the command line.
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
2. Run a full upgrade of your installation.
$ sudo apt dist-upgrade -y
3. Update the Raspberry Pi firmware.
Stay On the Cutting Edge: Get the Tom's Hardware Newsletter
Get Tom's Hardware's best news and in-depth reviews, straight to your inbox.
$ 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
7. Update the Bullseye software repositories.
$ sudo apt update
8. Run another distribution upgrade to install the Bullseye software requirements.
$ sudo apt dist-upgrade
9. Clean up the installation files.
$ sudo apt autoclean
10. Reboot your Raspberry Pi for the change to take effect.
$ sudo reboot
You are now running the latest version of Raspberry Pi OS based upon “Bullseye”.
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,Reply
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? -
Steve Avery I get the following error:Reply
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. -
Jesper E. Siig I got that error too, but I managed to upgrade somehow. I think it was by usingReply
$ sudo apt-get upgrade
BR,
Jesper -
TJ Hooker
I worked around that by executing sudo apt install gcc-8-base, then running dist-upgrade again.Steve Avery said:libc6-dev : Breaks: libgcc-8-dev (< 8.4.0-2~) but 8.3.0-6+rpi1 is to be installed
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. -
redstonemason I burned a new sd card and started fresh and the process was impressive.Reply
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. -
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 -
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! -
dwwaddell
I had a 64-bit buster release and I had to run: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.
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. -
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'sReply