You Draw It, CNC Cuts It

[Jamie] aka [vector76] hit us with a line-tracing plugin for OctoPrint that cuts out whatever 2D shape you draw on a piece of wood. The plugin lets you skip the modeling step entirely, going straight from a CNC-mounted webcam that reads your scribbles and gives you a Gcode toolpath in return. The code is on GitHub and there’s a demo video embedded below.

Under the hood, OpenCV is doing a lot of the image processing, including line detection, and the iterative “find the line” and “move the toolhead” steps really show off what computer vision can do. It starts off with a fiducial arrow for scale and orientation, then it mores the webcam around the scene. The user can enter the usual milling parameters: speeds, feeds, depth of cut, tool offset, milling direction, etc. And then it gets to work.

Right now, it’s limited to paths with non-crossing lines, and probably with good contrast and a nice dark line — all the usual CV restrictions. But mounting a webcam to a CNC toolhead and using it for various pathing problems really opens up tons of possibilities: visual homing, workpiece edge finding, copying parts, custom fitting odd shapes, and more. This project is clearly an invitation to keep on hacking, an appetizer. Once you see the girl pirate robot that [Jamie]’s daughter made, you’ll get the idea.

We’ve seen a similar OpenCV approach used for center-finding bore holes, but while we’ve seen a few webcams used with laser cutters, the CNC mill applications seem largely untapped. Let us know in the comments if you’ve got some other good examples.

Continue reading “You Draw It, CNC Cuts It”

Finally, A Use For Old Cellphones

In what is now a three-year long search, I’ve finally found the perfect use for an old cellphone. And with it, the answer to a burning question: Why aren’t we hacking cellphones?

First, the application. The Octo4a project lets you use an old Android phone as a 3D printer server, web interface, and even time-lapse camera to make those nice movies where the print seems to grow up out of nothing before your eyes. It’s the perfect application for an old phone, making use of the memory, WiFi, graphics capabilities, and even the touch-screen if you want local control of your prints.

Connecting to the phone was the main hurdle that I’ve always seen in developing for cellphone projects, because I have robotics applications in mind. But Octo4a gets around this with low or no effort. Most 3D printers are designed to run on USB anyway, so connecting it to the phone is as simple as buying a USB OTG cable. With the USB port taken over, powering the phone long-run becomes a tiny problem, which can be solved with a Y-cable or a little solder. Keep the OS from going to sleep, somehow, and it’s problem solved!

But here’s why this isn’t a solution, and it points out the deeper problem with cellphone hacking that many pointed out in the comments three years ago. Octoprint is written in Python, and because of this is very easy to write extensions for and to hack on, if that’s your thing. When I first saw Octo4a, I thought “oh great, a working Android Python port”. Then I went to dig into the code.

Octo4a is written in Kotlin and uses the Gradle framework. It’s a complete port of Octoprint, not just to a different platform, but to a different programming language and to an almost entirely different programming paradigm. My hat is off to [feelfreelinux] for doing it, but my guess is that the community of other people fluent enough in Kotlin and Python to help port across upstream changes in Octoprint is a lot smaller than the community of Python programmers would have been. Octo4a is a great project, but it’s not a walk in the park to develop on it.

So all of you who wrote in the comments to my previous piece that it’s the Android software ecosystem that’s preventing phone reuse, well here’s the exception that proves your rule! A dedicated and talented, multi-lingual developer community could pull it off, but the hurdle is so high that few will rise to it.

Anyway, thanks [Feelfree Filip] for your great work! I’ll be putting this on my old S4.

Running Octoprint On A PinePhone Turns Out To Be Pretty Easy

3D printer owners have for years benefitted from using Octoprint to help manage their machines, and most people run Octoprint on a Raspberry Pi. [Martijn] made it run on his PinePhone instead, which turned out to be a surprisingly good fit for his needs.

While [Martijn] was working out exactly what he wanted and taking an inventory of what Raspberry Pi components and accessories it would require, it occurred to him that his PinePhone — an open-source, linux-based mobile phone — would be a good candidate for his needs. It not only runs Linux with a touchscreen and camera, but even provides USB, ethernet, and separate DC power input via a small docking bar. It looked like the PinePhone had it all, and he was right. [Martijn]’s project page gives a walkthrough of the exact steps to get Octoprint up and running, and it even turns out to not be particularly difficult.

