1.8.1rc2
Pre-releaseRelease 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.