I’m back in town so this weekend after clearing up/setting up my new desk, I’ve been really trying to sort out all the junk and electronics and half-finished projects I have. If you remember previously, I bought a 3D printer to play with. I had a bit of success with some prints, but didn’t get very far before work and life interfered. I was able to get SD card prints to work, but after reading a lot about the printer, I decided I wanted a better control and job submission system.

Enter Octoprint! This is an open-source piece of software written in Python (using Flask) that purportedly makes it much easier to handle 3D printing. It includes features such as slicing, monitoring, generating timelapses of prints, statistics of prints, custom plugins, and more, all with a very pretty and attractive web interface.

There are several ways to set this up. One is to download a SD card image with Raspbian+Octoprint all set up called Octopi, but another way is to just install all the software yourself. The latter is what I opted for, and while I still didn’t get the printer to work, I figure it’s still a good exercise to try and document what the rest of the setup looks like.

For the Raspberry Pi I used a Model 3B that I had lying around, put into a SmartPi Touch, with a 32GB SD card. You may know that I have a fondness for ArchLinux, so the base distro of my rpi is set up using these instructions. On top of that base image I also did the following:

  1. Set the pacman gpg settings to be a little less dumb by adding keyserver hkp:// and keyserver-options timeout=1 to /etc/pacman.d/gnupg/gpg.conf.
  2. pacman -Syu
  3. Installing syslog-ng and enabling it via pacman -S syslog-ng and systemctl enable syslog-ng@default; systemctl start syslog-ng@default
  4. Installing wget, vim, htop, and other oddities
  5. Increased the GPU memory allocation to 256M
  6. Installed gnome, gnome-extra and xf86-video-fbdev
  7. systemctl enable gdm; systemctl start gdm
  8. Changing the root password

For setting up Octoprint proper:

  1. Getting python2-sarge from AUR, then makepkg -si
  2. Getting octoprint from AUR, then makepkg -si
  3. Getting mjpg-streamer from AUR, then makepkg -si
  4. Getting motion from AUR, then makepkg -si
  5. pacman -S curaengine

Setup seemed deceptively easy, so I tried to look for any further configuration instructions, but could not find much other than documentation on the format of the config YAML. So I figured it wouldn’t hurt to just start up octoprint and see what happens.

  1. systemctl enable octoprint
  2. systemctl start octoprint

Then it was a matter of navigating to my “octopi” server on port 5000 (no TLS of course). There was a wizard for setup! Sadly I don’t have screenshots but the process walked me through setting up a user account for octoprint, analytics/privacy settings, plugin blacklist, and some rudimentary details of the 3D printer I have. Unfortunately this is where I stalled because it turns out my printer still has a problem where I cannot connect to it over its USB interface. The story ends here for now, until I either get another printer or I get the USB interface to work.

Some other notes: Graphics works okay out of the box. The touchscreen is natively supported, which is great, however GDM and the GNOME desktop were both pretty sluggish, even when I upped the GPU memory. I tried some other configs/tweaks including setting up an experimental VC4 driver, but as per the “experimental” part, I was greeted with a black screen upon reboot, so I am not eager to play with that more for now.

I haven’t gotten around to setting up mjpg-streamer or motion up yet to be recognized by Octoprint, so that will be the topic of another blog post.