[CNLohr] Reverses Vive, Valve Engineers Play Along

[CNLohr] needs no introduction around these parts. He’s pulled off a few really epic hacks. Recently, he’s set his sights on writing a simple, easy to extend library to work with the HTC Vive VR controller equipment, and in particular the Watchman controller.

There’s been a lot of previous work on the device, so [Charles] wasn’t starting from scratch, and he live-streamed his work, allowing others to play along. In the process, two engineers who actually worked on the hardware in question, [Alan Yates] and [Ben Jackson], stopped by and gave some oblique hints and “warmer-cooler” guidance. A much-condensed version is up on YouTube (and embedded below). In the links, you’ll find code and the live streams in their original glory, if you want to see what went down blow by blow. Code and more docs are in this Gist.

Continue reading “[CNLohr] Reverses Vive, Valve Engineers Play Along”

Fail More: The Story Of [CNLohr]’s Clear Keytar

[CNLohr] is kinda famous round these parts; due to some very impressive and successful hacks. However, for his 20k subscriber video, he had a bit to say about failure.

Of course glass circuit boards are cool. Linux Minecraft things are also cool. Hacks on the ESP8266 that are impressive enough people thought they were an April Fool’s joke are, admittedly, very cool. (Though, we have to confess, posting on April 1 may have added to the confusion.)  For a guy who puts out so many successes you’d think he’d talk about the next ones planned; hyping up his growing subscriber base in order to reel in those sweet sweet Internet dollars.

Instead he shows us a spectacular failure. We do mean spectacular. It’s got beautiful intricate copper on glass key pads. He came up with clever ways to do the lighting. The circuit is nicely soldered and the acrylic case looks like a glowing crystal. It just never went anywhere and never worked. He got lots of people involved and completely failed to deliver.

However, in the end it was the failure that taught him what he needed to know. He’s since perfected the techniques and skills he lacked when he started this project a time ago. We’ve all had experiences like this, and enjoyed hearing about his. What failure taught you the most?

Continue reading “Fail More: The Story Of [CNLohr]’s Clear Keytar”

[CNLohr], ESP8266, USB…

“Round up the usual suspects…”

[CNLohr] just can’t get enough of the ESP8266 these days — now he’s working on getting a version of V-USB software low-speed USB device emulation working on the thing. (GitHub link here, video also embedded below.) That’s not likely to be an afternoon project, and we should warn you that it’s still a project in progress, but he’s made some in-progress material available, and if you’re interested either in USB or the way the mind of [CNLohr] works, it’s worth a watch.

In this video, he leans heavily on the logic analyzer. He’s not a USB expert, and couldn’t find the right resources online to implement a USB driver, so he taught himself by looking at the signals coming across as he wiggled a mouse on his desk. Using the ever-popular Wireshark helped him out a lot with this task as well. Then it was time to dig into Xtensa assembly language, because timing was critical.

Speaking of timing, one of the first things that he did was write some profiling routines so that he could figure out how long everything was taking. And did we mention that [CNLohr] didn’t know Xtensa assembly? So he wrote routines in C, compiled them using the Xtensa GCC compiler, and backed out the assembly. The end result is a mix of the two: assembly when speed counts, and C when it’s more comfortable.

Continue reading “[CNLohr], ESP8266, USB…”

[CNLohr]’s Glass PCB Fabrication Process

One of [CNLohr]’s bigger claims to fame is his process for making glass PCBs. They’re pretty much identical to regular, fiberglass-based PCBs, but [CNLohr] is building circuits on microscope slides. We’ve seen him build a glass PCB LED clock and a Linux Minecraft Ethernet thing, but until now, [CNLohr]’s process of building these glass PCBs hasn’t been covered in the depth required to duplicate these projects.

This last weekend, [CNLohr] put together a series of videos on how he turns tiny pieces of glass into functional circuits.

At the highest level of understanding, [CNLohr]’s glass PCBs really aren’t any different from traditional homebrew PCBs made on copper clad board. There’s a substrate, and a film of copper that is etched away to produce traces and circuits. The devil is in the details, and there are a lot of details for this build. Let’s dig deeper.

Continue reading “[CNLohr]’s Glass PCB Fabrication Process”

[CNLohr] Demos His Photoetch PCB Process

etch

If you’re going to learn something, it only makes sense to learn from a master. [CNLohr] is known around these parts for his fablous PCBs, and he’s finally started to document his entire fabrication process.

[CNLohr] is using a photoetch process, where a mask is created with a laser printer on overhead transparencies. He covers the copper clad boards with a Riston photosensitive mask—available here, and they accept Bitcoin—sent through a laminator, and exposed with the laser printed mask and a UV grow bulb. After the mask has developed, [CNLohr] drops his boards into a ferric chloride bath that eats away the unexposed copper. He then removes the photomask with acetone and cuts the boards with a pair of aircraft snips, and they’re ready to be soldered up with components.

Yes, home PCB etching tutorials are pretty much a solved problem, but [CNLohr]’s work speaks for itself. He’s also the guy who made a microcontroller/Linux/Minecraft thing on a glass microscope slide. Learning from a guy with these skills means you’re learning from one of the best.

Video below, and there’s also a video going over the design of a PCB using KiCAD (!) and TopoR (!!!) available here.

Continue reading “[CNLohr] Demos His Photoetch PCB Process”

[CNLohr]’s Microscope Slide Linux AVR Minecraft… Thing

We’ve been following [CNLohr]’s process of creating an AVR-powered microscope slide running Linux and interfacing redstone circuits in Minecraft to real world electronic for a while now, but we’re really at a loss for words on how it works. Well, now there’s a video explaining everything you want to know about this amazingly complicated and overwrought thing.

The device is powered by an AVR microcontroller and Ethernet controller running [Fabrice Bellard]’s JSLinux in a browser. [CNLohr] added a few bits to JSLinux allowing him map the x86 IO ports emulated inside JSLinux to the AVR’s IO ports. This allows him to query the status – both analog and digital – using just a browser. Very cool, but [CNLohr] can also run his Minecraft server optimized for 8-bit devices on this microscope slide server to create a bridge between real electronics and redstone circuits.

To sum up what’s going on here, [Bellard] created an x86 emulator in JavaScript, and put Linux on it. [CNLohr] is serving this from a microcontroller attached to a circuit built on a microscope slide so he can blink an LED from within Minecraft. It’s the most beautifully over engineered and useless thing we’ve ever seen, basically.

In the video after the break, you can see [CNLohr]’s overly convoluted walk through of what’s going on with this microscope slide server. As a little bonus, you can also catch a glimpse of Hackaday at 00:20 in [CNLohr]’s most visited / new tab thingy in Firefox. We’re honored, really.

Continue reading “[CNLohr]’s Microscope Slide Linux AVR Minecraft… Thing”

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.