Skip to main content

Pin Conflicts

Understanding and resolving pin assignment conflicts in FluidNC GUI.

What Are Pin Conflicts?​

Pin conflicts occur when you try to assign the same GPIO pin to multiple functions. Since each pin can only perform one function at a time, conflicts must be resolved before your configuration will work.

How FluidNC GUI Helps​

Visual Indicators​

The GUI provides real-time feedback:

  • 🟢 Green: Pin is available
  • 🟡 Yellow: Pin is in use (but valid)
  • 🔴 Red: Pin conflict detected
  • ❌ Disabled: Pin cannot be used for this function

Conflict Detection​

The system automatically detects:

  • Duplicate assignments: Same pin used twice
  • Board limitations: Using invalid pins for specific functions
  • Hardware restrictions: Input-only pins assigned as outputs

Common Pin Conflicts​

Motor Pin Conflicts​

Most common conflict with motor pins:

# WRONG - Same pin used for two motors
axes:
x:
motor0:
step_pin: "gpio.2" # ❌ Conflict
y:
motor0:
step_pin: "gpio.2" # ❌ Same pin
# CORRECT - Different pins for each motor
axes:
x:
motor0:
step_pin: "gpio.2" # ✅ Unique
y:
motor0:
step_pin: "gpio.3" # ✅ Unique

Enable Pin Sharing​

Enable pins CAN be shared (this is normal):

# CORRECT - Shared enable pin is OK
axes:
x:
motor0:
disable_pin: "gpio.8" # ✅ Shared enable
y:
motor0:
disable_pin: "gpio.8" # ✅ Same enable OK

I/O Pin Conflicts​

Watch for conflicts between different I/O functions:

# WRONG - Same pin for probe and limit switch
probe:
pin: "gpio.15" # ❌ Conflict

axes:
x:
limit_neg_pin: "gpio.15" # ❌ Same pin

ESP32 Pin Limitations​

Input-Only Pins​

These pins cannot be outputs:

  • GPIO 34, 35, 36, 39 (ADC1 channels)
# WRONG - GPIO 34 cannot be output
motor0:
step_pin: "gpio.34" # ❌ Input-only pin
# CORRECT - Use for inputs only
limit_neg_pin: "gpio.34" # ✅ Input OK

Flash Memory Pins​

Avoid these pins (connected to flash memory):

  • GPIO 6, 7, 8, 9, 10, 11

Strapping Pins​

Be careful with these pins (used during boot):

  • GPIO 0: Boot mode selection
  • GPIO 2: Boot mode selection
  • GPIO 5: JTAG
  • GPIO 12: Flash voltage selection
  • GPIO 15: JTAG

These can be used but may cause boot issues if pulled incorrectly.

Resolving Conflicts​

Step 1: Identify All Conflicts​

  1. Use Pin Mapper in FluidNC GUI
  2. Check all red indicators
  3. Note which pins are conflicted

Step 2: Plan Pin Assignments​

Create a pin assignment table:

FunctionCurrent PinNew PinNotes
X Stepgpio.2gpio.2✅ Keep
Y Stepgpio.2gpio.3❌ Was conflict
Z Step-gpio.4✅ New assignment

Step 3: Update Configuration​

Work through conflicts systematically:

  1. Fix most critical functions first (motors, safety)
  2. Leave optional functions for last (coolant, extra I/O)
  3. Test incrementally after major changes

Step 4: Validate​

  1. Check GUI indicators all green
  2. Export configuration to verify
  3. Test on hardware if possible

Pin Assignment Strategies​

Keep related pins together:

# Motor pins grouped together
x_step_pin: "gpio.2"
x_dir_pin: "gpio.5"
y_step_pin: "gpio.3"
y_dir_pin: "gpio.6"
z_step_pin: "gpio.4"
z_dir_pin: "gpio.7"

Leave Room for Expansion​

Don't use every available pin:

  • Reserve some pins for future features
  • Keep some spare I/O pins available
  • Plan for additional motors or sensors

Use Board Documentation​

Always reference your board's pinout:

  • Check manufacturer's pin diagrams
  • Note any special pin functions
  • Verify current capabilities for motor drivers

Advanced Conflict Resolution​

TMC Driver Conflicts​

TMC drivers with UART need additional pins:

# WRONG - UART pins conflict with other functions
motor0:
tmc_2208:
uart:
txd_pin: "gpio.12" # ❌ Conflicts with spindle
rxd_pin: "gpio.13" # ❌ Conflicts with spindle
# CORRECT - Separate pins for UART
motor0:
tmc_2208:
uart:
txd_pin: "gpio.21" # ✅ Dedicated UART pins
rxd_pin: "gpio.22" # ✅ Dedicated UART pins

Multi-Driver Conflicts​

When using multiple stepper drivers per axis:

# Dual Y motors - need separate pins
axes:
y:
motor0:
step_pin: "gpio.3"
direction_pin: "gpio.6"
motor1:
step_pin: "gpio.25" # ✅ Different step pin
direction_pin: "gpio.26" # ✅ Different direction pin
disable_pin: "gpio.8" # ✅ Enable can be shared

Troubleshooting Pin Issues​

Configuration Won't Save​

If GUI won't save your config:

  1. Check for red indicators
  2. Resolve all conflicts
  3. Validate pin numbers exist on your board

Hardware Doesn't Work​

If configuration loads but hardware doesn't respond:

  1. Verify wiring matches pin assignments
  2. Check pin capabilities (input vs. output)
  3. Test with multimeter for signal presence

Intermittent Issues​

If problems come and go:

  1. Check for loose connections
  2. Verify power supply stability
  3. Check for electrical interference

Pin Assignment Tools​

FluidNC GUI Pin Mapper​

  • Visual conflict detection
  • Board-specific validation
  • Real-time feedback

External Resources​

  • ESP32 pinout diagrams
  • Board manufacturer documentation
  • Community pin assignment sheets

Prevention Tips​

Before You Start​

  1. Study your board layout
  2. Plan on paper first
  3. Check existing projects with similar boards

During Configuration​

  1. Work systematically through each function
  2. Test small sections before building large configs
  3. Document your assignments

Before Deployment​

  1. Double-check critical functions
  2. Verify with multimeter if possible
  3. Test emergency stops and safety features

Getting Help​

If you're still having pin conflict issues:

  1. Check board documentation thoroughly
  2. Ask in community forums with your specific board model
  3. Share your pin assignment table when asking for help

Need more help? Check our other troubleshooting guides or ask in the community! 🤝