Releases: OctoPrint/OctoPrint-FirmwareUpdater
1.10.0
Changes
- Adds the capability for multiple printer profiles to be configured.
- Profiles are disabled by default and need to be enabled in the plugin options
- Existing flash method and settings will be migrated to a new profile name 'Default'
- Once enabled, profiles can be added, copied, and deleted
- All flash method settings, including pre and post flash options, are stored in each profile
- Settings UI has been updated to use tabbed pages
- When profiles are disabled the settings are all accessed via the 'wrench' icon in the top right corner (same as prior versions)
- When Profiles are enabled the settings are split into two screens
- Plugin options are accessed via the 'wrench' icon in the top right corner
- Flash / flash method settings are accessed via the 'cog' icon next to the update profile dropdown selection - the selected profile is always edited
Important: These changes have not yet been fully tested on Python 2!
Implementing these changes was a large re-write of the UI code, and many changes to the backend. Please test and report any problems in #74.
1.9.0
Changes
- New plugin option to disable automatic reconnection after updating
- New plugin option to allow disabling the file extension filters when browsing for a firmware file
- Enhances compatibility with browsers which do not support the
accept
attribute, e.g. iOS and Android mobile browsers.
- Enhances compatibility with browsers which do not support the
- New options for lpc176x (and marlinbft) method to disable waiting for
M997
command to complete and printer to come back online- Can be enabled to prevent 'Flashing failed' messages on printers which don't reset when
M997
is sent, or don't return automatically - Can be combined with the 'Disable automatic reconnect' and 'Post-flash delay' options to prevent reconnection errors
- Can be enabled to prevent 'Flashing failed' messages on printers which don't reset when
- New flash method, "marlinbft"
Allows flashing LPC176x and STM32 boards using Marlin's Binary File Transfer protocol to copy firmware to the board (instead of mounting the SD card on the host)- Requires firmware compiled with
#define BINARY_FILE_TRANSFER
- Requires manual dependency installation
- Read the warnings and caveats
- Requires firmware compiled with
Binary File Transfer Dependency
The plugin currently uses the marlin-binary-protocol
package to implement the transfer protocol. This package has dependencies on heatshrink
, which is hard to install automatically due to compatibility issues with Python 2 and Python 3. For this reason the marlin-binary-protocol package and the heatshrink dependency need to be installed manually using pip
.
NB: If you are running OctoPrint in a VirtualEnv (as recommended) you need to run the appropriate pip
commands below inside that environment. For OctoPi users, this is ~/oprint/bin/pip
anywhere it says pip
.
Python 2
- Install
marlin-binary-protocol
- the dependencies just work
pip install marlin-binary-protocol
- Restart OctoPrint
sudo service octoprint restart
Python 3
- Install a Python 3 compatible version of
heatshrink
to satisfymarlin-binary-protocol
pip3 install https://github.com/p3p/pyheatshrink/releases/download/0.3.3/pyheatshrink-pip.zip
- Install
marlin-binary-protocol
pip3 install marlin-binary-protocol
- Restart OctoPrint
sudo service octoprint restart
Binary File Transfer Warnings and Caveats
-
The binary file transfer protocol is still work in progress
While the current implementation works, it will change, and these changes will break the current version. As much as possible, I will try to support the current implementation and the final version, but my ability to do so may be limited due to dependencies on other libraries.If it comes to a choice, the final version will be the one which is supported.
-
Your Raspberry Pi may crash, but it's not my fault
While developing this I came across what seems to be a bug in the Raspberry Pi kernel, where it will sometimes panic (crash) when the printer board resets. To mitigate this, as of Feb 6th 2021, a 2s delay has been added to the LPCM997
reset routine which appears to stop the crash from happening. You will need to be running Marlin from thebugfix-2.0.x
branch, after MarlinFirmware/Marlin@004bed8 to have the fix.On my test system, with the old reset code, I would easily crash my Pi anywhere between 1-25 resets. After the change I have flashed the board dozens of times and reset it 500+ times without crashing it.
That said, the underlying bug still exists, so you may still experience your Pi crashing when the board resets. Caveat emptor.
Please report any testing results by commenting on issue #195.
1.8.1rc2
Release candidate for 1.8.1.
Changes
- New plugin option to disable automatic reconnection after updating
- New plugin option to allow disabling the file extension filters when browsing for a firmware file
- Enhances compatibility with browsers which do not support the
accept
attribute, e.g. iOS and Android mobile browsers.
- Enhances compatibility with browsers which do not support the
- New options for lpc176x (and marlinbft) method to disable waiting for
M997
command to complete and printer to come back online- Can be enabled to prevent 'Flashing failed' messages on printers which don't reset when
M997
is sent, or don't return automatically - Can be combined with the 'Disable automatic reconnect' and 'Post-flash delay' options to prevent reconnection errors
- Can be enabled to prevent 'Flashing failed' messages on printers which don't reset when
- New flash method, "marlinbft"
Allows flashing LPC176x and STM32 boards using Marlin's Binary File Transfer protocol to copy firmware to the board (instead of mounting the SD card on the host)- Requires firmware compiled with
#define BINARY_FILE_TRANSFER
- Requires manual dependency installation
- Read the warnings and caveats
- Requires firmware compiled with
Binary File Transfer Dependency
The plugin currently uses the marlin-binary-protocol
package to implement the transfer protocol. This package has dependencies on heatshrink
, which is hard to install automatically due to compatibility issues with Python 2 and Python 3. For this reason the marlin-binary-protocol package and the heatshrink dependency need to be installed manually using pip
.
NB: If you are running OctoPrint in a VirtualEnv (as recommended) you need to run the appropriate pip
commands below inside that environment. For OctoPi users, this is ~/oprint/bin/pip
anywhere it says pip
.
Python 2
- Install
marlin-binary-protocol
- the dependencies just work
pip install marlin-binary-protocol
- Restart OctoPrint
sudo service octoprint restart
Python 3
- Install a Python 3 compatible version of
heatshrink
to satisfymarlin-binary-protocol
pip3 install https://github.com/p3p/pyheatshrink/releases/download/0.3.3/pyheatshrink-pip.zip
- Install
marlin-binary-protocol
pip3 install marlin-binary-protocol
- Restart OctoPrint
sudo service octoprint restart
Binary File Transfer Warnings and Caveats
-
The binary file transfer protocol is still work in progress
While the current implementation works, it will change, and these changes will break the current version. As much as possible, I will try to support the current implementation and the final version, but my ability to do so may be limited due to dependencies on other libraries.If it comes to a choice, the final version will be the one which is supported.
-
Your Raspberry Pi may crash, but it's not my fault
While developing this I came across what seems to be a bug in the Raspberry Pi kernel, where it will sometimes panic (crash) when the printer board resets. To mitigate this, as of Feb 6th 2021, a 2s delay has been added to the LPCM997
reset routine which appears to stop the crash from happening. You will need to be running Marlin from thebugfix-2.0.x
branch, after MarlinFirmware/Marlin@004bed8 to have the fix.On my test system, with the old reset code, I would easily crash my Pi anywhere between 1-25 resets. After the change I have flashed the board dozens of times and reset it 500+ times without crashing it.
That said, the underlying bug still exists, so you may still experience your Pi crashing when the board resets. Caveat emptor.
Please report any testing results by commenting on issue #195.
1.8.1rc1
Release candidate for 1.8.1.
Changes
- New plugin option to allow disabling the file extension filters when browsing for a firmware file
Enhances compatibility with browsers which do not support theaccept
attribute, e.g. iOS and Android mobile browsers. - New flash method, "marlinbft"
Allows flashing LPC176x and STM32 boards using Marlin's Binary File Transfer protocol to copy firmware to the board (instead of mounting the SD card on the host)- Requires firmware compiled with
#define BINARY_FILE_TRANSFER
- Requires manual dependency installation
- Read the warnings and caveats
- Requires firmware compiled with
Binary File Transfer Dependency
The plugin currently uses the marlin-binary-protocol
package to implement the transfer protocol. This package has dependencies on heatshrink
, which is hard to install automatically due to compatibility issues with Python 2 and Python 3. For this reason the marlin-binary-protocol package and the heatshrink dependency need to be installed manually using pip
.
NB: If you are running OctoPrint in a VirtualEnv (as recommended) you need to run the appropriate pip
commands below inside that environment. For OctoPi users, this is ~/oprint/bin/pip
anywhere it says pip
.
Python 2
- Install
marlin-binary-protocol
- the dependencies just work
pip install marlin-binary-protocol
- Restart OctoPrint
sudo service octoprint restart
Python 3
- Install a Python 3 compatible version of
heatshrink
to satisfymarlin-binary-protocol
pip3 install https://github.com/p3p/pyheatshrink/releases/download/0.3.3/pyheatshrink-pip.zip
- Install
marlin-binary-protocol
pip3 install marlin-binary-protocol
- Restart OctoPrint
sudo service octoprint restart
Binary File Transfer Warnings and Caveats
-
The binary file transfer protocol is still work in progress
While the current implementation works, it will change, and these changes will break the current version. As much as possible, I will try to support the current implementation and the final version, but my ability to do so may be limited due to dependencies on other libraries.If it comes to a choice, the final version will be the one which is supported.
-
Your Raspberry Pi may crash, but it's not my fault
While developing this I came across what seems to be a bug in the Raspberry Pi kernel, where it will sometimes panic (crash) when the printer board resets. To mitigate this, as of Feb 6th 2021, a 2s delay has been added to the LPCM997
reset routine which appears to stop the crash from happening. You will need to be running Marlin from thebugfix-2.0.x
branch, after MarlinFirmware/Marlin@004bed8 to have the fix.On my test system, with the old reset code, I would easily crash my Pi anywhere between 1-25 resets. After the change I have flashed the board dozens of times and reset it 500+ times without crashing it.
That said, the underlying bug still exists, so you may still experience your Pi crashing when the board resets. Caveat emptor.
Please report any testing results by commenting on issue #195.
1.8.1b3
Should be the final beta version for 1.8.1.
Changes
- New plugin option to allow disabling the file extension filters when browsing for a firmware file
Enhances compatibility with browsers which do not support theaccept
attribute, e.g. iOS and Android mobile browsers. - New flash method, "marlinbft"
Allows flashing LPC176x and STM32 boards using Marlin's Binary File Transfer protocol to copy firmware to the board (instead of mounting the SD card on the host)- Requires firmware compiled with
#define BINARY_FILE_TRANSFER
- Requires manual dependency installation
- Read the warnings and caveats
- Requires firmware compiled with
Binary File Transfer Dependency
The plugin currently uses the marlin-binary-protocol
package to implement the transfer protocol. This package has dependencies on heatshrink
, which is hard to install automatically due to compatibility issues with Python2 and Python3. For this reason the marlin-binary-protocol package and the heatshrink dependency need to be installed manually using pip
.
NB: If you are running OctoPrint in a VirtualEnv you need to run the appropriate pip
commands below inside that environment.
Python 2
- Install
marlin-binary-protocol
- the dependencies just work
pip install marlin-binary-protocol
- Restart OctoPrint
sudo service octoprint restart
Python3
- Install a Python 3 compatible version of
heatshrink
to satisfymarlin-binary-protocol
pip3 install https://github.com/p3p/pyheatshrink/releases/download/0.3.3/pyheatshrink-pip.zip
- Install
marlin-binary-protocol
pip3 install marlin-binary-protocol
- Restart OctoPrint
sudo service octoprint restart
Binary File Transfer Warnings and Caveats
-
The binary file transfer protocol is still work in progress
While the current implementation works, it will change, and these changes will break the current version. As much as possible, I will try to support the current implementation and the final version, but my ability to do so may be limited due to dependencies on other libraries.If it comes to a choice, the final version will be the one which is supported.
-
Your Raspberry Pi may crash, but it's not my fault
While developing this I came across what seems to be a bug in the Raspberry Pi kernel, where it will sometimes panic (crash) when the printer board resets. To mitigate this, as of Feb 6th 2021, a 2s delay has been added to the LPCM997
reset routine which appears to stop the crash from happening. You will need to be running Marlin from thebugfix-2.0.x
branch, after MarlinFirmware/Marlin@004bed8 to have the fix.On my test system, with the old reset code, I would easily crash my Pi anywhere between 1-25 resets. After the change I have flashed the board dozens of times and reset it 500+ times without crashing it.
That said, the underlying bug still exists, so you may still experience your Pi crashing when the board resets. Caveat emptor.
Please report any testing results by commenting on issue #195.
1.8.1b2
Changes
- New plugin option to allow disabling the file extension filters when browsing for a firmware file
Enhances compatibility with browsers which do not support theaccept
attribute, e.g. iOS and Android mobile browsers. - New flash method, "marlinbft"
Allows flashing LPC176x and STM32 boards using Marlin's Binary File Transfer protocol to copy firmware to the board (instead of mounting the SD card on the host)- Requires firmware compiled with
#define BINARY_FILE_TRANSFER
- Requires manual dependency installation
- Read the warnings and caveats
- Requires firmware compiled with
Binary File Transfer Dependency
The plugin currently uses the marlin-binary-protocol
package to implement the transfer protocol. This package has dependencies on heatshrink
, which is hard to install automatically due to compatibility issues with Python2 and Python3. For this reason the marlin-binary-protocol package and the heatshrink dependency need to be installed manually using pip
.
NB: If you are running OctoPrint in a VirtualEnv you need to run the appropriate pip
commands below inside that environment.
Python 2
- Install
marlin-binary-protocol
- the dependencies just work
pip install marlin-binary-protocol
- Restart OctoPrint
sudo service octoprint restart
Python3
- Install a Python 3 compatible version of
heatshrink
to satisfymarlin-binary-protocol
pip3 install https://github.com/p3p/pyheatshrink/releases/download/0.3.3/pyheatshrink-pip.zip
- Install
marlin-binary-protocol
pip3 install marlin-binary-protocol
- Restart OctoPrint
sudo service octoprint restart
Binary File Transfer Warnings and Caveats
-
The binary file transfer protocol is still work in progress
While the current implementation works, it will change, and these changes will break the current version. As much as possible, I will try to support the current implementation and the final version, but my ability to do so may be limited due to dependencies on other libraries.If it comes to a choice, the final version will be the one which is supported.
-
Your Raspberry Pi may crash, but it's not my fault
While developing this I came across what seems to be a bug in the Raspberry Pi kernel, where it will sometimes panic (crash) when the printer board resets. To mitigate this, as of Feb 6th 2021, a 2s delay has been added to the LPCM997
reset routine which appears to stop the crash from happening. You will need to be running Marlin from thebugfix-2.0.x
branch, after MarlinFirmware/Marlin@004bed8 to have the fix.On my test system, with the old reset code, I would easily crash my Pi anywhere between 1-25 resets. After the change I have flashed the board dozens of times and reset it 500+ times without crashing it.
That said, the underlying bug still exists, so you may still experience your Pi crashing when the board resets. Caveat emptor.
Please report any testing results by commenting on issue #195.
1.8.1b1
Changes
- New plugin option to allow disabling the file extension filters when browsing for a firmware file
Enhances compatibility with browsers which do not support theaccept
attribute, e.g. iOS and Android mobile browsers. - New flash method, "marlinbft"
Allows flashing LPC176x and STM32 boards using Marlin's Binary File Transfer protocol to copy firmware to the board (instead of mounting the SD card on the host)- Requires firmware compiled with
#define BINARY_FILE_TRANSFER
- Requires firmware compiled with
Warnings and Caveats
-
The binary file transfer protocol is still work in progress
While the current implementation works, it will change, and these changes will break the current version. As much as possible, I will try to support the current implementation and the final version, but my ability to do so may be limited due to dependencies on other libraries.If it comes to a choice, the final version will be the one which is supported.
-
Your Raspberry Pi may crash, but it's not my fault
While developing this I came across what seems to be a bug in the Raspberry Pi kernel, where it will sometimes panic (crash) when the printer board resets. To mitigate this, as of Feb 6th 2021, a 2s delay has been added to the LPCM997
reset routine which appears to stop the crash from happening. You will need to be running Marlin from thebugfix-2.0.x
branch, after MarlinFirmware/Marlin@004bed8 to have the fix.On my test system, with the old reset code, I would easily crash my Pi anywhere between 1-25 resets. After the change I have flashed the board dozens of times and reset it 500+ times without crashing it.
That said, the underlying bug still exists, so you may still experience your Pi crashing when the board resets. Caveat emptor.
Please report any testing results by commenting on issue #195.
1.8.1b0
Changes
- New flash method, "marlinbft"
Allows flashing LPC176x and STM32 boards using Marlin's Binary File Transfer protocol to copy firmware to the board (instead of mounting the SD card on the host)- Requires firmware compiled with
#define BINARY_FILE_TRANSFER
- Requires firmware compiled with
Warnings and Caveats
-
The binary file transfer protocol is still work in progress
While the current implementation works, it will change, and these changes will break the current version. As much as possible, I will try to support the current implementation and the final version, but my ability to do so may be limited due to dependencies on other libraries.If it comes to a choice, the final version will be the one which is supported.
-
Your Raspberry Pi may crash, but it's not my fault
While developing this I came across what seems to be a bug in the Raspberry Pi kernel, where it will sometimes panic (crash) when the printer board resets. To mitigate this, as of Feb 6th 2021, a 2s delay has been added to the LPCM997
reset routine which appears to stop the crash from happening. You will need to be running Marlin from thebugfix-2.0.x
branch, after MarlinFirmware/Marlin@004bed8 to have the fix.On my test system, with the old reset code, I would easily crash my Pi anywhere between 1-25 resets. After the change I have flashed the board dozens of times and reset it 500+ times without crashing it.
That said, the underlying bug still exists, so you may still experience your Pi crashing when the board resets. Caveat emptor.
Please report any testing results by commenting on issue #195.
1.8.0
Changes
- Reorganized the settings UI to make things easier to configure
- Renamed
lpc1768
tolpc176x
in drop down list - For lpc176x method
- Added short delay after sending M22 to give board time to release the SD card
- Improved progress messages during lpc176x flashing