fluidNC help

I have my TMC2209 Pen/Laser Controller - by Bart running FluidNC 3.6.5. The problem with that is that it is in cartesian and my motors move diagonally instead of straight. I have tried to find other setups to install but I can’t get the install scripts to work to upload someone else’s version where it is in corexy. Does anyone have a version of fluidNC where the install scripts work to install it. Or, is there an easy way to change it from cartesian.

Sorry idk if this is of any help I am very new and just saw some talk about this a while ago.
I will be getting fluid nc board hopefully soon so wanted to learn off you a bit as well.

I’m still working on this problem, I’m not sure if it’s a firmware or config file problem. I’m not sure why my motors only move in 45 degree movements. I did notice when programing my esp32 it said it was in catesian mode. I’ve tried several different config files and nothing has worked. It still only moves at a 45 degree.

Even with inputting a gcode for x movement only?
Like g1 x30 ?
I am assuming it’s when both x and y move as instructed to?

Have you been to Kinematics | Wiki.js?

1 Like

Here’s my working config. The corexy mode is set at the very top with the kinematics: line. To install on the ESP follow the guide using the scripts (assuming you’re on windows like me) and then upload this config once you get into the FluidNC webui (image at bottom of post)

Edit: I uploaded a zip of the config at the bottom since tabs/spaces are important in YAML and they aren’t appearing with my copy and paste here:

name: Sand Table
board: TMC2209 Pen Laser

kinematics:
  corexy:

stepping:
  engine: RMT
  idle_ms: 250
  dir_delay_us: 0
  pulse_us: 3
  disable_delay_us: 0

axes:
  shared_stepper_disable_pin: gpio.13:high
  x:
    steps_per_mm: 100.000
    max_rate_mm_per_min: 8000.000
    acceleration_mm_per_sec2: 300.000
    max_travel_mm: 985.00
    soft_limits: true
    homing:
      cycle: 2
      mpos_mm: 0.000
      positive_direction: false
      settle_ms: 250.000
      seek_mm_per_min: 2000.000
      feed_mm_per_min: 1000.000
      seek_scaler: 1.100
      feed_scaler: 5.000
    motor0:
      limit_neg_pin: gpio.39:high
      hard_limits: false
      tmc_2209:
        uart:
          txd_pin: gpio.17
          rxd_pin: gpio.16
          rts_pin: NO_PIN
          cts_pin: NO_PIN
          baud: 115200
          mode: 8N1
        addr: 0
        direction_pin: gpio.12
        step_pin: gpio.14
        r_sense_ohms: 0.110
        run_amps: 0.500
        hold_amps: 0.325
        microsteps: 16
        stallguard: 0
        stallguard_debug: false
        run_mode: StealthChop
        homing_mode: StealthChop
        use_enable: false

    motor1:
      null_motor:
  y:
    steps_per_mm: 100.000
    max_rate_mm_per_min: 8000.000
    acceleration_mm_per_sec2: 300.000
    max_travel_mm: 585.70
    soft_limits: true
    homing:
      cycle: 1
      mpos_mm: 0.000
      positive_direction: false
      settle_ms: 250.000
      seek_mm_per_min: 2000.000
      feed_mm_per_min: 1000.000
      seek_scaler: 1.100
      feed_scaler: 5.000
    motor0:
      limit_neg_pin: gpio.36:high
      hard_limits: false
      tmc_2209:
        addr: 1
        direction_pin: gpio.26
        step_pin: gpio.25
        r_sense_ohms: 0.110
        run_amps: 0.500
        hold_amps: 0.325
        microsteps: 16
        stallguard: 0
        stallguard_debug: false
        run_mode: StealthChop
        homing_mode: StealthChop
        use_enable: false

    motor1:
      null_motor:
  z:
    steps_per_mm: 100.000
    max_rate_mm_per_min: 1000.000
    acceleration_mm_per_sec2: 200.000
    max_travel_mm: 300.000
    soft_limits: false
    motor0:
      null_motor:
    motor1:
      null_motor:

