Jackpot board in my K40 laser

I’m replacing the CNC Shield that was running my K40 laser with a Jackpot controller purchased (some time ago) from the V1 shop, ordered with the MPCNC configuration.

Installation has gone smoothly, once I realized the microstepping was different, now I’ve got everything moving the right direction and distance, homing properly, and even have the relay for the air assist working on the mist coolant output. I’m only using 3 drivers (X, Y, and an add-on motorized Z stage), so no auto-squaring is needed. I’ve simply commented out the lines in the config.yaml file for the A, B, and C axes.

What I don’t have is the laser firing. The Test and Enable buttons on the analog control panel are working the same way they did before, and test firing the laser works. But the jackpot won’t seem to fire the laser. This was working fine under the CNC shield with grbl in laser mode ($32=1).

What I’ve done:

  • Connected the laser trigger wire to GPIO:27 (to avoid a blip on startup)
  • Added a laser section to config.yaml (shown below) as suggested in the DOCS
  • (I’m eventually going to be using Lightburn to run this, so I’ve got the speed map set for 0-1000 to align with Lightburn’s preference.)
  • Swapped the trigger and gnd wires in case I had them reversed.

Basic questions:
The web interface still shows spindle control. Does that indicate I’ve got a typo in the yaml file?
Is there an LED that’s supposed to come on when gpio27 is active? It hasn’t lit up.

Here’s my config.yaml

board: Jackpot TMC2209
name: K40Upgrade
meta: 04-27-2026 TomT

planner_blocks: 32

stepping:
  engine: I2S_STATIC
  idle_ms: 255
  pulse_us: 2
  dir_delay_us: 1
  disable_delay_us: 0

uart1:
  txd_pin: gpio.0
  rxd_pin: gpio.4
  rts_pin: NO_PIN
  baud: 115200
  mode: 8N1

axes:
  shared_stepper_disable_pin: NO_PIN

  x:
    steps_per_mm: 80.000
    max_rate_mm_per_min: 20000.000
    acceleration_mm_per_sec2: 3000.000
    max_travel_mm: 310.000
    soft_limits: true
    homing:
      cycle: 2
      positive_direction: false
      mpos_mm: 2.0
      feed_mm_per_min: 200.000
      seek_mm_per_min: 2000.000
      settle_ms: 500
      seek_scaler: 1.100
      feed_scaler: 1.100
    #X
    motor0:
      limit_neg_pin: gpio.25:low
      limit_pos_pin: NO_PIN
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 2.0
      tmc_2209:
        uart_num: 1
        addr: 0
        cs_pin: NO_PIN
        r_sense_ohms: 0.110
        run_amps: 0.800
        homing_amps: 0.800
        hold_amps: 0.700
        microsteps: 8
        stallguard: 0
        stallguard_debug: false
        toff_disable: 0
        toff_stealthchop: 5
        toff_coolstep: 3
        run_mode: StealthChop
        homing_mode: StealthChop
        use_enable: false
        direction_pin: I2SO.1
        step_pin: I2SO.2
        disable_pin: I2SO.0

