diff --git a/printer_mods/JD/RefillPlease/CAD/RefillPlease_v20.f3d b/printer_mods/JD/RefillPlease/CAD/RefillPlease_v20.f3d
new file mode 100644
index 000000000..96d004a58
Binary files /dev/null and b/printer_mods/JD/RefillPlease/CAD/RefillPlease_v20.f3d differ
diff --git a/printer_mods/JD/RefillPlease/Readme.md b/printer_mods/JD/RefillPlease/Readme.md
new file mode 100644
index 000000000..774cbb42a
--- /dev/null
+++ b/printer_mods/JD/RefillPlease/Readme.md
@@ -0,0 +1,93 @@
+# RefillPlease
+
+
+
+
+
+> Your mission, should you choose to accept it, is to build a simple yet cool looking filament runout sensor for your Voron printer.
+As always, should you or any of your printers be hurt in the process, the Secretary and myself will disavow any knowledge of your actions.
+This readme will not self-destruct in five seconds, cause we're not on TV.
+Good luck.
+
+## BOM
+
+This part is designed to replace the stock bowden tube holder, so you can reuse the M3x8 SHCS and the M3 Hammer Head T nut.
+
+You will need :
+* 1 x micro switch (body : 20x6x10mm) with a lever (search for 'SPDT 5A, 125V 250V 29mm')
+* 1 x JST 2 pins female connector
+* 4 x M2x10 self tapping screws
+* two piece of wire (30mm length each)
+
+And some tools :
+* pair of pliers
+* small Philips screwdriver
+* soldering iron
+* a multimeter (optional, but it makes you look smart when using it)
+
+## What does it do, and why should I do this mod?
+
+It is a drop in replacement for the stock bowden tube holder with the benefits of being a filament runout sensor. So you know, it will mainly tell you when your printer need a refill (hence the name).
+
+#### Print Settings:
+
+Standard Voron print settings are fine, ABS+ (but PLA or PETG are fine too since it will not stand in the enclosure).
+
+* 0.4 mm Nozzle
+* 0.2 mm layer height
+* 30% infill
+* no supports
+* 4 vertical shells
+* 5 solid layers top and bottom
+
+##### What files need to be printed?
+
+Select the *_right* parts if you want to put the filament sensor on the right of the printer, *_left* parts otherwise (when you stand in front of the printer).
+
+You'll need:
+* [a]_core__(left/right).stl
+* cover_(left/right).stl
+
+# Assembly:
+
+
+
+Step 1: Take a refill of coffee
+
+Step 2: Bring out your inner artist\
+Using your pliers, try to form the lever to look like the picture (cut the lever if needed).\
+You may have to adjust the lever shape and length after trying to insert the filament so the switch is depressed each time the filament is inserted.
+
+
+
+Step 3: Prepare the electronics\
+Put the micro switch and the JST connector in the Core part
+Be careful:
+* the switch lever must go UP / in the oposite direction of the JST connector location.
+* the JST connector notched face should go directly on the core part (you should see a matching notch)
+Use this as a template to cut the piece of wires to the correct length.\
+Strip the wire with pliers.
+
+
+
+Step 4: Soldering\
+Tin plate the JST pins and the wires.\
+*You could use the printed part as a support when soldering the wires, but be carefull not to go too close to the plastic parts*\
+Solder according to the picture
+
+Step 5: Testing\
+Using the multimeter in continuity mode, be sure that the current is going through when the switch is depressed.
+
+Step 6: Close everything\
+Put the cover on using the M2x10 self tapping screws, but let the top ones loose.\
+Insert the PTFE tubes on each sides, and tighten the screws to block everything in place.
+
+## Software
+
+Sample configuration for Klipper can be found in the `/klipper` directory.
+
+To use it, add the file `filament_runout_detection.cfg` from your UI and load it in your `printer.cfg` file using the following directive :
+`[include filament_runout_detection.cfg]`.
+
+Adapt the switch_pin according to your mcu configuration (sample file is for an Octopus mcu).
+The sample config come with a M600 filament change macro provided by VintageGriffin on Discord.
diff --git a/printer_mods/JD/RefillPlease/STLs/[a]core_left.stl b/printer_mods/JD/RefillPlease/STLs/[a]core_left.stl
new file mode 100644
index 000000000..1dd1a4b10
Binary files /dev/null and b/printer_mods/JD/RefillPlease/STLs/[a]core_left.stl differ
diff --git a/printer_mods/JD/RefillPlease/STLs/[a]core_right.stl b/printer_mods/JD/RefillPlease/STLs/[a]core_right.stl
new file mode 100644
index 000000000..3b70470a8
Binary files /dev/null and b/printer_mods/JD/RefillPlease/STLs/[a]core_right.stl differ
diff --git a/printer_mods/JD/RefillPlease/STLs/cover_left.stl b/printer_mods/JD/RefillPlease/STLs/cover_left.stl
new file mode 100644
index 000000000..11bf5bfab
Binary files /dev/null and b/printer_mods/JD/RefillPlease/STLs/cover_left.stl differ
diff --git a/printer_mods/JD/RefillPlease/STLs/cover_right.stl b/printer_mods/JD/RefillPlease/STLs/cover_right.stl
new file mode 100644
index 000000000..51e84b65f
Binary files /dev/null and b/printer_mods/JD/RefillPlease/STLs/cover_right.stl differ
diff --git a/printer_mods/JD/RefillPlease/images/Overview.png b/printer_mods/JD/RefillPlease/images/Overview.png
new file mode 100644
index 000000000..9c859894f
Binary files /dev/null and b/printer_mods/JD/RefillPlease/images/Overview.png differ
diff --git a/printer_mods/JD/RefillPlease/images/interior90.png b/printer_mods/JD/RefillPlease/images/interior90.png
new file mode 100644
index 000000000..80fa33424
Binary files /dev/null and b/printer_mods/JD/RefillPlease/images/interior90.png differ
diff --git a/printer_mods/JD/RefillPlease/images/lever.png b/printer_mods/JD/RefillPlease/images/lever.png
new file mode 100644
index 000000000..6e4b01c43
Binary files /dev/null and b/printer_mods/JD/RefillPlease/images/lever.png differ
diff --git a/printer_mods/JD/RefillPlease/images/notch.png b/printer_mods/JD/RefillPlease/images/notch.png
new file mode 100644
index 000000000..c9576ab0b
Binary files /dev/null and b/printer_mods/JD/RefillPlease/images/notch.png differ
diff --git a/printer_mods/JD/RefillPlease/images/refillplease.png b/printer_mods/JD/RefillPlease/images/refillplease.png
new file mode 100644
index 000000000..7f6a2e89d
Binary files /dev/null and b/printer_mods/JD/RefillPlease/images/refillplease.png differ
diff --git a/printer_mods/JD/RefillPlease/klipper/filament_runout_detection.cfg b/printer_mods/JD/RefillPlease/klipper/filament_runout_detection.cfg
new file mode 100644
index 000000000..ed9a47fda
--- /dev/null
+++ b/printer_mods/JD/RefillPlease/klipper/filament_runout_detection.cfg
@@ -0,0 +1,56 @@
+
+#####################################################################
+# RefillPlease - Filament Runout Sensor
+#####################################################################
+
+[filament_switch_sensor RunoutSensor]
+switch_pin: !PG12 # Pin ESTOP4 for Octopus mcu
+
+# Without M600 macro (uncomment the line below and comment the two lines in the "With Filament change M600 macro"
+# pause_on_runout: true
+
+# With M600 Filament change macro
+pause_on_runout: false
+runout_gcode: M600
+
+#####################################################################
+# Filament change macro M600
+#####################################################################
+
+[gcode_macro M600]
+variable_park_x: 220
+variable_park_y: 10
+variable_z_lift: 20
+variable_velocity: 60
+variable_retract: 1
+gcode:
+ SAVE_GCODE_STATE NAME=STATE_M600
+
+ # remembers the position
+ # fluidd annoyingly redefines this macro to retract and park the toolhead at the rear
+ PAUSE
+
+ # safe park coords
+ {% set th = printer.toolhead %}
+ {% set park_x = [params.X|default(park_x)|int, th.axis_maximum.x-2]|min %}
+ {% set park_y = [params.Y|default(park_y)|int, th.axis_maximum.y-10]|min %}
+ {% set park_z = [th.position.z + params.Z_LIFT|default(z_lift)|int, th.axis_maximum.z]|min %}
+ {% set park_feedrate = params.VELOCITY|default(velocity)|int * 60 %}
+
+ # retract at 50mm/sec
+ G91
+ G1 E-{retract} F3000
+
+ # park toolhead
+ G90
+ G0 X{park_x} Y{park_y} Z{park_z} F{park_feedrate}
+
+ # unload 60mm of filament
+ G91
+ G1 E-50 F3600
+ G1 E-10 F3600
+
+ # ask the waiter for a refill
+ M117 Refill please
+
+ RESTORE_GCODE_STATE NAME=STATE_M600
diff --git a/printer_mods/README.md b/printer_mods/README.md
index 059d2ae6b..155b52ba1 100644
--- a/printer_mods/README.md
+++ b/printer_mods/README.md
@@ -159,6 +159,7 @@ like so:
| jappaj | [V0.1 FanSaver](./jappaj/FanSaver) | A printable fix for overheating V0.1 blower fans | :heavy_check_mark: | :x: | :x: | :x: | :x:|
|jasonc |[V2.4 Z-Idler Shoulder Bolt Mod](./jasonc/Z_Idler_Shoulder_Bolt) |Modification to the idler carriers to accept a 25mm shoulder bolt. Ideal for Gates idlers. |:x: |:x: |:heavy_check_mark: |:x:|
| Jasrags | [Feed slot with filament pass-through](./Jasrags/sw_fee_slot_filament_passthrough) | A feed slot with a filament pass-through | :x: | :x: | :x: | :heavy_check_mark: |:x:|
+|JD |[V2.4 Filament runout sensor](./JD/RefillPlease) | Replace the 2.4 stock bowden tube holder and add a filament runout sensor | :x: | :heavy_check_mark: | :heavy_check_mark: | :grey_question: | :heavy_check_mark: |
|jeoje |[V2.4 Z Chain Guide with Integrated Chamber Thermistor Mount](./jeoje/Z_Chain_Guide_Thermistor_Mount) | Modifies the Z chain guide to hold a chamber thermistor |:x: |:x: |:heavy_check_mark: |:x:|
| | [4.3" Touchscreen Mount](./jeoje/4.3_Inch_Touchscreen_Mount) | Mounts a [Waveshare 4.3inch Capacitive Touch Display](https://www.waveshare.com/4.3inch-dsi-lcd.htm) to v2.4 and Switchwire Vorons |:x:|:x:|:heavy_check_mark:|:heavy_check_mark:|
| | [Sturdy Handles](./jeoje/Sturdy_Handles) | Modified v2.2 handles with no panel rest and with 4 anchor points |:x: |:grey_question:|:heavy_check_mark:|:x:|