Marlin: Add support for FYSETC F6 V1.3 Board

Created on 22 Aug 2018  Â·  38Comments  Â·  Source: MarlinFirmware/Marlin

Add board for FYSETC F6 V1.3 Board

This link >> https://fysetc.github.io/F6_V1.3/

Above link have the info of the board, pins layout and ect.

I trying out this board but cant make it working on Bugfix-2.0.x and 1.1.9

Most helpful comment

Thank you @ErikFontanel, i already figured it out how to fix that. I created a pull request for platformio, so it should be work out of the box on the next pio update.

All 38 comments

I already get these board working so i close this issue...

That's a neat looking board. Is it basically a RAMPS variant? It says it works "out of the box" so I assume so.

@thinkyhead
The including firmware is working good... but too old version... now i using Marlin 2.0.x its only working in TMC2130 but not TMC2208 have compile error saying

Marlin\src\module\stepper_indirection.cpp:295:130: error: no matching function for call to 'TMC2208Stepper::TMC2208Stepper(int, int, bool)'

compilation terminated due to -fmax-errors=5.
*** [.pioenvs\megaatmega2560\src\src\module\stepper_indirection.cpp.o] Error 1

This line it say error (highlight -1)

#define _TMC2208_DEFINE_HARDWARE(ST) TMC2208Stepper stepper##ST(&ST##_HARDWARE_SERIAL)
  #define _TMC2208_DEFINE_SOFTWARE(ST) TMC2208Stepper stepper##ST(ST##_SERIAL_RX_PIN, ST##_SERIAL_TX_PIN, ST##_SERIAL_RX_PIN > -1) <<< (1) error No matching function call for to 'TMC2208Stepper::TMC2208Stepper(int, int, bool)' (295, 130)

This board required no jumper wire for SPI or UART for TMC2130 or 2208. DIAG is not directly connected to the MCU but via jumper so no need random jumper wire.

So it now it working on my TMC2130 but not TMC2208.

this the pins_FYSETC_F6_13.h i experiment so far

pins_FYSETC_F6_13.h

/**
 * FYSETC F6 pin assignments
 */

#ifndef __AVR_ATmega2560__
  #error "Oops!  Make sure you have 'FYSETC_F6' selected from the 'Tools -> Boards' menu."
#endif

#if MB(FYSETC_F6_13)
  #define BOARD_NAME "FYSETC F6"
#endif

#ifndef DEFAULT_SOURCE_CODE_URL
  #define DEFAULT_SOURCE_CODE_URL "https://github.com/FYSETC/fysetc.github.io/"
#endif

//#include "pins_RAMPS.h"   //Don't enable this fuction**

//
// Limit Switches
//
#define X_MIN_PIN 63
#define X_MAX_PIN 64
#define Y_MIN_PIN 14
#define Y_MAX_PIN 15
#define Z_MIN_PIN 12
#define Z_MAX_PIN 2

//
// Z Probe (when not Z_MIN_PIN)
//
#ifndef Z_MIN_PROBE_PIN
  #define Z_MIN_PROBE_PIN -1 // Z-min is recommended, of course, it can be any other idle pins.
#endif

//
// Steppers
//
#define X_STEP_PIN 54
#define X_DIR_PIN 55
#define X_ENABLE_PIN 38

#define Y_STEP_PIN 60
#define Y_DIR_PIN 61
#define Y_ENABLE_PIN 56

#define Z_STEP_PIN 43
#define Z_DIR_PIN 48
#define Z_ENABLE_PIN 58

#define E0_STEP_PIN 26
#define E0_DIR_PIN 28
#define E0_ENABLE_PIN 24

#define E1_STEP_PIN 36
#define E1_DIR_PIN 34
#define E1_ENABLE_PIN 30

#define E2_STEP_PIN 59
#define E2_DIR_PIN 57
#define E2_ENABLE_PIN 40

/* DIAG
 * DIAG is not directly connected to the MCU. Please close 
 * the jumper next to the limit switch socket when using it.
 */
#define X_CS_PIN 70
#define Y_CS_PIN 39
#define Z_CS_PIN 74

#define E0_CS_PIN 47
#define E1_CS_PIN 32
#define E2_CS_PIN 42

#define X_TMC2130_DIAG -1
#define Y_TMC2130_DIAG -1
#define Z_TMC2130_DIAG -1
#define E0_TMC2130_DIAG -1
#define E1_TMC2130_DIAG -1
#define E2_TMC2130_DIAG -1

