Mini - Marlin FW 1.1RC3

All,

I have created a git repo containing the V1.1 RC3 marlin firmware for the Mini. The master branch is the V1.1 RC3 firmware plus some fixes and the configuration files are correct for the mini. It has firmware retraction enabled.

https://github.com/jrhubott/Marlin-Lulzbot-Mini

Hex file download:

V1.1-RC3.1:
https://github.com/jrhubott/Marlin-Lulzbot-Mini/releases/download/Mini-2016Q1-V1.1-RC3.1/Marlin.Mini-V1.1-RC3.1.hex

All releases:
https://github.com/jrhubott/Marlin-Lulzbot-Mini/releases

Please create a issue if you observe any incorrect behavior: https://github.com/jrhubott/Marlin-Lulzbot-Mini/issues/new

Thank you for posting this. I’ll start looking around.

Thanks a lot!
Could you explain the main differences?

Merged the mini firmware configuration from lulzbot with the latest 1.1RC3 code from the mainline marlin repository.

Listing of features obtained from the marlin repo for RC3:

  • Handle temp callbacks when THERMAL_PROTECTION_HOTENDS is not defined
    Update LCD buttons less frequently
    Add BABYSTEP_MULTIPLICATOR applying to all babystepping
    Update reference to the Marlin wiki
    Suppress Z_MIN_PROBE_REPEATABILITY_TEST for DELTA and SCARA configurations
    Use separate MOTHERBOARD values for RAMPS 1.3 and 1.4
    Fix XY formatting on LCD
    Enable thermal protection when setting temp from LCD
    Fix GCode parser to allow the letter “N” in strings
    Clean up watchdog implementation
    MSG_EXTRUDER_SWITCHED_OFF renamed to MSG_REDUNDANCY
    Fix DUAL_X_CARRIAGE motor enabling
    Fixed various code bugs and compiler issues
    Clean up spacing in code and configurations
    Updated Japanese Kana language
    Fix Portuguese (Portugal) strings
    Added Galician (gl) language support
    LCD Probe Z Offset now shows the actual (usually negative) offset value.
    Improved support for Delta, SCARA, and COREXY, and COREXZ kinematics.
    Fixed bugs with Dual X Carriage setups.
    Move parts of Configuration files to Conditionals.h and SanityCheck.h.
    Clean up of temperature code.
    Fix handling of invisible SD files. Files and folders starting with underscore are now visible.
    Enhanced G29 with improved grid bed leveling based on Roxy code. See documentation.
    EEPROM layout updated to V21.
    Short EEPROM output as G-Code – Replay to restore settings. Use M503 S0.
    Added M204 travel acceleration options.
    M204 “P” parameter replaces “S.” (“S” retained for backward compatibility.)
    Support for more RAMPS-based boards.
    Support for Mega Controller and Minipanel.
    M404 “N” parameter replaced with “W.” (“N” is for line numbers only).
    Improved support for Cyrillic and accented languages.
    Fix M303 so it doesn’t swallow commands while running.
    LCD controller knob acceleration. Makes it quicker to select settings values. ENCODER_RATE_MULTIPLIER
    Improved compatibility with various sensors, MAX6675 thermocouple.
    Improved support for M110, with or without the extra N parameter.
    Filament Runout Sensor support. (FILAMENT_RUNOUT_SENSOR)
    Filament width measurement support. (FILAMENT_SENSOR)
    Support for TMC and L6470 stepper drivers.
    Improved support for Texas Instruments DRV8811 stepper drivers.
    Support for the SSD1306 Monochrome 128X32 I2C OLED Graphic Display.
    Better support of G-Code ; comments, , N line numbers, and * checksums.
    Fixed an issue causing too many “cold extrusion prevented” messages.
    Fixed LCD display of Volumetric Multiplier. Now shows percent instead of scaling value.
    Preliminary support for M111 with debug flags TBD.
    Support for Repetier DEBUG_DRYRUN flag. Use M111 S8.
    Detailed logging to debug Auto Bed Leveling. Use M111 S16.
    Added FAN_MIN_PWM configuration option • Cleaned up code formatting
    Added “Detailed Z Probe” menu item for Automatic Bed Leveling.
    Fixed: #1038 Steppers were disabled during filament change.
    Display Z position on LCD without leading and trailing zeros.
    Fixed: #1315 DOGLCD and LCD_PROGRESS_BAR conflict.
    Fixed CoreXY incorrect speed calculation.
    Improved support for thermal relays. SLOW_PWM_HEATERS
    Fixed: Re-calculate volumetric when mm3 is enabled, update LCD menu.
    Fixed CreateTemperatureLookup.py script domain issue.
    Fixed an overflow issue in thermal runaway to prevent false timeout.
    Added support for SAV-MkI and SAV 3D LCD.
    Added a Delta Calibration sub-menu option. DELTA_CALIBRATION_MENU
    Added Filament menu.
    Include retract/recover settings in EEPROM storage.
    Improved support for Travis CI build testing.
    Fixed a compile error with REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER.
    Documentation: Assert that X and Y probe offsets must be integers.

How do you build this stuff? I tried using the makefile on ubuntu linux however it doesn’t work. If I load Marlin.ino into Arduino version 1.0.6 I can get it to build (after fixing issue below). Are you using the gui to build or the makefile?

Also, the Configuration.h has non ascii characters and fails to compile on linux with them.

