MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.19k stars 19.21k forks source link

Marlin 2.0 RC1 - TODO #14345

Closed thinkyhead closed 4 years ago

thinkyhead commented 5 years ago

Let's coordinate the Marlin 2.0 RC1 release and track remaining work for this first release candidate.

AVR

Board MCU SD Card LCD TMC SPI TMC UART EEPROM WiFi Max6675 Neopixel
RAMPS, RAMBo etc. AVR πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š

SAM

Board MCU SD Card LCD TMC SPI TMC UART EEPROM WiFi Max6675 Neopixel
Due,Β RAMPSΒ FD,Β etc. SAM3X8E πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š
Duet 2 Wifi + X5 SAM4E8E πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘
Duet 2 Maestro SAM4S8C ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️
Archim 1.0 SAM3X8E πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š
Archim 2.0 SAM3X8E πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š
Grand Central ATSAMD51 πŸ’š πŸ’š ⚠️ ⚠️ πŸ’š πŸ›‘ πŸ›‘ πŸ’š

LPC

Board MCU SD Card LCD TMC SPI TMC UART EEPROM WiFi Max6675 Neopixel
Re-ARM LPC1768 πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š
MKS-SBASE LPC1768 πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š
SKRΒ v1.3 LPC1768 πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š ⚠️ ⚠️ ⚠️
Smoothieboard LPC1769 πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š
AzteegΒ X5Β GT LPC1769 πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š
Cohesion3DΒ Remix LPC1769 πŸ’š πŸ’š πŸ’š πŸ’š πŸ’š ⚠️ ⚠️ ⚠️
Selena Compact LPC1768 ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️

STM32F1

Board MCU SD Card LCD TMC SPI TMC UART EEPROM WiFi Max6675 Neopixel
Malyan M200 STM32F103C8 ⚠️ ⚠️ n/a n/a ⚠️ ⚠️ ⚠️ ⚠️
MKS Robin 2.4 STM32F103ZET6 πŸ’š πŸ’š πŸ›‘ ? πŸ’š πŸ›‘ πŸ›‘ πŸ›‘
Chitu3D V3.9 STM32F103ZET6 πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘
Longer3D LK1 STM32F103VE πŸ’š πŸ’š n/a n/a πŸ’š n/a n/a n/a
SKR Mini v1.1 STM32F103RC πŸ’š ⚠️ ⚠️ ⚠️ πŸ’š n/a n/a πŸ›‘

STM32F4

Board MCU SD Card LCD TMC SPI TMC UART EEPROM WiFi Max6675 Neopixel
STEVAL-3DP001V1 STM32F401VE πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘
[ARMed] STM32F401VE πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘

STM32F7

Board MCU SD Card LCD TMC SPI TMC UART EEPROM WiFi Max6675 Neopixel
The Borg 3D STM32F765ZGT6 ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️

ESP32

Board MCU SD Card LCD TMC SPI TMC UART EEPROM WiFi Max6675 Neopixel
Espressif 32 Wifi ESP32 ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️

Teensy

Board MCU SD Card LCD TMC SPI TMC UART EEPROM WiFi Max6675 Neopixel
TeensyΒ 3.5 MK64FX πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘
TeensyΒ 3.6 MK66FX πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘ πŸ›‘

Legend

Checklist for RC1:

thinkyhead commented 5 years ago

the Rememberer template sure looks like it ought to work

Tracking down the exact spot where it sets the port wrong should be an interesting challenge.

weed2all commented 5 years ago

So what can I do to test it?I have the drivers set for uart...the radds is up to date with the latest marlin 2.0.x branch...

thinkyhead commented 5 years ago

ARMed Stick is 'powered by the popular STM32F103C8T6 micro controller', so it is not STM32F4 but an STM32F1

We'll have to ask the author of #12147 @ktand about that.

weed2all commented 5 years ago

Now I have all my printers(almost all)with duet board, but I want to have my dolly printer where i can test boards and firmwares...

thinkyhead commented 5 years ago

