3D Printing

Last Updated or created 2023-05-17

In 2012 I started with 3D printing, I didn’t have my own yet. So it was done using shapeways.
April 2019 I ordered my own, a Creality CR-10S.


  • Build Volume: 300 x 300 x 400mm
  • Layer Thickness: 0.1-0.4mm
  • Positioning Precision: Z-axis – 0.0025mm, X & Y-axis – 0.015mm
  • Nozzle Temperature: 250°C
  • Printing Speed: 200mm/s
  • Filament Diameter: 1.75mm
  • Printer Weight: 9kg
  • Printing Filament: PLA, ABS, TPU, Wood, Carbon fiber, etc.
  • Input Support: SD card/USB
  • File Types: STL/OBJ/G-Code/JPG
  • Supports(OS): Windows/Linux/Mac/XP
  • Printing Software: Cura/Repetier-Host
  • Frame & Body: Imported V-Slot Aluminum Bearings
  • Power Requirement Input: AC110V~220V, Output: 12V, Power 270W
  • Output: DC12V, 10A 100~120W (Support storage battery)
  • Working Condition Temp:10-30°C, Humidity: 20-50%

Problem with this 3D Printer is the lack of a thermal runaway detection. My solution is a MQTT/Nodered warning system which plays an alarm and uses a shelly to disconnect the power.

Software I Use – see other posts

  • Openscad
  • Cura
  • Meshroom
  • Blender
  • Sketchup


  • Octoprint on a raspberry pi – (with Octoscreen)
Octoscreen (image from internet) I’m using a faytec touchscreen monitor
  • Octoprint monitor
Little display on my desk which monitors the progress

I’m using a filament sensor like the one in below picture

It used to be a DIY thingy using an arduino. (below)

Filament under my table ( in the “dark” )

Software on my mobile

  • Octoremote

Hints and tips

  • Use painters tape against bending of the glass, it will warp because of the heat.
  • Use 3D spray to fix model to base-plate.
    (I used a gluestick before)
  • Always think of model placement, less support the better.
  • Try to remember which fill-in is the best for your purpose.
  • Calibrate distance print tool and glass using printing paper.
  • Know your printer, make a lot of test prints when starting.
  • Learn / read about 3D printing finishing. Sanding/smoothing/melting.
    I’ve got some smoothing liquid (print coating) , a dremel and below tool
  • Use a print model to test your leveling
    ( https://www.printables.com/model/69956-bed-level-calibration-square-grid )
  • Learn how gcode’s work!

Laser engraving using my 3D printer (pre lasercutter)


  • Yeggi
  • Thingiverse
  • printables – not that much

DDC i2c monitor control

Last Updated or created 2023-02-15

I wanted to control the input of my monitors, these are my findings.

DDC – Display Data Channel
I2C – (Inter-Integrated Circuit, eye-squared-C), alternatively known as IIC, is a synchronous, multi-master/multi-slave (controller/target) bus

Getting monitor information with the ddccontrol -p command

##### PART OF THE OUTPUT #####
Detected monitors :
 - Device: dev:/dev/i2c-9
   DDC/CI supported: Yes
   Monitor Name: VESA standard monitor
   Input type: Digital
  (Automatically selected)
 - Device: dev:/dev/i2c-7
   DDC/CI supported: Yes
   Monitor Name: VESA standard monitor
   Input type: Digital
 - Device: dev:/dev/i2c-6
   DDC/CI supported: Yes
   Monitor Name: VESA standard monitor
   Input type: Digital
Reading EDID and initializing DDC/CI at bus dev:/dev/i2c-9...
I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/AOC2490.xml"

Switching inputs

ddcutil -b 7 setvcp 0x60 0x11 # 7 is Second monitor (starts with 6), 0x60 is the input register (see below) and 0x11 is HDMI
ddcutil -b 6 setvcp 0x60 0x0f # First monitor DP (Displaylink)

alternative command

ddccontrol -r 0x60 -w 15 dev:/dev/i2c-7

List the control registers

ddccontrol -d dev:/dev/i2c-6
ddccontrol version 0.6.0
Copyright 2004-2005 Oleg I. Vdovikin (oleg@cs.msu.su)
Copyright 2004-2006 Nicolas Boichat (nicolas@boichat.ch)
This program comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of this program under the terms of the GNU General Public License.

Reading EDID and initializing DDC/CI at bus dev:/dev/i2c-6...
I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/AOC2490.xml"
Document not parsed successfully.

EDID readings:
	Plug and Play ID: AOC2490 [VESA standard monitor]
	Input type: Analog
=============================== WARNING ===============================
There is no support for your monitor in the database, but ddccontrol is
using a basic generic profile. Many controls will not be supported, and
some controls may not work as expected.
Please update ddccontrol-db, or, if you are already using the latest
version, please send the output of the following command to

LANG= LC_ALL= ddccontrol -p -c -d

Thank you.
=============================== WARNING ===============================

Controls (valid/current/max) [Description - Value name]:
Control 0x02: +/1/2 C [New Control Value - No changes]
Control 0x04: +/0/1 C [Restore Factory Defaults]
Control 0x05: +/0/1 C [Restore Brightness and Contrast]
Control 0x08: +/0/1 C [Restore Factory Default Color]
Control 0x10: +/90/100 C [Brightness]
Control 0x12: +/50/100 C [Contrast]
Control 0x14: +/5/13 C [???]
Control 0x16: +/50/100 C [Red maximum level]
Control 0x18: +/50/100 C [Green maximum level]
Control 0x1a: +/50/100 C [Blue maximum level]
Control 0x60: +/772/4 C [Input Source Select (Main)]
Control 0x62: +/17/100 C [Audio Speaker Volume Adjust]
Control 0x6c: +/50/100 C [Red minimum level]
Control 0x6e: +/50/100 C [Green minimum level]
Control 0x70: +/50/100 C [Blue minimum level]
Control 0xac: +/6750/65535   [???]
Control 0xae: +/6000/65535   [???]
Control 0xb2: +/1/8   [???]
Control 0xb6: +/3/8 C [???]
Control 0xc8: +/5/65302 C [???]
Control 0xc9: +/8/65535 C [???]
Control 0xcc: +/4/255   [???]
Control 0xd6: +/1/4 C [DPMS Control - On]
Control 0xdf: +/513/65535 C [???]
Control 0xfe: +/4/255   [???]

Setting volume (reg 0x62) of monitor 2

ddcutil -b 7 setvcp 0x62 0x01


You can’t switch from an input which is not active!
So my workstation is connected via DP, and i can switch to HDMI.
Now i HAVE TO use the hdmi to switch back to DP.
A solution could be to ssh into the machine connected with HDMI (passwordless login) and switch back to DP.
I made a mqtt button sending a topic that was read by the two machines using the mqtt python program elsewhere on this site.
(Rotary Mqtt Volume control)