All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
2.3.2 - 2026-01-23
- Removed debug print statements in
pybricksdev.compile.compile_multi_file(). - Fixed
__init__.pyfiles in packages not being included when compiling multi-file projects (pybricksdev#131).
2.3.1 - 2026-01-18
- Changed
pybricksdev.compile.compile_multi_file()to usempy-toolto find imports instead of Python'sModuleFinder.
- Fixed compiling multi-file projects with implicit namespace packages.
- Fixed EV3 firmware upload on Windows (pybricksdev#128).
2.3.0 - 2025-10-31
- Added the
--binoption to thecompilecommand.
2.2.0 - 2025-10-25
- Added the
Run Stored Programoption to the--stay-connectedmenu. (pybricksdev#125) - Added the
Change Target Fileoption to the--stay-connectedmenu. (pybricksdev#123)
2.1.1 - 2025-09-13
- Fixed USB/DFU hub not rebooting after flashing firmware on Windows (pybricksdev#112).
2.1.0 - 2025-09-10
- Added the
--stay-connectedarg to thepybricksdev runcommand, allowing re-compiling and running the input file. Also echoes the hub's output to the console when manually running a program. (pybricksdev#122)
2.0.1 - 2025-08-11
- Fixed piping text files to
pybricksdev runfrom stdin.
2.0.0 - 2025-08-10
- Added optional user program ID arg to
PybricksHub.start_user_program(). - Added support for running programs via USB on EV3 and NXT.
- Fixed calling
PybricksHub.write()methods. - Fixed using default text encoding when opening text files.
- Downloading programs without starting them can now be done by
adding
--no-startto the run tool.
- Removed
REPLHub. This was used for non-Pybricks MicroPython boards, butmpremoteshould be used for this. - Removed
EV3Connection. This was used for ev3dev connections over ssh, making it possible to automate motor benchmarking on ev3dev. This use case no longer applies and other tools can be used to run code on ev3dev.
1.2.0 - 2025-07-11
- Added support for Pybricks Profile v1.5.0.
1.1.0 - 2025-05-28
- Added
pybricksdev downloadcommand to download Python scripts to hubs without running them. Supports BLE, USB, and SSH connections. (pybricksdev#107)
1.0.1 - 2025-02-20
- Relax version constraints. (pybricksdev#106)
1.0.0 - 2025-02-01
- Partial/experimental support for
pybricksdev run usb.
- Fix crash when running
pybricksdev run ble -(bug introduced in alpha.49).
1.0.0-alpha.52 - 2024-11-29
- Added support for Python 3.13.
1.0.0-alpha.51 - 2024-11-01
- Added
pybricksdev oad infocommand. - Added
pybricksdev oad flashcommand.
- Fixed EV3 firmware flashing on USB 3.0 systems.
1.0.0-alpha.50 - 2024-07-01
- Improved
SyntaxErrorhandling inlwp3 replcommand. - Minimum Python version changed to 3.10.
- Fixed
PortIDexception when runninglwp3 replcommand.
1.0.0-alpha.49 - 2024-06-30
- Use relative paths when compiling multi-file projects.
- Better error message when hitting Python bug when compiling multi-file projects.
- Fixed
pybricksdevBLE commands not working on Windows whenpythoncompackage is present in environment.
1.0.0-alpha.48 - 2024-05-04
- Updated
hidapidependency to v0.14.0.
- Fixed installing on Windows due to failed
hidapiinstallation.
1.0.0-alpha.47 - 2024-05-04
- Allow hostname in
pybricksdev run ssh --name=.... - Updated
bleakdependency to v0.22.0. - Support Python up to 3.12.
- Fixed bug in udev rules.
1.0.0-alpha.46 - 2023-05-01
- Added
PybricksHub.download_user_program()method (support#284). - Added support for flashing EV3 firmware.
- Added support for MPY ABI v6.1.
1.0.0-alpha.45 - 2023-04-21
- Added
PybricksHub.stdout_observableproperty (support#1038).
- Fixed endline in
PybricksHub.write_line().
1.0.0-alpha.44 - 2023-04-20
- Restored
PybricksHub.outputattribute (support#1037).
1.0.0-alpha.43 - 2023-04-19
- Added support for Pybricks Profile v1.3.0.
- Added new
PybricksHub.write_string()method. - Added new
PybricksHub.write_line()method. - Added new
PybricksHub.read_line()method. - Added new
PybricksHub.start_user_program()method. - Added new
PybricksHub.stop_user_program()method.
1.0.0-alpha.42 - 2023-04-12
- Fixed Bleak
FutureWarningabout usingBLEDevice.metadata.
1.0.0-alpha.41 - 2023-03-26
- Fixed
pybricks.ble.find_device()returning withname is Noneon Windows (support#1010).
1.0.0-alpha.40 - 2023-03-22
- Updated
bleakdependency to v0.20.0.
1.0.0-alpha.39 - 2023-03-06
- Fixed Python 3.11 compatibility of vendored
dfu_uploadmodule (support#973).
1.0.0-alpha.38 - 2023-03-03
- Added
pybricksdev.connections.ConnectionStateenum class. - Added
pybricksdev.connections.pybricks.PybricksHub.connection_state_observableattribute.
- Fixed
pybricksdev.connections.pybricks.PybricksHubdisconnect state not reset after reconnect (support#971).
- Removed
pybricksdev.connections.pybricks.PybricksHub.disconnect_observableattribute. - Removed
pybricksdev.connections.pybricks.PybricksHub.connectedattribute.
1.0.0-alpha.37 - 2023-02-27
- Added support for including precompiled .mpy libraries.
1.0.0-alpha.36 - 2023-02-18
- Changed EV3 script runner to just copy the script instead of replicating the local directory structure on the brick.
1.0.0-alpha.35 - 2023-02-10
- Added support for Python 3.11.
1.0.0-alpha.34 - 2023-01-21
- Added
pybricksdev.ble.pybricks.Command.PBIO_PYBRICKS_COMMAND_REBOOT_TO_UPDATE_MODE. - Added support for Pybricks firmware metadata v2.1.0.
- Added support for flashing firmware to LEGO MINDSTORMS NXT bricks.
- Fixed reboot in update mode for Pybricks Profile >= 1.2.0 in
pybricksdev flashCLI.
1.0.0-alpha.33 - 2022-11-06
- Updated Bleak dependency to v0.19.4.
1.0.0-alpha.32 - 2022-10-14
- Added support for Pybricks Profile v1.2.0 (BLE).
1.0.0-alpha.31 - 2022-09-14
- Experimental support for relative and nested imports.
- Added support for
firmware.metadata.jsonv2.0.0.
- Move/renamed
pybricksdev.flash.create_firmwaretopybricksdev.firmware.create_firmware_blob. - Changed return value of
pybricksdev.firmware.create_firmware_blobto include license text.
- Fixed "object is not subscriptable" error in Python 3.8 in
firmwaremodule.
1.0.0-alpha.30 - 2022-08-26
- Added
fw_versionattribute topybricksdev.connections.pybricks.PybricksHub. - Experimental support for multi-file projects.
- Fixed running programs on hubs with firmware with MPY ABI v5.
1.0.0-alpha.29 - 2022-07-08
- Changed ABI default value to v6 for running programs.
1.0.0-alpha.28 - 2022-07-04
- Added support for compiling to MPY ABI v6 (MicroPython v1.19+).
abiarg is now required incompile.compile_file.
1.0.0-alpha.27 - 2022-06-21
- Changed dependency from
mpy-crosstompy-cross-v5. - Increased wait time when waiting for user program to start in
PybricksHub.run().
- Fix syntax error on Python < 3.10 in
firmwaremodule.
1.0.0-alpha.26 - 2022-06-07
- Added typings for firmware metadata json structure.
main.pyinfirmware.zipis now optional.
- Removed support for
firmware.zipfiles withfirmware.bininstead offirmware-base.bin.
1.0.0-alpha.25 - 2022-03-17
- Added
PybricksHub.race_disconnect()method.
- Moved
EV3Connectionfromconnectionstoconnections.ev3dev. - Moved
REPLHubfromconnectionstoconnections.lego. - Moved
PybricksHubfromconnectionstoconnections.pybricks.
- Fixed race condition with
pybricksdev run blenot waiting for program to finish before disconnecting (pybricksdev#28).
1.0.0-alpha.24 - 2022-01-25
- Fixed regression causing crash when attempting to flash SPIKE firmware (support#617).
1.0.0-alpha.23 - 2022-01-17
- Fixed
pybricksdev flashcommand with--nameargument not connecting.
1.0.0-alpha.22 - 2022-01-17
- Added
ble.lpw3.AdvertisementDataclass. - Added
ble.lpw3.BootloaderAdvertisementDataclass.
- Moved
Bootloader*to newble.lwp3.bootloadermodule. pybricksdev flashwill now discover hubs running official LEGO firmware or Pybricks firmware and reboot in bootloader mode automatically.
1.0.0-alpha.21 - 2022-01-12
- Updated
bleakdependency to v0.14.1.
1.0.0-alpha.20 - 2022-01-10
- Updated
bleakdependency to v0.14.0.
-
Fixed Bluetooth Low Energy not working on macOS 12.
-
Updated
bleakdependency to v0.12.1.
1.0.0-alpha.19 - 2021-12-24
- Fixed incorrect metadata checksum for the firmware installer for SPIKE hubs.
1.0.0-alpha.18 - 2021-12-03
- Added support for Python 3.10.
- Fixed
tqdmdependency version. - Fixed being unable to set the name of SPIKE hubs.
1.0.0-alpha.17 - 2021-10-25
- Experimental firmware installation on SPIKE Prime and SPIKE Essential via usb. The command line commands are unchanged. If you try to install the firmware on SPIKE hubs, it will first look for a hub running the regular firmware. If it doesn't find any, it will proceed using DFU as before.
- Firmware binaries for SPIKE hubs are no longer being customized with a main script and a changed checksum. Instead, it simply installs firmware.bin from the CI ZIP file.
1.0.0-alpha.16 - 2021-10-12
- Script runner for generic MicroPython boards via USB. This is mainly used for debugging.
- Visual Studio Code launcher settings to run a script via BLE.
1.0.0-alpha.15 - 2021-09-21
- Added
VOLUMEtoble.lwp3.bytecodes.HubPropertyenum. - Added SPIKE Essential hub device IDs.
- Added Luigi hub device ID.
- Fixed BlueZ disconnecting when sending a command with
pybricksdev lwp3 replto a City hub.
1.0.0-alpha.14 - 2021-08-27
- Changed udev rules to use
TAG+="uaccess"instead ofMODE="0666".
- Fixed device not rebooting after
dfu restore.
1.0.0-alpha.13 - 2021-08-06
- Fixed crash in CRC32 checksum.
- Fixed flashing with
dfu-utilnot always working (support#420).
1.0.0-alpha.12 - 2021-08-04
- Updated
bleakdependency to v0.12.1. runandcompilescripts now accept-as an argument to mean stdin.
- Removed script command line args in
runandcompilecommands. Only accepts file name now.
1.0.0-alpha.11 - 2021-07-05
- Added support for Pybricks Protocol v1.1.0.
- Fixed
pybricksdev ble runnot working with BOOST Move hub.
1.0.0-alpha.10 - 2021-06-27
- Support for Python 3.9.
- Short
-noption for--nameoption inpybricksdev run. - Option to set hub name when flashing firmware.
- Update to Bleak v0.12.0.
- Change
pybricksdev runto use--wait/--no-waitinstead of--wait=False.
- Fix
pybricksdev lwp3 replcan only connect to remote control. - Fix Technic Large hub Bluetooth hub kind.
1.0.0-alpha.9 - 2021-05-27
pybricksdev.ble.lwp3.bytecodesmodule.pybricksdev.ble.lwp3.messagesmodule.pybricksdev lwp3 replcommand line tool.
- Crash when running
pybricksdev dfuwithout args on command line.
1.0.0-alpha.8 - 2021-05-18
pybricksdev.ble.lwp3module.pybricksdev.ble.nusmodule.pybricksdev.ble.pybricksmodule.
- Name parameter to
pybricksdev run blecommand is now optional.
- Connecting to BLE devices based on Bluetooth address.
1.0.0-alpha.7 - 2021-05-17
- Debug option to CLI interface.
- Use standard Python logging for modules instead of per-object.
- Use progress bars when downloading program to hub.
- Delay option in CLI
flashcommand.
- Flashing firmware using BLE under conditions on Windows.
NotImplementedErrorwhen compiling to .mpy in ipython kernel on Windows.
- Skipped for technical reasons.
1.0.0-alpha.5 - 2021-05-04
- REPL installer for SPIKE/MINDSTORMS hubs.
- Data logging to file.
1.0.0-alpha.4 - 2021-04-12
- Size check when restoring firmware via USB/DFU.
- Added
pybricksdev.tools.chunk()function. - Added basic command completion to
pybricksdev lwp3 repl.
- Wait for some time to allow program output to be received before disconnecting
in the
runcommand. - Fixed spelling of
INPUTinpybricksdev.ble.lwp3.messages. - Fixed
pybricksdev lwp3 repldoes not exit if device disconnects.
1.0.0-alpha.3 - 2021-04-09
- Print BLE download progress after chunk is complete instead of before.
- Fix occasional bad checksum warning when running program via BLE.
1.0.0-alpha.2 - 2021-04-08
- Check Pybricks protocol version when connecting to Bluetooth Low Energy devices.
- Fix running programs via Bluetooth Low Energy.
1.0.0-alpha.1 - 2021-04-07
- This changelog.
- DFU flashing not working on Windows.
- Typo in
pipargumentsREADME.md.