[Martijn] is no stranger to hacking his PinePhone to do various things; we’ve already seen him add thermal imaging to his PinePhone. For those of you who are intrigued by the idea but don’t own a PinePhone? Check out the octo4a project, which allows running Octoprint on Android phone hardware.

Want Octoprint But Lack A Raspberry Pi? Use An Old Android Phone

3D printers and Octoprint have a long history together, and pre-built images for the Raspberry Pi make getting up and running pretty easy. But there’s also another easy way to get in on the Octoprint action, and that’s to run it on an Android phone with the octo4a project.

A modern smartphone has a lot of useful features that make it attractive as an Octoprint host. There is a built-in touchscreen, easy power management, a built-in camera, and the fact that people regularly upgrade to new phones means that older Android phones — still powerful pieces of hardware in their own right — are readily available at low cost. The project is still relatively new, so don’t forget to check the Octoprint community thread for this project if you give it a try.

If you are wondering what Octoprint is and what it brings to the table, our own Tom Nardi explained what it does and why it matters when he shared his own upgrade experience from 2018. A few details are no longer current — for example one is no longer likely to encounter a Printrbot — but it’s still a perfectly valid primer on adding great management functionality to a 3D printer.

Spaghetti Detective Users Boiled By Security Gaffe

For readers that might not spend their free time watching spools of PLA slowly unwind, The Spaghetti Detective (TSD) is an open source project that aims to use computer vision and machine learning to identify when a 3D print has failed and resulted in a pile of plastic “spaghetti” on the build plate. Once users have installed the OctoPrint plugin, they need to point it to either a self-hosted server that’s running on a relatively powerful machine, or TSD’s paid cloud service that handles all the AI heavy lifting for a monthly fee.

Unfortunately, 73 of those cloud customers ended up getting a bit more than they bargained for when a configuration flub allowed strangers to take control of their printers. In a frank blog post, TSD founder Kenneth Jiang owns up to the August 19th mistake and explains exactly what happened, who was impacted, and how changes to the server-side code should prevent similar issues going forward.

Screenshot from TSD web interface
TSD allows users to remotely manage and monitor their printers.

For the record, it appears no permanent damage was done, and everyone who was potentially impacted by this issue has been notified. There was a fairly narrow window of opportunity for anyone to stumble upon the issue in the first place, meaning any bad actors would have had to be particularly quick on their keyboards to come up with some nefarious plot to sabotage any printers connected to TSD. That said, one user took to Reddit to show off the physical warning their printer spit out; the apparent handiwork of a fellow customer that discovered the glitch on their own.

According to Jiang, the issue stemmed from how TSD associates printers and users. When the server sees multiple connections coming from the same public IP, it’s assumed they’re physically connected to the same local network. This allows the server to link the OctoPrint plugin running on a Raspberry Pi to the user’s phone or computer. But on the night in question, an incorrectly configured load-balancing system stopped passing the source IP addresses to the server. This made TSD believe all of the printers and users who connected during this time period were on the same LAN, allowing anyone to connect with whatever machine they wished.

Changed TSD code from GitHub
New code pushed to the TSD repository limits how many devices can be associated with a single IP.

The mix-up only lasted about six hours, and so far, only the one user has actually reported their printer being remotely controlled by an outside party. After fixing the load-balancing configuration, the team also pushed an update to the TSD code which puts a cap on how many printers the server will associate with a given IP address. This seems like a reasonable enough precaution, though it’s not immediately obvious how this change would impact users who wish to add multiple printers to their account at the same time, such as in the case of a print farm.

While no doubt an embarrassing misstep for the team at The Spaghetti Detective, we can at least appreciate how swiftly they dealt with the issue and their transparency in bringing the flaw to light. This is also an excellent example of how open source allows the community to independently evaluate the fixes applied by the developer in response to a discovered flaw. Jiang says the team will be launching a full security audit of their own as well, so expect more changes getting pushed to the repository in the near future.

