2026-02-15 08:00:50

One of the joys of browsing secondhand shops is the possibility of finding old, perhaps restorable or hackable, electronics at low prices. Admittedly, they usually seem to be old flat-screen TVs, cheap speakers, and Blu-ray players, but sometimes you find something like the Dash, an educational toy robot. When [Jonathan] came across one of these, he decided to use it as a turtle robot. However, he found the available Python libraries insufficient, and improving on them required some reverse-engineering.
While [Jonathan] was rather impressed with the robot as it was – it had a good set of features, and thought had clearly been put into the design – he wanted a more open way to control it. There was already a quite useful, official Python program to control the robot over a BLE connection, but it only worked with Python 2 on OS X ([Jonathan] theorizes that it might have been written as a development tool, open-sourced, and not diligently supported afterwards). There were also a few third-party libraries ported to Python 3, but they all seemed to be missing some important features.
All the newer libraries were limited because the official library passed commands to an OS X binary, which handled the actual communication, so anyone wanting to do everything in Python would have to reverse-engineer the communications protocol. [Jonathan] therefore used Ghidra to decompile the binary. He first found the JSON structure used for message data, followed by a function that reads command information and sets up packets, and a mapping between Python command names and command IDs. Once he found the section that creates packets from data, he was able to port the program to Python 3. Interestingly, examining the binary revealed some previously unknown commands that appear to be capable of defining autonomous behavior.
We’ve previously seen Ghidra used on devices ranging from a camera to a router; if you’d like to learn more, there’s a HackadayU course on it.
2026-02-15 05:00:55

Are you in the mood for a retrocomputing deep dive into the Scriptovision Super Micro Script? It was a Canadian-made vintage video titler from the 80s, and [Cameron Kaiser] has written up a journey of repair and reverse-engineering for it. But his work is far more than just a refurbish job; [Cameron] transforms the device into something not unlike 8-bit homebrew computers of the era, able to upload and run custom programs with a limited blister keypad for input, and displaying output on a composite video monitor.

[Cameron] obtained a used unit and repaired it, reverse-engineered the scrambled address and data lines (an anti-cloning and anti-tampering measure), and converted it into something for which he could write his own software and run his own programs. As for uploading those programs? A bit-banged serial port on I/O borrowed from the blister keypad, running at a frankly quite respectable 19.2 kbps.
We hope you’re intrigued, because [Cameron] has one more surprise: he created a MAME emulator for the Super Micro Script called SMSBUG. Originally created to make software development easier, its existence also means anyone can join in on the vintage computing fun. The emulator, along with other handy utilities and info, is available on GitHub.
2026-02-15 02:00:14

The lovely thing about the x86 architecture is its decades of backwards compatibility, which makes it possible to run 1990s operating systems on modern-day hardware, with relatively few obstacles in the way. Recently [Yeo Kheng Meng] did just that with Windows 98 SE on a 2020 ThinkPad P12s Gen 1, booting it alongside Windows 11 and Linux from the same NVMe drive.
Naturally, after previously getting MS-DOS 6.22 from 1994 running on a 2020 ThinkPad X13, the step to doing the same with Windows 98 SE wasn’t that large. The main obstacles that you face come in the form of UEFI and hardware driver support.
Both ThinkPad laptops have in common that they support UEFI-CSM mode, also known as ‘classical BIOS’, as UEFI boot wasn’t even a glimmer yet in some drunk engineer’s eye when Win98 was released. After this everything is about getting as many hardware drivers scrounged together as possible.
[Yeo] ended up having to bodge on a USB 2.0 expansion card via a Thunderbolt dock as Win98 doesn’t have xHCI (USB 3.0) support. With that issue successfully bodged around using a veritable tower of adapters, installing Windows 98 was as easy as nuking Secure Boot in the BIOS, enabling UEFI-CSM along with Thunderbolt BIOS assist mode and disable Kernel DMA protection.
Because UEFI-CSM implementations tend to be buggy, the CREGFIX DOS driver was used to smooth things over. Another issue is the same that we chuckled about back in the day, as Windows 98 cannot address more than 512 MB of RAM by default. Fortunately patches by [Rudolph Loew] helped to fix this and some other smaller issues.
Unfortunately neither Intel nor NVIDIA have released Win98 drivers for quite some time, so there’s no graphics acceleration beyond basic VESA support and the SoftGPU driver. Disk access goes via the BIOS too rather than using an NVMe driver, so it’s not as zippy as it could be, but for Win9x it’s quite usable.
Finally ACPI wasn’t recognized by Win98, but it’s only fair to blame that on the complete flaming train wreck that is ACPI rather than anything to do with Windows. This particular issue was worked around by configuring the BIOS to support S3 power state and with that making Win98 happy again.
It’s honestly quite a shame that UEFI-CSM is largely ignored by new systems, as it makes installing even Windows 7 basically impossible, and thus creating probably the largest split within the x86 ecosystem since the arrival of AMD64/x86_64.
2026-02-14 23:00:47

