Druid Firmware

From RepRap
Jump to: navigation, search
Crystal Clear action run.png
Druid Firmware

Release status: Beta

Druid Logo.png
Dedicated Firmware that currently runs only on Flashforge CoreBoard (All revisions)
CAD Models
External Link

Druid firmware is a dedicated 3D printer firmware that currently runs only on Flashforge CoreBoard (all Revisions).

Printer that uses this controller:

Flashforge: Dreamer, Dreamer NX and Inventor. Dremel: 3D20. Powerspec: Ultra 3D. Monoprice: Inventor 1.

The firmware is currently in it's Beta testing phase.

A candidate for Version 1.0 will be released in may 2023.

Druid firmware and Repetier Server are fully compatible.

Currently supported Gcodes:

"G" Codes

G0-G1     - Linear movements X Y Z E.
G2-G3     - Arc movements. G2 clockwise / G3 counter-clockwise
G4        - Dwell S<seconds> or P<milliseconds> if both set (then S will be used, P will be omitted).
G10       - Retract.
G11       - Recover.
G20       - Set input units to inches.
G21       - Set input units to millimeters.
G27       - Park Nozzle.
G28       - Home one or more axes.
G90       - Use Absolute Coordinates.
G91       - Use Relative Coordinates.
G92       - Set current position to coordinates given

"M" Codes

M0,M1     - Unconditional stop - Wait for user interaction on LCD.
M17       - Enable/Power all stepper motors.
M18,M84   - Disable steppers until next move, or use S<seconds> to specify a timeout. S0 disables the timeout.

SD CARDS files

M20       - List currently monted SD Card. 
M21       - Mount SD card or microSD. Current:"M21", 
            Mount SD CARD:"M21 S" or "M21 P0", Mount microSD:"M21 M" or "M21 P1"
M22       - Release currently monted SD Card. 
M23       - Select SD file: M23 /path/file.gco
M24       - Start/resume SD print.
M25       - Pause SD print.
M26       - Set SD position in bytes: "M26 S<bytes>"
M27       - Report SD print status.
            OR, with 'S<seconds>' set the SD status auto-report interval. (Requires AUTO_REPORT_SD_STATUS)
            OR, with 'C' get the current filename.
M28       - Start SD Write
M29       - Stop SD Write
M30       - Delete file from SD: "M30 /path/file.gco" 
M31       - Report time since last M109 or SD card start to print.
M32       - Select file and start SD print: "M32 /path/file.gco 
M33       - Get longname
M34       - SD CARDS file sorting DIS-ENA S0 S1   F-1 F0 F1  Folder Sorted before/with/after The files


M75       - Start the print job timer.
M76       - Pause the print job timer.
M77       - Stop the print job timer.


M81       - Stop the Printer, Stop printing, Turn off all fans and heaters.
M82       - Set Extruder(s) to Absolute (default).
M83       - Set Extruder(s) to Relative.
M85       - Set inactivity shutdown timer with parameter S<seconds>. 0=Disable (default).
M92       - Set steps_per_mm for one or more axes.
M100      - Write one byte to I2C device "M100 A<Address> R<Register> B<Byte>"
M104_M109 - Set extruder target temperature. (M109 wait to reach target temp)
M105      - Report current temperatures.
M106      - Set print fan speed.
M107      - Print fan off.
M108      - Cancel the WAIT for target temp. from M109, M190, M191 or Cancel PID Autotune M303
M110      - Set the current line number. (Used by host printing)
M112      - Full Shutdown.
M113      - Get or set the timeout interval for Host Keepalive "busy" messages. "M113 S<sec>" (0 to 63) sec.
M114      - Report current position.
M115      - Report capabilities.
M117      - Display a message on the controller screen. 
M118      - Display a message in the host console.
M119      - Report endstops status.
M120      - Enable endstops detection.
M121      - Disable endstops detection.
M140_M190 - Set bed target temp. S<temp> (M190 wait to reach target temp)
M141_M191 - Set heated chamber target temp. S<temp> (M191 wait to reach target temp)
M145      - Set parameters for material preheat if not, any other parameters will be ignored.
             H<hotend temp>            80.0 - 500.0
             W<stand_by temp>          80.0 - 500.0
             B<bed temp>               40.0 - 125.0
             E<enclosure temp>         40.0 -  80.0
             C<cooling part fan speed>    0 - 255
             F<back fan speed>            0 - 255
             L<label 1> (Main label desc. ex: PLA, NYLON, ABS ... labels longer than 5 characters will be truncated)
             K<label 2> (Extra desc.      ex: PLA-F, PA, ASA  ... labels longer than 5 characters will be truncated)
