Skip to content

Releases: pybricks/pybricks-micropython

3.6.0

02 Mar 10:26
Compare
Choose a tag to compare

Changelog

[Unreleased]

[3.6.0] - 2024-03-02

Changed

  • Bump version from beta to 3.6.0 without additional changes.

[3.6.0b5] - 2025-02-26

Changed

  • Changed order of the DriveBase.arc method parameters. This method has not
    yet been released or documented, so this is not a breaking change (support#1157).
  • Reduced voltage threshold at which the charging light goes from red to green
    to indicate that the battery is full from 8300 to 8190 mV (pybricks-micropython#292).
  • Simplified API for hub.imu.up() and hub.imu.tilt() to only use a single
    calibrated keyword argument instead of separate use_gyro options. This
    had not been released yet so is not a breaking change.

[3.6.0b4] - 2025-02-14

Fixed

  • Fixed low-battery warning on boot (pybricks-micropython#292) when the
    voltage is not actually low.
  • Fixed light indidicator always briefly showing green when just plugged in
    or after rebooting (pybricks-micropython#292) even if battery is not
    actually full.

[3.6.0b3] - 2025-02-14

Added

  • Added optional calibrated=True parameter to acceleration() and up() and
    angular_velocity() and rotation methods of the IMU (support#943).
  • Implemented hub.imu.orientation() to give the rotation matrix of the hub or
    robot with respect to the inertial frame.
  • Added calibration parameters that can be set for angular velocity offset and
    scale and acceleration offset and scale.
  • Added hub.system.reset_storage to restore storage and settings to default
    state.
  • Replaced update_heading_correction with _imu_calibrate.py for 3D
    calibration (support#1907).

Changed

  • Enabled UTF-8 support for str objects.
  • The method DriveBase.angle() now returns a float (support#1844). This
    makes it properly equivalent to hub.imu.heading.
  • Re-implemented tilt using the gyro data by default. Pure accelerometer tilt
    can still be obtained with hub.imu.tilt(calibrated=False).
  • Re-implemented hub.imu.heading() to use optionally use the projection of 3D
    orientation to improve performance when the hub is lifted off the ground.
    The 1D-based heading remains the default for now.
  • Change return value of connected() property from bool to int using the value
    of pbdrv_usb_get_bcd(). This will allow pro users to be able to tell if they
    have a "nonstandard" charger that could prevent proper
    charging (pybricks-micropython#274).
  • When the Bluetooth button is selected to stop the program, don't disable the
    stop button while the hub menu is active (support#1975).

Fixed

  • Fixed battery charging timeout if it didn't reach 100% after about 6 hours.
    This is same behavior observed in official firmware. (pybricks-micropython#292).
  • Fixed inconsistent battery level reported to user. Now it uses the same value
    as used by the light indicator (support#2055).
  • Fixed DriveBase.angle() getting an incorrectly rounded gyro value, which
    could cause turn(360) to be off by a degree (support#1844).
  • Fixed hub silently ignoring non-orthogonal base axis when it should raise.
  • Fixed not handling negative duration in Speaker.beep() (support#1996).

Removed

  • Removed ev3dev and ev3rt-based CI builds. Pybricks 2.0 on ev3dev will
    continue to be available as a separate download.

[3.6.0b2] - 2024-10-15

Added

  • Allow color objects to be iterated as h, s, v = color_object or indexed
    as color_object[0]. This allows access to these properties in block
    coding (support#1661).
  • Added observe_enable to the hub BLE class to selectively turn observing
    on and off, just like you can with broadcasting (support#1806).
  • Added hub.system.info() method with hub status flags (support#1496) and
    value representing how the program was started.

Changed

  • Relaxed speed limit from 1000 deg/s to 1200 deg/s for external Boost
    motor (support#1623).
  • Make broadcast_channel optional instead of defaulting to 0.

Fixed

  • Fixed persistent data not being deleted when swapping
    from 3.6.0b1 to 3.5.0 and back to 3.6.0b1 (support#1846).
  • Fixed controls stopping if use_gyro is called again with the same
    argument as already active (support#1858).
  • Fixed lockup and reboot with f-strings and slice allocations in tight
    loops (support#1668).
  • Fixed program restarting if the stop button was held to end the program
    without an exception (support#1863).
  • Fixed program lockup when restarting a hub light or light matrix animation
    at exact multiples of its animation interval (support#1295).

[3.6.0b1] - 2024-09-24

Added

  • Allow Bluetooth to be toggled off and on with the Bluetooth button on the
    Prime Hub and the Inventor Hub (support#1615), and have this state persist
    between reboots.
  • Added heading_correction to hub.imu.settings to allow for automatic
    correction of the hub.imu.heading() value (support#1678).
  • Added update_heading_correction to interactively set the heading
    correction value (support#1678).
  • Added optional one byte program identifier to program start command.
    For now, this is added to start various builtin
    programs, but it prepares for the ability to start different downloaded
    programs too (pybricks-micropython#254).
  • Added one byte program identifier to the hub status report to the host.
  • Added interface and implementation for storing and selecting multiple code
    slots on the Prime Hub and Inventor Hub.
  • Added ability to set distance and angle in DriveBase.reset(). If the
    DriveBase is using the gyro, it will be set to the same angle. (support#1617).
  • Added DriveBase.arc method with more intuitive parameters to drive along
    an arc, to eventually replace DriveBase.curve (support#1157).

Changed

  • Changed protocol to Pybricks Profile v1.4.0.
  • When upgrading the firmware to a new version, the user program will now
    be erased. This avoids issues with incompatible program files (support#1622).
  • The angular_velocity_threshold, and acceleration_threshold settings
    in hub.imu.settings are now persistent between reboots.
  • Reduced hub poweroff time from 3 to 2 second to make it easier to turn off
    the hub (pybricks-micropython#250).
  • Improved font for the digits 0--9 when displaying them
    with hub.display.char(str(x)) (pybricks-micropython#253).
  • On SPIKE Prime Hub and Robot Inventor Hub, moved Bluetooth indications to
    the Bluetooth light. Only warning lights will be shown on the main button
    light. See (support#1716) and (pybricks-micropython#261).
  • Allow gyro calibration only while all motors are coasting (support#1840) to
    prevent recalibration during very steady moves (support#1687)
  • Reduced default angular velocity stationary threshold from an undocumented
    5 deg/s to 2 deg/s to reduce unwanted calibration while moving (support#1105).
  • If imu.reset_heading() is called while a drive base is actively using the
    gyro, an exception will be raised (support#1818).

Fixed

  • Fixed not able to connect to new Technic Move hub with LWP3Device().
  • Removed gc_collect() from tools.run_task() loop to fix unwanted delays.
  • Fixed await wait(0) never yielding, so parallel tasks could lock up (support#1429).

Removed

  • Removed loop_time argument to pybricks.tools.run_task as this wasn't
    having the desired effect, and would cause loop round trips to take 10 ms
    for every await wait(1) (support#1460). This was an undocumented feature.

[3.5.0] - 2024-04-11

Changed

  • Bump version from release candidate to 3.5.0 with...
Read more

3.6.0b5

26 Feb 11:30
Compare
Choose a tag to compare
3.6.0b5 Pre-release
Pre-release

Changelog

[Unreleased]

[3.6.0b5] - 2025-02-26

Changed

  • Changed order of the DriveBase.arc method parameters. This method has not
    yet been released or documented, so this is not a breaking change (support#1157).
  • Reduced voltage threshold at which the charging light goes from red to green
    to indicate that the battery is full from 8300 to 8190 mV (pybricks-micropython#292).
  • Simplified API for hub.imu.up() and hub.imu.tilt() to only use a single
    calibrated keyword argument instead of separate use_gyro options. This
    had not been released yet so is not a breaking change.

[3.6.0b4] - 2025-02-14

Fixed

  • Fixed low-battery warning on boot (pybricks-micropython#292) when the
    voltage is not actually low.
  • Fixed light indidicator always briefly showing green when just plugged in
    or after rebooting (pybricks-micropython#292) even if battery is not
    actually full.

[3.6.0b3] - 2025-02-14

Added

  • Added optional calibrated=True parameter to acceleration() and up() and
    angular_velocity() and rotation methods of the IMU (support#943).
  • Implemented hub.imu.orientation() to give the rotation matrix of the hub or
    robot with respect to the inertial frame.
  • Added calibration parameters that can be set for angular velocity offset and
    scale and acceleration offset and scale.
  • Added hub.system.reset_storage to restore storage and settings to default
    state.
  • Replaced update_heading_correction with _imu_calibrate.py for 3D
    calibration (support#1907).

Changed

  • Enabled UTF-8 support for str objects.
  • The method DriveBase.angle() now returns a float (support#1844). This
    makes it properly equivalent to hub.imu.heading.
  • Re-implemented tilt using the gyro data by default. Pure accelerometer tilt
    can still be obtained with hub.imu.tilt(calibrated=False).
  • Re-implemented hub.imu.heading() to use optionally use the projection of 3D
    orientation to improve performance when the hub is lifted off the ground.
    The 1D-based heading remains the default for now.
  • Change return value of connected() property from bool to int using the value
    of pbdrv_usb_get_bcd(). This will allow pro users to be able to tell if they
    have a "nonstandard" charger that could prevent proper
    charging (pybricks-micropython#274).
  • When the Bluetooth button is selected to stop the program, don't disable the
    stop button while the hub menu is active (support#1975).

Fixed

  • Fixed battery charging timeout if it didn't reach 100% after about 6 hours.
    This is same behavior observed in official firmware. (pybricks-micropython#292).
  • Fixed inconsistent battery level reported to user. Now it uses the same value
    as used by the light indicator (support#2055).
  • Fixed DriveBase.angle() getting an incorrectly rounded gyro value, which
    could cause turn(360) to be off by a degree (support#1844).
  • Fixed hub silently ignoring non-orthogonal base axis when it should raise.
  • Fixed not handling negative duration in Speaker.beep() (support#1996).

Removed

  • Removed ev3dev and ev3rt-based CI builds. Pybricks 2.0 on ev3dev will
    continue to be available as a separate download.

[3.6.0b2] - 2024-10-15

Added

  • Allow color objects to be iterated as h, s, v = color_object or indexed
    as color_object[0]. This allows access to these properties in block
    coding (support#1661).
  • Added observe_enable to the hub BLE class to selectively turn observing
    on and off, just like you can with broadcasting (support#1806).
  • Added hub.system.info() method with hub status flags (support#1496) and
    value representing how the program was started.

Changed

  • Relaxed speed limit from 1000 deg/s to 1200 deg/s for external Boost
    motor (support#1623).
  • Make broadcast_channel optional instead of defaulting to 0.

Fixed

  • Fixed persistent data not being deleted when swapping
    from 3.6.0b1 to 3.5.0 and back to 3.6.0b1 (support#1846).
  • Fixed controls stopping if use_gyro is called again with the same
    argument as already active (support#1858).
  • Fixed lockup and reboot with f-strings and slice allocations in tight
    loops (support#1668).
  • Fixed program restarting if the stop button was held to end the program
    without an exception (support#1863).
  • Fixed program lockup when restarting a hub light or light matrix animation
    at exact multiples of its animation interval (support#1295).

[3.6.0b1] - 2024-09-24

Added

  • Allow Bluetooth to be toggled off and on with the Bluetooth button on the
    Prime Hub and the Inventor Hub (support#1615), and have this state persist
    between reboots.
  • Added heading_correction to hub.imu.settings to allow for automatic
    correction of the hub.imu.heading() value (support#1678).
  • Added update_heading_correction to interactively set the heading
    correction value (support#1678).
  • Added optional one byte program identifier to program start command.
    For now, this is added to start various builtin
    programs, but it prepares for the ability to start different downloaded
    programs too (pybricks-micropython#254).
  • Added one byte program identifier to the hub status report to the host.
  • Added interface and implementation for storing and selecting multiple code
    slots on the Prime Hub and Inventor Hub.
  • Added ability to set distance and angle in DriveBase.reset(). If the
    DriveBase is using the gyro, it will be set to the same angle. (support#1617).
  • Added DriveBase.arc method with more intuitive parameters to drive along
    an arc, to eventually replace DriveBase.curve (support#1157).

Changed

  • Changed protocol to Pybricks Profile v1.4.0.
  • When upgrading the firmware to a new version, the user program will now
    be erased. This avoids issues with incompatible program files (support#1622).
  • The angular_velocity_threshold, and acceleration_threshold settings
    in hub.imu.settings are now persistent between reboots.
  • Reduced hub poweroff time from 3 to 2 second to make it easier to turn off
    the hub (pybricks-micropython#250).
  • Improved font for the digits 0--9 when displaying them
    with hub.display.char(str(x)) (pybricks-micropython#253).
  • On SPIKE Prime Hub and Robot Inventor Hub, moved Bluetooth indications to
    the Bluetooth light. Only warning lights will be shown on the main button
    light. See (support#1716) and (pybricks-micropython#261).
  • Allow gyro calibration only while all motors are coasting (support#1840) to
    prevent recalibration during very steady moves (support#1687)
  • Reduced default angular velocity stationary threshold from an undocumented
    5 deg/s to 2 deg/s to reduce unwanted calibration while moving (support#1105).
  • If imu.reset_heading() is called while a drive base is actively using the
    gyro, an exception will be raised (support#1818).

Fixed

  • Fixed not able to connect to new Technic Move hub with LWP3Device().
  • Removed gc_collect() from tools.run_task() loop to fix unwanted delays.
  • Fixed await wait(0) never yielding, so parallel tasks could lock up (support#1429).

Removed

  • Removed loop_time argument to pybricks.tools.run_task as this wasn't
    having the desired effect, and would cause loop round trips to take 10 ms
    for every await wait(1) (support#1460). This was an undocumented feature.

[3.5.0] - 2024-04-11

Changed

  • Bump version from release candidate to 3.5.0 without additional changes.

[3.5.0b2] - 2024-04-05

Added

  • Added optional keyword arguments to ...
Read more

3.6.0b4

14 Feb 13:28
Compare
Choose a tag to compare
3.6.0b4 Pre-release
Pre-release

Fixed

  • Fixed low-battery warning on boot (pybricks-micropython#292) when the
    voltage is not actually low.
  • Fixed light indicator always briefly showing green when just plugged in
    or after rebooting (pybricks-micropython#292) even if battery is not
    actually full.

3.6.0b3

14 Feb 09:11
Compare
Choose a tag to compare
3.6.0b3 Pre-release
Pre-release

Added

  • Added optional calibrated=True parameter to acceleration() and up() and
    angular_velocity() and rotation methods of the IMU (support#943).
  • Implemented hub.imu.orientation() to give the rotation matrix of the hub or
    robot with respect to the inertial frame.
  • Added calibration parameters that can be set for angular velocity offset and
    scale and acceleration offset and scale.
  • Added hub.system.reset_storage to restore storage and settings to default
    state.

Changed

  • Enabled UTF-8 support for str objects.
  • The method DriveBase.angle() now returns a float (support#1844). This
    makes it properly equivalent to hub.imu.heading.
  • Re-implemented tilt using the gyro data by default. Pure accelerometer tilt
    can still be obtained with hub.imu.tilt(use_gyro=False).
  • Re-implemented hub.imu.heading() to use optionally use the projection of 3D
    orientation to improve performance when the hub is lifted off the ground.
    The 1D-based heading remains the default for now.
  • Change return value of connected() property from bool to int using the value
    of pbdrv_usb_get_bcd(). This will allow pro users to be able to tell if they
    have a "nonstandard" charger that could prevent proper
    charging (pybricks-micropython#274).
  • When the Bluetooth button is selected to stop the program, don't disable the
    stop button while the hub menu is active (support#1975).

Fixed

  • Fixed battery charging timeout if it didn't reach 100% after about 6 hours.
    This is same behavior observed in official firmware. (pybricks-micropython#292).
  • Fixed inconsistent battery level reported to user. Now it uses the same value
    as used by the light indicator (support#2055).
  • Fixed DriveBase.angle() getting an incorrectly rounded gyro value, which
    could cause turn(360) to be off by a degree (support#1844).
  • Fixed hub silently ignoring non-orthogonal base axis when it should raise.
  • Fixed not handling negative duration in Speaker.beep() (support#1996).

Removed

  • Removed ev3dev and ev3rt-based CI builds. Pybricks 2.0 on ev3dev will
    continue to be available as a separate download.

3.6.0b2

15 Oct 11:27
Compare
Choose a tag to compare
3.6.0b2 Pre-release
Pre-release

Added

  • Allow color objects to be iterated as h, s, v = color_object or indexed
    as color_object[0]. This allows access to these properties in block
    coding (support#1661).
  • Added observe_enable to the hub BLE class to selectively turn observing
    on and off, just like you can with broadcasting (support#1806).
  • Added hub.system.info() method with hub status flags (support#1496) and
    value representing how the program was started.

Changed

  • Relaxed speed limit from 1000 deg/s to 1200 deg/s for external Boost
    motor (support#1623).
  • Make broadcast_channel optional instead of defaulting to 0.

Fixed

  • Fixed persistent data not being deleted when swapping
    from 3.6.0b1 to 3.5.0 and back to 3.6.0b1 (support#1846).
  • Fixed controls stopping if use_gyro is called again with the same
    argument as already active (support#1858).
  • Fixed lockup and reboot with f-strings and slice allocations in tight
    loops (support#1668).
  • Fixed program restarting if the stop button was held to end the program
    without an exception (support#1863).
  • Fixed program lockup when restarting a hub light or light matrix animation
    at exact multiples of its animation interval (support#1295).

3.6.0b1

24 Sep 14:17
Compare
Choose a tag to compare
3.6.0b1 Pre-release
Pre-release

Added

  • Allow Bluetooth to be toggled off and on with the Bluetooth button on the
    Prime Hub and the Inventor Hub (support#1615), and have this state persist
    between reboots.
  • Added heading_correction to hub.imu.settings to allow for automatic
    correction of the hub.imu.heading() value (support#1678).
  • Added update_heading_correction to interactively set the heading
    correction value (support#1678).
  • Added optional one byte program identifier to program start command.
    For now, this is added to start various builtin
    programs, but it prepares for the ability to start different downloaded
    programs too (pybricks-micropython#254).
  • Added one byte program identifier to the hub status report to the host.
  • Added interface and implementation for storing and selecting multiple code
    slots on the Prime Hub and Inventor Hub.
  • Added ability to set distance and angle in DriveBase.reset(). If the
    DriveBase is using the gyro, it will be set to the same angle. (support#1617).
  • Added DriveBase.arc method with more intuitive parameters to drive along
    an arc, to eventually replace DriveBase.curve (support#1157).

Changed

  • Changed protocol to Pybricks Profile v1.4.0.
  • When upgrading the firmware to a new version, the user program will now
    be erased. This avoids issues with incompatible program files (support#1622).
  • The angular_velocity_threshold, and acceleration_threshold settings
    in hub.imu.settings are now persistent between reboots.
  • Reduced hub poweroff time from 3 to 2 second to make it easier to turn off
    the hub (pybricks-micropython#250).
  • Improved font for the digits 0--9 when displaying them
    with hub.display.char(str(x)) (pybricks-micropython#253).
  • On SPIKE Prime Hub and Robot Inventor Hub, moved Bluetooth indications to
    the Bluetooth light. Only warning lights will be shown on the main button
    light. See (support#1716) and (pybricks-micropython#261).
  • Allow gyro calibration only while all motors are coasting (support#1840) to
    prevent recalibration during very steady moves (support#1687)
  • Reduced default angular velocity stationary threshold from an undocumented
    5 deg/s to 3 deg/s to reduce unwanted calibration while moving (support#1105).
  • If imu.reset_heading() is called while a drive base is actively using the
    gyro, an exception will be raised (support#1818).

Fixed

  • Fixed not able to connect to new Technic Move hub with LWP3Device().
  • Removed gc_collect() from tools.run_task() loop to fix unwanted delays.
  • Fixed await wait(0) never yielding, so parallel tasks could lock up (support#1429).

Removed

  • Removed loop_time argument to pybricks.tools.run_task as this wasn't
    having the desired effect, and would cause loop round trips to take 10 ms
    for every await wait(1) (support#1460). This was an undocumented feature.

3.5.0

11 Apr 12:23
Compare
Choose a tag to compare

Changed

  • Bump version from release candidate to 3.5.0 without additional changes.

3.5.0b2

05 Apr 08:34
Compare
Choose a tag to compare
3.5.0b2 Pre-release
Pre-release

Added

  • Added optional keyword arguments to pybricks.tools.read_input_byte() for
    automatic conversion via chr and to skip to the last byte (support#1574).
  • Added disconnect method to pybricks.pupdevices.Remote and
    pybricks.iodevices.LWP3Device (support#802).

Changed

  • Raise a descriptive error when the Car class can't find a steering mechanism
    end stop within 10 seconds (support#1564).
  • Extended region of readable data with hub.system.storage to include
    user program (pybricks-micropython#243).

Fixed

  • Fixed hubs not shutting down when holding hub button (support#1419).

3.5.0b1

21 Mar 18:06
Compare
Choose a tag to compare
3.5.0b1 Pre-release
Pre-release

Added

  • Added support for rumble in XboxController (support#1024).
  • Added Button.UP, Button.DOWN, Button.LEFT, and Button.RIGHT to
    XboxController buttons method (support#1537). The separate directional
    pad method remains available.

Changed

  • Allow single floating point value for brightness array (support#1547).

3.4.0

11 Mar 14:34
Compare
Choose a tag to compare

Changed

  • Additional error checking in pybricks.robotics.Car setup (support#1502).