We were impressed with TSD when we first covered it back in 2019, and glad to see the project has flourished since we last checked in. Trust is difficult to gain and easy to lose, but we hope the team’s handling of this issue shows they’re on top of things and willing to do right by their community even if it means getting some egg on their face from time to time.

Smart Mirror Talks To 3D Printers

As time goes by, it’s only getting easier to make a magic mirror. You know, a mirror connected to the internet that shows information like news, weather, or whatever you want, right there on top of your stunning visage. In [Forsyth Creations]’ case, that data includes 3D printer activity on the network — something that’s way more relevant to daily life than say, headlines about Kim Jong Un’s weight loss progress. The build video is embedded below.

Thanks to projects like [MichMich]’s MagicMirror, everything is done with modules, including really useful things such as OctoMirror that let you keep an eye on your 3D printer(s) using OctoPrint.

The electronics are pretty simple here — [Forsyth Creations] used the guts of an old monitor for the display and a Raspberry Pi to serve up the modules as a web page. The only tricky part is power, because the LCD is going to need so much more voltage than the Pi and the absolutely necessary LEDs around the edge, but a couple of buck converters do the trick.

After stripping the monitor of all of its unnecessary plastic, [Forsyth Creations] cut rear and front frames to support the electronics. That isn’t a piece of mirror glass, it’s actually one-way acrylic which is lighter and somewhat cheaper. [Forsyth Creations] designed and printed some corner support brackets that double as leveling screw holders to get the acrylic panel dialed in just right, and you can get these for yourself from GitHub. We think this would be a good early woodworking project or something for a long weekend. [Forsyth Creations] built this in three days on an apartment balcony using a minimum of tools.

We especially admire that once it was done, he hung it up with a French cleat. Those are so useful.

Continue reading “Smart Mirror Talks To 3D Printers”

Recore Hacks The Hidden Microcontroller For 3D Printing

No stranger to the world of 3D printers, [Elias Bakken] from the [Intelligent Agent] workshop has released a new controller board called Recore. The typical 3D printer has a dedicated controller which handles the real-time aspects of driving stepper motors. Many setups also have a second computer, often Linux-based, which is dedicated to supporting tasks like running an Octoprint server and interfacing to a digital camera to monitor print progress remotely. [Elias]’s design merges these together into one compact 12 x 12 x 4 cm package.

The Recore board is powered by an AllWinner A64 system on chip (SoC) which packs four ARM Cortex-A53 AArch64 cores running Debian Linux. The applications include Klipper, a project we wrote about when it was first introduced, and the OctoPrint print server. “But Linux is not a real-time operating system”, we hear you cry, “and controlling stepper motor drivers from an A64 SoC is just asking for trouble”. [Elias] could have addressed this problem by putting a secondary microcontroller on the board, but he found an even more elegant solution instead.

It turns out that there is already a secondary microcontroller hidden in plain sight, integrated into the A64 itself. See that small box labeled AR100 at the top of the block diagram? Meet the AR100, a controller originally intended to manage low-power operations of the A64. It is an OpenRISC 32-bit OR1k processor. But the AR100 is extremely underutilized, and [Elias] takes good advantage of this by repurposing it to those real-time tasks associated with a 3D printer controller. Watch the short video down below to learn how he solves a few of the nitty-gritty implementation details such as timers and communicating with the Linux processors. You might learn some tips from the other short videos in the series featuring some interesting debugging and problem solving sessions. There is a project GitHub repository and a Wiki full of good information and testing results.

[Elias] has a long history of building printer controllers. While his last one had to be abandoned because of manufacturing issues, he learned from that experience. Manufacturability was a top priority in the design of the Recore. We’re jealous of the well-appointed [Intelligent Agent] facility in Norway, but even more so of the nomadic lifestyle that [Elias] appears to enjoy — in his videos, he can be seen working from far-flung locales such as a tropical island resort and a laboratory floating in high Earth orbit. We’ve featured [Elias]’s projects in the past, including the Replicate 3D printer controller, a semi-automatic liquor cabinet, and the dog-operated treat dispenser.

Continue reading “Recore Hacks The Hidden Microcontroller For 3D Printing”