/**
 * Software/Hardware Serial
 */

//#if ENABLED(HAVE_TMC2208)   // Original Config** (1.1.6)
#if HAS_DRIVER(TMC2208)

  /**
   * TMC2208 stepper drivers
   *
   * Hardware serial communication ports.
   * If undefined software serial is used according to the pins below
   */
  //#define X_HARDWARE_SERIAL  Serial1
  //#define X2_HARDWARE_SERIAL Serial1
  //#define Y_HARDWARE_SERIAL  Serial1
  //#define Y2_HARDWARE_SERIAL Serial1
  //#define Z_HARDWARE_SERIAL  Serial1
  //#define Z2_HARDWARE_SERIAL Serial1
  //#define E0_HARDWARE_SERIAL Serial1
  //#define E1_HARDWARE_SERIAL Serial1
  //#define E2_HARDWARE_SERIAL Serial1
  //#define E3_HARDWARE_SERIAL Serial1
  //#define E4_HARDWARE_SERIAL Serial1

  /**
   * Software serial
   */

  #define X_SERIAL_TX_PIN   72
  #define X_SERIAL_RX_PIN   71
  #define X2_SERIAL_TX_PIN  -1
  #define X2_SERIAL_RX_PIN  -1

  #define Y_SERIAL_TX_PIN   75
  #define Y_SERIAL_RX_PIN   73
  #define Y2_SERIAL_TX_PIN  -1
  #define Y2_SERIAL_RX_PIN  -1

  #define Z_SERIAL_TX_PIN   79
  #define Z_SERIAL_RX_PIN   78
  #define Z2_SERIAL_TX_PIN  -1
  #define Z2_SERIAL_RX_PIN  -1

  #define E0_SERIAL_TX_PIN  77
  #define E0_SERIAL_RX_PIN  76

  #define E1_SERIAL_TX_PIN  81
  #define E1_SERIAL_RX_PIN  80

  #define E2_SERIAL_TX_PIN  83
  #define E2_SERIAL_RX_PIN  22

  #define E3_SERIAL_TX_PIN  -1
  #define E3_SERIAL_RX_PIN  -1

  #define E4_SERIAL_TX_PIN  -1
  #define E4_SERIAL_RX_PIN  -1
#endif

//
// Temperature Sensors
//
#define TEMP_0_PIN 12   // Analog Input
#define TEMP_1_PIN 13   // Analog Input
#define TEMP_2_PIN 14   // Analog Input
#define TEMP_BED_PIN 15 // Analog Input

//
// Heaters / Fans
//
#define HEATER_0_PIN 5
#define HEATER_1_PIN 6
#define HEATER_2_PIN 7
#define HEATER_BED_PIN 8

#define FAN0_PIN 44
#define FAN1_PIN 45
#define FAN2_PIN 46

//
// Misc. Functions
//
#define SDSS 53
#define LED_PIN 13

#if ENABLED(RGB_LED) || ENABLED(RGBW_LED)
  #define RGB_LED_R_PIN 3
  #define RGB_LED_G_PIN 4
  #define RGB_LED_B_PIN 9
  #define RGB_LED_W_PIN -1
#endif

#ifndef FILWIDTH_PIN
  #define FILWIDTH_PIN 10 // Analog Input on endstop X+
#endif

// Define digital pin 10 for the filament runout sensor. Use the digital input 10 on the servos connector
#define FIL_RUNOUT_PIN 10

// Define digital pin 11 for the PS_ON control. Use the digital input 11 on the servos connector
#ifndef PS_ON_PIN
  #define PS_ON_PIN 11
#endif

#if ENABLED(CASE_LIGHT_ENABLE) && !PIN_EXISTS(CASE_LIGHT) && !defined(SPINDLE_LASER_ENABLE_PIN)
  #if !defined(NUM_SERVOS) || NUM_SERVOS == 0 // Try to use servo connector first
    #define CASE_LIGHT_PIN   6      // MUST BE HARDWARE PWM
  #elif !(ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL))
      && (ENABLED(PANEL_ONE) || ENABLED(VIKI2) || ENABLED(miniVIKI) || ENABLED(MINIPANEL) || ENABLED(REPRAPWORLD_KEYPAD)))  // try to use AUX 2
    #define CASE_LIGHT_PIN   44     // MUST BE HARDWARE PWM
  #endif
#endif

