The Coffee Machine Mainboard, with the all-important debug port being probed

This Coffee Machine Is DOOMed

Somehow, seeing DOOM on things that were never meant to run DOOM never gets old. It’s probably hard to get further into the “never meant to run DOOM” weeds than a coffee maker, but [Robin M.] has done it, and tells you exactly how in his excellent write-up. It adds a new dimension to hard mode — try and play while you’re waiting for your morning coffee.

Of course [Robin] doesn’t start with just any coffee machine; most sensible percolators won’t have any silicon capable of executing code, much less gaming on. The Spengler PSL50 machine [Robin] is hacking is a smart device with a Linux computer inside, although in this case there’s a point to having the smarts, as it’s meant to be a self-serve, pay-to-drink coffee kiosk. Handling payments and the touchscreen menus seems like justification enough for a microprocessor.

As you might expect, all the ‘smarts’ of this coffee maker are on the touchscreen module which aside from the brains of the operation — i.MX 6 ARM Cortex A9 processor — happens to have a handy a debug port. With just a little probing to find the right pins, he gets a console connection via that debug port to the 2013-era Linux build that runs the device, and then it’s off to the races. To make life even easier for [Robin], there was no uboot password set, nor any protections. So a simple setnv gets him into an sh prompt, and then he’s set. As for DOOM, he’s using fbDOOM, a version that renders directly to the framebuffer, and compiles it as a self-contained binary so he doesn’t have to care that everything on the Linux system is 13 years out of date.

Spengler made hacking this device relatively easy with their almost complete lack of security, and the resulting project is well documented, well executed, and tickles our funny bones the same way seeing DOOM on a toaster did. We haven’t covered DOOM on a refrigerator but it’s only a matter of time before the whole kitchen is killing demons, including the thermostat in the hall.

Continue reading “This Coffee Machine Is DOOMed” →

Print & Place: Add Embedded Electronics While FDM Printing

Although combining electronics and 3D-printed structures is fairly common, this usually entails some level of manual assembly. This contrasts strongly with the Print & Place approach demonstrated by [Oliver Child] et al. in their research article titled Print & Place: Using a 3D printer for Continuous Assembly of Electronic Devices.

An accompanying video is also provided which covers all the basics and showing a few ways in which a regular FDM printer can be used without modifications to embed these components. Rather than requiring a custom tool head the thermoplastic is used as a temporary adhesive to pick up parts that are placed in a printed tray elsewhere on the build plate.

This parts tray is created parametrically before being printed. Following this an operator has to populate this tray with the requisite parts so that the print head can pick them up when they are needed. This is done during the printing of the actual parts, with regular G-code added to move the head over to the needed part before using a bit of extruded plastic to adhere to it and lift it to its new home.

Subsequently these parts can be printed over to fully embed them, with this method supporting a range of parts. In the three demonstrations everything from small pre-populated PCBs to strips of conductive wire and braid were used together with rivets to provide paths between conductive traces.

Of course, with this being an open loop system you can expect many of the typical issues here, ranging from pick failures, placement misalignment and contact inconsistencies, as the authors encountered during their experiments. Here one could conceivably pitch adding a camera system as on typical pick & place machines to add a feedback loop that the firmware could then use for adjustments and to signal the human operator to assist.

Continue reading “Print & Place: Add Embedded Electronics While FDM Printing” →

Watching The Watchers

Although it used to be a much more rare event, now almost any time at dawn or dusk, provided clear weather, a human observer can walk outside, look up, and spot an artificial satellite passing overhead. This has caused some consternation among astronomers who have another source of pollution to deal with in their data, but has benefited society in other ways such as more reliable internet and better weather predictions. To keep an eye on what exactly is passing overhead, take a look at this tool built by [Armaan].

The browser-based satellite tracker uses simplified perturbations models (SGP4) to model the passes of every satellite that has passed a given location on Earth in the past seven days. The modeling is all done locally within the user’s browser, and can even be self-hosted through a fairly simple method that involves forking the project with a tool called Vercel. Not only does this tool find the satellite passes for that given location, though, but it also automatically downloads any imagery that those satellites sent back down to Earth.

The project itself is open source, so users can engage with the code without using Vercel if they choose. Beyond just checking out what happened to fly overhead in the last few days and checking out weather data without needing your own satellite dish to download the data yourself, this could also be useful for radio operators looking to make contacts with satellite repeaters or those wanting to keep tabs on crewed satellites like the International Space Station while it still remains in orbit.

Gesture Controls With Only A Camera

