The latest Raspberry Pi OS has just been released, and it is a major upgrade based upon the latest Debian 11 release codenamed “Bullseye”. The previous release based upon Debian 10 “Buster” has been with us for more than two years, having introduced a new Python editor, Thonny and a refined user interface.
What does Bullseye bring to the table in 2021? There aren’t many noticeable improvements in the UI, but, under the hood, there have been a few changes, for better and worse. Unfortunately, the new OS breaks compatibility with some HATs and libraries, potentially rendering some existing projects and products useless until developers have had time to update their software.
Some members of the Raspberry Pi community are vocal in their disappointment with Bullseye. In a forum thread we can see issues with the new KMS video driver which appears to be fussy for certain resolutions.
RPi Trading getting panned for making "an alpha quality PiOS" release by people that depend on PIs for doing important work! RPiT needs to change some of its development processes that may have been acceptable in the past but look amateurish now !November 12, 2021
Right now, you should treat Bullseye as a curiosity and hold off using it as your daily driver. If you have mission critical projects, stick with Buster as it is tried and tested with two years of updates and improvements. All of your HATs and cameras will work with Buster, whereas with Bullseye they might if the software developers have had the time to update their drivers, which many have not as of this writing.
What’s New in Raspberry Pi OS Bullseye?
Bullseye introduces a new window manager, Mutter, which only works for models of Raspberry Pi with 2GB or more RAM, namely the Raspberry Pi 4, Pi 400 and Compute Module 4. Other Pis will use Bullseye with the old window manager, Openbox.
In the words of Simon Long, the person responsible for Raspberry Pi OS releases “Mutter is what is known as a compositing window manager, which means that rather than individually drawing the window frames straight onto the existing windows on screen, it draws all the windows to a memory buffer off screen, where it creates a complete image for the entire screen. This is then sent to the hardware to be displayed.”
Using Mutter means that Raspberry Pi OS can finally add a little visual flair and special effects which Linux users have been used to for some time. We first noticed the new flair when rebooting the Pi as the reboot window faded into view. After this we noticed that general window management and open / closing speeds were much better on our Raspberry Pi 4 with 4GB of RAM.
Why the change of window manager? Another new feature introduced in this release is GTK+3, a user interface design kit which builds the components used by various applications. The move to GTK+3 is new to Raspberry Pi OS, but not to the larger Linux community.
Previous Raspberry Pi OS releases used GTK+2 with a few tweaks made especially for the Pi. With GTK+3, we noticed an overall better look and feel, with some components such as tabbed menus appearing a little different. The Raspberry Pi OS team has gone to great lengths to ensure that the user interface is similar to the previous release and so some of the GTK+3 changes are hidden from view.
Notifications have been refined for Bullseye. In the top right corner of the screen is where they appear in chronological order, with a delay before they vanish into the ether. Give it a go, plug in a USB stick, then take it out before unmounting and you will get told off. Built in applications work directly with the new notification area, and user created apps can also be easily integrated.
One feature that wasn’t immediately obvious was the update plugin, found in the top right of the screen, next to the Bluetooth logo. The updater is a simple GUI for updating the software on your Raspberry Pi. This isn’t a big deal for Unix / Linux users accustomed to the terminal, but for the core demographic, learners, it makes sense to ensure that updates are easy and frequent. The Pi checks for new updates each time it boots.
Bullseye also brings an update to the Chromium browser. Version 92 of Chromium takes advantage of the Raspberry Pi hardware acceleration to really speed up streaming video. A great test of this is YouTube. With older Raspberry Pi OS releases anything above 720p is a slideshow, and full-screen 720p is also not an enjoyable experience.
With Chromium 92, we find that 720p video, windowed and full screen, plays back exceptionally well, with just 1 percent of frames dropping. When we played the Big Buck Bunny test video, we saw that 1080p 60 playback was still poor. It wasn’t a total slideshow, but was bordering on unwatchable. However, 1080p 30 playback was very good. YouTube showed some frame drops in its “Stats for Nerds,” menu option but we didn’t notice any disruptions with our naked eyes.
Theoretically, you could get the benefits of Chromium 92 on Buster as the new browser will install in the old OS. However, in my testing, YouTube crashed every time we loaded a URL so that’s a bad sign. General browsing on Chromium 92 in Buster worked well, as tomshardware.com and bbc.co.uk both loaded and rendered flawlessly. We ran Chromium via the terminal, as any errors would be output and saw reference to an “org.freedesktop.UPower service” which we assume is automatically part of Bullseye.
Performance of Raspberry Pi OS Bullseye vs Buster
On our test Raspberry Pi 4 with 4GB of RAM, we booted Bullseye and Buster and timed from the appearance of the rainbow image to a usable desktop. For now Buster is the clear winner, clocking in at 21.84 seconds, which makes sense since the older OS. has seen many updates and tweaks to the boot process. Bullseye drags behind at 28.48 seconds, a delay that we can really feel.
To find out how Bullseye runs applications, we opened a fresh Chromium browser to a blank tab, and Bullseye completed the task in 7.92 seconds while Buster handled it in 7.74 seconds. The difference between the two is so small that’s probably within the margin of error and not noticeable.
On the bright side, Bullseye comes with an added speed boost for newer Pi 4 models. All of our Raspberry Pi 4 are from the early batches so we cannot comment on the automatic speed boost, but we have performed extensive overclocking experiments with the Pi 4 and found that with, adequate cooling, it’s easy to overclock the Raspberry Pi to 2.14 GHz. The automatic overclock built into Bullseye takes the Pi 4 to 1.8 GHz, the same speed as the Raspberry Pi 400 and the reason for that is that the newer Pi 4 shares the same SoC as the Pi 400.
Where Does Bullseye Miss the Mark?
Without the GPIO (see Raspberry Pi GPIO pinout), the Raspberry Pi is just a small Linux computer. What makes the Raspberry Pi special is the GPIO and the many opportunities it affords us. Connecting electronics and add-on boards (HATs), especially the best Raspberry Pi HATs, we can build many types of Raspberry Pi projects. These range from simple robots to complex machine learning / computer vision applications, all using the Raspberry Pi and a plethora of boards.
We tested a Sense HAT, a board made by Raspberry Pi and it worked out of the box with no issues. Moving on, we tested two third-party boards: Pimoroni’s Explorer HAT Pro and the RasPiO Analog Zero. Explorer HAT Pro has been around since 2014 and it is a remarkable board for projects.
With Bullseye, we used Pimoroni’s one line Bash install script and everything went well, until we tried out the included test script which failed. After a little investigation, we traced the fault to I2C; typically this is enabled during the install process, but not with Bullseye. We used raspi-config to enable the I2C interface and then retried.
We made it past that error and encountered a new error, relating to the Explorer HAT Pro’s onboard ADC (Analog to Digital) converter. The new error had nothing to do with Bullseye, rather it was an issue with the ADC library and Python 3.9, both of which were eventually patched by their developers.
However, there are still plenty of other HATs that need software which has not been patched yet. For example we tested Adafruit’s Braincraft HAT and it failed to install due to a dependency issue. Right now there is no definitive list of boards that are incompatible with Bullseye, and over the coming weeks the number of boards with problems will slowly dwindle.
We wanted to test an often unheard of board. Analog Zero, from Raspio is a breakout board for an MCP3008 ADC which connects to the Pi using the SPI interface. After enabling the SPI interface via raspi-config we opened a Python REPL and connected to Analog Zero using a ready made.
Using the Camera with Bullseye
Established Raspberry Pi camera users will be familiar with raspistill and raspivid, two terminal commands that take pictures and record video using any camera that’s connected to your Pi, including the Raspberry Pi HQ camera. For Bullseye, we see that these commands have been replaced with libcamera which offers alternative options, with a similar syntax to raspistill and raspivid. The similarity is welcome as we can easily switch out the commands in our Bash based camera scripts.
There is another camera related omission, and that is PiCamera. Created by Dave Jones, PiCamera has for many years been the de facto means to use the official camera with Python. With Bullseye, we lose PiCamera, and with it a large number of projects are now broken, including many created by the Raspberry Pi Foundation, the educational outreach arm of Raspberry Pi. If your camera project is Python powered, then for now stick with Buster until PiCamera, or an alternative is offered.
Bullseye is a great release. It builds upon the great foundation which Buster laid down and it gives us a more mature Raspberry Pi OS for the now higher-spec Raspberry Pis The improved chromium web browser experience is lovely and is almost on par with a budget laptop.
In our excitement, we must be patient though. Right now if your project depends on a HAT or the Python Raspberry Pi Camera library, then you will need to check that your HAT is supported, and wait for the updated PiCamera Python library. If you need to deploy your project now, then stick with Buster. Third party HATs and software are being updated, but right now the developers are all playing catch up.