spi:
  miso_pin: gpio.19
  mosi_pin: gpio.23
  sck_pin: gpio.18

sdcard:
  cs_pin: gpio.5

control:

coolant:
  delay_ms: 1000.000

probe:
  check_mode_start: false

macros:
  startup_line0: 
  startup_line1: 
  macro0: 
  macro1: 
  macro2: 
  macro3: 

start:
  must_home: false
  check_limits: true
  deactivate_parking: false

user_outputs:
arc_tolerance_mm: 0.002
junction_deviation_mm: 0.010
verbose_errors: false
report_inches: false
enable_parking_override_control: false
use_line_numbers: false 


config.zip (919 Bytes)

Edit 2: thanks to the formatting genie! :stuck_out_tongue:

Thanks, the new config file fixed my problems. I can’t thank you enough.

1 Like

Thanks for your help. It works now. One quick question, what do you use to start and end in sandify before exporting your drawing?

Currently I have:

Start:

$H
G92 X0 Y0 
G1 X1 Y1 F1000

This homes, sets the carriage position to (0,0), moves out 1mm (X,Y) (due to initial testing when I had issues with the carriage starting while still on the endstops), and sets the speed to 1000

End:

M30

However, with this I am still having issues with the board erroring out most of the time when the patterns finish. There was a discussion about this in another thread, but I haven’t had much time to mess with things beyond trying a few different ending gcode variations (M2, M30, etc – from the other thread).

1 Like

I lost the ESP32 that I had a Zen table on, and am looking to upgrade to FluidNC and it’s frustrating…

I figured I’d try this config, but it’s not working.

Serial log shows the following:

[MSG:INFO: FluidNC v3.6.8]
[MSG:INFO: Compiled with ESP32 SDK:v4.4.1-1-gb8050b365e]
[MSG:INFO: Local filesystem type is spiffs]
[MSG:INFO: Configuration file:config.yaml]
[MSG:WARN: Ignored key uart]
[MSG:ERR: Skipping key txd_pin indent 10 this indent 8]
[MSG:ERR: Skipping key rxd_pin indent 10 this indent 8]
[MSG:ERR: Skipping key rts_pin indent 10 this indent 8]
[MSG:ERR: Skipping key cts_pin indent 10 this indent 8]
[MSG:ERR: Skipping key baud indent 10 this indent 8]
[MSG:ERR: Skipping key mode indent 10 this indent 8]
[MSG:ERR: Initialization error at /axes/x/motor0/tmc_2209: TrinamicUartDriver must set uart_num: ]
[MSG:ERR: Initialization error at /axes/y/motor0/tmc_2209: TrinamicUartDriver must set uart_num: ]
[MSG:INFO: Configuration is invalid]
[MSG:INFO: Using default configuration]
Yadda yadda yadda.

Removing the uart: key gets rid of the skipped key messages, but still complains that the uart_num: keys must be specified and refuses to load, other than default configuration.

Adding uart_num: 1 to one driver, and it only complains about the other. Add it to both, and the board panics on loading the configuration. Adding uart_num: 0 (Or any other number) and it still panics… Both also ask about a missing section before the panic happens…

I think I’ll just load up GRBL_ESP32 again, at least I have a config for that which works…

I am very very new to this so take it with grain of salt.
But if you have the non tmc2209 board you can’t use the same config file apparently. Idk if this is what is stoping you but thought I would mention it.
image


These two are so similar but apparently not enough to use the same config.yaml iirc.
Don’t give up I need to copy you when you figure it out hahaha

1 Like

For the ESP32, go to the fluidnc website, GitHub - bdring/FluidNC: The next generation of motion control firmware . Go to green code button and download the zip file, within that file in the install scripts folder is a “wifi install.bat” that will install fluidnc on your ESP32. Now that fluidnc is installed on the ESP32 connect to it through wifi, Password I believe should be 12345678. Then connect and upload config file from earlier post and change dimensions to suit your table.

1 Like



