January 20, 2026
Description
Disclaimer:
Before you start doing anything with electrics, make sure that you understand what you are doing and comply with all conditions for your safety, the safety of others, as well as the safety of equipment.
__________________________________________
Why:
Qidi Q1 Pro is a printer with a closed heated chamber, in 99% of cases I use this printer for printing composite materials in which small inclusions that cannot pass through the nozzle are much more common than in a conventional filament, as well as an expansion of the filament diameter that cannot fit into the hotend and etc. The original tangle sensor is absolutely useless, as are the filament runout sensors familiar to many.
The BTT SFS V2 sensor registers the movement of the filament, if for some reason it stops moving, the printer will pause. But you can connect any motion sensor of the filament using this instruction, for example a Filament Motion Sensor 3 by Laker87 (in fact, it's even better than SFS!), but then you'll have to design the mount yourself.
Motion sensor will replace runout and tangle sensors in terms of functionality, because if the filament is tangled — it does not move, if the filament is not in the sensor — it does not move, and the printer will pause in all cases.
__________________________________________
The gestalt:
Initially, I made an internal mounting of the sensor in the chamber (it can be screwed onto two stock self-tapping screws from the tangle sensor), but it is very difficult to insert the filament into this SFS, so I moved it outside, this will greatly simplify the insertion of the filament into it because you can twist the thread and it will quickly fit. I'll attach the internal mount to the files (SFS_plate.stl), but I DON'T RECOMMEND USING IT.
__________________________________________
What do you need:
The complete set consumes ≈3 meters of filament (≈8g ABS)
BTT SFS V2
PTFE tube 3x4 — 1m
Glue (optional)
Double-sided tape (optional)
__________________________________________
How to:
1) Prepare the SFS connector according to the photo attached to this project, you can remove the pins from the original complete SFS connectors using a thin screwdriver, needle, thin knife, etc. then re-insert them in the required sequence. We will not use the runout sensor because it is useless (just like the original tangle sensor) and will require an additional pin on the mainboard, so only one connector 3pin for the motion filament sensor will be needed.
Don't forget to turn off the power supply!
2) Remove the original Tangle Sensor unscrewing the two screws in the far left corner from the top of the case, then screw the SFS on the insideBTTSFS.stl model using the screws that were included with the SFS, stick outside.stl in a place convenient for you (cyanoacrylate etc.), connect quickrelease_bar.stl and all models.
You can skip this step and not print anything, but attach the SFS to double-sided tape or something else.
3) Remove the back cover of the printer and connect SFS to the board as shown in the photo attached to the project. Lay the cable as the old tangle sensor was stretched, and pull it through the hole for the filament
4) Extend the new PTFE tube to the required length to the SFS and printhead, plug the hole left by the tangle sensor with something, you can even design a model for it ;)
5) Replace this in the printer.cfg:
[filament_switch_sensor fila]
pause_on_runout: True
runout_gcode:
M118 Filament tangle detected
event_delay: 3.0
pause_delay: 0.5
switch_pin: U_1:PC3
With this:
[filament_motion_sensor fila]
switch_pin: U_1:PC3
detection_length: 5.76
extruder: extruder
pause_on_runout: False
runout_gcode:
M118 Filament encoder runout
PAUSE
insert_gcode:
M117 Filament encoder inserted
6) Add new macros to enable and disable the encoder sensor in the end gcode_macro.cfg:
[gcode_macro SFS_ENABLE]
gcode:
M117 ENABLING the SFS
G92 E0
SET_FILAMENT_SENSOR SENSOR=fila ENABLE=1
[gcode_macro SFS_DISABLE]
gcode:
M117 DISABLING the SFS
G92 E0
SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0
7) Find the section in gcode_macro.cfg [gcode_macro CANCEL_PRINT] and paste it at the beginning of SFS_DISABLE like this:
[gcode_macro CANCEL_PRINT]
rename_existing: BASE_CANCEL_PRINT
gcode:
SFS_DISABLE
{% if (printer.gcode_move.position.z) < 150 %} ; check that zhop doesn't exceed z max
G1 Z150 F480
{% endif %}
…
8) Insert SFS_DISABLE at the beginning of the start and end gcode in slicer:
Disable BTT SFS v2.0 filament encoder before print starts to stop false positives in purge layer before print. Enable just before print starts in gcode
9) Insert SFS_ENABLE at the end of the start gcode in slicer:
__________________________________________
Additionally:
If in your case there are false sensor alarms at the beginning of printing: remove SFS_ENABLE from the starting gcode, and enter this code in the “G-code at layer change” field
{if layer_num == 1}
SFS_ENABLE
{endif}
You can also experiment with the detection_length value, in many cases it can be lowered down to 3, it depends on the length of the tube, the stiffness of the filament, etc., try
<3
License:
Creative Commons — Attribution — Share Alike
7