World’s Cheapest ARM Debugger Is Actually RISC-V

[bogdanthegeek] has a lot of experience with the ARM platform, and their latest escapade into working with cheap ARM chips recovered from disposable vapes involved a realization that it was just plain wrong to debug such recovered silicon with something as expensive as a Pi Pico. No, they needed to build a debugger using the super cheap CH32V003.

What follows is an interesting tour around ARM Debug Access Port (DAP) programmers and creating a practical USB-connected device that actually works with modern toolchains. The first problem to be solved was that of host connectivity. These days, it’s USB or go home, which immediately limits the microcontrollers you can choose. Luckily for [Bogdan], they were aware of the excellent work by [cnlohr] on wedging low-speed USB support onto the RISC-V CH32v003 with the software-only bit-banging rv003usb, which provided a starting point. The next issue was to check for interrupt-driven endpoint support (needed for low-speed USB) in the Mac OS X kernel, which they knew was being dropped at an alarming rate (well, at least for full-speed). Luckily, the CMSIS-DAP standard required support for interrupt-driven USB endpoints, so kernel support was likely intact.

Next, [Bogdan] noticed that the DAPLink project had been ported to the bigger, native-USB WCH chips like the CH32V203, so it was a matter of porting this code to the diminutive CH32V003 using the rv003usb stack for the USB support using [cnlohr]’s ch32fun toolchain. There were a few bumps along the way with a lack of clarity in the DAPLink code, and some inconsistencies (across platforms) with the USB library dependencies of the upstream tool pyOCD, but they did get some tools working on at least Mac OS and some others on Linux. Which was nice.

We’ve covered the CH32V003 a fair bit, with people trying to give it all kinds of big-CPU tricks, such as speech recognition (of sorts) or even building a supercluster.

Piers holding a USB One ROM.

One ROM Gets A USB Stack

Our hacker [Piers Finlayson] is at it again, and this time he has added USB support to One ROM.

With this new connectivity you can attach your One ROM to your computer with a USB cable and then in a matter of seconds upload new firmware from your Chrome (or Chromium) web browser. This new connectivity will supplement but not replace the existing serial wire connectivity because the serial wire connectivity enables certain advanced use cases not supported by the USB stack, such as reprogramming a ROM in-place as it’s being served. The new USB interface will probably suit most users who just want to use One ROM to manage the ROMs for their old kit and who don’t need the extra functionality.

Addressing the question as to why he didn’t have USB connectivity from the start [Piers] claimed it was because he didn’t like soldering the USB sockets! But given this is a service he can get from his board house that is no longer his problem! [Piers] said he picked Micro USB over USB-C because the former demands less circuit board real estate than the latter. Squeezing everything on to the board remains a challenge!

Continue reading “One ROM Gets A USB Stack”

Franke A600 coffee machine with PicoVoice

Coffee By Command: The Speech2Touch Voice Hack

If you were to troll your colleagues, you can label your office coffee maker any day with a sticker that says ‘voice activated’. Now [edholmes2232] made it actually come true. With Speech2Touch, he grafts voice control onto a Franke A600 coffee machine using an STM32WB55 USB dongle and some clever firmware hacking.

The office coffee machine has been a suspect for hacking for years and years. Nearly 35 years ago, at Cambridge University, a webcam served a live view of the office coffee pot. It made sure nobody made the trip to the coffee pot for nothing. The funny, but in fact useless HTTP status 418 was brought to life to state that the addressed server using the protocol was in fact a teapot, in answer to its refusal to brew coffee. Enter this hack – that could help you to coffee by shouting from your desk – if only your arms were long enough to hold your coffee cup in place.

Back to the details. The machine itself doesn’t support USB keyboards, but does accept a USB mouse, most likely as a last resort in case the touchscreen becomes irresponsive. That loophole is enough: by emulating touchscreen HID packets instead of mouse movement, the hack avoids clunky cursors and delivers a slick ‘sci-fi’ experience. The STM32 listens through an INMP441 MEMS mic, hands speech recognition to Picovoice, and then translates voice commands straight into touch inputs. Next, simply speaking to it taps the buttons for you.

It’s a neat example of sidestepping SDK lock-in. No reverse-engineering of the machine’s firmware, no shady soldering inside. Instead, it’s USB-level mischief, modular enough that the same trick could power voice control on other touchscreen-only appliances.