Slowly clawing my way through this.
Still no movement tho
To get to this point I did what he said and went and got the zip file. Then confirmed my com port went back to extracted zip folder and opened fluidterm and pressed control u and selected the file inside that extracted zip folder labeled Wi-Fi. Then pressed enter and it ran some things.
And control q out.
And then I went back in and opened the fluid term again and ran the control r command.

There is a specific format. And whitespace matters for yaml. Make sure you are using a text editor like vscode that is mono space and ideally, show any tab characters. The yaml indention matters a lot.

I think each driver needs its own uart number. That is something to do with how they communicate on the same uart bus. Without seeing the errors from when you were trying different numbers, I can’t guess what is wrong.

Yeah, I figured that much. There is an indented key (uart) that is syntactically wrong, so all of the sub keys are indented in, and it then rejects all of those.

If I just remove the unrecognized key and reduce the indent on those the results are worse. Untrapped exception and kernel panic.

Something is funky there. I took my working config and used the translationnroutine to convert from Grbl_Esp32 machine.h to the FuidNC config.yaml and it has the same structure with the same problem.

Something is different, probably a version update changing the configuration syntax. It might work on an older version maybe, but I don’t know what version.

Meanwhile I have the final version of Grbl_Esp32 running for now. Maybe I’ll see if I can get it working with FluidNC again. I have some spare ESP32 modules, so I can use one to experiment.

Okay, so I am seeing the same kind of results… Sometimes the UART test fails, and FluidNC reports that the trinamic drivers fail.

I have movement on the motors now. I did a $CD (Config dump) to get the current working configuration, which of course includes all of the default values that weren’t specified in the config,.yaml.

The config dump shows as follows:

board: TMC2209 Pen/Laser
name: ZenXY
meta:
stepping:
  engine: RMT
  idle_ms: 250
  pulse_us: 3
  dir_delay_us: 0
  disable_delay_us: 0
  segments: 12

uart1:
  txd_pin: gpio.22
  rxd_pin: gpio.21
  rts_pin: NO_PIN
  cts_pin: NO_PIN
  baud: 115200
  mode: 8N1

spi:
  miso_pin: gpio.19
  mosi_pin: gpio.23
  sck_pin: gpio.18

sdcard:
  cs_pin: gpio.5
  card_detect_pin: NO_PIN
  frequency_hz: 0

kinematics:
  CoreXY:

axes:
  shared_stepper_disable_pin: gpio.13
  shared_stepper_reset_pin: NO_PIN
  x:
    steps_per_mm: 100.000000
    max_rate_mm_per_min: 1000.000000
    acceleration_mm_per_sec2: 200.000000
    max_travel_mm: 300.000000
    soft_limits: false
    homing:
      cycle: 3
      allow_single_axis: true
      positive_direction: false
      mpos_mm: 0.000000
      feed_mm_per_min: 200.000000
      seek_mm_per_min: 2000.000000
      settle_ms: 250
      seek_scaler: 1.100000
      feed_scaler: 5.000000

    motor0:
      limit_neg_pin: gpio.33:low
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 1.000000
      tmc_2209:
        addr: 0
        uart_num: 1
        step_pin: gpio.12
        direction_pin: gpio.26
        disable_pin: NO_PIN
        r_sense_ohms: 0.110000
        run_amps: 0.250000
        hold_amps: 0.125000
        microsteps: 16
        toff_disable: 0
        toff_stealthchop: 5
        use_enable: false
        run_mode: StealthChop
        homing_mode: StealthChop
        stallguard: 16
        stallguard_debug: false
        toff_coolstep: 3

    motor1:
      limit_neg_pin: NO_PIN
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 1.000000
      null_motor:

  y:
    steps_per_mm: 100.000000
    max_rate_mm_per_min: 1000.000000
    acceleration_mm_per_sec2: 200.000000
    max_travel_mm: 300.000000
    soft_limits: false
    homing:
      cycle: 2
      allow_single_axis: true
      positive_direction: false
      mpos_mm: 0.000000
      feed_mm_per_min: 200.000000
      seek_mm_per_min: 2000.000000
      settle_ms: 250
      seek_scaler: 1.100000
      feed_scaler: 5.000000

    motor0:
      limit_neg_pin: gpio.32:low
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 1.000000
      tmc_2209:
        addr: 1
        uart_num: 1
        step_pin: gpio.14
        direction_pin: gpio.25
        disable_pin: NO_PIN
        r_sense_ohms: 0.110000
        run_amps: 0.250000
        hold_amps: 0.125000
        microsteps: 16
        toff_disable: 0
        toff_stealthchop: 5
        use_enable: false
        run_mode: StealthChop
        homing_mode: StealthChop
        stallguard: 16
        stallguard_debug: false
        toff_coolstep: 3

    motor1:
      limit_neg_pin: NO_PIN
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 1.000000
      null_motor:

  z:
    steps_per_mm: 100.000000
    max_rate_mm_per_min: 1000.000000
    acceleration_mm_per_sec2: 200.000000
    max_travel_mm: 300.000000
    soft_limits: false
    homing:
      cycle: 1
      allow_single_axis: true
      positive_direction: false
      mpos_mm: 0.000000
      feed_mm_per_min: 200.000000
      seek_mm_per_min: 2000.000000
      settle_ms: 250
      seek_scaler: 1.100000
      feed_scaler: 5.000000

    motor0:
      limit_neg_pin: NO_PIN
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 1.000000
      null_motor:

    motor1:
      limit_neg_pin: NO_PIN
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 1.000000
      null_motor:

