September 23, 2025
Description
Description
Table of Contents
Nozzle cams are both very useful and very fun. This uses the 3DO kit but is also compatible with a variaty of webcams in the market like AliExpress. which provides reasonable quality and consistency (as opposed to some random endoscope). Just watch for maximum temperature of usage.
I used this AliExpress 120° camera: https://de.aliexpress.com/item/1005005178412080.html?spm=a2g0o.order_list.order_list_main.212.1338180242SEzi&gatewayAdapt=glo2deu
*NOTE that I dont use the “strap.STL” because at the moment i'm only using it occasionally and not all the time.
1x 3DO Nozzle Cam or similar(adjustable focus)
1x 3DO 50mm FPC w/ leds
1x 3DO Nozzle Cam DSP board
1x 3DO JST SH 5x to USB cable (the 700mm one will get you to the back of the printer, use longer cables if your USB host device is further away)
~50mm thick-walled heatshrink tubing, 8mm ID, e.g. Digikey part 2057-HST-A-080-BK-4-SR41-ND
10x Ruthex M3 Voron (4mm long) heat inserts
2x Ruthex M2 heat inserts
~12 10cm zip ties, e.g. Amazon B01018DB2E
2x M3x12mm cap head screws, e.g. McMaster 91290A117
8x M3x10mm countersunk screws, e.g. McMaster 91294A130
2x M2x6mm countersunk screws, e.g. McMaster 91294A004
some PETG or PA filament for the cable strap (PA might be better but PETG works fine for me)
some ABS, ASA or PC filament for the toolhead parts (your choice)
The 3DO stuff you can get from them directly if you're in Europe. KB3D has them in the US and they ship super fast. Heatshrink tubing - I used the part in the BOM above but you can probably just use something from an assortment box.
Print one of each of the STLs. Included orientation, no supports. You want something flexible for the strap (PETG has been fine for me), and something hard & strong for the toolhead parts. The jig, if you're printing it at all, can be anything.
You're printing a new XY belt clamp and getting rid of the old parts. It is extremely important that this part comes out with no warping. Prusament PC will probably work; I printed mine from Qidi ABS-GF (it's a fantastic filament, very easy to work with). 0.2mm layer height is fine.
Only if using the Prusa Original enclosure for the XL: Install two M3 heat inserts in the “club” at the end of the strap. They go in from the chamfered side:
If not using the enclosure, you don't need the above two inserts. We'll talk about it later. Enclosure or not, most of the further stuff is the same:
Install the M2 heat inserts into the carriage cover.
Install the M3 heat inserts into the X carriage cover.
*Note that the heat inserts (#1) should be heat insterted only through the x-carriage-cover.stl and insert.stl. But the insert should only be inserted with heat on the x-carriage-cover.stl(A) and the insert.stl(B). You can heat insert them through all 3 but will make disassemble more difficult. Carriage-cover.stl(C) has holes that should accomodate for the extra lenght of the insert if you don't find anything smaller.
Assemble the camera, FPC and PCB. You will want to hook it up to a computer with the 3DO USB cable at this point, and adjust the focus to 66mm. (Just place down some small objects 66mm from the lens and make sure the focus is correct.) It won't be possible to adjust the focus once the camera is installed in the toolhead cover, so you want to get this right.
Install the camera assembly as shown above. The PCB is friction fit into the cover, it is meant to be pushed in until it clicks into place.
Apply the heat shrink tubing to the JST SH connector side of the 3DO USB cable. (1 below) It's meant to make sure the cable is held in place securely. Leave a 2mm gap between the SH connector and the tube (2 below).
This steps are similar but the heat inserts are on the x-carriage-cover.stl and not like shown here #4.
Put on the camera clamp and secure it with the M2 screws. (3 above) The clamp is a tight fit over the camera's lens ring, but do not force it. Use a deburring tool to enlarge the hole slightly (or adjust the model using the provided .step file and print it again) if the fit is a problem.
Secure the USB cable with the zip ties to the strap:
Click the “insert.stl” object into place over the PCB. It will hold the JST SH connector and the PCB in place when pressed against.
If you are using the Original Enclosure, remove two of the nylon rivets that hold the left acrylic panel in place, and use the M3x12 screws to attach the club end of the strap where the rivets had been:
If you are not using the enclosure, you can attach the club end of the strap to roughly the same location on the outside of the printer, to the aluminum profile. Partsbuilt3d sells the M3neS nuts that you need for this, but there are printable models too that work well enough.
Use the last four M3 screws to secure the toolhead cover to the belt clamps:
If you're using the twist lock wire nozzle scrubbers (that are amazing and you totally should), you will have a problem with the camera mount pushing against the brushes and twisting them out of place. I made a better debris bucket design that alleviates this issue:
https://www.printables.com/model/1054341-improved-bins-for-the-prusa-xl-twist-lock-nozzle-s
The back of the DSP PCB is uncovered for two reasons: heat management and space. There'd need to be at least a 1mm gap between the surface of the PCB and the inside of the toolhead cover if not for having the cutout to allow for the mounted components. In order to keep the design as slim as possible and allow it to work with the Original Enclosure (and not have the toolhead bump the door while homing), this 1mm is not affordable. Further, the components on the board get pretty hot, and I don't think it's a good idea to tightly enclose them in plastic.
If you're using Linux, this udev rule will at least give you a starting point for the camera setup:
marton@pi5-prusa-xl:~ $ cat /etc/udev/rules.d/99-octoprint.rulesSUBSYSTEM=="video4linux", ATTRS{serial}=="3DO", ATTR{index}=="0", SYMLINK+="cam2_xl", RUN+="/usr/bin/v4l2-ctl -d $env{DEVNAME} \ --set-ctrl=brightness=-15 \ --set-ctrl=contrast=4 \ --set-ctrl=saturation=70 \ --set-ctrl=hue=0 \ --set-ctrl=white_balance_automatic=1 \ --set-ctrl=gamma=130 \ --set-ctrl=gain=0 \ --set-ctrl=power_line_frequency=1 \ --set-ctrl=sharpness=7 \ --set-ctrl=backlight_compensation=1 \ --set-ctrl=zoom_absolute=55 \ --set-ctrl=tilt_absolute=-130000 \ --set-ctrl=auto_exposure=1 \ --set-ctrl=exposure_time_absolute=700"
I suck with this so if you manage to coax a better picture from the camera, do leave a comment with your settings.
License:
BSD License
7