Musician Brian Eno’s Oblique Strategies are like a Tarot card deck full of whimsical ideas meant to break up a creative-block situation, particularly in the recording studio. They’re loads of fun to pick one at random and actually try to follow the advice, as intended, but some of them are just plain good advice for creatives.
One that keeps haunting me is “Honor thy error as a hidden intention”, which basically boils down to taking a “mistake” and seeing where it leads you if you had meant to do it. I was just now putting the finishing touches on this week’s Hackaday Podcast, and noticed that we have been honoring a mistake for the past 350-something shows. Here’s how it happened.
When Mike and I recorded the first-ever podcast, I had no idea how to go about doing it. But I grew up in Nashville, and know my way around the inside of a music studio, and I’ve also got more 1990s-era music equipment than I probably need. So rather than do the reasonable thing, like edit the recording on the computer, we recorded to an archaic Roland VS-880 “Digital Studio” which is basically the glorified descendant of those old four-track cassette Portastudios.
If you edit audio in hardware, you can’t really see what you’re doing – you have to listen to it. And so, when I failed to notice that Mike and I were saying “OK, are you ready?” and “Sure, let’s go!”, it got mixed in with the lead-in music before we started the show off for real. But somehow, we said it exactly in time with the music, and it actually sounded good. So we had a short laugh about it and kept it.
And that’s why, eight years later, we toss random snippets of conversations into the intro music to spice it up. It was a mistake that worked. Had we been editing on the computer, we would have noticed the extra audio and erased it with a swift click of the mouse, but because we had to go back and listen to it, we invented a new tradition. Honor thy error indeed.
2026-02-14 20:00:37

There are many applications where you have limits on how much you can cram into a particular space. There are also many applications where you need as much battery as you can get. At the intersection of those applications, you may soon be able to 3D print custom batteries to fit into oddly shaped spaces that might otherwise go to waste.
Commercial batteries are typically cylindrical or rectangular. In theory, you could build tooling to make batteries of any size or shape you want, but it’s an expensive process in small quantities. [Lawrence Ulrich] on Spectrum talks about a new process, developed by [Gabe Elias], that can print anodes, cathodes, separators, and casings for custom battery shapes with no costly tooling.
As an example, consider an unmanned aerial vehicle crammed with avionics. You could put off-the-shelf batteries in the wings, but you’ll end up wasting a lot of space. A custom battery could fill the wing’s interior completely. The post also mentions batteries shaped like the earpieces of a pair of smart glasses.
A prototype showed that in the space of 48 cylindrical cells, the new process could deliver a printed battery that uses 35% more of the available volume and a 50% boost in energy density.
Could you do this yourself? Maybe, but it won’t be trivial. The current process requires a liquid electrolyte and the ability to produce thin layers of exotic materials. What oddly-shaped battery would you like to see? Us? We’d like to have a battery for a laptop that was spread uniformly so there wasn’t a heavy side that has the battery.
2026-02-14 17:00:12

Although [Jamie’s Brick Jams] has made many far more complicated motor design in the past, it’s nice to go back to the basics and make a motor that uses as few parts as possible. This particular design starts off with a driver coil and a magnetic rotor that uses two neodymium magnets. By balancing these magnets on both sides of an axis just right it should spin smoothly.

First this driver coil is energized with a 9 V battery to confirm that it does in fact spin when briefly applying power, though this means that you need to constantly apply pulses of power to make it keep spinning. To this end a second coil is added, which senses when a magnet passes by.
This sense coil is connected to a small circuit containing a TIP31C NPN power transistor and a LED. While the transistor is probably overkill here, it’ll definitely work. The circuit is shown in the image, with the transistor pins from left to right being Base-Collector-Emitter. This means that the sensor coil being triggered by a passing magnet turns the transistor on for a brief moment, which sends a surge of power through the driver coil, thus pushing the rotor in a typical kicker configuration.
Obviously, the polarity matters here, so switching the leads of one of the coils may be needed if it doesn’t want to spin. The LED is technically optional as well, but it provides an indicator of activity. From this basic design a larger LEGO motor is also built that contains many more magnets in a disc along with two circular coils, but even the first version turns out to be more than powerful enough to drive a little car around.