#    #A
#    motor1:
#      limit_neg_pin: gpio.35:high
#      limit_pos_pin: NO_PIN
#      limit_all_pin: NO_PIN
#      hard_limits: false
#     pulloff_mm: 4.000
#     tmc_2209:
#       uart_num: 1
#       addr: 3
#        cs_pin: i2so.14
#        r_sense_ohms: 0.110
#        run_amps: 0.800
#        homing_amps: 0.800
#        hold_amps: 0.700
#        microsteps: 8
#        stallguard: 0
#        stallguard_debug: false
#        toff_disable: 0
#       toff_stealthchop: 5
#       toff_coolstep: 3
#       run_mode: StealthChop
#       homing_mode: StealthChop
#        use_enable: false
#        step_pin: I2SO.13
#        direction_pin: I2SO.12
#        disable_pin: I2SO.15

  y:
    steps_per_mm: 80.000
    max_rate_mm_per_min: 20000.000
    acceleration_mm_per_sec2: 3000.000
    max_travel_mm: 215
    soft_limits: true
    homing:
      cycle: 2
      positive_direction: true
      mpos_mm: 212.000
      feed_mm_per_min: 200.000
      seek_mm_per_min: 2000.000
      settle_ms: 500
      seek_scaler: 1.100
      feed_scaler: 1.100
    #Y
    motor0:
      limit_neg_pin: NO_PIN
      limit_pos_pin: gpio.33:low
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 3.000
      tmc_2209:
        uart_num: 1
        addr: 1
        cs_pin: NO_PIN
        r_sense_ohms: 0.110
        run_amps: 0.800
        homing_amps: 0.800
        hold_amps: 0.700
        microsteps: 8
        stallguard: 0
        stallguard_debug: false
        toff_disable: 0
        toff_stealthchop: 5
        toff_coolstep: 3
        run_mode: StealthChop
        homing_mode: StealthChop
        use_enable: false
        step_pin: I2SO.5
        direction_pin: I2SO.4
        disable_pin: I2SO.7

 #   #B
 #   motor1:
 #     limit_neg_pin: gpio.34:high
 #    limit_pos_pin: NO_PIN
 #     limit_all_pin: NO_PIN
 #     hard_limits: false
 #     pulloff_mm: 4.000
 #     tmc_2209:
 #       uart_num: 1
 #       addr: 3
 #      cs_pin: i2so.19
 #       r_sense_ohms: 0.110
 #       run_amps: 0.800
 #      homing_amps: 0.800
 #       hold_amps: 0.700
 #       microsteps: 8
 #      stallguard: 0
 #       stallguard_debug: false
 #      toff_disable: 0
 #      toff_stealthchop: 5
 #      toff_coolstep: 3
 #      run_mode: StealthChop
 #      homing_mode: StealthChop
 #       use_enable: false
 #       step_pin: I2SO.18
 #       direction_pin: I2SO.17
 #      disable_pin: I2SO.16
 
  z:
    steps_per_mm: 1259.842
    max_rate_mm_per_min: 800.000
    acceleration_mm_per_sec2: 1800.000
    max_travel_mm: 10.500
    soft_limits: true
    homing:
      cycle: 1
      positive_direction: true
      mpos_mm: 8.000
      feed_mm_per_min: 200.000
      seek_mm_per_min: 400.000
      settle_ms: 500
      seek_scaler: 1.100
      feed_scaler: 1.100

    motor0:
      limit_neg_pin: NO_PIN
      limit_pos_pin: gpio.32:low
      limit_all_pin: NO_PIN
      hard_limits: false
      pulloff_mm: 2.000
      tmc_2209:
        uart_num: 1
        addr: 2
        cs_pin: NO_PIN
        r_sense_ohms: 0.110
        run_amps: 0.800
        homing_amps: 0.800
        hold_amps: 0.700
        microsteps: 8
        stallguard: 0
        stallguard_debug: false
        toff_disable: 0
        toff_stealthchop: 5
        toff_coolstep: 3
        run_mode: StealthChop
        homing_mode: StealthChop
        use_enable: false
        step_pin: I2SO.10
        direction_pin: I2SO.9
        disable_pin: I2SO.8

#  c:
#    steps_per_mm: 80.000
#    max_rate_mm_per_min: 5000.000
#    acceleration_mm_per_sec2: 100.000
#    max_travel_mm: 300.000
#    soft_limits: false
#    homing:
#      cycle: 1
#      positive_direction: true
#      mpos_mm: 150.000
#      feed_mm_per_min: 100.000
#      seek_mm_per_min: 800.000
#      settle_ms: 500
#      seek_scaler: 1.100
#      feed_scaler: 1.100
#
#    motor0:
#      limit_neg_pin: gpio.39:low
#      limit_pos_pin: NO_PIN
#      limit_all_pin: NO_PIN
#      hard_limits: false
#      pulloff_mm: 3.000
#      tmc_2209:
#        uart_num: 1
#        addr: 3
#        cs_pin: i2so.22
#        r_sense_ohms: 0.110
#        run_amps: 0.800
#        homing_amps: 0.800
#        hold_amps: 0.500
#        microsteps: 16
#        stallguard: 0
#        stallguard_debug: false
#        toff_disable: 0
#        toff_stealthchop: 5
#        toff_coolstep: 3
#        run_mode: StealthChop
#        homing_mode: StealthChop
#        use_enable: false
#        step_pin: I2SO.21
#        direction_pin: I2SO.20
#        disable_pin: I2SO.23