control:
  safety_door_pin: NO_PIN
  reset_pin: NO_PIN
  feed_hold_pin: NO_PIN
  cycle_start_pin: NO_PIN
  macro0_pin: NO_PIN
  macro1_pin: NO_PIN
  macro2_pin: NO_PIN
  macro3_pin: NO_PIN

coolant:
  flood_pin: NO_PIN
  mist_pin: NO_PIN
  delay_ms: 1000

probe:
  pin: NO_PIN
  check_mode_start: false

macros:
  startup_line0:
  startup_line1:
  macro0:
  macro1:
  macro2:
  macro3:

start:
  must_home: true
  deactivate_parking: false
  check_limits: true

parking:
  enable: false
  axis: Z
  target_mpos_mm: -5.000000
  rate_mm_per_min: 800.000000
  pullout_distance_mm: 5.000000
  pullout_rate_mm_per_min: 250.000000

user_outputs:
  analog0_pin: NO_PIN
  analog1_pin: NO_PIN
  analog2_pin: NO_PIN
  analog3_pin: NO_PIN
  analog0_hz: 5000
  analog1_hz: 5000
  analog2_hz: 5000
  analog3_hz: 5000
  digital0_pin: NO_PIN
  digital1_pin: NO_PIN
  digital2_pin: NO_PIN
  digital3_pin: NO_PIN

Laser:
  pwm_hz: 5000
  output_pin: gpio.27
  enable_pin: NO_PIN
  disable_with_s0: false
  s0_with_disable: false
  tool_num: 0
  speed_map: 0=0.000000% 1000=100.000000%
  off_on_alarm: false

arc_tolerance_mm: 0.002000
junction_deviation_mm: 0.010000
verbose_errors: false
report_inches: false
enable_parking_override_control: false
use_line_numbers: false
planner_blocks: 16

the config,.yaml that produiced this is as follows:

name: ZenXY
board: TMC2209 Pen/Laser

kinematics:
  CoreXY:

uart1:
  txd_pin: gpio.22
  rxd_pin: gpio.21
  baud: 115200
  mode: 8N1

stepping:
  engine: RMT
  idle_ms: 250
  dir_delay_us: 0
  pulse_us: 3
  disable_delay_us: 0

