Raspberry Pi OS Trixie is the first major rebase of the official Pi operating system since Bookworm. It moves the platform to Debian 13, ships with Linux kernel 6.12 LTS, replaces the scattered settings apps with one Control Centre, and fixes the Year 2038 problem with 64-bit time. The first Trixie images appeared on October 1, 2025. This guide covers the changes that affect your builds, your scripts, and your upgrade plan.
Quick Takeaways
- Base: Debian 13 “Trixie” with kernel 6.12 LTS, plus a refreshed desktop (PiXtrix and PiXonyx themes).
- Hardware: Supported on all Pi models. A 32-bit image is still available, even though Debian 13 itself has dropped 32-bit x86 installs.
- Settings: One plugin-based Control Centre replaces Raspberry Pi Configuration, Appearance, Mouse and Keyboard, Screen Configuration, and Printers.
- Upgrade path: A clean install is the recommended route from Bookworm. In-place upgrades work for many users but have reported package conflicts.
Trixie at a Glance
| Feature | Bookworm | Trixie |
|---|---|---|
| Debian base | Debian 12 | Debian 13 |
| Kernel | 6.1 → 6.6 → 6.12 (late updates) | 6.12 LTS at launch |
| Python | 3.11 | 3.13 |
| Time representation | 32-bit time_t on 32-bit builds |
64-bit time_t |
| Settings apps | Several separate tools | Single Control Centre |
| Desktop theme | PiXflat | PiXtrix / PiXonyx (dark) |
| Custom image setup | Flat package lists | Hierarchical metapackages |
What Changed Under the Hood
Debian 13 Base and Kernel 6.12
Trixie rebases Raspberry Pi OS on Debian 13. You get newer libraries, newer compilers, and a longer security-support runway. Debian made the jump from kernel 6.1 to 6.12. Raspberry Pi OS was already shipping a 6.12 kernel before the rebase, so the kernel experience feels familiar if you kept your Bookworm system updated.
Newer toolchains matter for embedded work. Cross-compiling for a RP2040 or RP2350 companion board, building a C extension, or compiling a kernel module all start from a more current GCC and binutils.
64-bit Time and the Year 2038 Fix
Systems that store time as a signed 32-bit integer overflow in January 2038. Trixie switches to a 64-bit time_t, including on the 32-bit build. This affects any compiled code that stores timestamps in binary formats, such as sensor logs, custom protocols, or database files.
Recompile your own C and C++ projects against Trixie headers. Check any binary file format that embeds a 4-byte timestamp.
Python 3.13 and Virtual Environments
Debian 13 ships Python 3.13. System Python remains marked as externally managed, so a plain pip install fails with an error. Use a virtual environment for every project:
# Create an isolated environment that can still see system packages (needed for gpiozero/lgpio)
python3 -m venv --system-site-packages ~/pi-env
# Activate it
source ~/pi-env/bin/activate
# Install extras inside the venv only
pip install smbus2
/tmp Moves to tmpfs
Debian 13 mounts /tmp as a RAM-backed tmpfs by default. This reduces SD card wear. It also means files in /tmp vanish on reboot and consume RAM. A logging script that writes large temporary files on a 1 GB board can hit memory pressure. Move bulky data to /var/tmp or a dedicated data directory.
Package Sources and APT
Trixie ships a newer APT that supports the deb822 source format. Check your current sources with:
# Show the APT version and configured repositories
apt --version
apt policy | head -n 20
Desktop and Usability Changes
New Theme: PiXtrix and PiXonyx
Trixie introduces two GTK themes: PiXtrix (standard) and PiXonyx (dark). It also adds a matching icon set, a new system font (Nunito Sans Light), and new wallpapers. The panel uses the Foundation’s own fork of lxpanel, and browser packages (Chromium and Firefox) are updated.
Control Centre
The new Control Centre merges the old preference tools into one lightweight application. Its pages load as runtime plugins, so the Foundation can add tabs without rewriting the core. Printer management has its own page, which replaces the previous printer tool.
For headless work, raspi-config remains your friend:
# Open the terminal configuration menu
sudo raspi-config
Lock Screen and Auto-login
Trixie adds a front end for swaylock, so the lock screen has a proper password prompt. Console auto-login and desktop auto-login can be configured independently. A kiosk that boots to desktop can keep a locked-down console.
Wayland with labwc
The desktop on newer boards runs on Wayland using the labwc compositor. X11-only tools such as xdotool and some screen-capture scripts will not behave as they did before. Use Wayland-native alternatives such as grim for screenshots and wtype for keystroke injection.
Keyboard Utilities
Two command-line tools ship for official Raspberry Pi keyboards: rpi-keyboard-config and rpi-keyboard-fw-update. They configure layout options and update keyboard firmware without a separate flashing tool.
Modular Packaging with Metapackages
Trixie reorganizes the image into a hierarchy of metapackages. This helps if you build custom images or maintain a fleet.
- Lite images can add desktop-adjacent tools with metapackages such as rpd-utilities, which installs the Utilities and Help menu contents, including Raspberry Pi Connect, SD Card Copier, and Bookshelf.
- Desktop images can remove groups of applications cleanly instead of purging dozens of individual packages.
# Add the utilities set to a Lite install
sudo apt update
sudo apt install rpd-utilities
Hardware Support and 32-bit Status
Trixie supports every Raspberry Pi model, from the original Pi 1 and Zero to the Pi 4, Pi 5, and Pi 500. Debian 13 dropped 32-bit installs for x86, but the Pi project kept a 32-bit armhf image alive. If you run an old Pi Zero in a remote sensor node, you do not need to migrate.
| Board | Recommended image | Notes |
|---|---|---|
| Pi Zero / Pi 1 | 32-bit Lite | Low RAM, skip the desktop |
| Pi 3 / Zero 2 W | 64-bit Lite or Desktop | 1 GB RAM, keep services lean |
| Pi 4 | 64-bit Desktop | Best all-around choice |
| Pi 5 / Pi 500 | 64-bit Desktop | Wayland with labwc by default |
Cloud-init and Headless Provisioning
Fresh Trixie images support cloud-init for first-boot configuration. This is how newer versions of Raspberry Pi Imager (2.0 and later) apply settings such as hostname, user, Wi-Fi, and SSH keys. It is also how some features, like USB gadget Ethernet mode, can be enabled on new images.
For fleets, write a user-data file once and reuse it across SD cards. That beats walking through a GUI wizard on each board.
Bookworm to Trixie: Upgrade vs. Clean Install
The Foundation recommends a clean install for anyone coming from Bookworm. The metapackage reorganization and the theme replacement leave behind old package ownership conflicts. Community reports of in-place upgrades show failures in the middle of apt full-upgrade, including file conflicts with older panel plugin packages like lxplug-batt.
Use this decision table:
| Situation | Best path |
|---|---|
| Desktop with many customizations | Clean install, restore dotfiles |
| Headless Lite server with simple services | In-place upgrade, with a backup |
| Production device in the field | Clean install on a spare card, then swap |
| Pi 5 with NVMe boot | Clean install to the NVMe, test, then retire the old drive |
If you do attempt an in-place upgrade, image your SD card first:
# On another Linux machine: back up the card before touching anything
sudo dd if=/dev/sdX of=pi-bookworm-backup.img bs=4M status=progress
Then follow the Debian release notes. The sources must switch from bookworm to trixie for both the Debian and Raspberry Pi repositories, followed by a full upgrade and a reboot. Expect to resolve conflicts by hand.
Real-World Project: Pi Health Monitor with a Status LED
This project validates your fresh Trixie install. It reads the SoC temperature and drives an LED on GPIO17 with a 330 Ω resistor.
Wiring:
- Connect GPIO17 (physical pin 11) to one end of a 330 Ω resistor.
- Connect the other end to the LED anode (long leg).
- Connect the LED cathode to GND (physical pin 9).
At 3.3V logic with a 330 Ω resistor, the LED draws roughly 4 mA, well inside the safe per-pin limit.
#!/usr/bin/env python3
# Pi health monitor: blink faster as SoC temperature rises.
# Run inside the venv created earlier (gpiozero ships with Raspberry Pi OS).
from gpiozero import LED, CPUTemperature
from time import sleep
led = LED(17) # GPIO17 drives the LED through a 330-ohm resistor
cpu = CPUTemperature() # Reads the SoC temperature sensor
while True:
temp = cpu.temperature # Degrees Celsius
if temp < 50:
led.on() # Solid: healthy
sleep(1)
elif temp < 70:
led.blink(on_time=0.5, off_time=0.5, n=2) # Slow blink: warm
sleep(2)
else:
led.blink(on_time=0.1, off_time=0.1, n=5) # Fast blink: throttling risk
sleep(1)
print(f"SoC temperature: {temp:.1f} C")
To check throttling from the shell:
# Print SoC temperature and throttling flags
vcgencmd measure_temp
vcgencmd get_throttled
A get_throttled result of 0x0 means no undervoltage or thermal events. Anything else points to a weak 5V supply or inadequate cooling.
Post-Install Checklist for Trixie
- Run
sudo apt update && sudo apt full-upgradeimmediately after first boot. - Confirm the kernel with
uname -r(expect a 6.12.x build). - Rebuild any compiled projects against the new headers.
- Move large temporary files out of /tmp.
- Recreate Python environments with
python3 -m venv. - Test any script that depends on X11 tooling under Wayland.
- Check I2C, SPI, and UART with
sudo raspi-configunder Interface Options.
FAQ
Is Raspberry Pi OS Trixie based on Debian 13?
Yes. Raspberry Pi OS Trixie is built on Debian 13, with Raspberry Pi’s own kernel, firmware, and desktop packages layered on top. The first image was released on October 1, 2025.
Should I upgrade from Bookworm to Trixie or reinstall?
Reinstall when you can. The Foundation recommends a clean install because Trixie reorganizes packages into metapackages and replaces the desktop theme. Simple headless servers can often upgrade in place, but back up the SD card first.
Does Raspberry Pi OS Trixie still support 32-bit Raspberry Pi models?
Yes. A 32-bit Trixie image is available, and all Pi models, from the Pi 1 and Zero through the Pi 5 and Pi 500, are supported. Use the 64-bit image on any Pi 3 or newer for the best performance.
Why does pip refuse to install packages on Trixie?
Python 3.13 on Debian 13 is marked externally managed, so system-wide pip install is blocked. Create a virtual environment with python3 -m venv, activate it, and install packages there.