M147      - Set GUI Theme (Fonts, Button style and colors)
M148      - Set Display temperature units. ( M148=report, M148 C / K / F )
M149      - Set Parser temperature units.  ( M149=report, M149 C / K / F )
M150      - Set LED STRIP Color as R<red> U<green> B<blue> Values 0-255. Omitted parameters will be set to ZERO.
M154      - Auto-report positions with interval of S<seconds>. 1-255,  0=disable.
M155      - Auto-report temperatures with interval of S<seconds>. 1-255,  0=disable.
M201      - Set max acceleration in units/s2 for print moves ex: M201 X1000 Y1000
M202      - Set max acceleration in units/s2 for travel moves ex: M202 X1000 Y1000
M203      - Set maximum feedrate: "M203 X<fr> Y<fr> Z<fr> E<fr>" in units/sec.
M204      - Set starting acceleration in units/sec2: P<printing> R<extruder_only> T<travel>
M205      - Set Advanced Settings
M206      - Set additional homing offset.  (See also M428)
M211      - Set/Report software endstops. "M211 S1" Enable, "M211 S0" Disable 
M218      - Set/get a tool offset: "M218 T<index> X<offset> Y<offset>". (Requires 2 or more extruders)
M220      - Set Feedrate Percentage: "M220 S<percent>" "M220 B" to back up the Feedrate Percentage and "M220 R" to restore it.
M221      - Set Flow Percentage: M221 S<percent>


M250      - Set LCD contrast:   "M250 C<contrast>"   -100 to 100, 0=disabled / default
M256      - Set LCD brightness: "M256 B<brightness>" -100 to 100, 0=disabled / default


M298      - Mute/Unmute UI sound... Sound Disabled= "M298 S0" , Sound Enabled= "M298 S1" 
M300      - Play beep sound S<frequency Hz> P<duration ms>


M301      - Set PID parameters P I and D.
M302      - Set the minimum extrude temperature, to avoid cold extrusion. S<temperature>.
M303      - PID autotune - sets the parameters needed to perform autotune, for a specific heater and temperature range.
M304      - Set bed PID parameters P I and D. 
M309      - Set chamber PID parameters P I and D. 


M360      - Report Firmware configuration
M400      - Finish all moves.
M410      - Abort all planned moves.
M412      - Enable / Disable Filament Runout Detection.
M428      - Set the home_offset based on the current_position. Nearest edge applies.


M500      - Write parameters to permanent storage, in next flash subdivision. (Note 1)
M501      - Read parameters from current flash subdivision. ( Automatically done at every boot )
M502      - Revert all parameters to the default "factory settings" without saving it to storage.
M503      - List the current settings (in memory).
M504      - List divergences between parameters in the permanent storage and in memory (ram)
M505      - Erase Sector 11 (128K) and save current settings as first block
M506      - Erase Sector 11 and save default settings (Complete board reset)


M510      - Lock Printer 
M511      - Unlock Printer 
M512      - Set/Change/Remove Password 


M524      - Abort the current SD print job started with M24.
M540      - Enable / Disable : SD card print abort on endstop hit.  DIS:"M540 S0"  EN:"M540 S1"
M550      - Set/Get MACHINE NAME : M550 "NewName" (12 char max)
M575      - Change the serial baud rate. (USB)


M600      - Pause for filament change
M603      - Configure filament change 
M701      - Load filament
M702      - Unload filament

M900      - Get or Set Linear Advance K-factor


M905      - Set local time   M905 S<HH:MM:SS>     = ex.: M905 S00:23:12
                             M905 R               = Reset the printer date+Time to Uptime
          - Get date & time  M905                 = Report actual time to host
          - Set local date   M905 P<YYYY-MM-DD>

M928      - Start SD Logging
M907      - Set motor current for specified axis.


