Category Archives: Make

Making things

Midjourney creations – more mechs

Not satisfied with yesterday’s Timber wolfs, I tried again from scratch.

Arguably all are even further from a Timber Wolf. Now what’s really odd is what happens when I add “conical cockpit” to the prompt – started new, not a variation. Why did it create completely different mechs, in a completely different style? Why do two of them have 3 legs? I’m so confused.

Midjourney creations – mechs on a frozen planet

My wife has a book set on a planet with frozen methane lakes which necessitates the use of battle mechs, heh. I love MechWarrior’s Timber Wolf so that’s what I included in the prompt but I didn’t give it a reference image.

Sadly, while they all look good, all lack the Timber Wolf’s trademark shoulder weapons and conical cockpit.

So I gave it a reference image

But oddly, the output looked even less like a Timber Wolf. And the output approximated the drawing/shading style of the reference image.

Midjourney creations – humanoid alien

My wife is writing a story about humanoid aliens that have black & white striped skin, but she was having trouble generating something that didn’t look like a zebra. So, I tried and came up with this. I think it’s a greyscale image though I didn’t ask for that, nor have I looked at a Photoshop histogram to verify.

The exoskeleton-like ridges are pretty cool. Maybe these creatures are like our spiders who have both exo- and endoskeletons.

Then asked Midjourney to zoom out. They look a bit too humanoid for me, but they would be right at home in a Star Wars cantina or Star Trek cafeteria.

Midjourney creations – Terminator Squishmallow

Midjourney is perfect for mashing unlikely things together – like replacing T800 with a Squishmallow walking through a battlefield littered with human skulls. Unfortunately, I have a very difficult time convincing Midjourney to create dark scenes like the original:

Midjourney really prefers bright scenes like these. A few problems:

  • None of them have a proper Squishmallow Terminator; they have no Squishmallow traits, especially #4.
  • Why are they all pink?
  • None of the “skulls” on the ground are Squishmallows, especially the fuzz balls in #3.

Midjourney creations – Cyborg Fairies

Back to cross-sections. Fairies are real but what if the source of their superpowers is cybernetic augmentation instead of magic?

Oddly, all four fairies have one thing in common – a lot of machinery in their wings, which are far too dainty to hide this much gear. The first one is quite pretty – I like the metal bodice and color palette. But I do not like the two antennae nor her melancholy expression.

The second has a bit too much exposed machinery in her torso. Also, her facial expression is too cold.

The third is similar to the second but with properly clothed.

The fourth is heavily mechanical and the wings are a bit small, but I like it the most for some reason. Possibly the 3/4 view and the page layout. Or it could just be her big eyes and innocent expression.

Midjourney creations – Forest Squishmallows

In a meeting today, everybody had a foresty/woody Zoom background, except me. I had my usual wall of my daughter’s Squishmallows behind me. I said okay, I’ll find a forest background but people said they liked my Squishmallows, so I thought… hey, Midjourney to the rescue! These are just a few of the generated images, as usual, there were many more attempts.

Pretty but a bit dark and the wrong aspect ratio.

A little too bright and oddly, too photorealistic.

Love the expression on the big Squishmallow on the right. And while anime Squishmallows are very cute, I kept going.

Ah, background is just the right brightness, Squishamallows are just the right anime-ish, and I fit right in the middle.

Midjourney creations – Pyramid cross-sections

Don’t know why this popped into my head, but I wanted to create cut-away/cross-sectional drawings of Egyptian pyramids. I think they look great. Midjourney was probably trained on plenty of cut-away drawings and informational-style drawings of pyramids.

The lorem ipsum text is a nice touch. Somewhat easily replaceable with “real” text.

Klipper notes

Setup

I have multiple printers connected to my PC running Klipper: Creality Ender 5+, CR6-SE and Ender 3 S1 Pro.

I used kiauh, GitHub - dw-0/kiauh: Klipper Installation And Update Helper, to install 3 instances of Klipper, Moonraker, Mainsail and Fluidd.

