Skip to content

1.8.1rc1

Pre-release
Pre-release
Compare
Choose a tag to compare
@benlye benlye released this 16 Feb 20:03
· 106 commits to rc since this release
3aad0f8

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 the accept 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

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

  1. Install marlin-binary-protocol - the dependencies just work
    pip install marlin-binary-protocol
  2. Restart OctoPrint
    sudo service octoprint restart

Python 3

  1. Install a Python 3 compatible version of heatshrink to satisfy marlin-binary-protocol
    pip3 install https://github.com/p3p/pyheatshrink/releases/download/0.3.3/pyheatshrink-pip.zip
  2. Install marlin-binary-protocol
    pip3 install marlin-binary-protocol
  3. Restart OctoPrint
    sudo service octoprint restart

Binary File Transfer Warnings and Caveats

  1. 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.

  2. 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 LPC M997 reset routine which appears to stop the crash from happening. You will need to be running Marlin from the bugfix-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.