So what can I do to test it?

  • https://www.youtube.com/watch?v=GtlsW3FDN3E
  • 
    #if NUM_SERIAL > 1
    extern int8_t serial_port_index;
    #define _PORT_REDIRECT(n,p)   REMEMBER(n,serial_port_index,p)
    #define _PORT_RESTORE(n)      RESTORE(n)
    #define SERIAL_OUT(WHAT, V...) do{ \
    if (!serial_port_index || serial_port_index == SERIAL_BOTH) (void)MYSERIAL0.WHAT(V); \
    if ( serial_port_index) (void)MYSERIAL1.WHAT(V); \
    }while(0)
  • define SERIAL_ASSERT(P) if(serial_port_index!=(P)){ debugger(); }

    else

    define _PORT_REDIRECT(n,p) NOOP

    define _PORT_RESTORE(n) NOOP

    define SERIAL_OUT(WHAT, V...) (void)MYSERIAL0.WHAT(V)

  • define SERIAL_ASSERT(P) NOOP

    endif

Place SERIAL_ASSERT(0) where the serial port should be "0" and SERIAL_ASSERT(1) where the serial port should be "1" and so on. Replace debugger() with some function (or macro) that gives an indication where the error happened.

The debugger is the most direct way to see what's going on. But you could have the SERIAL_ASSERT macro print out to the serial port something fun like PSTR(__FILE__ " : " __LINE__) which the compiler fills in with the right strings.

jmz52 commented 5 years ago

We'll have to ask the author of #12147 @ktand about that.

Oh. There is an ARMed STICK based in STM32F103C8 controller and there is an Arm'ed 3D Printer Controller based on STM32F407VE controller.

Link is the original post got me confused as it is pointing to ARMed STICK i.e. STM32F1.

ktand commented 5 years ago

ARMed Stick is 'powered by the popular STM32F103C8T6 micro controller', so it is not STM32F4 but an STM32F1

We'll have to ask the author of #12147 @ktand about that.

I'm the designer of the ARMED board (https://github.com/ktand/armed). Defined in Marlin's boards.h as:

define BOARD_ARMED 4104

and is based on the STM32F407 controller.

ktand commented 5 years ago

@thinkyhead, as mentioned before, the following features are stable for the ARMED board:

The board uses a STM32F407VET6 controller, not a STM32F401VE.

Board link: Armed 3D Printer Controller

GMagician commented 5 years ago