I tried both Debian 12 and Ubuntu 22.04.3 LTS. kiauh successfully installed all of the packages on both OSes but I could not configure the USB ports correctly on Ubuntu. I didn’t capture the errors before I wiped the system and installed Debian. Will need to try again on a different system.

I now have a directory for each printer:

drwxr-xr-x 10 klipper klipper 4096 Sep 3 23:53 CR6SE_data
drwxr-xr-x 10 klipper klipper 4096 Sep 3 23:53 E3S1Pro_data
drwxr-xr-x 10 klipper klipper 4096 Sep 3 23:53 E5Plus_data

along with directories for the various components:

drwxr-xr-x 5 klipper klipper 4096 Sep 3 23:54 fluidd
drwxr-xr-x 3 klipper klipper 4096 Sep 3 23:54 fluidd-config
drwxr-xr-x 4 klipper klipper 4096 Sep 3 23:54 kiauh-backups
drwxr-xr-x 11 klipper klipper 4096 Sep 3 23:36 klipper
drwxr-xr-x 5 klipper klipper 4096 Sep 3 23:50 klippy-env
drwxr-xr-x 5 klipper klipper 4096 Sep 3 23:54 mainsail
drwxr-xr-x 3 klipper klipper 4096 Sep 3 23:54 mainsail-config
drwxr-xr-x 8 klipper klipper 4096 Sep 3 23:53 moonraker
drwxr-xr-x 4 klipper klipper 4096 Sep 3 23:53 moonraker-env

USB ports

Each time the PC boots, it assigns a different USB port to each printer (only two are connected right now)

klipper@klipper1:~$ sudo dmesg | grep ttyUSB
[ 5.580820] usb 1-2.4: FTDI USB Serial Device converter now attached to ttyUSB0
[ 5.581119] usb 1-2.2: ch341-uart converter now attached to ttyUSB1
[ 1213.719327] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
[ 1215.624744] usb 1-2.4: FTDI USB Serial Device converter now attached to ttyUSB2
[ 2418.419348] ftdi_sio ttyUSB2: FTDI USB Serial Device converter now disconnected from ttyUSB2
[ 2420.328872] usb 1-2.4: FTDI USB Serial Device converter now attached to ttyUSB0

And the /dev/ttyUSB devices:

klipper@klipper1:~$ ls -ld /dev/ttyUSB*
crw-rw----+ 1 root dialout 188, 0 Sep 6 23:19 /dev/ttyUSB0
crw-rw----+ 1 root dialout 188, 1 Sep 6 23:25 /dev/ttyUSB1

The problem was, I thought I was being smart by specifying the USB port in printer.cfg, but which learned is most probably wrong after a reboot. Ex. for the E5Plus:

197 [mcu]
198 serial: /dev/ttyUSB2

And for the CR6-SE:

195 [mcu]
196 serial: /dev/ttyUSB1
197 restart_method: command

The correct thing to do is specify the /dev/serial/by-id

klipper@klipper1:/dev/serial/by-id$ ls -l /dev/serial/by-id
total 0
lrwxrwxrwx 1 root root 13 Sep 6 17:41 usb-1a86_USB_Serial-if00-port0 -> ../../ttyUSB1
lrwxrwxrwx 1 root root 13 Sep 6 23:19 usb-FTDI_FT232R_USB_UART_AB0KE6G5-if00-port0 -> ../../ttyUSB0

So for the E5Plus

[mcu]
serial: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AB0KE6G5-if00-port0

And the CR6-SE

