This article includes sponsorship or links with referral codes which will earn me an affiliate fee. These are clearly marked with a 💵 symbol. As mentioned in my last Oops! All Servos! post , I had three things left to test on my boards for me to be happy with them and their performance. The first was the bidirectionality of the level-shifters, the second was confirming the current measurement…
When I transitioned this blog from WordPress over to Zola , I had to rewrite all my HTML and CSS for the new engine. At that point, dark mode support was a bit of a pain in the CSS. You needed to duplicate a lot of code, including the nested cascade. It just felt like a bit of a kludge. I also hold some fairly strong, and occasionally controversial, opinions about dark mode, so I've been…
This article includes sponsorship or links with referral codes which will earn me an affiliate fee. These are clearly marked with a 💵 symbol. As described in my previous post , the Oops! All Servos! is an expansion board for Seeed Studio XIAO and Adafruit QT Py microcontrollers, with JR-style servo headers on all 11 GPIO pins. Each pin also has a bidirectional 3.3v-to-5v level shifter, and the…
This article includes sponsorship or links with referral codes which will earn me an affiliate fee. These are clearly marked with a 💵 symbol. I'm proud to announce Oops! All Servos! , a Seeed Studio XIAO / Adafruit QT Py compatible expansion board, with JR-style servo headers on all 11 GPIO pins. Each pin also has a bidirectional 3.3v-to-5v level shifter, and the board has external…
Last week I published a new web toy, a Peter de Jong attractor visualiser. peter-de-jong.mikecoats.xyz I've pretty much always been a Massive Nerd ™, so it's no surprise that in the mid 2000's I was a big fan of the TV show NUMB3RS . This sparked a real interest in popular science and recreational mathematics within me, and I soon found a copy of Clifford A. Pickover 's A Passion for Mathematics…
As summarised by Peter Salus in his book, "A Quarter Century of UNIX" , the Unix philosophy is: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface. inted is a great example of this philosophy. It's a daemon that's responsible for listening for incoming connections, spawning child…
I've been exchanging emails, discussing debugging protocols like I2C with my Spy! Break! Inject! and I thought that writing this process up as a blog post might be useful to others. I've built up a mystery project, for our worked example, that comprises a remote-control rotary encoder and a ring of LEDs as an output display. They are connected via a four-wire cable that looks…
This article includes sponsorship or links with referral codes which will earn me an affiliate fee. These are clearly marked with a 💵 symbol. I've mentioned this in a few other posts , but this past year PCBWay 💵 approached me with an offer to support my making and prototyping. In early December, Emily sent me a short message saying that PCBWay was preparing some small gifts in time for…
In part one of this series , I walked through the steps to generate self-signed, untrusted certificates for your private Caddy server. In part two , we skipped the manual generation and distribution steps and instead automatically retrieved trusted certificates for private servers. In this third and final installment, I'll show you how to extend this pattern out to other parts of your…
Mike's Opinionated Music Tagger Opinions are like arseholes. Everyone's got one, and they all stink. What is this? A tool for: recursing a convention of folders and files parsing artist, album, and track details from the folder and file names finding and processing cover art files applying everything as a standard set of tags to your music files It basically keeps a small collection of…
In part one of this series , I showed you how to generate self-signed, untrusted certificates for your private Caddy server. In this installment, I'll show you how to skip the manual generation and distribution steps and instead get trusted certificates for your private servers, automatically. DNS-based Automatic Certificates In the first post, we used an ACME HTTP-01 challenge to prove to…
Caddy is an excellent piece of software. With just a couple of lines of configuration it can serve webpages and applications securely, with automatically provisioned TLS certificates. For private, local-only servers it's a little trickier. In part one of this series, I'll show you how to generate self-signed, untrusted certificates for your private server. In part two, I'll go over how to use…
This article includes sponsorship or links with referral codes which will earn me an affiliate fee. These are clearly marked with a 💵 symbol. Earlier this year, Emily from PCBWay 💵 reached out over Mastodon to say she'd seen my Spy! Break! Inject! boards for sale on Tindie and would love to offer some free PCB prototyping for my projects. I was delighted to be approached for this and jumped…
The old adage goes, "if it's stupid, but it works, then it's not stupid." Today I'm testing its limits! This is possibly the cheapest and dirtiest 5-volt power supply money can buy. A small piece of strip-board, two pins and some big globs of solder is all you need to get "some" power out of a USB-A port. The pitch of the conductors within the USB-A shell is 2.5 mm, 2.0 mm and 2.5…
This article includes sponsorship or links with referral codes which will earn me an affiliate fee. These are clearly marked with a 💵 symbol. My Touchy Subject breakout boards are now available for purchase on my new Lectronz store alongside my Spy! Break! Inject! and VanSpoof projects! As described in my previous post , the Touchy Subject is a Qwiic/STEMMA QT compatible breakout board for…
I've you've read this blog for any time, you'll be aware I'm a massive shill for the Open Source Hardware Association. I've put several projects through certification , I've appeared on their Show and Tell podcast , and I even presented at this year's Open Hardware Summit in Edinburgh. October is Open Hardware Month , and they're celebrating it with a…
As I mentioned in my last post , I've been building a new PCB around the AT42QT2120 touch sensor. To make use of the board, I wanted to write a CircuitPython driver for it. Continuing on my open source adventures, I decided to publish the library for others to use. I linked to Adafruit's MP121 breakout last time, and it since it offers very similar functionality to the AT42QT2120, I…
This article includes sponsorship or links with referral codes which will earn me an affiliate fee. These are clearly marked with a 💵 symbol. I'm proud to announce the release of Touchy Subject , a Qwiic/STEMMA QT compatible breakout board for the AT42QT2120 12-key capacitive touch sensor, the development of which has been sponsored by PCBWay 💵 . The Touchy Subject is very similar to…
I've been on a bit of a 3D printing spree lately, designing and printing some props and accessories for my daughter's Halloween costume. She's going as a pirate, so in addition to the gold coins I designed for her last month, I've been designing a cap badge for her Tricorne. Here are the steps I followed to design and print a sewable badge. Draw the badge in Inkscape I started…
For CircuitPython Day 2025 , I wanted to show how I installed CircuitPython on one of my favourite, but unsupported, boards, the Freenove ESP32-S3-WROOM CAM Board . The Freenove board is not officially supported by CircuitPython , but it is possible to install one of the generic devkit builds with a little bit of research. The ESP32-S3 is a well-supported chip within CircuitPython, with 88 boards…
After 12 months of questing and grinding, I recently reached "level" 42. I received my first ever 3D printer as a present and, after going through the usual newbie process of printing out every recommended "upgrade" under the sun, I decided to put it to some practical use. We've been using an IKEA HÖVOLM as a helmet rack for the past few months, but it's not been ideal. The pegs are a little short…
I've been working on and off for the past few weeks towards a new project. I had the idea for a product and a plan for implementing it. I thought through a range of variants, came up with a theme and some cute names, and today I'm trashing it all. Introducing, and abandoning, the Battery-box Beasties. The idea was for a circuit board that could take the place of the AA or AAA batteries…
The last two Back 2 Basics posts were very much grounded in the analogue domain. This time we're going fully digital and looking at NMOS Switches. If you've got a microcontroller with 3.3 or 5 volt GPIO pins and need to switch much higher voltage loads, or loads with high current drain, there are a number of components you could draw on. There are BJT s and JFET s, but one of the…
We bought our first Night Light a fortnight after our daughter was born. It served us well over the two years before it finally broke. Parts wore down over time, bits started breaking, but it did a solid job of providing 10 hours of illumination, every night for two years. We liked it so much, we went out and bought another as a replacement. Like many pieces of consumer electronics on Amazon, it's…
metron almost ( noun ): A metronome that beats at almost, but never quite exactly, 60 beats per minute. This infuriating object is designed to thwart the goals of Hackaday's One Hertz Challenge contest . we want you to design a device where something happens once per second This device, by design, will never, ever, tick exactly once per second. The metron almost will sometimes tick once in every…
As I mentioned in my Kilnettle Tape Dispenser post, some of my favourite things about in-person events are the wee conversations that happen in the corridors and hallways around the event itself. I was lucky enough, at the recent Open Hardware Summit , to run into Vladimir from Lightside Instruments and chat to him at their table, showing off some of their interesting Pi and FPGA-based circuits…
In my last Back 2 Basics post we built a DAC from an R-2R ladder . We managed to toggle its pins with an ESP32 and show that it could produce an acceptable analogue signal from just three bits of input. This circuit works under test, but it would fail in real life, like when connecting it directly to a loudspeaker. Oscilloscope probes have a typical impedance in the megaohm range and have minimal…
One of the great things about in-person events is the opportunity for fortunate little meetings that happen at the periphery. I was lucky enough to meet Stephen Coyle whilst walking to catch a bus back to the centre of Edinburgh after Day 1 of the 2025 Open Hardware Summit . Unfortunately, I missed his Lightning Talk as I had to duck out of Day 2 early to catch my train back north. The Open Source…
A week ago, I migrated my Mastodon server from a self-hosted DigitalOcean droplet to an instance provided by Masto.host . The process was straightforward, took less than an hour, and the support from Hugo at Masto.host was top-notch. Running mikecoats.social on DigitalOcean cost $32 every month and meant I had do all of my own sysadmin-ing. I had to keep the Mastodon installation up to date and…
As is plainly clear from my efforts during the design of the VanSpoof boards, particularly in my earlier "Muntzing" post , I am not a trained professional when it comes to electronics. I even say as much during my OSHWA Summit talk , where I described myself as an "enthusiastic amateur" . I'd like to remedy that as much as possible, so I'm going to build a series of "back to basics"…
Apologies for the break in blogging, but I've spent the past month preparing for, and then giving, my talk "VanSpoof and F**dG3ar" at the 2025 Open Hardware Summit. Thanks to Michael Weinberg for the photo ! The whole day was livestreamed on OSHWA's YouTube channel , and each of the talks has been split out and made available as an individual video . My talk can be watched here . A heartfelt…
I'm excited to announce that in one month's time I'm presenting at @oshwassociation 's Open Hardware Summit 2025. My talk's titled "VanSpoof and F**dG3ar: Reverse engineering proprietary bike components to prevent e-waste" and covers everything involved in designing replacement, open source, parts to repair VanMoof e-bikes. A lot of you will have got the gist of things…
tl;dr I'm now selling my electronics boards, kits & products on Tindie ! I've listed my Spy! Break! Inject! and VanSpoof projects as assembled products, kits and bare PCBs. To celebrate the launch of my new Tindie store, I've applied an introductory discount of 20% on all items. This discount runs until the end of April, so you've about a week to take advantage. The prices are…
There's probably some nasty edge-case bugs to iron out, so it's maybe not 100% complete, but I'm happy to announce a combined v1.0 release of my VanSpoof hardware and firmware! All the source files are available under Free, Libre and Open licences from my repo on Codeberg, here . The board design and layout is released under the terms of the CERN Open Hardware Licence Version 2 -…
In my last post, about Low Tech Prototyping , I worked out the VanSpoof PCB had to be no bigger than 31.5 mm by 21.5 mm to fit in the space left over from removing the motor. I wanted to reuse the existing wiring in the cable and e-shifter body, so I had to find sockets to match. I roughly measured the connectors on VanMoof's e-shifter at about a 1 mm pitch. I therefore guessed that they were…
The Nankadf (aka Wanptek) WPS3010H power supply is an excellent piece of test equipment to have on the bench. It's cheap, reliable, and it's got a wide range for both voltage and current output. Problem It does have one fatal flaw; out of the box it beeps on every interaction. Turn it on? *beep* Reduce the current limit by 0.1 A? *beep* Nudge the voltage up by 0.01 V? *beep* Solution 1 -…
In my earlier VanSpoof prototyping posts I was working with circuit boards designed for testing and debugging, but not really suitable for installing on to the bike. They're too big and the wrong shape to fit in any of the any wee nooks or crannies around the bike, so I need to come up with something smaller and find somewhere to install it. A chap called Max reached out and suggested that we…
This post is a break from the technical show-and-tell theme I've adopted of late and is much more personal. Please feel free to skip if that's likely to bug you. Today marks ten years since the passing of Terry Pratchett. I grew up with his work; the first Discworld novel was published when I was just 3 months old. I spent my adolescence reading his books, playing the video games, and…
With my first few VanSpoof prototypes assembled and the firmware coming together nicely, I realised it was time to start working on the second and hopefully final version of the board. I had noticed that the L78L05, responsible for providing 5 V for the microcontroller's LDO and the USART pull-up resistor, was sometimes getting a little hot. The initial version of the VanSpoof circuit was my first…
Simplify VCD is a command-line tool designed to make working with Value Change Dump (VCD) files more efficient and faster. VCD files can quickly become large and unwieldy, making analysis and processing slow and cumbersome. This tool enables users to clip sections of VCD files, trim irrelevant data, and reduce the resolution to a more manageable timescale, significantly improving processing speed…
In part 1 and part 2 of building my first VanSpoof prototype, I managed to flash the microcontroller on the PCB with a blinky demo. This time round, let's see about sending and receiving some serial data. In this prototype, we'll read every byte that comes in to our USART, then echo it straight back out. We can adjust our code's forever loop to wait until it's read() a byte…
Last time , we built a prototype PCB. This time, let’s take it to blinky! All the code in this post, and the extra project files needed to build and flash it, can be found under the prototype-1 tag on my Codeberg repo . The first thing we need to do is set up our environment. Since this is a firmware project, rather than software, we need to be a bit stricter with how we write our code. We want to…
Let's look at building a prototype PCB for my VanSpoof project. In my first post on reverse engineering the VanMoof e-shifter, I confirmed there was a 24v power supply from the bike to the e-shifter. In the latest reversing post , I determined that the communication is Modbus RTU with its USART lines pulled up to 5v. That won't let me write a fully-featured firmware, but it's more than enough…
Last week , I built a small web app to show the next few trains that are scheduled to arrive at or depart from my local railway station. My two-year-old daughter loves trains, and since the station's in the city centre, next to all the shops , any time we can combine running errands with some playtime is well worth it. Having an at-a-glance view of all the trains soon to be at the station lets me…
At the end of the last post , I left everyone hanging, having tapped into and sniffed some data being transferred on the wires between the bike and the e-shifter. The questions to answer were: Is the bike the requester, or is it the responder? What speed and format was that data? What messages are being transmitted? The reliability of this e-shifter in the X3 and S3 has been argued as the cause of…
Anyone who's followed this blog for a while will know that we own a VanMoof e-bike, and we have a love/hate relationship with it due to its reliability. The most common and dreaded complaint for VanMoof owners is "Err 44". Error code 44 on a VanMoof X3 or S3 means that the bike cannot communicate with the e-shifter and gear shifting will not be available. VanMoof really tried to be the…
Spy! Break! Inject! is a 4-wire Monster-in-the-Middle circuit. Inserting this board inline with any 4-wire bus lets you spy on, break into and inject signals. It's a purpose-built breadboard for reverse engineers. The Würth terminal blocks have specifically been chosen to support wires down to 30 AWG for working with the smaller conductors commonly found in multicore communication cables.…
Cisco Catalyst 2960-X switches are now over a decade old and have been discontinued for over two years. As a result, companies are getting twitchy and have started to replace these switches, even though they still work and are still supported until 2027. On eBay, you can find 48-port PoE switches with stack connectors and either four SFP or two SFP+ uplink ports for under £100. This seems like a…
I've used WordPress to run this website for the last 4 years. I first hosted it with Laughing Squid , who resell Pressable's service and then for the last year or so I've hosted with Mythic Beasts , who run their own servers. I've enjoyed using WordPress as a piece of software; it does the job well. Without it, I'd never have blogged so often or on the range of topics I…
Following on from my first blog post in this series, today I’m looking at dependencies within .deb files. As with part 1, all of the source code files for these packages are available from my project’s repository . Impossible Dependencies First of all, we’ll build an un-installable package with impossible to resolve dependencies. The libreoffice Debian package is composed of a number individual…