Lol, Adafruit grand central internal eeprom is working, onboard sd card is on the road, LCD (at least on ruramps can't use sd detect pin because is used by SPI itself. A cable patch is needed) but I think I'll not be able to test nothing more nor TMC in SPI/USART nor neopixel, nor max6675 (what is it?), wifi (?!? on board support or some external board? ruramps has a esp8266 connection but is this required?)

Also external eeprom on shield should works but I'm expecting a ruramps and I don't know when it will be sent.

With these limits, Is there any possibility it will be added to Marlin repo?

Roxy-3D commented 5 years ago

With these limits, Is there any possibility it will be added to Marlin repo?

Don't worry about it being supported in the first release. First, it probably is going to take several more months to get things clean enough for that to happen. But if it doesn't make the first release.... It will be included as soon as it is ready. You aren't going to be left behind.

xC0000005 commented 5 years ago

We need an icon for "not applicable." On the Malyan M200 V1/V2/V3/Pro and M300 printers, there will never be TMC in either flavor (these are fixed driver boards). There's no free SPI output, so no Max support. on V1s there's not even a free GPIO to hook a Neopixel to once the Arduino Core and library support it.

Summary of different Malyan M200/M300 printers: Malyan M200 V1 - SMT32F103 LCD has minor bugs. EEPROM, SD, work. Max, TMC, Wifi, Neopixel aren't possible.

Malyan M200 V2 - SMT32F070 LCD has minor bugs. EEPROM, SD, work. Max, TMC, Wifi aren't possible. Neopixel needs work (lots and lots of work).

The V3 is essentialy the V2 + an auto-level sensor, in the same state (same MCU). I'd list it as V2/V3.

MS1987 commented 5 years ago

Description Initial MKS Robin Lite and MKS Robin Lite2 (STM32F103RCT6) support brought over from Makerbase's Robin Lite repo and Robin Lite2 repo

Benefits Brings MKS Robin Lite/Lite2 board support into Marlin.

Related Issues None.

berezovskyi-oleksandr commented 5 years ago

@thinkyhead first message mentions that FAST_PWM_FAN works on Due.

At Marlin/src/HAL/HAL_DUE/SanityCheck.h there is condition preventing build:

#if ENABLED(FAST_PWM_FAN)
  #error "FAST_PWM_FAN is not yet implemented for this platform."
#endif

Error in message or in code?

thisiskeithb commented 5 years ago

How much proof of life do you need for the SKR 1.3? I can confirm that SD Card (onboard & on LCD), LCD (2004 & 12864), TMC SPI (2130 & 5160), TMC UART (2208/2209), and EEPROM work well on the two SKR 1.3 boards that I have.

sky4fly commented 5 years ago

add kinematics delta robot on marlin 2.0 RC1 http://www.cim.mcgill.ca/~paul/clavdelt.pdf

https://www.youtube.com/watch?v=v46Gh64aN_o https://www.youtube.com/watch?v=1aBubz6Mk2M

smoothieware and reprap firmware supports these kinematics waiting for washed down on marlin: (

pinchies commented 5 years ago

Just want to add the jgaurora A5S and A1, I’ve been debugging marlin 2.0 with both and most things are working great. Bltouch not working yet since servos not working. SD card reliability I would describe as 99%, but that could be due to wire shielding issues. EEPROM on SD working fine. This is all on ZET6 like robin and alfawise. LCD touch working via same method as for those boards too, just a different calibration for screen touch values.

RiRilot commented 5 years ago

I'm testing 2.0 on an SKR V1.3 with TMC5160s on all axis and BLTouch. It's all working well apart from the wierd layer shift issue. Happy to test any fixes you might have for that. This is my deveopment printer so can be up and down as needed.

coreyfaure commented 5 years ago

I'm testing 2.0 on an SKR V1.3 with TMC5160s on all axis and BLTouch. It's all working well apart from the wierd layer shift issue. Happy to test any fixes you might have for that. This is my deveopment printer so can be up and down as needed.

Have you been able to get Linear Advance working on your end, or is that something you've tested at all? I can't seem to find a whole lot of results for other tests with Linear Advance on the SKR 1.3. I'm using TMC2208s on the X, Y and Z axis and an A4988 on the E and the calibration patterns won't produce anything usable.

RiRilot commented 5 years ago

It's next on my list to test actually. Might have some data tomorrow.

RiRilot commented 5 years ago

Linear advance working fine on SKR V1.3. K factor came out at 0.8 with my Bowden setup after calibration.

coreyfaure commented 5 years ago

Linear advance working fine on SKR V1.3. K factor came out at 0.8 with my Bowden setup after calibration.

Which drivers do you have?

RiRilot commented 5 years ago

TMC5160s in SPI mode on X, Y, and Z. A4988 on E0.

thordarsen commented 5 years ago

On my SKR1.3 Linear Advance works fine with my Titan Aero setup. (2208 XY, A4988 ZE; 0.13 PLA, 0.18 PETG, 0.26 TPU) I've not had much luck when using a Bowden setup, but never tried anything close to 0.8 either.

On another topic, is there a good way to figure out the pins for STM32F1 (03RCT6)? I got an XVico X1 dirt cheap mostly for parts. The main board is discussed here: https://tinkerfiddle.blogspot.com/2019/ I've dug a little further - I know its running DLion firmware - V4 or later. And its based on the DLion Mini board ( https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4004-17760143202.4.256738f4qt6iZ8&id=592299690248 ) which is I think made by logeek.cn. They make the DLion source available (V04) but the board schematic and pins.h are for the non mini variant. And my extensive use Google Translate has run into a wall getting the info for my board. (I can post the pins.h file and schematics for the non Mini board if anyone wants it)

coreyfaure commented 5 years ago

On my SKR1.3 Linear Advance works fine with my Titan Aero setup. (2208 XY, A4988 ZE; 0.13 PLA, 0.18 PETG, 0.26 TPU) I've not had much luck when using a Bowden setup, but never tried anything close to 0.8 either.

Could you share your config files for your SKR 1.3 and 2208 setup? I've been wrestling with this issue for three weeks and I'm very curious as to what's setup wrong on my end.

thordarsen commented 5 years ago

On my SKR1.3 Linear Advance works fine with my Titan Aero setup. (2208 XY, A4988 ZE; 0.13 PLA, 0.18 PETG, 0.26 TPU) I've not had much luck when using a Bowden setup, but never tried anything close to 0.8 either.

Could you share your config files for your SKR 1.3 and 2208 setup? I've been wrestling with this issue for three weeks and I'm very curious as to what's setup wrong on my end.

Here you go. My 2208's are currently in standalone mode because I haven't wrangled up a soldering iron yet (why couldn't they just put a jumper/DIP switch there for UART?)

Configuration.zip

coreyfaure commented 5 years ago

On my SKR1.3 Linear Advance works fine with my Titan Aero setup. (2208 XY, A4988 ZE; 0.13 PLA, 0.18 PETG, 0.26 TPU) I've not had much luck when using a Bowden setup, but never tried anything close to 0.8 either.

Could you share your config files for your SKR 1.3 and 2208 setup? I've been wrestling with this issue for three weeks and I'm very curious as to what's setup wrong on my end.

Here you go. My 2208's are currently in standalone mode because I haven't wrangled up a soldering iron yet (why couldn't they just put a jumper/DIP switch there for UART?)

Configuration.zip

Thank you for this. I duplicated your settings (even down to putting my drivers back in standalone mode) and I'm still getting strange behavior. Do you happen to have a 24V power supply or 12V? I've got a 24V and I can't help but wonder if something is wrong regarding that.

thinkyhead commented 5 years ago

Grand Central support has arrived with #14749

simon-jouet commented 5 years ago

Tests

Okay now that I have a new ESP32 board, I went through the list to check what is working and what's not. All of these tests have been done against fec52e61ea22640d70d7aaa0c8c235958cfe4b24

Example OTA config for platformIO

upload_protocol = espota
upload_port = 10.66.0.102
upload_flags = -p 3232

SSD1306 deps changes

I should create a MR for this but in the meantime

 lib_deps =
+  ${common.lib_deps}
   https://github.com/me-no-dev/AsyncTCP.git
   https://github.com/me-no-dev/ESPAsyncWebServer.git
 lib_ignore  =
-  LiquidCrystal_I2C
   LiquidCrystal
-  NewliquidCrystal
-  LiquidTWI2
   TMC26XStepper
   c1921b4
-  SailfishLCD
-  SailfishRGB_LED

RepRap Discount Smart Controller

IMG_4027

NeoPixel (ws2812b with a dodgy setup)

IMG_4030

GMagician commented 5 years ago

Only things that really are tested in AGCM4 and that seems to work are: onboard SD and onboard eeprom LCD is not working yet (missing u8 libs code), servo have some issue with original library (doesn't work, doesn't compile but there are some PR that should fix these) while tmc may work but are not tested because I don't have any shield and any stepstick to test.

Idorobots commented 5 years ago

SSD1306 OLED over I2C is not working because u8glib doesn't support the ESP32. Using u8g2 would solve this but it's not currently used in Marlin

I did implement that support in the Marlin fork of u8glib here: https://github.com/MarlinFirmware/U8glib-HAL/pull/7 Unlike on LPC (see https://github.com/MarlinFirmware/Marlin/issues/13550) on ESP32 it does seem to be stable.

simon-jouet commented 5 years ago

SSD1306 OLED over I2C is not working because u8glib doesn't support the ESP32. Using u8g2 would solve this but it's not currently used in Marlin

I did implement that support in the Marlin fork of u8glib here: MarlinFirmware/U8glib-HAL#7 Unlike on LPC (see #13550) on ESP32 it does seem to be stable.

Thanks I will check that at some point, I managed to compile fine when I did the tests but I had a crash loop when Marlin tried to initialise the screen. I assumed it was because of u8glib compatibility but apparently not. The crash was in u8gInit if i remember correctly.

EDIT: working fine with @Idorobots changes

0x3333 commented 5 years ago

What do you guys means with:

STM32: Needs software serial

I'm working in a Software UART to a side project, for Chibios OS on a STM32F1(Probably works on all STM32), and it may fit, depending on your needs. It uses a Timer that works 3 times the baud frequency, all interrupt code, plain simple but highly effective. Probably will finish until end of month.

I'm not familiar with Marlin, so if my question is dumb, just let me know.

tpruvot commented 5 years ago

Serial (and multiple serials) seems to works properly on the F1. What "could" be missing is the direct USB pins, printers seems to generally use a dedicated usb/serial chip via a serial channel. But i say could because pins are not linked/used on my boards.

0x3333 commented 5 years ago

Well, if that's the case, it is not a "Software serial" that is needed... odd.

gloomyandy commented 5 years ago

Software serial is useful for talking to devices like the TMC2208 etc drivers (less so with the TMC2209 which allows multiple drivers to share a UART), when you may need five or more serial interfaces (to talk to the drivers) plus perhaps one or more to talk to say a TFT screen and perhaps another to talk to Octoprint or whatever. So you may need 7 UART devices. I'm not sure how many UARTS the STM devices support, or how easy it is to arrange for the pins to be available (they may be shared with other devices that are also needed like spi/i2c/adc etc.). On the LPC176x chips there simply are not enough hardware UARTS available and so we use software serial (@0x3333 you may want to take a look at how it is implemented for the LPC176x, sounds similar to how you are doing things).

0x3333 commented 5 years ago

@gloomyandy yeah, I thought that was the reason. The LPC176X is using arduino software serial, and it is blocking, isn't it?

gloomyandy commented 5 years ago

@0x3333 No it is written for the LPC176x It uses the same API as the Arduino (so that it can be used with things like the TMC library). Everything is driven from a timer interrupt. It is sort of blocking on output, but only because the output buffer is only a single byte (like the Arduino version), but it only blocks if the previous character is still being sent. The source is here: https://github.com/p3p/pio-framework-arduino-lpc176x/blob/master/cores/arduino/SoftwareSerial.cpp

Ignore the header comment, that is from the original Arduino software serial code and I didn't get around to updating it before the code was merged.

GMagician commented 5 years ago

Please, to whomever can change this post, grandcentral M4 should have ⚠️ on TMC and lcd and πŸ›‘ on WiFi and Max6675

kresike commented 5 years ago

Does the coming soon BigtreeTech SKR Pro is so much too far from the current Marlin status ? I still don't have the "big picture" of Marlin V2, so sorry in advance if it's a silly question. In fact, I even don't know if STM32F407ZGT6 already exists in Marlin ecosystem.

It exists. I have a board on the way. If its just a matter of a pin file, config samples ect and the HAL is good, it just might make it in. Time will tell.

I have a printer running on a BIGTREETECH SKR PRO with TMC5160's (X,Y) and TMC2130's (Z1,Z2,E) , everything seems ok except for linear advance, it doesn't extrude properly with LA enabled. Still trying to work that out.

thinkyhead commented 5 years ago

doesn't extrude properly with LA enabled

Be sure to disable spreadCycle on E as this seems to play havoc with LA.

gloomyandy commented 5 years ago

@thinkyhead are you sure you mean disable spreadcycle? From what I've seen it is stealthchop that causes problems and spreadcyle usually works.

pinchies commented 5 years ago

@thinkyhead - core function things (LCD, USB serial, SD, Touch, SD-on-eeprom) have been working great now on JGAurora A5S/A1 for a while. Can we add them to the supported list to RC1? Different board, but same chip and status as Robin 2.4.

jjameshodgson commented 5 years ago

Are there any plans to include support for the 12bit ADCs on these boards? I've tried to switch from Smoothieware to Marlin on my MKS SBASE but the temps are nowhere near as smooth and none of the settings in Marlin seem to make it as stable as SW.

jediminer543 commented 5 years ago

With respect to the FAST_PWM_FAN; the HAL doesn't support the DUE yet; but does support the LPC176x; as the DUE HAL lacks the void set_pwm_frequency(const pin_t pin, int f_desired) definition anywhere in it's HAL. (and similarly the LPC176x does)

RiRilot commented 5 years ago

Just thought I'd chip in an say that I've been running 2.0 on an SKR V1.3 for about 2 months now. Configured with linear advance and TMC5160s in SPI mode. No issues at all. It's solid and believe me, I hammer it daily.

dan-and commented 5 years ago

STM32: Needs software serial

Just an overview of the Status: stm32duino added that feature on the 11. September 2019 and released it with stm32duino v1.7.0 . platform-ststm32 merged stm32duino v1.7.0 today (1. October 2019), so when the the next release of ststm32 (something like 5.6.1 or 5.7.0) will include the software serial for the STM32.

So things are moving forward :-)

ghost commented 4 years ago

I2C GPIO expanders for Teensy 3.5 would be great. The chip is pretty powerful and could enable shields with more features. PCF8574 is pretty simple and common.

extesy commented 4 years ago

I guess this issue can be closed due to https://github.com/MarlinFirmware/Marlin/releases/tag/2.0.0

boelle commented 4 years ago

@thinkyhead do you agree with @extesy ^^^

boelle commented 4 years ago

will close this one as 2.0 is out