M990      - Reset the printer (restart the firmware)
M995      - Touch screen calibration for TFT display <R> Reset calibration to default
M996      - Select "firmware update" file from SD CARD
M997      - Write the "firmware update" trigger. Instruct the bootloader to update firmware from microSD card at next reboot.
M999      - Restart after being stopped by error


M6000     - REPORT PUID TO HOST...           Puid: 084251D3F1A51542D3FDD4F0 (12 bytes,24 CHAR)
M6001     - ENTER registration code :usage   M6001 "D3FDD4FDD3FDD4FDD3FDD4FDD3FDD4FD" 16 bytes / 32 CHAR, between DOUBLE QUOTES.
M6002     - Display information about Registration.
M6004     - Write to file "PUID4REG.TXT" on external SD CARD.
M6006     - Look for registration file on internal microSD. If present, process it.


M9991     - Backup bootloader to SD (64k) 0x08000000 - 0x0800FFFF
M9992     - Load a Backuped BOOTLOADER from SD and Flash it at 0x08000000.  *** WARNING: wrong parameters may render your printer unusable. ***
M9993     - Backup SETTINGS to SD-CARD  (512 Bytes)
M9994     - Backup PUID to SD-CARD  (12 bytes or 24 HEX CHARACTERS)

"T" Codes

T0-T1     - Select an extruder(tool) by index: "T<n> F<units/min>"


          From Repetier Server console, with special "DOS-LIKE" commands. 
          EASIER and FASTER than using gcodes with no signification...
          Those commands are intercepted before going to the Gcode PARSER
          and are only available when the printer is not busy printing. 

S:                        Select external SD CARD and list the ROOT dir
M:                        Select internal MicroSD and list the ROOT dir  
CD..                      Go up one level towards ROOT  
DIR                       List all files in current directory, not only Gcode.  
                             ( YYYY-MM-DD HH:MM AM  <DIR> or FILESIZE  LONGFILENAME )
DIR ext                   List only the files matching the ext provided extension. Ex. gcode , gco  "Dir gco"   
CD dir                    Enter Directory
MKDIR dir                 Create a new folder in current directory (NO PATH ALLOWED)
DEL filename              Delete the FILENAME in current directory (NO PATH ALLOWED)
RMDIR dir                 Remove a directory in current  directory (NO PATH ALLOWED)
COPY source destination   S:/path/path/filename  M:/path/path/    ex:  S:/SYS/ddd/this.gcode M:/old_files/ 
RENAME oldname newname    RENAME A FILE OR A DIRECTORY in the current directory (NO PATH ALLOWED)
INFO filename.gco         Display informatons about any gcode files. 
                             ( layer height / layer count / filament needed / Est. print time )
VIEW filename.gco         Display the first 250 lines as ascii text             (.gco .txt  ETC)
VIEW filename.xyz         Display the first 250 lines as 16 Hex bytes per line. (.bin .bkp .bmp .png .dat  ETC)
PRINT filename.gco        Start to print the selected gcode file.

Note 1. Because of the small size for parameter storage (512 bytes), a 128K flash memory sector is used as permanent storage. The sector can be partially written 256 times (512 bytes per backup) before requiring a complete sector wipe, to restart the same process again. (That was 1 write cycle). The flash memory minimum write cycles guaranteed for the STM32F407 MCU by ST Microelectronics are 10000, yielding a total of 2.56 million times, parameters can be saved.

With Druid Firmware, you no longer have to worry about saving your newly modified settings. Druid firmware save them in a temporary file as you make them. At every Boot, it loads the settings from the FLASH memory block, and also read the temp file and apply the previously modified settings to the RAM, seamlessly. When the size of the temporary file is above the limit set by the users, or when using M500, Druid Firmware merge theses changes and write all settings to the next 512 byte block in the flash, and delete the temporary file.

Druid Firmware also innovate with a QUADRIPLE firmware boot selection!!! The user can choose in the GUI, what firmware to use at next boot, up to 4 different can be placed in the folder "FIRMWARE" on the external SD CARD. Ex. Dremel original / Druid 1.0 / Druid 1.2 / Marlin 2.01 ... it keeps track of their settings and restore them when needed.

Druid Firmware is now fully compatible with Repetier Server, and has been added in their setting menu. All the parameters will be automatically detected... We have worked with Repetier Lead programmer to made all the needed changes in both applications (Druid firmware and Repetier Server) and we will continue to improve the possibilities...