//
// M3/M4/M5 - Spindle/Laser Control
//
#if ENABLED(SPINDLE_LASER_ENABLE) && !PIN_EXISTS(SPINDLE_LASER_ENABLE)
  #if !defined(NUM_SERVOS) || NUM_SERVOS == 0 // Try to use servo connector first
    #define SPINDLE_LASER_ENABLE_PIN  4  // Pin should have a pullup/pulldown!
    #define SPINDLE_LASER_PWM_PIN     6  // MUST BE HARDWARE PWM
    #define SPINDLE_DIR_PIN           5
  #elif !(ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL))
      && (ENABLED(PANEL_ONE) || ENABLED(VIKI2) || ENABLED(miniVIKI) || ENABLED(MINIPANEL) || ENABLED(REPRAPWORLD_KEYPAD)))  // try to use AUX 2
    #define SPINDLE_LASER_ENABLE_PIN 40  // Pin should have a pullup/pulldown!
    #define SPINDLE_LASER_PWM_PIN    44  // MUST BE HARDWARE PWM
    #define SPINDLE_DIR_PIN          65
  #endif
#endif

//////////////////////////
// LCDs and Controllers //
//////////////////////////
#define LCD_PINS_RS 16
#define LCD_PINS_ENABLE 17
#define LCD_PINS_D4 23
#define LCD_PINS_D5 25
#define LCD_PINS_D6 27
#define LCD_PINS_D7 29
#define BEEPER_PIN 37
#define BTN_EN1 31
#define BTN_EN2 33
#define BTN_ENC 35
#define SD_DETECT_PIN 49
#define KILL_PIN 41

Im not good at programming but can understand basic one... the original firmware provided by the board is Marlin 1.1.8

@teemuatlut — Has the constructor signature changed for TMC2208Stepper?

This is what the Marlin code has now:

  #define _TMC2208_DEFINE_SOFTWARE(ST) \
    TMC2208Stepper stepper##ST(ST##_SERIAL_RX_PIN, ST##_SERIAL_TX_PIN, ST##_SERIAL_RX_PIN > -1)

i found out if i uncomment these it was able to compile. i might testing it today or day after day after tomorrow...

  #define X_HARDWARE_SERIAL  Serial1
  //#define X2_HARDWARE_SERIAL Serial1
  #define Y_HARDWARE_SERIAL  Serial1
  //#define Y2_HARDWARE_SERIAL Serial1
  #define Z_HARDWARE_SERIAL  Serial1
  //#define Z2_HARDWARE_SERIAL Serial1
  #define E0_HARDWARE_SERIAL Serial1
  #define E1_HARDWARE_SERIAL Serial1
  #define E2_HARDWARE_SERIAL Serial1
  //#define E3_HARDWARE_SERIAL Serial1
  //#define E4_HARDWARE_SERIAL Serial1

Has the constructor signature changed for TMC2208Stepper?

No changes there.
Besides, Marlin is pulling an old v0.1.1 version anyway. Arduino IDE builds just fine.
Update the pulled version to 0.2.2.

@teemuatlut — TMC2208Stepper 0.2.2 is causing compile errors in Travis CI. Can you help me figure out how to fix them? It affects the DUE, STM32F1, and Teensy35 builds.

https://travis-ci.org/MarlinFirmware/Marlin/jobs/423215870

It now working well on new update 4 hour ago... thanks...

Not any good with this sort off stuff so please forgive me if im wrong but you have the same pin asigned to 2 functions

ifndef FILWIDTH_PIN

#define FILWIDTH_PIN 10 // Analog Input on endstop X+

endif

// Define digital pin 10 for the filament runout sensor. Use the digital input 10 on the servos connector

define FIL_RUNOUT_PIN 10

As it been imported yet?

digital != analog

Not all people understand AnHardt's syntax so to clarify, although the pins share the same identifier, digital and analogue pins are not the same.

As it been imported yet?

Imported what exactly??

Fully working in Marlin 2
I have downloaded the latest bug fix and the FYSETC board ain't included in the pin's folder

Not any good with this sort off stuff so please forgive me if im wrong but you have the same pin asigned to 2 functions

ifndef FILWIDTH_PIN

define FILWIDTH_PIN 10 // Analog Input on endstop X+

endif

// Define digital pin 10 for the filament runout sensor. Use the digital input 10 on the servos connector

define FIL_RUNOUT_PIN 10

About these already change to

#ifndef FILWIDTH_PIN
  #define FILWIDTH_PIN 9 // Analog Input on endstop X+