axes:
  shared_stepper_disable_pin: gpio.13
  x:
    steps_per_mm: 100.000
    max_rate_mm_per_min: 1000.000
    acceleration_mm_per_sec2: 200.000
    max_travel_mm: 300.000
    soft_limits: false
    homing:
      cycle: 3
      mpos_mm: 0.000
      positive_direction: false
      settle_ms: 250.000
      seek_mm_per_min: 2000.000
      feed_mm_per_min: 200.000
      seek_scaler: 1.100
      feed_scaler: 5.000
    motor0:
      limit_neg_pin: gpio.33:low
      hard_limits: false
      tmc_2209:
        direction_pin: gpio.26
        step_pin: gpio.12
        r_sense_ohms: 0.110
        addr: 0
        run_amps: 0.250
        hold_amps: 0.125
        microsteps: 16
        stallguard: 16
        stallguard_debug: false
        run_mode: StealthChop
        homing_mode: StealthChop
        use_enable: false
        uart_num: 1
    motor1:
      null_motor:
  y:
    steps_per_mm: 100.000
    max_rate_mm_per_min: 1000.000
    acceleration_mm_per_sec2: 200.000
    max_travel_mm: 300.000
    soft_limits: false
    homing:
      cycle: 2
      mpos_mm: 0.000
      positive_direction: false
      settle_ms: 250.000
      seek_mm_per_min: 2000.000
      feed_mm_per_min: 200.000
      seek_scaler: 1.100
      feed_scaler: 5.000
    motor0:
      limit_neg_pin: gpio.32:low
      hard_limits: false
      tmc_2209:
        direction_pin: gpio.25
        step_pin: gpio.14
        r_sense_ohms: 0.110
        addr: 1
        run_amps: 0.250
        hold_amps: 0.125
        microsteps: 16
        stallguard: 16
        stallguard_debug: false
        run_mode: StealthChop
        homing_mode: StealthChop
        use_enable: false
        uart_num: 1

    motor1:
      null_motor:
  z:
    steps_per_mm: 100.000
    max_rate_mm_per_min: 1000.000
    acceleration_mm_per_sec2: 200.000
    max_travel_mm: 300.000
    soft_limits: false
    homing:
      cycle: 1
      mpos_mm: 0.000
      positive_direction: false
      settle_ms: 250.000
      seek_mm_per_min: 2000.000
      feed_mm_per_min: 200.000
      seek_scaler: 1.100
      feed_scaler: 5.000
    motor0:
      null_motor:
    motor1:
      null_motor:

spi:
  miso_pin: gpio.19
  mosi_pin: gpio.23
  sck_pin: gpio.18

sdcard:
  cs_pin: gpio.5

control:

coolant:
  delay_ms: 1000.000

probe:
  check_mode_start: false

macros:
  startup_line0: 
  startup_line1: 
  macro0: 
  macro1: 
  macro2: 
  macro3: 

start:
  must_home: true
  check_limits: true
  deactivate_parking: false

user_outputs:

laser:
  tool_num: 0
  speed_map: 0=0.0% 1000=100.0%
  output_pin: gpio.27
  disable_with_s0: false
  s0_with_disable: false
  pwm_hz: 5000
arc_tolerance_mm: 0.002
junction_deviation_mm: 0.010
verbose_errors: false
report_inches: false
enable_parking_override_control: false
use_line_numbers: false 

The config.yaml that the fluidnc translate from Grbl_Esp32 machine.h file returned does not work at all.

So far as I know, the dump from $CD can be used as a config.yaml which will just explicitly set all of the default values that are in there.

Anyway, now I have a working configuration for FluidNC for the older model TMC2209 pen/laser controller. Just in time for me to be buying a newer model controller board for the next Zen table…

1 Like

I’m trying to get FluidNC to run on a Tiny Bee V1.0 board. I’m using cncjs and get the following log on power reset, but the board won’t respond to any commands. Any ideas where I should start looking to debug this?

Thanks in advance.