/mnt/vbox/shared/3dsoftware/arduino-1.0.6/hardware/tools/avr/bin/avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega2560 -DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=106 -I/mnt/vbox/shared/3dsoftware/arduino-1.0.6/hardware/arduino/cores/arduino -I/mnt/vbox/shared/3dsoftware/arduino-1.0.6/hardware/arduino/variants/mega -I/mnt/vbox/shared/3dsoftware/arduino-1.0.6/libraries/Wire -I/mnt/vbox/shared/3dsoftware/arduino-1.0.6/libraries/LiquidCrystal -I/mnt/vbox/shared/3dsoftware/arduino-1.0.6/libraries/SPI /tmp/build4876607578442200364.tmp/buzzer.cpp -o /tmp/build4876607578442200364.tmp/buzzer.cpp.o 
In file included from Marlin.h:26,
                 from buzzer.cpp:1:
Configuration.h:1: error: stray ‘\357’ in program
Configuration.h:1: error: stray ‘\273’ in program
Configuration.h:1: error: stray ‘\277’ in program
Configuration.h:1: error: stray ‘#’ in program
In file included from Marlin.h:26,
                 from buzzer.cpp:1:
Configuration.h:867:2: error: #endif without #if
Configuration.h:1: error: ‘ifndef’ does not name a type
In file included from Configuration.h:865,
                 from Marlin.h:26,
                 from buzzer.cpp:1:
thermistortables.h:174: warning: only initialized variables can be placed into program memory area
thermistortables.h:257: warning: only initialized variables can be placed into program memory area

To get it to compile I used iconv to clean the file:

$ iconv -f ascii -t ascii -c Configuration.h >/tmp/Configuration.h
$ mv /tmp/Configuration.h ./Configuration.h

After removing the non-ascii characters, I was able to compile it successfully.

All the above was done using the file tar xvf Marlin-Lulzbot-Mini-1.1-RC3.2.tar.gz . However, I also tried the .zip file

-rick

oops – misread

It is being built automatically under linux by the continuous integration scripts. I also build it locally under Windows when I’m developing but the release builds are done by Travis CI linked into Github whenever a new commit or tagged release is made.

Jason

I love this firmware!

One thing I would like is for the probe readout to display somewhat similar to the stock firmware where for each probe it lists the Z value. Would that be hard to throw in? Or maybe some instruction on reading the bed level correction matrix.

How is the installation process? Just uploading the hex file?

I added the debug logging for the probing.

You will need to send a M111 S32 to enable the logging.

Direct download of Hex File:
https://github.com/jrhubott/Marlin-Lulzbot-Mini/releases/download/V1.1-RC3.3/Marlin.Mini-V1.1-RC3.3.hex

Release notes:
https://github.com/jrhubott/Marlin-Lulzbot-Mini/releases/tag/V1.1-RC3.3

That’s what I did – just download and use Cura to send to printer. Totally easy.

I installed it last night and giving it a try… it is working great so far and I am obtaining great prints. Thanks a lot!

After flashing 1.1RC3 to my Mini the case fan turned off. Has anyone else noticed this? Was that intentional?

EDIT: Ok I see now that it turns on when the Stepper Drivers are turned on.

On a related question earlier in this thread:
To flash the code I use Arduino. It’s pretty easy to use and allows access to the Configuration.h for any modification you might need to make before sending to the device. I’ve changed my hotend to E3D so I have to reduce the Z_MAX_POS since it sits a little closer to the build plate.

If anyone needs help using Arduino sketch to flash their machine let me know and I can write up a quick how-to.

Yes, we were discussing this here:
https://forum.lulzbot.com/t/electronics-fan-always-on-full/2824/5

I’ve been running this for a while, but noticed an odd issue. After a while, Octoprint couldn’t get the X and Y to move as much as they should. It was acting like it hit a limit switch, but I checked the switches and they are working properly. Flashing stock from Cura fixed the issue. Print and auto-level performance was great though. Has anyone else seen similar issues? It could have been a bad build, I built from source as I have been considering playing with it a little. I’ll try the binary as well, I just thought I’d check in and see if anyone else had seen anything like it.

The build was done using the git source, and the Arduino IDE. Then sent over direct to the printer from the IDE.

I’ve had an issue where it lost where Z-0 was so it was trying to wipe the nozzle about about 40mm above the pad. This wouldnt have been bad but it then tried to drive the extruder though the leveling washers. Worked fine when i flashed it originally but after letting it sit the weekend it started doing that. Had to go back to stock and been fine since.

Hi jrhubott,

I have tried flashing the latest version of your firmware (V1.1-RC3.14), and I think I have stumbled upon a problem.
The lower Z endstop is not working. If I try (in Cura) to move the head in steps toward the lowest point to hit the endstop, at some point the Z motors just keep running beyond the requested distance, hitting into the endstop, but the motors don’t stop, they just keep running until I cut the power.

It’s the same if I try to activate the endstop manually, it does not register.
The upper Z endstop works fine of course (or I’m sure others would have noticed too, when homing) :wink:

Edit: I just realize that my problem could potentially be a physically broken endstop switch, or loose connection - I have not tested for this yet, but I will as soon as I can, and report back.

This is our internal Marlin branch 1.1RC* for Mini. It is untested and doesn’t work yet, but it will someday.

https://code.alephobjects.com/diffusion/MARLIN/browse/Gladiola/

Would be interesting to see what differences arise between your branch and this one.

Have you noticed much of a difference in print quality with your 1.1 firmware? Anything else of note in real world usage?

Thanks!

-Jeff

The git repo seems to be a little out of sync with Marlin upstream. Are you actively maintaining this? I’m considering porting Lulzbot Mini FW to Marlin 1.1.3 (current) and made first steps. What Mini specific code did you inherit from AO to make this work? The only thing I can think of is the wipe code on z-probe fail. There is code for G12 clean nozzle gcode, which could be reused to do a clean on z-probe fail I guess?
That would make for a very clean Marlin port IMO?