Back in 2002, [Takahiro Yonemura] and others built a system that used a single webcam-like device to track a user’s hand and generate inputs for a computer. Given that this was more than 20 years ago, the technological limitations were much greater than they are today. It wasn’t until nearly a decade later that we got something like the Microsoft Kinect, and even now many VR and gesture controls require something more than a simple camera. Although [Takahiro Yonemura]’s original paper (Japanese, Google Translate link) is now many decades old, he’s recently picked the project back up and used it to develop this game.

The original system worked by attempting to automatically identify the user’s fingers and head. The team had focused on user inputs for standard PCs, drawing characters in the air and allowing the software to interpret them and pass them to a computer. In the modern iteration the scope is slimmed down a bit. The system instead detects an open or closed hand, and can recognize when it leaves the camera’s view. For the game built around this concept, the player controls a dragon who whips his tail around a map. Closing and opening a hand generates a click in the game, and moving a hand off-screen pauses the game.

Although the game has relatively simple controls, these types of games can be quite fun and popular. From the video clip on the Steam page it looks like [Takahiro] is having plenty of fun playing it. Although we’d prefer it be open source so others can experiment with his gesture controls, we can also experiment with other camera-only gesture controls like this project which allows the user to move and interact with 3D objects in a virtual space.

How CRISPR Could Mark Mutated Cancer Cells For Termination

Over the past decades CRISPR, short for “clustered regularly interspaced short palindromic repeats”, has become somewhat of a household name, holding the promise of directly addressing genetic mutations by effectively removing, silencing, or even fixing them. Yet the original purpose of CRISPR is slightly less cute and cuddly: the evolutionary origin of these DNA sequences is that of a core component of the prokaryotic immune system.

In most medical applications today we only try to use CRISPR to detect sequences and then apply enzymes such as the well-known Cas9 to cut DNA at specific locations in the process of gene-editing. In a recent study (paywalled, bioRxiv pre-print) by Jingkun Zheng et al. in Nature such benign enzymes are dropped for Cas12a2, which turns a detection event into the release of a DNA-destroy enzyme as the molecular equivalent of a guided missile.

The pitched use case here is the detection of cancer-cell specific mutations in the DNA, following which the tumor cells will be instantly shredded from the inside. This could theoretically provide a cure for many cancer types, but should we expect to see this kind of therapy approved any time soon?

Continue reading “How CRISPR Could Mark Mutated Cancer Cells For Termination” →

Simulating And Visualising The Central Limit Theorem

Statistics is one of those fields which people tend to love or hate when they’re confronted with it during their school time. Although incredibly useful and even essential in many fields, including finance and engineering, it’s not always easy to grasp even the basics such as those pertaining to distributions. The Central Limit Theorem (CLT) is an essential element there, which [Greg Foletta] tried to make easier to comprehend using some code samples and visualizations.

The essential summary of the CLT is that if you take the mean of each sample in a set, once you have enough (>30) samples, the distribution of the sample means approaches a normal distribution. This is quite the theorem to put out there, with the supporting proof and explanations on e.g. Wikipedia being very mathematics-heavy.

We’d be remiss not to also mention the excellent [3Blue1Brown] video on the topic, which has even snazzier visualizations if you’re more into learning in that fashion. Even if you don’t think that you need to learn statistics and how distributions work, chances are that you’ll come across a situation where it could have come in handy, or at least have deepened your understanding of a topic like the probability of something happening.

Continue reading “Simulating And Visualising The Central Limit Theorem” →

DeviceTree For Hackers: Intro

Raspberry Pi has just leaked information on the Pi Zero 3W. They did it by publishing a DeviceTree file that describes the hardware of the Pi Zero. This is how we know it has the BCM2711 (Pi 4 CPU), makes use of PCIe (maybe it’s even exposed!), has an onboard power button, an extra power LED, and an eMMC option. If I were to guess, this will be the first dual-sided Pi Zero board, and if I were to have hope, it finally has USB-C.

Don’t believe it? Go read the DeviceTree file for yourself — it’s exceptionally easy to read it between the lines. DeviceTree files tell the Linux kernel, or other OS kernels, what CPU to expect, what drivers to load, which interfaces are exposed on your board, and the devices connected to those interfaces. Sometimes a proper DeviceTree file is the only thing you need to make a modern Linux OS run on a neglected SBC you own.

There are DeviceTree files powering technology all around you. Your phone has one, so does your router, your ARM laptop, and not even to speak of your SBCs. Some DeviceTree files are evil, being merely a thin layer between the Linux kernel and proprietary drivers; you will find these in phones with CPUs made by evil corporations. Most DeviceTree files are simply there to do their job.

Continue reading “DeviceTree For Hackers: Intro” →