printer.cfg (13.1 KB)
Hi,
I’m having an issue with the heater_fan on my Artillery Hornet 3D printer running Klipper firmware with an Artillery Ruby V1.2 mainboard (STM32F401).
Problem:
The hotend cooling fan (PC7 pin) does not run at full speed when controlled by the heater_fan module. Instead of running at 100%, it runs at approximately 60% speed and fluctuates/pulses continuously. This is causing heat creep in the heat break and potential clogs.
Key observations:
- When Klipper restarts, the fan immediately spins at 100% (before Klipper takes control)
- Once Klipper’s heater_fan callback takes over, the fan drops to ~60% and fluctuates
- When I send M106 S255 manually, the part cooling fan (PC8) spins at 100% - this confirms the hardware is working correctly
- The fan audibly moves less air when controlled by heater_fan vs when Klipper first starts
- This issue started after recent Klipper updates
What I’ve tried:
- Adding fan_speed: 1.0
- Adding kick_start_time: 0 and kick_start_time: 0.5
- Adding max_power: 1.0
- Adding off_below: 0.2
- Adding shutdown_speed: 1.0
- Adding cycle_time: 0.00004
- Reverting heater_fan.py to original Klipper code
- Clearing .pyc cache files
None of these changes made any difference.
Current config:
[heater_fan hotend_fan]
pin: PC7
heater: extruder
heater_temp: 50.0
Mainboard: Artillery Ruby V1.2 (STM32F401)
Klipper version: Latest (master branch, 351+ commits since October 2025)
It seems like the heater_fan module is sending the correct speed value (1.0) but something in the PWM signal chain is limiting the actual output to ~60%. The fan runs at full speed before Klipper takes control, which suggests this is a software issue introduced in a recent update.
Has anyone else experienced this with the Artillery Ruby V1.2 board? Any suggestions would be greatly appreciated.
Thank you!