#endif

I've run into a few issues with this board, my X and Z sockets don't seem to work but I was able to work around that by changing the E1 and E2 sockets to X and Z.

Another issue I haven't figured out yet is I can't seem to turn on the cooling fans, I have one plugged into Fan0 port but running M106 doesn't seem to turn it on. Anyone else having issues with the cooling fans?

If anyone has a confirmed-working pins file for this model, ZIP it up and send it our way and we'll add it to the project.

I've opened a ticket with the vendor so hopefully they can provide the correct pins. They have a repo here but it has some differences from their documentation pinout here. Hopefully they can clear up what pins are correct. I've tried both for the fan settings but neither seem to work for me.

The documentation pin out on Here is correct... it was update 18 days ago to work on marlin 1.1.9

That pinout didn't work for me, the FAN0_PIN variable should be FAN_PIN and the pins were 44, 45, 46 on my board. If you check the schematic then you can see that those outputs go to the fan pins.

I've made a PR with my working pinout https://github.com/MarlinFirmware/Marlin/pull/11920 if someone could also test it that would be great!

I've run into a few issues with this board, my X and Z sockets don't seem to work but I was able to work around that by changing the E1 and E2 sockets to X and Z.

Meaning that X and Z pin swap with E1 and E2 fix it?

Yes that fixed it for me, but I think that's an issue with those sockets on my board as I haven't seen other people with this issue. I'm talking to the vendor now to see if they know anything or can send a replacement.

your board might have different revision or faulty board... because mine work find with original X and Z pin...

Yeah I suspect it's faulty as swapping the ports worked fine so it's not the drivers. I also checked all the jumpers and they are in the right places too.

Yeah I suspect it's faulty as swapping the ports worked fine so it's not the drivers. I also checked all the jumpers and they are in the right places too.

So did the seller send new board?

There are better venues to discuss Klipper. This issue queue is not the place.

@thinkyhead sorry about that. I just couldn’t find any info about this board online and wanted to ask users here. already deleted the comment.

I've run into a few issues with this board, my X and Z sockets don't seem to work but I was able to work around that by changing the E1 and E2 sockets to X and Z.

Hello, i have the same issue as Mr. mroote.
I can use my tmc2130 drivers with Y, E0, E1 and E2. The X- and Z-axis do just work with a standard driver (A4899). Swapping the pins worked for me too, but this not really a solution for me because i also use tmc2130 drivers for my two extruders. Does anybody has new informations about this board?

I used the current bugfix-2.0.x version.

I've got an F6 on order. My printer will need all the steppers, so I'll figure it out when I get it if its not already by then.

Hello guys,
i have fixed my problem with the x- and z-axis with tmc2130 drivers and want to share my solution if someone has the same problem.

Use the Arduino IDE with the FYSETC F6 Board plugin for compilation. I always compiled with PlatformIO for the board "megaatmega2560" and guessed all time that would be okay, because the microcontroller of the fysetc f6 is also an atmega2560.
I'm not sure why that should make a difference, but I think there are a few pin definitions that can be different.

To add to @skaaj4, if you prefer platform.io + VSCode or Atom instead of the Arduino IDE I've managed to compile both Marlin 1.1.9 and bugfix-2.0.x branches for the Fysetc F6 by converting the FYSETC F6 Board plugin to a platform.io configuration.
Read the instructions here

Thank you @ErikFontanel, i already figured it out how to fix that. I created a pull request for platformio, so it should be work out of the box on the next pio update.

Setting up PIO since I'm running in to the path length bug with ArduinoIDE and old workaround for that causes some other issues.

Till that PIO update, I used ErikFontanel's workaround, but with a couple corrections to make it work. 'fysetcf6_13.json' needed to be renamed 'fysetc_f6_13.json' to match the env string Marlin2 uses. With a fresh install of PlatformIO Core, needed to run a build on 'megaatmega2560' first have PIO download the needed 'framework-arduinoavr' files, then create 'variants/fysetcf6/pins_arduino.h'.

Hello,
Any one managed to define pins for fans? for example part cooling is fan0, and changing pin-out (to use heater 1 pin......) in pin file do nothing.
Thank you

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

ahsnuet09 picture ahsnuet09  Â·  3Comments

otisczech picture otisczech  Â·  3Comments

manianac picture manianac  Â·  4Comments

Bobsta6 picture Bobsta6  Â·  3Comments

ceturan picture ceturan  Â·  4Comments