[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command

I also discovered the udevadm command which provides a lot of information about a connected USB device

klipper@klipper1:~$ sudo udevadm info /dev/ttyUSB0
P: /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.4/1-2.4:1.0/ttyUSB0/tty/ttyUSB0
M: ttyUSB0
R: 0
U: tty
D: c 188:0
N: ttyUSB0
L: 0
S: serial/by-path/pci-0000:00:14.0-usb-0:2.4:1.0-port0
S: serial/by-id/usb-FTDI_FT232R_USB_UART_AB0KE6G5-if00-port0
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.4/1-2.4:1.0/ttyUSB0/tty/ttyUSB0
E: DEVNAME=/dev/ttyUSB0
E: MAJOR=188
E: MINOR=0
E: SUBSYSTEM=tty
E: USEC_INITIALIZED=2420730776
E: ID_BUS=usb
E: ID_MODEL=FT232R_USB_UART
E: ID_MODEL_ENC=FT232R\x20USB\x20UART
E: ID_MODEL_ID=6001
E: ID_SERIAL=FTDI_FT232R_USB_UART_AB0KE6G5
E: ID_SERIAL_SHORT=AB0KE6G5
E: ID_VENDOR=FTDI
E: ID_VENDOR_ENC=FTDI
E: ID_VENDOR_ID=0403
E: ID_REVISION=0600
E: ID_TYPE=generic
E: ID_USB_MODEL=FT232R_USB_UART
E: ID_USB_MODEL_ENC=FT232R\x20USB\x20UART
E: ID_USB_MODEL_ID=6001
E: ID_USB_SERIAL=FTDI_FT232R_USB_UART_AB0KE6G5
E: ID_USB_SERIAL_SHORT=AB0KE6G5
E: ID_USB_VENDOR=FTDI
E: ID_USB_VENDOR_ENC=FTDI
E: ID_USB_VENDOR_ID=0403
E: ID_USB_REVISION=0600
E: ID_USB_TYPE=generic
E: ID_USB_INTERFACES=:ffffff:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=ftdi_sio
E: ID_VENDOR_FROM_DATABASE=Future Technology Devices International, Ltd
E: ID_MODEL_FROM_DATABASE=FT232 Serial (UART) IC
E: ID_PATH=pci-0000:00:14.0-usb-0:2.4:1.0
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_4_1_0
E: ID_FOR_SEAT=tty-pci-0000_00_14_0-usb-0_2_4_1_0
E: ID_MM_CANDIDATE=1
E: DEVLINKS=/dev/serial/by-path/pci-0000:00:14.0-usb-0:2.4:1.0-port0 /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AB0KE6G>
E: TAGS=:uaccess:systemd:seat:
E: CURRENT_TAGS=:uaccess:systemd:seat:
klipper@klipper1:~$ sudo udevadm info /dev/ttyUSB1
P: /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.2/1-2.2:1.0/ttyUSB1/tty/ttyUSB1
M: ttyUSB1
R: 1
U: tty
D: c 188:1
N: ttyUSB1
L: 0
S: serial/by-path/pci-0000:00:14.0-usb-0:2.2:1.0-port0
S: serial/by-id/usb-1a86_USB_Serial-if00-port0
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.2/1-2.2:1.0/ttyUSB1/tty/ttyUSB1
E: DEVNAME=/dev/ttyUSB1
E: MAJOR=188
E: MINOR=1
E: SUBSYSTEM=tty
E: USEC_INITIALIZED=6202418
E: ID_BUS=usb
E: ID_MODEL=USB_Serial
E: ID_MODEL_ENC=USB\x20Serial
E: ID_MODEL_ID=7523
E: ID_SERIAL=1a86_USB_Serial
E: ID_VENDOR=1a86
E: ID_VENDOR_ENC=1a86
E: ID_VENDOR_ID=1a86
E: ID_REVISION=0264
E: ID_TYPE=generic
E: ID_USB_MODEL=USB_Serial
E: ID_USB_MODEL_ENC=USB\x20Serial
E: ID_USB_MODEL_ID=7523
E: ID_USB_SERIAL=1a86_USB_Serial
E: ID_USB_VENDOR=1a86
E: ID_USB_VENDOR_ENC=1a86
E: ID_USB_VENDOR_ID=1a86
E: ID_USB_REVISION=0264
E: ID_USB_TYPE=generic
E: ID_USB_INTERFACES=:ff0102:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=ch341
E: ID_USB_CLASS_FROM_DATABASE=Vendor Specific Class
E: ID_VENDOR_FROM_DATABASE=QinHeng Electronics
E: ID_MODEL_FROM_DATABASE=CH340 serial converter
E: ID_PATH=pci-0000:00:14.0-usb-0:2.2:1.0
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_2_1_0
E: ID_FOR_SEAT=tty-pci-0000_00_14_0-usb-0_2_2_1_0
E: ID_MM_CANDIDATE=1
E: DEVLINKS=/dev/serial/by-path/pci-0000:00:14.0-usb-0:2.2:1.0-port0 /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
E: TAGS=:seat:uaccess:systemd:
E: CURRENT_TAGS=:seat:uaccess:systemd:

Powering off the printers

If I power off the AC to the printers, the fans and motors turn off but their mainboards are still powered via the USB from the PC. The E5Plus’ screen remains lit but the CR6SE’s screen flickers annoyingly. So, I unplug the USB cables from the PC. The PC detects the disconnect and removes the USB devices:

klipper@klipper1:~$ sudo dmesg | grep USB
...
[ 7192.491354] ch341-uart ttyUSB1: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 7192.491871] ch341-uart ttyUSB1: usb_serial_generic_read_bulk_callback - urb stopped: -32
[ 7192.545458] usb 1-2.2: USB disconnect, device number 5
[ 7192.548319] ch341-uart ttyUSB1: ch341-uart converter now disconnected from ttyUSB1
[ 7193.313261] usb 1-2.4: USB disconnect, device number 6
[ 7193.314428] ftdi_sio ttyUSB2: FTDI USB Serial Device converter now disconnected from ttyUSB2