CNCjs 1.10.3 [Grbl]
Connected to COM4 with a baud rate of 115200
ets Jun 8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1184
load:0x40078000,len:13220
ho 0 tail 12 room 4
load:0x40080400,len:3028
entry 0x400805e4
[MSG:INFO: uart_channel0 created]
[MSG:RST]
[MSG:INFO: FluidNC 3.7.13 GitHub - bdring/FluidNC: The next generation of motion control firmware]
[MSG:INFO: Compiled with ESP32 SDK:v4.4.4]
[MSG:INFO: Local filesystem type is littlefs]
[MSG:INFO: Configuration file:MKS_TinyBee_1_XYZAB.yaml]
[MSG:INFO: Machine K40 Laser]
[MSG:INFO: Board MKS TinyBee V1.0_001]
[MSG:INFO: I2SO BCK:gpio.25 WS:gpio.26 DATA:gpio.27]
[MSG:INFO: SPI SCK:gpio.18 MOSI:gpio.23 MISO:gpio.19]
[MSG:INFO: SD Card cs_pin:gpio.5 detect:NO_PIN freq:8000000]
[MSG:INFO: Stepping:I2S_static Pulse:4us Dsbl Delay:0us Dir Delay:1us Idle Delay:0ms]
[MSG:INFO: Axis count 3]
[MSG:INFO: Axis X (0.000,325.000)]
[MSG:INFO: Motor0]
[MSG:INFO: stepstick Step:I2SO.1 Dir:I2SO.2 Disable:I2SO.0]
[MSG:INFO: X Neg Limit gpio.33]
[MSG:INFO: Axis Y (0.000,220.000)]
[MSG:INFO: Motor0]
[MSG:INFO: stepstick Step:I2SO.4 Dir:I2SO.5 Disable:I2SO.3]
[MSG:INFO: Y Neg Limit gpio.32]
[MSG:INFO: Axis Z (0.000,80.000)]
[MSG:INFO: Motor0]
[MSG:INFO: stepstick Step:I2SO.7 Dir:I2SO.8 Disable:I2SO.6]
[MSG:INFO: Z Neg Limit gpio.22]
[MSG:INFO: macro0_pin gpio.4:low:pu]
[MSG:INFO: Kinematic system: Cartesian]
[MSG:INFO: Laser Ena:I2SO.16 Out:gpio.13 Freq:5000Hz Period:8191]
[MSG:INFO: Using spindle Laser]
[MSG:INFO: Connecting to STA SSID:XXXXXXXXXX]
[MSG:INFO: Connecting.]
[MSG:INFO: Connecting…]
[MSG:INFO: Connecting…]
[MSG:INFO: Connecting…]
[MSG:INFO: Connecting.]
[MSG:INFO: Connecting…]
[MSG:INFO: Connecting…]
[MSG:INFO: Connecting…]
[MSG:INFO: Connecting.]
[MSG:INFO: Connecting…]
[MSG:INFO: AP SSID FluidNC IP 192.168.0.1 mask 255.255.255.0 channel 1]
[MSG:INFO: AP started]
[MSG:INFO: WiFi on]
[MSG:INFO: Captive Portal Started]
[MSG:INFO: HTTP started on port 80]
[MSG:INFO: Telnet started on port 23]
Grbl 3.7 [FluidNC 3.7.13 (wifi) ‘$’ for help]
client> $$
client> !

Several suggestions- first, consider making a new topic so that this doesn’t get lost in a sea of older posts.

When you’re connected in cncjs, can you send a $SS to FluidNC and get a response?
If not, can you try with fluidterm instead?

Next, your startup log shows that FluidNC started the AP. If you connect to the AP, does FluidNC respond correctly to the WebUI? What results you get there can be helpful to troubleshoot.

Finally, it may be helpful in your new topic to post the MKS_TinyBee_1_XYZAB.yaml config file for us to take a better look at. Nothing is obviously wrong from the startup log you posted, but that isn’t definitive.

1 Like

Maybe GRBL is starting up in ‘alarm’ mode. It will move nothing until you reset it by sending a $X.

Thanks for the tips, guys. This issue was that I didn’t have the homing set up correctly.