BIGTREETECH-SKR-mini-E3
BIGTREETECH-SKR-mini-E3 copied to clipboard
Will SKR mini E3 support Ender 3 V2?
I recently got an Ender 3 V2, but one of the stepper motor drivers on the motherboard is broken. I have an old ender 3 running SKR mini E3 board and works pretty well, so is the new SKR mini E3 V2 board support the new Ender 3 V2 printer, eg. the screen?
I have just configured Marlin for Ender 3 V2. You also have to do some pin changes on ribbon cable for display, because pinout is different. I will update this post next week.
I was actually looking to do the opposite. Add the ender3 v2 screen to an ender 3 pro with skr mini e3 v2. Curious on the pin changes needed to get this to work.
I have just configured Marlin for Ender 3 V2. You also have to do some pin changes on ribbon cable for display, because pinout is different. I will update this post next week.
Currently I have some problems with USB connection to PC. Windows don't show anything in device manager. But printing and display works fine.
Would you mind showing us the pinout of the Ender 3 V2 screen and how to change the pinout? I cannot find any info for that. Thank you so much.
Edited on Mar 28 2021
This is tested on Marlin version 2.0.7. New Marlin version has changed SERIAL_PORT definition and a lot of other stuff. You can use my fork for speeding the process. This version works without a bootloader! If you you are using a bootloader, uncomment lines 752 and 753 in platformio.ini https://github.com/jernejp21/Marlin
Use Marlin's Ender 3 V2 Configuration.h
and Configuration_adv.h
files.
You need to import this code into pins_BTT_SKR_MINI_E3_common.h
file. I pasted this part of code below USB connect control. This code can be found in pins_CREALITY_V4.h
.
/**
* Ender 3 V2 display SKR Mini E3 V2.0
* _____ _____
* 5V | 1 2 | GND 5V | 1 2 | GND
* (BTN_E1) A | 3 4 | B (BTN_E2) (BTN_EN1) PB15 | 3 4 | PB8 (BTN_E2)
* BEEP | 5 6 ENT (BTN_ENC) PB9 | 5 6 RX1
* (SKR_RX1) TX | 7 8 | RX (SKR_TX1) RESET | 7 8 | TX1
* NC | 9 10| NC (BEEPER) PA15 | 9 10| PB5 (BTN_ENC)
* ----- -----
* EXP1 EXP1
*/
#if ENABLED(DWIN_CREALITY_LCD)
// RET6 DWIN ENCODER LCD
#define BTN_ENC PB5
#define BTN_EN1 PB15
#define BTN_EN2 PB8
#ifndef BEEPER_PIN
#define BEEPER_PIN PA15
#undef SPEAKER
#endif
#endif
Commented picture shows pinout for display and SKR board.
CAUTION!!! You have to create new ribbon cable. Connect SKR RX to display TX pin and SKR TX to display RX pin! This is the most important part (and setting the correct serial port in Marlin).
You can connect other pins as you like, just make sure you define correct pins in Marlin (you can connect display A to SKR's PB9 etc.).
Pinout for Ender 3 V2 display is printed on display's PCB. If you remove the back cover, you will see the connector marked.
After you have copied this code, adjusted pins on display and adjusted pins in Marlin for button and beeper, change also Configuration.h
file.
- set
#define SERIAL_PORT -1
,#define SERIAL_PORT_2 1
. - set
#define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0
- set
#define X_DRIVER_TYPE TMC2209
. Do this also fro X, Y and E0. - set
#define INVERT_X_DIR true
- set
#define INVERT_Y_DIR true
- set
#define INVERT_Z_DIR false
-set#define INVERT_E0_DIR true
- set
#define DWIN_CREALITY_LCD
and comment out current display you are using.
Configuration_adv.h
file.
- set
#define SDCARD_CONNECTION ONBOARD
- under
#if HAS_TRINAMIC_CONFIG
, change motor current. I found out that 580 mA for X, Y and Z is ok. And 700 for E. You can play with this settings. - a little bit lower, change slave addresses for serial TX, RX.
- #define X_SLAVE_ADDRESS 0
- #define Y_SLAVE_ADDRESS 2
- #define Z_SLAVE_ADDRESS 1
- #define E0_SLAVE_ADDRESS 3
- set
#define CHOPPER_TIMING CHOPPER_DEFAULT_24V
if you are using 24V power supply
Make sure you also change platformio.ini
. Change default_envs = STM32F103RC_btt_512K
. You are now using SKR board, not Ender.
From here on you can change Marlin to use BL Touch, sensorless homing etc.
Hi all.The day before yesterday I received this board, killed two days on the configuration, was already going to sell it, when I suddenly came across this post. Thank you very much, you have given me hope. Please tell me in file platformio.ini you indicate default_envs = STM32F103RC_btt_512K and in configuration.h MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0 right?
Please tell me in file platformio.ini you indicate default_envs = STM32F103RC_btt_512K and in configuration.h MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0 right?
Yes, that is correct.
Hope you get it to work. Please comment on the results.
Please tell me in file platformio.ini you indicate default_envs = STM32F103RC_btt_512K and in configuration.h MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0 right?
Yes, that is correct.
Hope you get it to work. Please comment on the results.
Thx, but i cant' compile FW file, few days ago i was create new issue (before I was see that post): https://github.com/MarlinFirmware/Configurations/issues/274
Maybe need in configuration.h indicate CREALITY_V4?
@Stalkeros000 did you look at a post above where you have to add some code to pins_BTT_SKR_MINI_E3_common.h
?
@jernejp21 just to confirm, you would need to place that code in the correct file and build a custom cable to wire it as defined? So basically you can't just use a regular flat ribbon cable for this to work?
@dani190 yes. You have to make new cable or adapter to use with default cable, because pinout of CR10 display differs from Ender 3 V2 display.
Ok fair enough - and this will use the stock Creality menus I guess? Since the marlin UI has not been re-written yet?
I have will contact Marlin developers if they want to include this fix or not. You will need to fix HW by yourself (or if BTT or someone else starts to sell adapters). This configuration isn't plug and play like it's for BLTouch and Neopixle and sensorless homing.
Hi all. Im not test new board yet, bcs I dont want lose PC connection. Sometimes need use some G-code commands in real-time. Only that stops me to trying made some adapter and change board. If you know how fix that problem, please tell.
I have will contact Marlin developers if they want to include this fix or not. You will need to fix HW by yourself (or if BTT or someone else starts to sell adapters). This configuration isn't plug and play like it's for BLTouch and Neopixle and sensorless homing.
Weird that this worked for you... I tried it and got a ton of errors about the encoder wheel or something. I ensured I put the above code into the file you mentioned. Were there any other changes you made?
Check if everything is defined. Also check for #define DWIN_CREALITY_LCD
in Configuration.h
.
@jernejp21 Ok so it seems like the stock Marlin config files are missing some stuff that must be turned on... Fixed it by comparing to the Ender 3 V2 example, enabling a few things for the encoder wheel and didn't have classic jerk enabled causing other issues. Basically had to merge my SKR mini E3 config with the Ender 3 V2 stock board config to have it compile.
Going to try building a cable now and see how it works.
after flashing my printer keeps booting. It shows progress bar and after it's full it starts again from the beginning.
Ya I had the same behaviour... gave up for now as I know Marlin's dev's are working on fixing this soon.
@MrSalzi @dani190 I have updated my comment on how to setup config file.
Did you #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0
in Configuration.h? From @MrSalzi comment I think that wiring is wrong. I think that display pulls down REST pin so the main MCU resets. To check my theory, please use jumper cables and connect only +5V, GND, TX and RX pins. If printer boots up correctly (you can see main screen), than you have wiring problems. Check actual wiring and check how pins are set in FW.
Update regrading Marlin support for this configuration. As you can read here, Marlin is not in favour of this, because it needs HW fiddling. It's not plug and play solution. In my opinion a lot of things Marlin supports are not plug and play, but this is their response.
It's like the time you needed adapter for Ender 3 (8-bit board) for using BLTouch.
@MrSalzi @dani190 I have updated my comment on how to setup config file. Did you
#define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0
in Configuration.h? From @MrSalzi comment I think that wiring is wrong. I think that display pulls down REST pin so the main MCU resets. To check my theory, please use jumper cables and connect only +5V, GND, TX and RX pins. If printer boots up correctly (you can see main screen), than you have wiring problems. Check actual wiring and check how pins are set in FW.
yes I had it defined from before. Took a working copy of my config and just added your suggested changes
Update regrading Marlin support for this configuration. As you can read here, Marlin is not in favour of this, because it needs HW fiddling. It's not plug and play solution. In my opinion a lot of things Marlin supports are not plug and play, but this is their response.
It's like the time you needed adapter for Ender 3 (8-bit board) for using BLTouch.
Well I don't know if that means they aren't going to support it but like you said... it needs a custom cable.
Thanks for your fast response. I've done all that and tried to disconnect all the other pins but these didn't fix it :(
Is this correct?
If I comment out #define EEPROM_SETTINGS then it boots to main menu. Button works but rotation doesn't, but anyway my board is alive. I guess this isn't the final solutions?
If I comment out #define EEPROM_SETTINGS then it boots to main menu. Button works but rotation doesn't, but anyway my board is alive. I guess this isn't the final solutions?
I am at the same step. I can get it to post by commenting out EEPROM_SETTINGS. With it enabled it just boot loops.
Ok, so I got it to work with eeprom, and with almost everything working including z offset and a bltouch. There is a flaw in the code for saving the language setting to the eeprom that makes it only work with the eeprom on the creality v4 board. With these lines commented out marlin starts properly however as a default it will always start in English. I'll do a full write up on how to make it work later when I get home.
@bigtreetech do you plan to officially support the Ender3v2?
I am getting the following error when compiling.
Attached is also my configurations. Configuration.zip
I am getting the following error when compiling.
Attached is also my configurations. Configuration.zip
Figured out the issue in Configuration_adv.h calling out the serial connections to each 2209 driver. It compiled now the new board should be in tomorrow and I can install and try out.
Hi all, Sorry for the delay in my writeup. the reason for the endless loading bar loop in the start-up cycle of the ender 3 v2 screen is due to two lines of code that are specific to the BL24CXX EEPROM and its library. I'm not sure on how to fix this so it works with all EEPROMS however I found disabling the lines of code causes the LCD to default to English.
The Lines of code are in Marlin\src\lcd\dwin\e3v2\dwin.cpp
You will need to // line 218 and Line 227 like so:
void HMI_SetLanguage() {
#if ENABLED(EEPROM_SETTINGS)
//BL24CXX::read(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&HMI_flag.language, sizeof(HMI_flag.language));
#endif
HMI_SetLanguageCache();
}
void HMI_ToggleLanguage() {
HMI_flag.language = HMI_IsChinese() ? DWIN_ENGLISH : DWIN_CHINESE;
HMI_SetLanguageCache();
#if ENABLED(EEPROM_SETTINGS)
//BL24CXX::write(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&HMI_flag.language, sizeof(HMI_flag.language));
#endif
}
Also if you are getting a definition error for ENCODER_5X_STEPS_PER_SEC you will need to add a line in Marlin\Configuration_adv.h.
By default it only appears to have 10x and 100x defined , I added a line like this to resolve the error.
#if ENABLED(ENCODER_RATE_MULTIPLIER)
#define ENCODER_5X_STEPS_PER_SEC 15 // (steps/s) Encoder rate for 5x speed
#define ENCODER_10X_STEPS_PER_SEC 30 // (steps/s) Encoder rate for 10x speed
#define ENCODER_100X_STEPS_PER_SEC 80 // (steps/s) Encoder rate for 100x speed
#endif
I also got an error when trying to save to the dedicated eeprom on my skr e3 2.0. I had to activate the flash eeprom for it to work, if someone else can try this and see if it is the same for them that would be great.
Edit : Fixed bad formatting
Here is an edit to the code so that it will only activate this code if the BOARD_CREALITY_V4 is defined
void HMI_SetLanguage() {
#if ENABLED(EEPROM_SETTINGS)
#if (MOTHERBOARD == BOARD_CREALITY_V4)
BL24CXX::read(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&HMI_flag.language, sizeof(HMI_flag.language));
#endif
#endif
HMI_SetLanguageCache();
}
void HMI_ToggleLanguage() {
HMI_flag.language = HMI_IsChinese() ? DWIN_ENGLISH : DWIN_CHINESE;
HMI_SetLanguageCache();
#if ENABLED(EEPROM_SETTINGS)
#if (MOTHERBOARD == BOARD_CREALITY_V4)
BL24CXX::write(DWIN_LANGUAGE_EEPROM_ADDRESS, (uint8_t*)&HMI_flag.language, sizeof(HMI_flag.language));
#endif
#endif
}
That works for automatically disabling the code if its not the right motherboard, I was more thinking of a way to allow it to save using marlins eeprom definitions so it would work with any board rather then just being disabled. That way people who want the other languages on boot can use it.
Update regrading Marlin support for this configuration. As you can read here, Marlin is not in favour of this, because it needs HW fiddling. It's not plug and play solution. In my opinion a lot of things Marlin supports are not plug and play, but this is their response.
It's like the time you needed adapter for Ender 3 (8-bit board) for using BLTouch.
jernejp21 ,
You haven't commented lately. It sounded like you were successful in getting the BT mini E3 V2 to work in an Ender 3 V2. Wiring between the display and the board needed changes, but with the required firmware changes you documented, everything worked fine for you? But, I see issues others have had since you posted. Did you not have these issues?
My Ender 3 V2 board died after less than a week of use, so I ordered the mine E3 V2 as a replacement. Maybe I'll just leave the display unplugged and use an RPI for octoprint. Any reason that won't work? Must a display be plugged into the E3 V2 board for things to work properly using Octoprint?
I'm quite comfortable with doing a custom cable, but I figure I should do the upgrade in smaller steps, if there are numerous issues to resolve.
I didn't have any issues. I just changed ribbon cable from board to display and edited Marlin as described in post above. BL touch is working, sensorless homing is working, display is working.
Thanks! Your posts seem to make it straight forward. I'll follow them tomorrow when my BT E3 V2 arrives.
Thanks for the reply! Got my BTT board for my E3 V2 and ready to and went back and read your post. I noticed you had issues with USB. Did you resolve that? Dave Thomas On Sunday, December 27, 2020, 09:37:05 PM EST, Jernej Pangerc [email protected] wrote:
I didn't have any issues. I just changed ribbon cable from board to display and edited Marlin as described in post above. BL touch is working, sensorless homing is working, display is working.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
USB issues will remain, because of faulty SKR design. SCLK pin is connected to USB D+ pin via MOSFET. This means that you cannot use USB when you are debugging the board.
So, it just impacts debugging? No issues with printing from a PC like Octoprint?
jernejp21
Your instructions said:
set #define SERIAL_PORT_2 1.
But that means SERIAL_PORT must be changed to something other than 1. Else, I get these errors:
#error "SERIAL_PORT_2 cannot be the same as SERIAL_PORT
Did you mean
set #define SERIAL_PORT_2 -1
If I do this, everything builds ok.
Or, should I #define SERIAL_PORT to something besides 1
SERIAL_PORT -1 SERIAL_PORT_2 1
Thanks again!
I found a set up guide here:
https://www.makenprint.uk/3d-printing/3d-printing-guides/skr-mini-e3-v2-configuration-h-marlin-2-setup-part-2/
It says to use
SERIAL_PORT 2 SERAIL_PORT_2 -1
The comments in the code say:
`/** SERIAL_PORT
- Select the serial port on the board to use for communication with the host.
- This allows the connection of wireless adapters (for instance) to non-default port pins.
- Serial port -1 is the USB emulated serial port, if available.
- Note: The first serial port (-1 or 0) will always be used by the Arduino bootloader.
- :[-1, 0, 1, 2, 3, 4, 5, 6, 7] */
SERIAL_PORT 2 /**
- Select a secondary serial port on the board to use for communication with the host.
- Currently Ethernet (-2) is only supported on Teensy 4.1 boards.
- :[-2, -1, 0, 1, 2, 3, 4, 5, 6, 7] */
' The comments suggest both SERIAL_PORT and SERIAL_PORT_2 define what to use "for communication with the host"I don't know what "secondary" serial port means. Maybe there are two serial ports on the SKR card, one is used for the USB connection and there's a header for debugging over a serial interface? Sorry for my ignorance.
It also says it's "critical" to change the driver types to TMC2209 (versus TMC2208_STANDALONE).
#define X_DRIVER_TYPE TMC2209
#define Y_DRIVER_TYPE TMC2209
#define Z_DRIVER_TYPE TMC2209
//#define X2_DRIVER_TYPE TMC2209
//#define Y2_DRIVER_TYPE A4988
//#define Z2_DRIVER_TYPE A4988
//#define Z3_DRIVER_TYPE A4988
//#define Z4_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE TMC2209
//#define E1_DRIVER_TYPE A4988
//#define E2_DRIVER_TYPE A4988
//#define E3_DRIVER_TYPE A4988
//#define E4_DRIVER_TYPE A4988
//#define E5_DRIVER_TYPE A4988
//#define E6_DRIVER_TYPE A4988
//#define E7_DRIVER_TYPE A4988
Let me know if this is the wrong place to ask these questions.
I'm fairly certain that guide is for an ender 3 v1, not a v2. You need serial_port_2 defined as 1 so that it uses the correct pins in the exp header for the display as it uses serial_port_2 for the display. The rest with the tmc drivers is correct, you also need to use classic jerk and make the changes to the code as listed above.
Thanks!
It would be nice if there were symbolic constants or an enumeration for the values of SERIAL_PORT and SERIAL_PORT_2. Like
#define USB_EMULATED -1
and, based on Madtom2925's reply
#define DISPLAY_SERIAL 1
or maybe there are different valid values for SERIAL_PORT versus SERIAL_PORT_2? What would "2" indicate if used for SERIAL_PORT_2? Are the valid values for each constant documented somewhere in the code (or elsewhere)?
I'll give
SERIAL_PORT -1
SERIAL_PORT_2
a try with the rewired display.
CLASSIC_JERK is defined in the sample configuration file jerniejp suggested to use as the starting point, but the DRIVER_TYPES are defined as TMC2208_STANDALONE and apparently need to be changed.
I think I want to understand the Marlin code better. Are there any resources besides just start reading the code?
Thanks again!
STM32F103 has 4 available USART pin pairs (TX, RX pin pairs). -1 means to use USB UART (D+, D- pins). 1 means TX1, RX1, 2 is TX2, RX2 and so on. See reference manual which pin is which USART.
There is no documentation about how Marlin is structured or any program flow. You just have to start reading the code.
Thank you jernejp21! That helps a lot.
Hello, I have been following along with this thread. I recently installed an SKR mini E3 v2.0 on my Ender 3 V2. With your help and Youtube I have gotten to the point where everything is working except, when I try to print something, the printer will auto home, the progress bar for the print will go to %100 very quickly but the printer never moves after that. Also when try to bed level with the BL Touch, it probes once and then stops moving.
Any suggestions are greatly appreciated.
hi everyone, I'm new to this 3d world and unfortunately by making some mistakes I broke the motherboard of my ender 3 v2, today I tried to replace it with the skr mini e3 v2.0 with the stock lcd, I state that I am not practical of code, so I was looking for someone who could help me with the first configuration. one more thing, is it normal for me to beep continuously? thank you so much
I have been following along with this thread. I recently >installed an SKR mini E3 v2.0 on my Ender 3 V2. With >your help and Youtube I have gotten to the point where >everything is working except, when I try to print >something, the printer will auto home, the progress bar >for the print will go to %100 very quickly but the printer >never moves after that. Also when try to bed level with >the BL Touch, it probes once and then stops
We would need to see your config and advconfig files to see what's going on.
I have been following along with this thread. I recently >installed an SKR mini E3 v2.0 on my Ender 3 V2. With >your help and Youtube I have gotten to the point where >everything is working except, when I try to print >something, the printer will auto home, the progress bar >for the print will go to %100 very quickly but the printer >never moves after that. Also when try to bed level with >the BL Touch, it probes once and then stops
We would need to see your config and advconfig files to see what's going on.
no the problem is that I haven't loaded any firmware yet because I don't know which one to put, but something else "do I have to follow the lcd display output configuration described above?" sorry for my English
That was in reply to the problem quoted, not you. For this to work you have to modify the cable as listed above. Otherwise it will just beep. You will also need modified firmware, do you have a bltouch?
Sorry to everyone it took some time. I have updated my original post with all the settings I have modified from Ender 3 V2 config file.
I see a lot of people are asking same questions over and over:
- you have to create new ribbon cable, because pinout if different. DWIN display has different layout than CR10 display.
- if your display is beeping, pinout is incorrect.
- if you can't see image on display, pinout or FW is incorrect
- if FW doesn't compile read all error messages. You might have multiple displays defined or you don't have the correct board selected in platformio.ini file.
Jernejp21 do you have eeprom enabled?
You need EEPROM to store settings and to use M500 command.
Era in risposta al problema citato, non tu. Affinché questo funzioni è necessario modificare il cavo come elencato sopra. Altrimenti emetterà solo un segnale acustico. Avrai anche bisogno di un firmware modificato, hai un bltouch?
yep i have bltouch
Jernejp21 did you have to make mods to the dwin file or did it work straight away for you?, some people seem to get a boot loop and others don't so maybe its version related
I have been following along with this thread. I recently >installed an SKR mini E3 v2.0 on my Ender 3 V2. With >your help and Youtube I have gotten to the point where >everything is working except, when I try to print >something, the printer will auto home, the progress bar >for the print will go to %100 very quickly but the printer >never moves after that. Also when try to bed level with >the BL Touch, it probes once and then stops
We would need to see your config and advconfig files to see what's going on.
I uploaded the config files to my profile in "skr-e3-v2.0-on-ender-3-v2"
I don't see anything obvious in the config, how is your bltouch wired?, is it plugged in to the z min header or the bltouch header?
I have it on the one labeled z probe.
I don't see anything obvious in the config, how is your bltouch wired?, is it plugged in to the z min header or the bltouch header?
I ended up disabling bl touch in firmware and now it will print, so I will have to dig into the bl touch settings to see what is going on.
hi everyone, again, XD, after finding the cables needed to rewire the flat cable of the LCD and after modifying the firmware following the descriptions, everything went well except the self-leveling which insists on not working correctly. the probe after making the initial test when turning on the printer is as if it does not feel contact with the print plan, does anyone work correctly?
I have been following along with this thread. I recently >installed an SKR mini E3 v2.0 on my Ender 3 V2. With >your help and Youtube I have gotten to the point where >everything is working except, when I try to print >something, the printer will auto home, the progress bar >for the print will go to %100 very quickly but the printer >never moves after that. Also when try to bed level with >the BL Touch, it probes once and then stops
We would need to see your config and advconfig files to see what's going on.
I uploaded the config files to my profile in "skr-e3-v2.0-on-ender-3-v2"
did u have plugged ur bltouch at z min on ur board?
I have been following along with this thread. I recently >installed an SKR mini E3 v2.0 on my Ender 3 V2. With >your help and Youtube I have gotten to the point where >everything is working except, when I try to print >something, the printer will auto home, the progress bar >for the print will go to %100 very quickly but the printer >never moves after that. Also when try to bed level with >the BL Touch, it probes once and then stops
We would need to see your config and advconfig files to see what's going on.
I uploaded the config files to my profile in "skr-e3-v2.0-on-ender-3-v2"
did u have plugged ur bltouch at z min on ur board?
It is plugged in to the one labeled "z probe" next to the display plug.
the printer will auto home, the progress bar >for the print will go to %100 very quickly but the printer >never moves after that
I see this behavior after completing a print, then starting a new one without power cycling the machine. But, it's with the stock ender V2 board.
If I can figure out where I should log or check that as an issue, I'll do it. Maybe related to the end G-code I'm using. The start G-code does the home and ABL. It might also be related to temperatures already being at or above their targets.
Anyway, you might just try having the home and ABL G-code in your slicer settings, then make sure you power cycle before printing. Works everytime for me, trying another print after the first always behaves as you describe.
Hello, I would like to use the SKR mini E3 v2 board in the Ender 3 v2 but not with the pure Marlin firmware only with the TH3D Unfield 2- Creality Ender 3 Pro and SKR E3 Mini Board version. In their code I found only one difference from your post - pin programming in the file pins_BTT_SKR_MINI_E3_common.h. How should the pins be assigned in the TH3D version?
Your example:
_____
5V | 1 2 | GND
PB15 | 3 4 | PB8
PB9 | 5 6 RX1
RESET | 7 8 | TX1
PA15 | 9 10| PB5
-----
EXP1
TH3D version:
-----
5V | · · | GND
(LCD_D7) PG7 | · · | PG6 (LCD_D6)
(LCD_D5) PG3 | · · | PG2 (LCD_D4)
(LCD_RS) PD10 | · · | PD11 (LCD_EN)
(BTN_ENC) PA8 | · · | PG4 (BEEPER)
-----
EXP1
Hello, I followed this instruction but if I set ports like
SERIAL_PORT -1 SERIAL_PORT_2 1
compiling firmware fails.
With //SERIAL_PORT_2 1 firmware build access
I seem to have firmware that is working (am able to print from my OctoPrint). Just working on fixing the LCD now, but am confused by the new pinning requirements. Are we just swapping pins 7 and 8, so the cable would be: 1 --> 1 2 --> 2 3 --> 3 4 --> 4 5 --> 5 6 --> 6 7 --> 8 8 --> 7 9 --> 9 10 --> 10
OR, is it? 1 —> 1 2 —> 2 3 —> 3 4 —> 4 5 —> 9 6 —> 10 7 —> 8 8 —> 6 9 —> 5 (NC) 10 —> 7 (NC)
or... ?????
Please anyone who has it working, can you confirm what the pinning is? I don't understand the diagram. Thank you!
Here are my notes on the display wiring. Pin 9 and 10 on the display end and pin 5 and 7 on the controller board end, do not get connected to anything. I hope this makes sense.
On Sun, Feb 14, 2021, 12:26 AM timzor [email protected] wrote:
I seem to have firmware that is working (am able to print from my OctoPrint). Just working on fixing the LCD now, but am confused by the new pinning requirements. Are we just swapping pins 7 and 8, so the cable would be: 1 --> 1 2 --> 2 3 --> 3 4 --> 4 5 --> 5 6 --> 6 7 --> 8 8 --> 7 9 --> 9 10 --> 10
Please anyone who has it working, can you confirm what the pinning is? I don't understand the diagram. Thank you!
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/bigtreetech/BIGTREETECH-SKR-mini-E3/issues/424#issuecomment-778739841, or unsubscribe https://github.com/notifications/unsubscribe-auth/ASPLI2ASDJUCGCWVG5YHODTS653KXANCNFSM4SLUCEGQ .
Fixed it for you. Use this one. Your pin 7 and 8 were backward.
1 —> 1 2 —> 2 3 —> 3 4 —> 4 5 —> 9 6 —> 10 7 —> 6 8 —> 8 9 —> 5 (NC) 10 —> 7 (NC)
It seems that the stock Ender 3 V2 display isn't fully supported by Marlin (yet?). So, I'm using a plug-in in Octoprint to display messages from the G-code (M117).
Another example is that the z offset wizard isn't supported by Marlin on the Ender 3 V2 display. Not sure why, maybe just a todo. I may look at hacking the code, if the main issue is no support for messages on the V2 display--use the octoprint plugin instead.
You may wish to try https://github.com/Jyers/Marlin/tree/Ender_3_V2_Rewrite if you want more functionality on your V2 DWIN screen
Thanks for the tip. The readme makes it sound just like the bugfix branch. Are the changes relative to bugfix documented?
The whole DWIN implementation was rewritten in a more maintainable way and a lot of features were added like host controls, M75/M77, M600, M701/M702, lots more, there was a reddit thread about it but it was a few weeks back and a lot has moved since then
Do you think it will eventually be merged back to the official Marlin (and supported)? (I'll look for the thread)
Possibly, Jyers has already had one small chunk PR land in upstream to put more metrics on the print screen.
I´ve found a way to get Ender 3 V2 display working.
https://github.com/yohannaftali/Marlin-Firmware-BTT-SKR-Mini-Hemera I downloaded and changed firmware found at link above and now the display works very well.
Now I have a new issue, because the printer isn´t able to print any gcode, if there are following commands included
M109 wait for extruder temp M190 wait for bed temp
With Pronterface I get this
I can set any temperatur manually for hotend and bed without issues by Pronterface and also with Ender 3 V2 display. If I uncomment M109 and M190 in gcode the printer works like a charm.
Wo can help me please?
@nospmMe link returns "no results". Do you have a valid link?
With M09 & M190 executed, how long is it taking before the ERROR shows?
@DarkSnart The printer is connected bye usb and to me it seems the link is stable.
The error came up immediately when gcode pass the commands M109 or M190.
Same happens if I start the gcode directly over sdcard. The printer stops immediately and goes in freeze.
I've realised that printing over sdcard isn't possible. No matter which gcode
@nospmMe have you visited this thread? [(https://github.com/bigtreetech/BIGTREETECH-SKR-mini-E3/issues/465)] (https://github.com/bigtreetech/BIGTREETECH-SKR-mini-E3/issues/465)
Just wanted to mentioned make sure you are using the right default_envs = STM32F103RC_btt_512K or STM32F103RC_btt as appropriate depending on the chip on your board. I believe I'd been using the _512K which was flashing fine but causing random crashing and motor overheating.
edit - My printer still random crashes/freezes. Will open a new issue.
@DarkSnart please find new link: https://github.com/yohannaftali/Marlin-Firmware-BTT-SKR-Mini-Hemera Of course I visited your mentioned thread, thank you therefore. Unfortunately I didn´t find any solution there.
Instead of M109 and M190 currently I use G4 S90 for start gcode and that works for me.
@pbinsted this is my default_envs
[platformio] src_dir = Marlin boards_dir = buildroot/share/PlatformIO/boards default_envs = STM32F103RC_btt_512K include_dir = Marlin
I was having a hard time with the wiring, I created this for myself, but maybe someone will find it useful.
(The wire numbers are different on the software and hardware level :))
I am having the same problem @nospmMe was having. If I try to compile the current state of the bugfix2.0 branch with the serial config suggested here, I get an error related to some serial code:
In file included from d:\marlin2bugfix\marlin\src\inc\marlinconfig.h:55:0,
from Marlin\src\HAL\STM32F1\HAL.cpp:30:
d:\marlin2bugfix\marlin\src\core\serial.h:71:34: error: 'MYSERIAL' was not declared in this scope
typedef MultiSerial<decltype(MYSERIAL), decltype(SERIAL_CATCHALL), 0> SerialOutputT;
^~~~~~~~
d:\marlin2bugfix\marlin\src\core\serial.h:71:34: note: suggested alternative: 'MYSERIAL1'
typedef MultiSerial<decltype(MYSERIAL), decltype(SERIAL_CATCHALL), 0> SerialOutputT;
^~~~~~~~
MYSERIAL1
d:\marlin2bugfix\marlin\src\core\serial.h:71:34: error: 'MYSERIAL' was not declared in this scope
d:\marlin2bugfix\marlin\src\core\serial.h:71:34: note: suggested alternative: 'MYSERIAL1'
typedef MultiSerial<decltype(MYSERIAL), decltype(SERIAL_CATCHALL), 0> SerialOutputT;
^~~~~~~~
MYSERIAL1
d:\marlin2bugfix\marlin\src\core\serial.h:71:73: error: template argument 1 is invalid
typedef MultiSerial<decltype(MYSERIAL), decltype(SERIAL_CATCHALL), 0> SerialOutputT;
^
In file included from d:\marlin2bugfix\marlin\src\inc\marlinconfig.h:55:0,
from Marlin\src\HAL\STM32F1\HAL.cpp:30:
d:\marlin2bugfix\marlin\src\core\serial.h: In function 'void SERIAL_CHAR(char)':
d:\marlin2bugfix\marlin\src\core\serial.h:100:47: error: request for member 'write' in 'multiSerial', which is of non-class type 'SerialOutputT {aka int}'
inline void SERIAL_CHAR(char a) { SERIAL_IMPL.write(a); }
^~~~~
Trying to dig in a little deeper to see what's happening.
@bholzer I used this (https://github.com/yohannaftali/Marlin-Firmware-BTT-SKR-Mini-Hemera) as a starting point, get rid of the Hemera related settings, added my probe settings, checked the modifications mentioned in the 5th comment and I was able to compile the firmware.
@bholzer You are using new version. Please try with Marlin 2.0.7. A lot has changed since then, that's why my instructions arn't compatible with your version of Marlin.
Thanks, can confirm I was able to get a build using 2.0.7. Now at the boot loop step, so making progress!
On Mar 8, 2021, at 8:22 PM, Jernej Pangerc [email protected] wrote:
@bholzer You are using new version. Please try with Marlin 2.0.7. A lot has changed since then, that's why my instructions arn't compatible with your version of Marlin.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.
After almost a week of head breaking I finally managed to compile everything correctly A BIG THANKS TO ALL OF YOU for your head breakage, and your research on the subject my ender3 v1 now works with a SKR mini E3 and an ender3 v2 screen and octoprint I am French zero in coding and in English thank you again to you
After almost a week of head breaking I finally managed to compile everything correctly A BIG THANKS TO ALL OF YOU for your head breakage, and your research on the subject my ender3 v1 now works with a SKR mini E3 and an ender3 v2 screen and octoprint I am French zero in coding and in English thank you again to you
Great to hear, could you share your config files? Is it only the pinouts, which can easily be changed or are there many changes in the config needed?
@seppelicous For the pinout I followed the tutorial on the other hand without touching the original power supply. I did not connect the beeper because I do not find it useful nor the reset. I will try to redistribute my wiring and I will immediately send you my compilation of Marlin which passes for an Ender 3 v1 (for v2 you have to deactivate the fan and change the PIDs). There must still be communication issues because it does not show me the Zs on the screen. That said basic it suits me well.And in order not to have the reboot problems of the motherboard I deleted some files and replaced by others because of the language.
void HMI_SetLanguage () {
si ACTIVÉ (EEPROM_SETTINGS)
# if (MOTHERBOARD == BOARD_CREALITY_V4)
BL24CXX :: read (DWIN_LANGUAGE_EEPROM_ADDRESS, ( uint8_t *) & HMI_flag. language , sizeof (HMI_flag. language ));
# endif
endif
HMI_SetLanguageCache (); }
void HMI_ToggleLanguage () { HMI_flag. langue = HMI_IsChinese ()? DWIN_ENGLISH: DWIN_CHINESE; HMI_SetLanguageCache ();
si ACTIVÉ (EEPROM_SETTINGS)
# if (MOTHERBOARD == BOARD_CREALITY_V4)
BL24CXX :: write (DWIN_LANGUAGE_EEPROM_ADDRESS, ( uint8_t *) & HMI_flag. language , sizeof (HMI_flag. language ));
# endif
endif
}
This part of code prevents the motherboard from rebooting. Sorry but the zip file is too big but you can ask me by e-mail [email protected]
I understand what changes need to be made to the ribbon cable. What I don't understand is how to go about making those changes. Can anyone offer links or guidance that might get me started?
Thanks, Andy
@maddawgmax you take a new ribbon cable and 2 10-pin IDC connectors, and rearrange wires according to the guide above. For installing flat cable to IDC connector - you just press cable into the connector. Recommend you use a vise. With hands can be difficult.
@maddawgmax I did not cut the black and white wire (these are the power wires), it is not useful to cut the purple, orange and gray. So yellow (screen side) goes with red, green (screen side) goes with brown. At the end I find myself on the motherboard side with the yellow, green and blue which are not connected. And on the screen side, blue, red and brown
@maddawgmax you take a new ribbon cable and 2 10-pin IDC connectors, and rearrange wires according to the guide above. For installing flat cable to IDC connector - you just press cable into the connector. Recommend you use a vise. With hands can be difficult.
@jernejp21 Thank you. That’s exactly what I needed.
@maddawgmax I did not cut the black and white wire (these are the power wires), it is not useful to cut the purple, orange and gray. So yellow (screen side) goes with red, green (screen side) goes with brown. At the end I find myself on the motherboard side with the yellow, green and blue which are not connected. And on the screen side, blue, red and brown
![]()
![]()
@Daniel38160 Thanks for the pics.
Hey, I thought I'll describe my "journey" so far. I'm trying to get a working firmware for about 1 week now and my current firmware (an edited Hemera firmware for the Ender 3 V2) lets me successfully do a bed level with my BLTouch but I can't get a print to work (neither via the sdcard or Octoprint). I always get the same error "Changing monitoring state from "Error: Printer halted. kill() called!" to "Offline (Error: Printer halted. kill() called!)"", checked it via Octoprint terminal. I already tried to start from scratch but that didn't work out. Then I saw that jernejp21 posted a link to their fork, I successfully compiled it but I got stuck in a boot loop. I already checked and compared all the configuration.h and configuration_adv.h files with each other and I didn't see any differences (I'm fairly new to 3d printing so I for sure might be missing something). The edited Hemera firmware seems to work the best so far but I honestly don't know why I get that error. As for the display: everything seems to work, I was able to get the connections correct. So I'd assume there is no problem with the display. I for sure would appreciate any kind of help!
@Jexkin
Have you seen this link? https://github.com/yohannaftali/Marlin-Firmware-BTT-SKR-Mini-Hemera
@maddawgmax
yes, that's the Hemera firmware I wrote about. Downloaded it, removed the Hemera settings and I got the printer to "work" (bed leveling works via display and Octoprint but starting a prints gives me the error code (see above)). I basically only need to edit some lines in the configuration.h and configuration_adv.h file, right? Or is there any other file I need to edit some lines?
I can't read the thread very easily right now, but I think I recall there is a reset line in the wiring to/from the display. That line should not be left floating--continuous or spurious reboots can occur. Later tonight, I'll refresh my memory and comment again, if it seems appropriate. On Saturday, March 27, 2021, 01:08:15 PM EDT, Jexkin @.***> wrote:
@maddawgmax
yes, that's the Hemera firmware I wrote about. Downloaded it, removed the Hemera settings and I got the printer to "work" (bed leveling works via display and Octoprint but starting a prints gives me the error code (see above)). I basically only need to edit some lines in the configuration.h and configuration_adv.h file, right? Or is there any other file I need to edit some lines?
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
Edited on Mar 28 2021
This is tested on Marlin version 2.0.7. New Marlin version has changed SERIAL_PORT definition and a lot of other stuff. You can use my fork for speeding the process. This version works without a bootloader! If you you are using a bootloader, uncomment lines 752 and 753 in platformio.ini https://github.com/jernejp21/Marlin
Use Marlin's Ender 3 V2
Configuration.h
andConfiguration_adv.h
files.You need to import this code into
pins_BTT_SKR_MINI_E3_common.h
file. I pasted this part of code below USB connect control. This code can be found inpins_CREALITY_V4.h
./** * Ender 3 V2 display SKR Mini E3 V2.0 * _____ _____ * 5V | 1 2 | GND 5V | 1 2 | GND * (BTN_E1) A | 3 4 | B (BTN_E2) (BTN_EN1) PB15 | 3 4 | PB8 (BTN_E2) * BEEP | 5 6 ENT (BTN_ENC) PB9 | 5 6 RX1 * (SKR_RX1) TX | 7 8 | RX (SKR_TX1) RESET | 7 8 | TX1 * NC | 9 10| NC (BEEPER) PA15 | 9 10| PB5 (BTN_ENC) * ----- ----- * EXP1 EXP1 */ #if ENABLED(DWIN_CREALITY_LCD) // RET6 DWIN ENCODER LCD #define BTN_ENC PB5 #define BTN_EN1 PB15 #define BTN_EN2 PB8 #ifndef BEEPER_PIN #define BEEPER_PIN PA15 #undef SPEAKER #endif #endif
Commented picture shows pinout for display and SKR board.
CAUTION!!! You have to create new ribbon cable. Connect SKR RX to display TX pin and SKR TX to display RX pin! This is the most important part (and setting the correct serial port in Marlin).
You can connect other pins as you like, just make sure you define correct pins in Marlin (you can connect display A to SKR's PB9 etc.).
Pinout for Ender 3 V2 display is printed on display's PCB. If you remove the back cover, you will see the connector marked.
After you have copied this code, adjusted pins on display and adjusted pins in Marlin for button and beeper, change also
Configuration.h
file.
- set
#define SERIAL_PORT -1
,#define SERIAL_PORT_2 1
.- set
#define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0
- set
#define X_DRIVER_TYPE TMC2209
. Do this also fro X, Y and E0.- set
#define INVERT_X_DIR true
- set
#define INVERT_Y_DIR true
- set
#define INVERT_Z_DIR false
-set#define INVERT_E0_DIR true
- set
#define DWIN_CREALITY_LCD
and comment out current display you are using.
Configuration_adv.h
file.
set
#define SDCARD_CONNECTION ONBOARD
under
#if HAS_TRINAMIC_CONFIG
, change motor current. I found out that 580 mA for X, Y and Z is ok. And 700 for E. You can play with this settings.a little bit lower, change slave addresses for serial TX, RX.
- #define X_SLAVE_ADDRESS 0
- #define Y_SLAVE_ADDRESS 2
- #define Z_SLAVE_ADDRESS 1
- #define E0_SLAVE_ADDRESS 3
set
#define CHOPPER_TIMING CHOPPER_DEFAULT_24V
if you are using 24V power supplyMake sure you also change
platformio.ini
. Changedefault_envs = STM32F103RC_btt_512K
. You are now using SKR board, not Ender.From here on you can change Marlin to use BL Touch, sensorless homing etc.
jernejp21 ,
I just noticed you updated your earlier post. I figure I'll download the latest bugfix and work with it.
I went ahead and ordered at BigTreeTech TFT display. Any advice about using it versus doing the rewire for the Ender 3 V2 display?