Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1109 commits
Select commit Hold shift + click to select a range
46af133
serialqueue: decouple transmit requests
nefelim4ag Sep 20, 2025
7634773
serialqueue: Move definition of transmit_requests in serialqueue
KevinOConnor Oct 18, 2025
d453ab3
serialqueue: Simplify command_event()
KevinOConnor Oct 18, 2025
cfb6166
serialqueue: Introduce new check_upcoming_queues() internal function
KevinOConnor Oct 18, 2025
bfb627c
serialqueue: Cache min_release_clock in pending queues
KevinOConnor Oct 18, 2025
804a9d1
serialqueue: Reduce time transmit_requests lock is held
KevinOConnor Oct 18, 2025
459e77c
serialqueue: Keep moving messages from pending queues to ready queues
KevinOConnor Oct 18, 2025
35dffc1
serialqueue: Rework check_wake_receive() to receive_append_wake()
KevinOConnor Nov 4, 2025
b6c1b5a
serialqueue: Minor simplification in serialqueue_extract_old()
KevinOConnor Nov 4, 2025
01b3a6a
gcode: Replace Coord named tuple with custom tuple class
KevinOConnor Sep 18, 2025
d0b1b83
gcode: Change Coord() class to initialize from a list or tuple
KevinOConnor Sep 27, 2025
ac6cab9
gcode_move: Export extra axes in status reference
KevinOConnor Oct 10, 2025
67db551
toolhead: Export "extra axes" coordinates in status
KevinOConnor Oct 10, 2025
24a1116
motion_report: Support reporting of manual_stepper trapqs
KevinOConnor Oct 11, 2025
c3bf7b1
motion_report: Support reporting live_position of extra axes
KevinOConnor Oct 11, 2025
c7b1e40
docs: Update Status_Reference.md with information on accessing coordi…
KevinOConnor Oct 10, 2025
f04895f
docs: Update Config_Changes.md with recent coordinate changes
KevinOConnor Oct 10, 2025
db7acaa
motion_report: Fix off-by-one error in live_extruder_velocity calcula…
KevinOConnor Nov 9, 2025
ecccd21
toolhead: Don't report dummy extruders in extra_axes status report
KevinOConnor Nov 6, 2025
39ac483
neopixel: Increase PULSE_LONG_TICKS to 800 for compatibility
ali1234 Nov 7, 2025
edaa614
bme680: fix infinite data wait
nefelim4ag Oct 23, 2025
053342f
MCU: Fail early if clock speed is too high to support max nominal dur…
Cirromulus Nov 17, 2025
90b7f82
mcu: Rework formatting of MAX_SCHEDULE_TICKS error string
KevinOConnor Nov 17, 2025
63ae0d7
analyzers: label undefined derivatives
nefelim4ag Oct 30, 2025
b4c7cf4
analyzers: define sos filter
nefelim4ag Oct 30, 2025
2aff840
shaper_calibrate: Reworked multi-file shaper autocalibration
dmbutyugin Oct 19, 2025
c339bb0
shaper_calibrate: Reworked best shaper recommendations
dmbutyugin Oct 19, 2025
baf188b
shaper_calibrate: Fixed sending large objects via Pipe from bg process
dmbutyugin Oct 20, 2025
0ba01be
kinematic_stepper: Fixed reporting of parse errors
dmbutyugin Aug 31, 2025
7918920
generic_cartesian: Added option 'axis' for primary carriages
dmbutyugin Oct 4, 2025
900c908
sosfilter: fix case if no notch is defined
nefelim4ag Nov 16, 2025
a9cf02c
sosfilter: handle high order butter filters
nefelim4ag Nov 16, 2025
938300f
stm32: f0 i2c clean nackcf interrupt on handle
nefelim4ag Nov 4, 2025
355b6ce
aht10: Fix status bit masks
loss-and-quick Nov 15, 2025
1f43be0
aht10: Add support for AHT2x/AHT3x families
loss-and-quick Nov 15, 2025
4e3a16d
docs: Update AHT family sensors documentation
loss-and-quick Nov 15, 2025
9ac90f8
aht10: Add AHT10 as alias for AHT1X for backwards compatibility
loss-and-quick Nov 27, 2025
9c84895
ads1x1x: Interface for "QUERY_ADC" (#7132)
hilbo86 Nov 30, 2025
3a700a5
timer_irq: Remove TIMER_IDLE_REPEAT_TICKS special case
KevinOConnor Nov 24, 2025
a6a6b21
armcm_timer: Use a static instruction count for TIMER_MIN_TRY_TICKS
KevinOConnor Nov 25, 2025
2e58023
serialqueue: Tune MIN_REQTIME_DELTA timing
KevinOConnor Nov 25, 2025
2e88d8b
config: Clarify configuration settings for Ender 5 Pro (#7126)
benjie Dec 9, 2025
f910849
ldc1612: fix data rate calculation
nefelim4ag Nov 27, 2025
2b4c55f
servo: sync pwm clock times
nefelim4ag Dec 3, 2025
f52a6f9
output_pin: Rename "delay" flag to "repeat" in GCodeRequestQueue()
KevinOConnor Dec 3, 2025
8e6e467
mcu: Fix incorrect reqclock during endstop homing
KevinOConnor Dec 14, 2025
867d73f
serialqueue: Make 31-bit clock overflow check a little more robust
KevinOConnor Dec 14, 2025
d92dda4
lib: Update pico-sdk to v2.2.0
KevinOConnor Dec 12, 2025
3f72e51
atsamd: Fix possible buffer overflow in usbserial.c
KevinOConnor Dec 13, 2025
a8cbc93
bus: Verify that software i2c pins are all on the same mcu
KevinOConnor Dec 17, 2025
3a3e9fa
rp2040: Support rp2350b extra gpios
KevinOConnor Dec 16, 2025
a3e24d2
rp2040: Add support for ADC on rp2350b chips
KevinOConnor Dec 16, 2025
59a754c
stm32: Implement manual double buffering tx for usbotg
KevinOConnor Feb 6, 2025
c3b660d
stm32: Simplify USBx_IRQn per-chip definitions in usbfs.c
KevinOConnor Dec 14, 2025
dc622f4
stm32: Allow disabling double buffering transmit in usbfs.c
KevinOConnor Dec 14, 2025
a40beb7
probe_eddy_current: filter noisy calibration points
nefelim4ag Nov 15, 2025
8b58aa1
probe_eddy_current: show noise at distinct calibration points
nefelim4ag Nov 24, 2025
94cbde7
_klipper3d: Rename build-translations.sh to build-website.sh
KevinOConnor Dec 23, 2025
d9f5da7
_klipper3d: Remove unnecessary files copied into the main website
KevinOConnor Dec 23, 2025
5d24122
_klipper3d: Make sure custom css file is preserved
KevinOConnor Dec 23, 2025
2cc3608
buildcommands: retrieve version from klippy version file (#7134)
mkuf Dec 30, 2025
12cc944
stm32: F042 define PB4 HW PWM
nefelim4ag Oct 15, 2025
ec0eb4a
stm32: hard pwm allow scale PWM frequency
nefelim4ag Oct 15, 2025
1fdf0eb
static_pwm_clock: define module for stm32
nefelim4ag Oct 16, 2025
3d5f352
docs: Describe static_pwm_clock section
nefelim4ag Oct 16, 2025
7377da6
stm32: Declare gpio_timer_setup() as static in hard_pwm.c
KevinOConnor Dec 30, 2025
db35e99
tmc: Group code startup functions together in TMCCommandHelper()
KevinOConnor Dec 29, 2025
d5ef924
tmc: Simplify TMCCommandHelper() error checking
KevinOConnor Dec 29, 2025
8ea7be5
tmc: Hold a mutex during enable/disable checking
KevinOConnor Dec 29, 2025
51dcb09
probe_eddy_current: reload z_offset probe helper
nefelim4ag Oct 25, 2025
dd62593
avr: add lgt8f328p support
choryuidentify Dec 18, 2025
ae3eb30
stm32: Enable MOE bit in hard_pwm.c for all stm32 chips
KevinOConnor Nov 16, 2025
05ce956
stm32: fix static clock output for faster chips
nefelim4ag Dec 31, 2025
8dd798e
tmc: Fix stepper:set_dir_inverted event handler name
MRX8024 Dec 31, 2025
74a15f4
stm32: Minor comment and code organization changes to hard_pwm.c
KevinOConnor Dec 31, 2025
e60fe3d
stm32: Fix off-by-one error in the prescaler calculation in hard_pwm.c
KevinOConnor Dec 31, 2025
abda66d
ldc1612: enable frequency div to reduce noise
nefelim4ag Jan 2, 2026
8bca4cb
static_pwm_clock: Don't rely on custom stm32_timer_output mcu code
KevinOConnor Jan 2, 2026
e605fd1
stm32: Improve accuracy of hardware pwm cycle time
KevinOConnor Jan 2, 2026
f7ddb40
ldc1612: handle i2c errors
nefelim4ag Feb 8, 2025
c6c7614
ldc1612: ignore amplitude errors during homing
nefelim4ag Nov 26, 2025
2e0d746
ldc1612: trigger error on high frequency
nefelim4ag Dec 19, 2025
f1bd17d
ldc1612: decode error flags
nefelim4ag Nov 26, 2025
1fc9d81
docs: describe eddy error messages
nefelim4ag Jan 4, 2026
2bd0acb
exclude_object: Fixed object exclusion with changing GCode axes
dmbutyugin Jan 9, 2026
48f0b3c
gcode_move: Export more than 4 components in gcode_position status
KevinOConnor Jan 4, 2026
e590bc8
spi_flash: Don't import mcu module
KevinOConnor Jan 20, 2026
1cde5e2
mcu: Pass conn_helper to CommandWrapper and CommandQueryWrapper
KevinOConnor Jan 20, 2026
57b9452
mcu: Generate a dummy response to query commands when in debugging mode
KevinOConnor Jan 20, 2026
8be0044
probe_eddy_current: Implement regression test case
KevinOConnor Jan 20, 2026
bb96318
ci-install: Install scipy/numpy in github regression test case enviro…
KevinOConnor Jan 20, 2026
3c56eb7
load_cell_probe: Enhance regression test case
KevinOConnor Jan 20, 2026
9ccb4d9
manual_probe: Report final probe results in new ProbeResult named tuple
KevinOConnor Dec 20, 2025
2e0c226
probe: Convert ProbePointsHelper to use ProbeResult
KevinOConnor Dec 21, 2025
252fc18
probe: Pass probe_offsets to HomingViaProbeHelper() class
KevinOConnor Dec 23, 2025
8c2c90b
probe_eddy_current: Pass probe_offsets class to EddyDescend
KevinOConnor Dec 23, 2025
f33c76d
load_cell_probe: Pass probe_offsets to TapSession()
KevinOConnor Dec 23, 2025
2a1027c
probe: Convert pull_probed_results() to return ProbeResult
KevinOConnor Dec 23, 2025
32a5f2b
probe: Deprecate last_z_result and add new last_probe_position
KevinOConnor Dec 27, 2025
a353efa
probe: Return to start XY position on each attempt in PROBE_ACCURACY
KevinOConnor Jan 5, 2026
2956c1e
probe: Support passing gcmd to probe.get_offsets()
KevinOConnor Jan 22, 2026
ec08ff5
trigger_analog: Rename load_cell_probe.c to trigger_analog.c
KevinOConnor Jan 7, 2026
667c57e
sos_filter: Remove unnecessary is_active flag
KevinOConnor Jan 8, 2026
fd195ff
sos_filter: Remove unnecessary "const" declarations
KevinOConnor Jan 8, 2026
40242b2
sos_filter: Propagate overflow errors instead of a shutdown
KevinOConnor Jan 8, 2026
6413399
sos_filter: No need to support "is_init" in MCU_SosFilter
KevinOConnor Jan 8, 2026
3b5045e
sos_filter: Handle fixed point conversion within MCU_SosFilter
KevinOConnor Jan 9, 2026
109f13c
sos_filter: Consistently use "frac_bits" instead of "int_bits"
KevinOConnor Jan 11, 2026
7ec82ba
sos_filter: Move offset/scale support from trigger_analog.c to sos_fi…
KevinOConnor Jan 8, 2026
067539e
load_cell_probe: Move set_endstop_range() code to LoadCellProbingMove
KevinOConnor Jan 12, 2026
165fe17
load_cell_probe: Move phoming.probing_move() interface to MCU_trigger…
KevinOConnor Jan 21, 2026
402303a
trigger_analog: New trigger_analog.py file
KevinOConnor Jan 20, 2026
f9b1b9c
trigger_analog: Create trigger_dispatch within MCU_trigger_analog
KevinOConnor Jan 21, 2026
5bd791d
hx71x: Make sure to use the same cmd_queue for all commands
KevinOConnor Jan 21, 2026
87c8b50
trigger_analog: Attach trigger_analog to sensor during initialization
KevinOConnor Jan 21, 2026
73a6184
trigger_analog: Check if trigger_analog is allocated in trigger_analo…
KevinOConnor Jan 21, 2026
147022d
trigger_analog: Update to support generic trigger types
KevinOConnor Jan 21, 2026
58cc059
sensor_ldc1612: Convert homing code to use trigger_analog system
KevinOConnor Jan 21, 2026
1675548
trigger_analog: Support scaling the filter's initial start state
KevinOConnor Jan 23, 2026
36b9898
trigger_analog: Set the MCU_SosFilter coeff_frac_bits in set_filter_d…
KevinOConnor Jan 24, 2026
30720d2
trigger_analog: Avoid storing value_frac_bits in MCU_SosFilter
KevinOConnor Jan 25, 2026
9a97ade
sos_filter: Implement auto_offset feature
KevinOConnor Jan 24, 2026
c9d904a
trigger_analog: Add initial support for detecting "tap" events
KevinOConnor Jan 22, 2026
7e394d6
bed_mesh: Fix tuple vs list error
KevinOConnor Jan 26, 2026
4d9d57c
test: Add a bed_mesh test case
KevinOConnor Jan 26, 2026
7f822f3
probe: fix sign inversion in probe calibrate (#7178)
nefelim4ag Jan 27, 2026
9957546
probe_eddy_current: Rework EddyGatherSamples()
KevinOConnor Jan 22, 2026
8922481
probe_eddy_current: Create trigger_analog instance in main PrinterEdd…
KevinOConnor Jan 26, 2026
08f4b65
probe_eddy_current: Make EddyScanningProbe a long lived class
KevinOConnor Jan 26, 2026
5c23f92
probe_eddy_current: implement tap support
KevinOConnor Jan 22, 2026
a03eed7
docs: describe tap calibration routine
nefelim4ag Dec 8, 2025
dfe6d3f
docs: describe calibration output
nefelim4ag Jan 7, 2026
5fb9902
sos_filter: define filtfilt call
nefelim4ag Jan 24, 2026
0795fb0
probe_eddy_current: analyze tap data
nefelim4ag Nov 19, 2025
1fe9fb3
trigger_analog: Don't report trigger time as the peak time
KevinOConnor Jan 29, 2026
576d0ca
probe_eddy_current: Minor reorg to PrinterEddyProbe startup
KevinOConnor Jan 30, 2026
85ccd1d
temperature_probe: fix missing kin_pos
nefelim4ag Jan 30, 2026
bc0862d
config: cartographer v3 example config
nefelim4ag Jan 31, 2026
7047d80
docs: eddy probe - tap requires install of scipy
nefelim4ag Jan 31, 2026
4c62220
docs: eddy probe - tip about PROBE_ACCURACY
nefelim4ag Jan 31, 2026
9a04eb5
docs: eddy tap recommended samples/tolerance/retries
nefelim4ag Feb 1, 2026
29a494a
docs: eddy homing correction macro
nefelim4ag Feb 1, 2026
ca7d900
probe: disable PROBE_CALIBRATE for Eddy
nefelim4ag Jan 25, 2026
4c89f7f
generic_cartesian: Full IQEX printers support (#7165)
dmbutyugin Feb 4, 2026
36d9a77
temperature_combined: add additional sensor values(humidity, pressure…
bigtreetech Dec 31, 2025
87ea2ff
temperature_combined: fix operations on empty list
nefelim4ag Feb 6, 2026
8965958
bus: raise I2C errors on the host side
nefelim4ag Aug 13, 2025
0c2c1dd
bus: allow mark i2c as write only
nefelim4ag Oct 11, 2025
13b4561
docs: Update Config_Changes.md to reflect i2c changes to sx1509 and u…
KevinOConnor Feb 7, 2026
0dff097
stepcompress: wrap steps in struct qstep
nefelim4ag Feb 7, 2026
c2d0cc1
gcode: enrich param errors
nefelim4ag Nov 22, 2025
cfd9dc7
force_move: refactor to mux commands
nefelim4ag Nov 22, 2025
c85a1a6
stepper_enable: refactor to mux commands
nefelim4ag Dec 2, 2025
0a43774
heaters: refactor to mux commands
nefelim4ag Jan 27, 2026
6d7d340
stepcompress: Add some comments on internal structs
KevinOConnor Feb 7, 2026
ce97c51
linux: fixed array out of bounds access for GPIO setup in linux proce…
toomium Feb 10, 2026
636a614
probe: Fix application of axis_twist_compensation
KevinOConnor Feb 11, 2026
8a210d2
bmi160: Add support for BMI160 accelerometer
FranciscoStephens Jan 21, 2026
1473b79
configfile: Only warn once for each message sent to runtime_warning()
KevinOConnor Feb 10, 2026
21604d8
configfile: Support warning for deprecated gcode commands
KevinOConnor Feb 10, 2026
5a877d7
manual_stepper: Rework STOP_ON_ENDSTOP parameter
KevinOConnor Feb 1, 2026
57c2e0c
manual_stepper: Support STOP_ON_ENDSTOP=probe
KevinOConnor Feb 1, 2026
187481e
dual_carriage: Allow dual carriage inactivation
dmbutyugin Feb 2, 2026
41bc240
adccmds: Support batching multiple reports into a single message
KevinOConnor Feb 11, 2026
a44e905
trigger_analog: Support not compiling trigger_analog on small flash b…
KevinOConnor Feb 14, 2026
9e962ee
adccmds: Add support for homing/probing triggering with regular mcu a…
KevinOConnor Feb 14, 2026
5a2fd10
mcu: Change MCU_adc.get_last_value() to return (time, value)
KevinOConnor Feb 14, 2026
8ed426b
mcu: Convert ADC callback to pass a list of samples
KevinOConnor Feb 14, 2026
2f2219b
buttons: Use ADC batching for ADC based buttons
KevinOConnor Feb 17, 2026
a445013
configfile: Add support for warning on deprecated mcu code
KevinOConnor Feb 11, 2026
016474b
bus: Note mcu code deprecation if missing spi_set_sw_bus
KevinOConnor Feb 11, 2026
ee28dec
bus: Note mcu code deprecation if missing i2c_set_sw_bus
KevinOConnor Feb 11, 2026
6bbc906
bus: Note mcu code deprecation if missing i2c_transfer
KevinOConnor Feb 11, 2026
90c72b7
stepper: Note mcu code deprecation if missing STEPPER_STEP_BOTH_EDGE
KevinOConnor Feb 11, 2026
0213ad7
canbus_stats: Note mcu code deprecation if missing get_canbus_status
KevinOConnor Feb 11, 2026
60b6271
motan: print avaliable keys on error
nefelim4ag Feb 1, 2026
43b2d55
motan: Don't default to subscribing to all sensors in data_logger
KevinOConnor Feb 23, 2026
3aa56f3
motan: Rename "adxl345" dataset to "accelerometer"
KevinOConnor Feb 23, 2026
54c7b65
motan: Support capturing bmi160 and icm20948 accelerometer data
KevinOConnor Feb 23, 2026
016f6e6
probe_eddy_current: Stop measurements on an error in EddyScanningProbe
KevinOConnor Feb 22, 2026
7e0dcc3
probe_eddy_current: Improve gap detection in EddyTap
KevinOConnor Feb 24, 2026
391834b
docs: Rework how METHOD= parameter works in G-Codes.md
KevinOConnor Feb 28, 2026
0624cce
probe_eddy_current: Support TAP_THRESHOLD parameter on "tap" probes
KevinOConnor Feb 24, 2026
7a44726
pwm_tool: fix missing updates
nefelim4ag Mar 1, 2026
f1fb575
configfile: Fix deprecate() method
KevinOConnor Mar 3, 2026
f33292a
ads1220: Remove dead self.bulk_queue code
KevinOConnor Feb 26, 2026
e234f24
hx71x: Remove dead self.bulk_queue code
KevinOConnor Feb 26, 2026
960813a
mcu: Minor code reorg in MCUConfigHelper
KevinOConnor Feb 27, 2026
5557780
mcu: Track if the mcu config phase has completed
KevinOConnor Feb 26, 2026
c89393c
mcu: Rework mcu.register_response() to mcu.register_serial_response()
KevinOConnor Feb 26, 2026
9460429
mcu: Improve unknown message response warnings in AsyncResponseWrapper
KevinOConnor Feb 27, 2026
4f4a9a2
tmc: simplify homing start/end
nefelim4ag Feb 7, 2026
0c32f3b
tmc2240: allow enable SG4 threshold
nefelim4ag Feb 7, 2026
88a71c3
tmc: support tmc2240 sg4 homing
nefelim4ag Feb 7, 2026
644cda5
sht3x: fix exception type
nefelim4ag Dec 21, 2025
1370cf5
reactor: Simplify pause() call
KevinOConnor Mar 19, 2026
51ceda9
reactor: Always create new greenlets from main process
KevinOConnor Mar 19, 2026
0021798
reactor: Move _g_dispatch updating from _dispatch_loop() to run()
KevinOConnor Mar 19, 2026
01f089e
heaters: Fix no heating on small max_power values (#7227)
MRX8024 Mar 20, 2026
dcadac1
reactor: Move garbage collection logic from _check_timers() to new _c…
KevinOConnor Mar 20, 2026
6416d3e
reactor: Improve comments in _end_greenlet()
KevinOConnor Mar 20, 2026
3115d69
rp2040: Replace divide with a multiply in spi.c
KevinOConnor Mar 19, 2026
bfc624a
rp2040: Simplify cycle_time handling in hard_pwm.c
KevinOConnor Mar 21, 2026
9fb7604
rp2040: Avoid run-time division in hard_pwm.c
KevinOConnor Mar 21, 2026
594ec7e
rp2040: Improve accuracy of hardware pwm cycle time
KevinOConnor Mar 21, 2026
0c2416e
avr: Fix missing SP definition in newer avr-libc and missing include …
naikymen Mar 24, 2026
9ebff0c
rp2040: Avoid run-time divide in i2c.c
KevinOConnor Mar 22, 2026
4046b34
docs: Note probe options that can change via G-Code in Config_Referen…
KevinOConnor Mar 4, 2026
7f5e918
manual_probe: Introduce new create_probe_result() helper function
KevinOConnor Mar 3, 2026
20df766
probe_eddy_current: Rename config option z_offset to descend_z
KevinOConnor Mar 3, 2026
6c8c8d2
probe_eddy_current: Support new tap_z_offset config parameter
KevinOConnor Mar 3, 2026
e5c3dfe
probe_eddy_current: Use different defaults for "scan", "rapid_scan" a…
KevinOConnor Mar 3, 2026
de280e2
probe_eddy_current: Retract at end of each "tap" probe
KevinOConnor Feb 24, 2026
4db1bf8
probe_eddy_current: Calculate "tap" position from lift movement
KevinOConnor Mar 4, 2026
2f05309
stm32: usbotg block next bulk_in if buffer not empty
nefelim4ag Mar 24, 2026
0d1445a
shaper_defs: Fix missing comma in 3-HUMP EI shaper matrix (#7235)
iamthecage Mar 31, 2026
b0e6ca4
docs: Fix warnings in re pattern and update py-gfm version
junan76 Mar 23, 2026
4fba8e4
hall_filament_width_sensor: Toggle for flow compensation
benlye Mar 5, 2026
e75c281
hall_filament_width_sensor: Add command descriptions
benlye Mar 5, 2026
48446a5
hall_filament_width_sensor: Add config validation
benlye Mar 5, 2026
3a0b834
hall_filament_width_sensor: Sync runout and width sensor states
benlye Mar 5, 2026
109aab9
hall_filament_width_sensor: Avoid race conditions
benlye Mar 5, 2026
c65d1a2
motan: Support capturing lis3dh accelerometer data
MRX8024 Mar 31, 2026
cb805f6
lis2dw: Fix accelerometer type name in logging
MRX8024 Mar 31, 2026
f2b36b7
icm20948: Fix accelerometer type name in error message
MRX8024 Mar 31, 2026
d487925
adxl345: Fix possible double registration of default gcode mux commands
MRX8024 Mar 31, 2026
41b77b6
adxl345: Improve error messages for accelerometer config conflicts
MRX8024 Apr 1, 2026
29e2652
katapult: Update flash_can.py to succesor tool flashtool.py
schiele Mar 1, 2026
dbebcfd
katapult: Add a Config_changes.md entry for flashtool.py renaming
schiele Apr 8, 2026
f3db41c
docs: Update FAQ now that heaters have a MAX_HEAT_TIME of 3 seconds
KevinOConnor Apr 8, 2026
b8c936f
gcode_button: ignore empty templates
nefelim4ag Mar 15, 2026
35ace52
stm32: define hard pwm PB pins for stm32g4
nefelim4ag Jan 25, 2026
959a3cf
stm32: G4 enable katapult request
nefelim4ag Apr 11, 2026
12097eb
mathutil: Added generic matrix pseudo-inverse with Gaussian elimination
dmbutyugin Mar 19, 2026
f05c66c
trigger_analog: Add filters individually in DigitalFilter
KevinOConnor Apr 4, 2026
28c236d
trigger_analog: Merge DerivativeFilter into DigitalFilter
KevinOConnor Apr 4, 2026
c8b2ef0
probe_eddy_current: Allocate just enough SOS entries for filter
KevinOConnor Apr 4, 2026
22dbdf1
trigger_analog: Store pre-generated 25hz lowpass filter (at 250sps)
KevinOConnor Apr 5, 2026
3ef23b3
probe_eddy_current: Rework internal formulas for "tap" analysis
KevinOConnor Apr 6, 2026
c1ed295
probe_eddy_current: Remove dependency on numpy
KevinOConnor Apr 6, 2026
5680b74
probe_eddy_current: Cache data between each "tap" least squares calcu…
KevinOConnor Apr 6, 2026
55d7ed1
probe_eddy_current: Increase "tap" calculation precision to 50nm
KevinOConnor Apr 7, 2026
ec4b88d
probe_eddy_current: Allow other timers to run while processing tap data
KevinOConnor Apr 7, 2026
db78bab
probe_eddy_contact: Add sanity checks to "tap" analysis
KevinOConnor Apr 7, 2026
aea1bcf
probe_eddy_current: Allow "tap" depress of as little as 30um
KevinOConnor Apr 12, 2026
2a5c2fe
trigger_analog: Require trigger_value to be an integer
KevinOConnor Apr 12, 2026
b1bbd6d
trigger_analog: Implement rounding in to_fixed_32()
KevinOConnor Apr 12, 2026
9c3ba2e
trigger_analog: Automatically determine frac_bits in MCU_SosFilter
KevinOConnor Apr 12, 2026
6b4aeb4
probe_eddy_current: Scale intermediate values within the "tap" sos fi…
KevinOConnor Apr 13, 2026
373f200
polar: add velocity scaling (#7172)
Neelix96 Apr 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/workflows/build-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on: [push, pull_request]

jobs:
build:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3

Expand All @@ -21,7 +21,7 @@ jobs:
run: ./scripts/ci-build.sh 2>&1

- name: Upload micro-controller data dictionaries
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: data-dict
path: ci_build/dict
2 changes: 1 addition & 1 deletion .github/workflows/klipper3d-deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
- name: Install dependencies
run: pip install -r docs/_klipper3d/mkdocs-requirements.txt
- name: Build MkDocs Pages
run: docs/_klipper3d/build-translations.sh
run: docs/_klipper3d/build-website.sh
- name: Deploy
uses: JamesIves/github-pages-deploy-action@v4.4.3
with:
Expand Down
96 changes: 48 additions & 48 deletions .github/workflows/stale-issue-bot.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -62,54 +62,54 @@ jobs:
state: 'closed'
});
}
# Close tickets marked with "reviewer needed" label for 2+ weeks
close_reviewer_needed:
if: github.repository == 'Klipper3d/klipper'
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v6
with:
script: |
const issues = await github.rest.issues.listForRepo({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open',
labels: 'reviewer needed',
assignee: 'none',
per_page: 100,
page: 1
});
msg = "Unfortunately a reviewer has not assigned themselves to"
+ " this GitHub Pull Request and it is therefore being"
+ " closed. It is a good idea to move"
+ " further discussion to the [Klipper Discourse]"
+ "(https://www.klipper3d.org/Contact.html#discourse-forum)"
+ " server. Reviewers can reach out on that forum to let you"
+ " know if they are interested and when they are available."
+ "\n\n"
+ "Best regards,\n"
+ "~ Your friendly GitIssueBot"
+ "\n\n"
+ "PS: I'm just an automated script, not a human being.";
const expireMillis = 1000 * 60 * 60 * 24 * 14;
const curtime = new Date().getTime();
for (const issue of issues.data.values()) {
const updatetime = new Date(issue.updated_at).getTime();
if (curtime < updatetime + expireMillis)
continue;
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
body: msg
});
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
state: 'closed'
});
}
# # Close tickets marked with "reviewer needed" label for 2+ weeks
# close_reviewer_needed:
# if: github.repository == 'Klipper3d/klipper'
# runs-on: ubuntu-latest
# steps:
# - uses: actions/github-script@v6
# with:
# script: |
# const issues = await github.rest.issues.listForRepo({
# owner: context.repo.owner,
# repo: context.repo.repo,
# state: 'open',
# labels: 'reviewer needed',
# assignee: 'none',
# per_page: 100,
# page: 1
# });
# msg = "Unfortunately a reviewer has not assigned themselves to"
# + " this GitHub Pull Request and it is therefore being"
# + " closed. It is a good idea to move"
# + " further discussion to the [Klipper Discourse]"
# + "(https://www.klipper3d.org/Contact.html#discourse-forum)"
# + " server. Reviewers can reach out on that forum to let you"
# + " know if they are interested and when they are available."
# + "\n\n"
# + "Best regards,\n"
# + "~ Your friendly GitIssueBot"
# + "\n\n"
# + "PS: I'm just an automated script, not a human being.";
# const expireMillis = 1000 * 60 * 60 * 24 * 14;
# const curtime = new Date().getTime();
# for (const issue of issues.data.values()) {
# const updatetime = new Date(issue.updated_at).getTime();
# if (curtime < updatetime + expireMillis)
# continue;
# await github.rest.issues.createComment({
# owner: context.repo.owner,
# repo: context.repo.repo,
# issue_number: issue.number,
# body: msg
# });
# await github.rest.issues.update({
# owner: context.repo.owner,
# repo: context.repo.repo,
# issue_number: issue.number,
# state: 'closed'
# });
# }
# Mark unassigned PRs that are idle for 2 weeks
mark_reviewer_needed:
if: github.repository == 'Klipper3d/klipper'
Expand Down
7 changes: 4 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,11 @@ dirs-y = src
cc-option=$(shell if test -z "`$(1) $(2) -S -o /dev/null -xc /dev/null 2>&1`" \
; then echo "$(2)"; else echo "$(3)"; fi ;)

CFLAGS := -I$(OUT) -Isrc -I$(OUT)board-generic/ -std=gnu11 -O2 -MD \
-Wall -Wold-style-definition $(call cc-option,$(CC),-Wtype-limits,) \
CFLAGS := -iquote $(OUT) -iquote src -iquote $(OUT)board-generic/ \
-std=gnu11 -O2 -MD -Wall \
-Wold-style-definition $(call cc-option,$(CC),-Wtype-limits,) \
-ffunction-sections -fdata-sections -fno-delete-null-pointer-checks
CFLAGS += -flto -fwhole-program -fno-use-linker-plugin -ggdb3
CFLAGS += -flto=auto -fwhole-program -fno-use-linker-plugin -ggdb3

OBJS_klipper.elf = $(patsubst %.c, $(OUT)src/%.o,$(src-y))
OBJS_klipper.elf += $(OUT)compile_time_request.o
Expand Down
15 changes: 7 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,14 @@ Welcome to the Klipper project!

https://www.klipper3d.org/

Klipper is a 3d-Printer firmware. It combines the power of a general
purpose computer with one or more micro-controllers. See the
The Klipper firmware controls 3d-Printers. It combines the power of a
general purpose computer with one or more micro-controllers. See the
[features document](https://www.klipper3d.org/Features.html) for more
information on why you should use Klipper.
information on why you should use the Klipper software.

To begin using Klipper start by
[installing](https://www.klipper3d.org/Installation.html) it.
Start by [installing Klipper software](https://www.klipper3d.org/Installation.html).

Klipper is Free Software. See the [license](COPYING) or read the
[documentation](https://www.klipper3d.org/Overview.html). We depend on
the generous support from our
Klipper software is Free Software. See the [license](COPYING) or read
the [documentation](https://www.klipper3d.org/Overview.html). We
depend on the generous support from our
[sponsors](https://www.klipper3d.org/Sponsors.html).
141 changes: 141 additions & 0 deletions config/example-generic-caretesian.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# This file is an example config file for cartesian style printers.
# One may copy and edit this file to configure a new printer with
# a generic cartesian kinematics.

# DO NOT COPY THIS FILE WITHOUT CAREFULLY READING AND UPDATING IT
# FIRST. Incorrectly configured parameters may cause damage.

# See docs/Config_Reference.md for a description of parameters.

[carriage carriage_x]
axis: x
position_endstop: 0
position_max: 300
homing_speed: 50
endstop_pin: ^PE5

[carriage carriage_y]
axis: y
position_endstop: 0
position_max: 200
homing_speed: 50
endstop_pin: ^PJ1

[extra_carriage carriage_y1]
primary_carriage: carriage_y
endstop_pin: ^PB6

[carriage carriage_z]
axis: z
position_endstop: 0.5
position_max: 100
endstop_pin: ^PD3

[dual_carriage carriage_u]
primary_carriage: carriage_x
position_endstop: 300
position_max: 300
homing_speed: 50
endstop_pin: ^PE4

[stepper my_stepper_x]
carriages: carriage_x+carriage_y
step_pin: PF0
dir_pin: PF1
enable_pin: !PD7
microsteps: 16
rotation_distance: 40

[stepper my_stepper_u]
carriages: carriage_u-carriage_y1
step_pin: PH1
dir_pin: PH0
enable_pin: !PA1
microsteps: 16
rotation_distance: 40

[stepper my_stepper_y0]
carriages: carriage_y
step_pin: PF6
dir_pin: !PF7
enable_pin: !PF2
microsteps: 16
rotation_distance: 40

[stepper my_stepper_y1]
carriages: carriage_y1
step_pin: PE3
dir_pin: !PH6
enable_pin: !PG5
microsteps: 16
rotation_distance: 40

[stepper my_stepper_z0]
carriages: carriage_z
step_pin: PL3
dir_pin: PL1
enable_pin: !PK0
microsteps: 16
rotation_distance: 8

[stepper my_stepper_z1]
carriages: carriage_z
step_pin: PG1
dir_pin: PG0
enable_pin: !PH3
microsteps: 16
rotation_distance: 8

[extruder]
step_pin: PA4
dir_pin: PA6
enable_pin: !PA2
microsteps: 16
rotation_distance: 33.5
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB4
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK5
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 250

[extruder1]
step_pin: PC1
dir_pin: PC3
enable_pin: !PC7
microsteps: 16
rotation_distance: 33.5
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB5
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK7
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 250

[heater_bed]
heater_pin: PH5
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK6
control: watermark
min_temp: 0
max_temp: 110

[mcu]
serial: /dev/ttyACM0

[printer]
kinematics: generic_cartesian
max_velocity: 500
max_accel: 3000
max_z_velocity: 20
max_z_accel: 100
1 change: 1 addition & 0 deletions config/example-polar.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,4 @@ max_velocity: 300
max_accel: 3000
max_z_velocity: 25
max_z_accel: 30
max_angular_velocity: 5
Loading