Changing the printer name in fluidd

By default, every printer is called fluidd, which is confusing because you have to remember which moonraker port each printer is connected to (7125, 7126, etc)

In the web GUI, go to Settings (the gear icon):

Then change the Printer Name:

The change happens as soon as you hit return – there is no Save button.

The printer name is stored in ~/printer_data/databases/data.mdb. I can see it with strings:

klipper@klipper1:~/E5Plus_data/database$ strings data.mdb
fluidd
authorized_users
update_manager
history
announcements
uiSettings{"general": {"instanceName": "E5Plus"}}
layout
cameras{}

But I cannot find it in the dump created by mdb_dump. First install lmdb-utils:

klipper@klipper1:~/E5Plus_data/database$ sudo apt install lmdb-utils
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
The following packages were automatically installed and are no longer required:
libmdb3 libmdbsql3
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
lmdb-utils
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 63.5 kB of archives.
After this operation, 389 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bookworm/main amd64 lmdb-utils amd64 0.9.24-1 [63.5 kB]
Fetched 63.5 kB in 0s (305 kB/s)
Selecting previously unselected package lmdb-utils.
(Reading database … 174663 files and directories currently installed.)
Preparing to unpack …/lmdb-utils_0.9.24-1_amd64.deb …
Unpacking lmdb-utils (0.9.24-1) …
Setting up lmdb-utils (0.9.24-1) …
Processing triggers for man-db (2.11.2-2) …

Then run mdb_dump. Note the trailing period:

klipper@klipper1:~/E5Plus_data/database$ cd ~/E5Plus_data/database
klipper@klipper1:~/E5Plus_data/database$ ls -l
total 88
-rw-r--r-- 1 klipper klipper 81920 Sep 6 23:00 data.mdb
-rw-r--r-- 1 klipper klipper 8192 Sep 7 00:07 lock.mdb
klipper@klipper1:~/E5Plus_data/database$ mdb_dump -f moonraker.txt -a .
klipper@klipper1:~/E5Plus_data/database$ fgrep E5Plus moonraker.txt
klipper@klipper1:~/E5Plus_data/database$ fgrep uiSetting moonraker.txt
klipper@klipper1:~/E5Plus_data/database$