github pybricks/pybricks-micropython v4.0.0b5
4.0.0b5

latest release: @pybricks/firmware/v7.28.0
pre-release4 hours ago

Changelog

4.0.0b5 - 2026-01-30

Added

  • Added support for absolute turns with and without the gyro
    with drive_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.0 at the start of a user program for consistent
    drivebase behavior.

Fixed

4.0.0b4 - 2026-01-22

Added

  • Enabled NXT Light Sensor, NXT Touch Sensor, NXT Sound Sensor on NXT.
  • Added host_connected_usb to hub.system.info() dictionary.
  • Added program_id to hub.system.info() dictionary (support#2538).

Changed

  • Reduced user stack size to 12 KB on 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

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=False ignored in pybricks.tools.multitask(). (support#2468)
  • Fixed Essential Hub button being disabled after power off so it could not be
    switched on again.
  • Fixed TechnicHub class 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 = 10
    • PBIO_PYBRICKS_STATUS_BATTERY_HIGH_TEMP_WARNING = 11
    • PBIO_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.ev3devices to 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.nxtdevices to 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 / LUMPDevice on Powered Up and EV3.
    • AnalogSensor on EV3.
    • I2CDevice on EV3.
    • UARTDevice on EV3 and Powered Up. Added ability to reset protocol.
    • DCMotor on EV3
  • Added new pbio/image module 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/port module. 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/host interface.
  • LWP3Device.read() now gives buffered notification values instead of blocking
    until a value arrives.
  • Replaced Contiki runloop with new Pybricks protothreads.
  • Enabled flto for 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 mphalport and micropython.c interface 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 CSUPEROPT on 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.

Don't miss a new pybricks-micropython release

NewReleases is sending notifications on new releases.