i2so:
  bck_pin: gpio.22
  data_pin: gpio.21
  ws_pin: gpio.17

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: 20000000

#probe:
#  pin: gpio.36:low
#  toolsetter_pin: NO_PIN
#  check_mode_start: true

start:
  must_home: true

coolant:
  flood_pin: gpio.13:low
  mist_pin: gpio.14:low
  delay_ms: 0

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

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

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: gpio.26
  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: true
  tool_num: 0
  speed_map: 0=0.000% 1000=100.000%
  off_on_alarm: true

# pwm:
#  pwm_hz: 5000
#  direction_pin: gpio.26
#  output_pin: gpio.27
#  enable_pin: NO_PIN
#  disable_with_s0: false
#  s0_with_disable: true
#  spinup_ms: 0
#  spindown_ms: 0
#  tool_num: 0
#  speed_map: 0=0.000% 1000=100.000%
#  off_on_alarm: false

# 5V out gpio.26/27
# VMot out gpoi.2/16
# In's left to right gpoi.25/33/32/35/34/39/36

Are you using WebUI v2 or v3?

These are the WebUI v3 panels. Whether or not they show up is only based on WebUI settings and has nothing to do with config.yaml.

Yes, but it looks like the default test duration is 10ms so I doubt you’d see anything.

I must still be on webui 2.I figured I’d get things moving and burning first, then try updating. Sounds like maybe I should update now, if that will make the further troubleshooting easier.

I was excited that Lightburn had no difficulty connecting to the controller via ip address. Looking through the FluidNC documentation on the wiki it sounds like I need to do a little more reading about M3 versus M4 in laser mode.

Last time I used a laser I got hung up on some modes only show light (fire the laser) when moving. Definitely need to have a little look through the fluidnc wiki about laser modes.

From FluidNC Status:

FW version: FluidNC v3.9.5
WebUI version: github.com/MitchBradley/ESP3D-WEBUI@3a87acd

I believe I’m running what came on the controller when I ordered it (which, like I said was a while ago). What versions should I be shooting for?

I’m pretty sure that’s WebUI v2. The screenshots I showed were v3 which is what I would use these days.

You can update by just uploading index.html.gz, preferences.json and favicon.ico to flash (skip the config.yaml, that’s specific to a machine).
FluidNC_Configs/LowRider CNC/Jackpot/JP1_LR at main · V1EngineeringInc/FluidNC_Configs

I haven’t messed with my laser too much yet, but in M3 mode, it will stay on when there is no motion, but M4 mode requires motion to fire.

FluidNC 3.9.5 is ok. You could update to 3.9.9 or the latest 4.0 version. I’m not sure if 4.0 is officially recommended yet but I’ve been using it on my pen plotter for awhile without issue. I’ll update my LR when I get around to it.

Thank you both for your help tonight.

Going to firmware 3.9.9 and webui 3 got me to the point where I could see the LED come on when testing the laser (I set it to run for 2 seconds but had the laser disabled at the physical control panel). Once I could see that in action, I tried enabling the laser but still no fire. Turns out I had the polarity of the laser connections reversed. Laser test button has been reset to low power and short duration, and the laser is now working as expected.

It took me an embarrassingly long time to realize I was trying to upload the firmware with a power-only connector. Once I got an actual data connection the process was very straight forward. I went ahead and updated the second Jackpot board I purchased while I was at it. Hopefully this will speed up the brain transplant on the Burly when I get to that point.

3 Likes

The worst!!!