Changelog
4.0.0b5 - 2026-01-30
Added
- Added support for absolute turns with and without the gyro
withdrive_base.turn(angle, absolute=True)(pybricks-micropython#458). - Added support for coordinate traversals with
drive_base.move_by(dx, dy)for
practical navigation (pybricks-micropython#458).
Changed
- Reset IMU heading to
0.0at the start of a user program for consistent
drivebase behavior.
Fixed
- Fix missing classes in
pybricks.iodeviceson SPIKE Prime (regression in
4.0.0b2) (pybricks-micropython#456).
4.0.0b4 - 2026-01-22
Added
- Enabled NXT Light Sensor, NXT Touch Sensor, NXT Sound Sensor on NXT.
- Added
host_connected_usbtohub.system.info()dictionary. - Added
program_idtohub.system.info()dictionary (support#2538).
Changed
- Reduced user stack size to
12 KBon SPIKE Prime Hub to make it the same as
SPIKE Essential Hub. This frees up some RAM for system resources, and we never
use this much in practice. - Allow simultaneous USB and up to two Bluetooth connections to SPIKE Prime.
Press the Bluetooth button to allow a connection when already connected.
Fixed
- Fixed internal rounding error that could could cause a Drive Base to be 1 mm
off after driving 3 meters, depending on configuration parameters (support#2500). - Fixed Powered Up remote light getting the wrong color (support#2497).
- Fix shutdown animation not visible when shutting down due to Bluetooth glitches (support#2521).
- Fixed Powered Up remote raising the wrong exception on timeout (support#2521).
- Fixed Xbox Controller connection waiting indefinitely if it isn't in pairing mode (support#2521).
- Fixed Xbox Controller attempting to pair with host (support#2522).
- Fixed Powered Up remote and Xbox Controller working only after the first
connection. All of the above Remote and Xbox Controller were introduced in
the previous beta release, so did not affect any stable release (support#2521). - Fixed Xbox Controller sometimes not working the first time (support#1509).
- Fixed motors sometimes not working after boot (support#2550).
4.0.0b3 - 2025-12-05
Added
- Added preliminary BTstack support for EV3 (pybricks-micropython#405).
Changed
- Make 3D orientation default for heading and drivebase heading control (support#1962).
- Improved color detection when using default colors. Also changed the HSV calculation
for the SPIKE Color Sensor and Boost Color and Distance Sensor to make them
more similar. User code should measure HSV values again in old code (pybricks-micropython#421).
Fixed
- Fixed
race=Falseignored inpybricks.tools.multitask(). (support#2468) - Fixed Essential Hub button being disabled after power off so it could not be
switched on again. - Fixed
TechnicHubclass being unavailable on Technic Hub in a recent
pre-release (pybricks-micropython#425).
4.0.0b2 - 2025-11-25
Fixed
- Enable CI releases for v4.x.
4.0.0b1 - 2025-11-25
Added
- Experimental support for USB connectivity on SPIKE Prime (pybricks-micropython#208). Currently disabled by default.
- Initial support for
pybricks.iodevices.UARTDevice(support#220). - Enabled previously hidden support for multiple code
slots (pybricks-micropython#264, pybricks-micropython#312). - Added the following status flags to the Pybricks protocol:
PBIO_PYBRICKS_STATUS_BATTERY_HIGH_TEMP_SHUTDOWN = 10PBIO_PYBRICKS_STATUS_BATTERY_HIGH_TEMP_WARNING = 11PBIO_PYBRICKS_STATUS_USB_HOST_CONNECTED = 12
- New embedded firmware for LEGO MINDSTORMS EV3:
- Fast boot on TI AM1808.
- New clock driver.
- New display driver.
- New SPI storage driver.
- New USB controller.
- New motor driver.
- New UART driver with hardware and PRU support.
- New PRU firmware for LED PWM control.
- New GPIO driver.
- New ADC driver.
- New DCM driver for EV3 auto-detection.
- Enabled the original
pybricks.ev3devicesto run on the new embedded EV3 port:- Color Sensor.
- Touch Sensor.
- Infrared Sensor and Beacon.
- Gyro Sensor in angle + rate mode, with calibration option.
- Ultrasonic Sensor.
- Large and Medium Motor.
- Enabled the original
pybricks.nxtdevicesto run on the new embedded EV3 port:- Touch Sensor, including 1.0 version without auto-detection.
- Color Sensor, with background process for background light cancellation.
- Light Sensor, with background process for background light cancellation.
- Ultrasonic Sensor, including I2C quirks for LEGO Devices.
- Sound Sensor.
- Temperature Sensor in I2C mode.
- Energy Meter.
- vernier Adapter.
- Enabled all original
pybricks.iodevices, all async-compatible:PUPDevice/LUMPDeviceon Powered Up and EV3.AnalogSensoron EV3.I2CDeviceon EV3.UARTDeviceon EV3 and Powered Up. Added ability to reset protocol.DCMotoron EV3
- Added new
pbio/imagemodule for image frame handling and display support. - Added a new Virtual Hub to simulate the embedded Pybricks ports.
Changed
- Extensive overhaul of UART drivers on all hubs. This affects all
official LEGO UART sensors on all hubs. - Extensive overhaul of the
pbio/portmodule. LEGO mode can now be disabled
to enable direct access to UART or I2C or ADC on compatible platforms. - Extensive overhaul of MicroPython async drivers to make it work across
Bluetooth drivers. - Extensive overhaul of Bluetooth drivers to split out common code and make
async code more stable and safely cancellable. - Overhaul of Bluetooth and USB events through a unified
pbio/sys/hostinterface. - LWP3Device.read() now gives buffered notification values instead of blocking
until a value arrives. - Replaced Contiki runloop with new Pybricks protothreads.
- Enabled
fltofor smaller firmware build size. - Upgraded to MicroPython 1.26. The MPY minor version has changed to v6.3.
This only affects people using native code in their user programs. - Update NXT build to follow along with EV3 wherever possible.
- Unified
mphalportandmicropython.cinterface for all hubs. - Improved power-off sequence to better handle sensors turning off and internal
devices like the IMU turning off. - Restored line numbers in error messages on Move Hub
- Enabled
CSUPEROPTon Move Hub and Technic Hub to reduce build size at a
slight reduction in VM speed.
Fixed
- Reduced hanging when broadcasting and observing at the same time with Technic
Hub (support#2206). - Fixed hub shutting down immediately after disconnecting Bluetooth when
no program had run for a while. - Fixed some error messages not printing on a new line if a program ends.
- Fix speaker when playing a frequency of 0.
- pybricks.tools: Fix crash when cross() args are wrong type.
Removed
- Removed support for Pybricks on ev3dev. The official 2.0 release remains
available for anyone who needs Pybricks on Debian Linux. - Removed the experimental build of Pybricks on EV3RT. This is no longer needed
now that the embedded build is ready. - Removed unix-variant of the Virtual Hub. This has been replaced with a simulated
embedded hub.