Close up of a multi-USB tester PCB

Troubled USB Device? This Tool Can Help

You know how it goes — some gadgets stick around in your toolbox far longer than reason dictates, because maybe one day you’ll need it. How many of us held onto ISA diagnostic cards long past the death of the interface?

But unlike ISA, USB isn’t going away anytime soon. Which is exactly why this USB and more tester by [Iron Fuse] deserves a spot in your toolbox. This post is not meant to directly lure you into buying something, but seen how compact it is, it would be sad to challenge anyone to reinvent this ‘wheel’, instead of just ordering it.

So, to get into the details. This is far from the first USB tester to appear on these pages, but it is one of the most versatile ones we’ve seen so far. On the surface, it looks simple: a hand-soldered 14×17 cm PCB with twelve different connectors, all broken out to labelled test points. Hook up a dodgy cable or device, connect a known-good counterpart, and the board makes it painless to probe continuity, resistance, or those pesky shorts where D+ suddenly thinks it’s a ground line.

You’ll still need your multimeter (automation is promised for a future revision), but the convenience of not juggling probes into microscopic USB-C cavities is hard to overstate. Also, if finding out whether you have a power-only or a data cable is your goal, this might be the tool for you instead.

Rust Drives A Linux USB Device

In theory, writing a Linux device driver shouldn’t be that hard, but it is harder than it looks. However, using libusb, you can easily deal with USB devices from user space, which, for many purposes, is fine.  [Crescentrose] didn’t know anything about writing user-space USB drivers until they wrote one and documented it for us. Oh, the code is in Rust, for which there aren’t as many examples.

The device in question was a USB hub with some extra lights and gadgets. So the real issue, it seems to us, wasn’t the code, but figuring out the protocol and the USB stack. The post covers that, too, explaining configurations, interfaces, and endpoints.

There are other ancillary topics, too, like setting up udev. This lets you load things when a USB device (or something else) plugs in.

Continue reading “Rust Drives A Linux USB Device”

Wireless USB Autopsy

It might seem strange to people like us, but normal people hate wires. Really hate wires. A lot. So it makes sense that with so many wireless technologies, there should be a way to do USB over wireless. There is, but it really hasn’t caught on outside of a few small pockets. [Cameron Kaiser] wants to share why he thinks the technology never went anywhere.

Wireless USB makes sense. We have high-speed wireless networking. Bluetooth doesn’t handle that kind of speed, but forms a workable wireless network. In the background, of course, would be competing standards.

Texas Instruments and Intel wanted to use multiband orthogonal frequency-division multiplexing (MB-OFDM) to carry data using a large number of subcarriers. Motorola (later Freescale), HP, and others were backing the competing direct sequence ultra-wideband or DS-UWB. Attempts to come up with a common system degenerated.

Continue reading “Wireless USB Autopsy”

Prusa Mini with endoscope nozzle cam and pip preview

Prusa Mini Nozzle Cam On The Cheap

Let me throw in a curveball—watching your 3D print fail in real-time is so much more satisfying when you have a crisp, up-close view of the nozzle drama. That’s exactly what [Mellow Labs] delivers in his latest DIY video: transforming a generic HD endoscope camera into a purpose-built nozzle cam for the Prusa Mini. The hack blends absurd simplicity with delightful nerdy precision, and comes with a full walkthrough, a printable mount, and just enough bad advice to make it interesting. It’s a must-see for any maker who enjoys solder fumes with their spaghetti monsters.

What makes this build uniquely brilliant is the repurposing of a common USB endoscope camera—a tool normally reserved for inspecting pipes or internal combustion engines. Instead, it’s now spying on molten plastic. The camera gets ripped from its aluminium tomb, upgraded with custom-salvaged LEDs (harvested straight from a dismembered bulb), then wrapped in makeshift heat-shrink and mounted on a custom PETG bracket. [Mellow Labs] even micro-solders in a custom connector just so the camera can be detached post-print. The mount is parametric, thanks to a community contribution.

This is exactly the sort of hacking to love—clever, scrappy, informative, and full of personality. For the tinkerers among us who like their camera mounts hot and their resistor math hotter, this build is a weekend well spent.

Continue reading “Prusa Mini Nozzle Cam On The Cheap”