Xcc700: Self-Hosted C Compiler For The ESP32/Xtensa

With two cores at 240 MHz and about 8.5 MB of non-banked RAM if you’re using the right ESP32-S3 version, this MCU seems at least in terms of specifications to be quite the mini PC. Obviously this means that it should be capable of self-hosting its compiler, which is exactly what [Valentyn Danylchuk] did with the xcc700 C compiler project.

Targeting the Xtensa Lx7 ISA of the ESP32-S3, this is a minimal C compiler that outputs relocatable ELF binaries. These binaries can subsequently be run with for example the ESP-IDF-based elf_loader component. Obviously, this is best done on an ESP32 platform that has PSRAM, unless your binary fits within the few hundred kB that’s left after all the housekeeping and communication stacks are loaded.

The xcc700 compiler is currently very minimalistic, omitting more complex loop types as well as long and floating point types, for starters. There’s no optimization of the final code either, but considering that it’s 700 lines of code just for a PoC, there seems to be still plenty of room for improvement.

refurbished baby blue vice next to its refurbisher

Vice Of Old Brought To The Modern Age

People say they don’t make em’ like they used to, and while this isn’t always the case, it’s certainly true that old vices rarely die with time. This doesn’t mean they can’t use a refresh. [Marius Hornberger] recently backed that up when he decided to restore an old vice that had seen better days.

custom bearing and rod
Customized axial bearing assembly

When refreshing old tools, you’ll almost always start the same: cleaning up all the layers of grease and ruined paint. The stories that each layer could tell will never be known, but new ones will be made with the care put into it by [Marius]. Bearings for the tightening mechanism had become worn down past saving, requiring new replacements. However, simply swapping them with carbon copies would be no fun.

[Marius] decided to completely rethink the clamping mechanism, allowing for much smoother use. To do this was simple, just machine down new axial bearings, design and print a bearing cage, machine the main rod itself, and finally make a casing. It’s simple really, but he wasn’t done and decided to create a custom torque rod to hammer in his vicing abilities. Importantly, the final finish was done by spraying paint and applying new grease.

Old tools can often be given new life, and we are far from strangers to this concept at Hackaday. Make sure to check out some antique rotary tools from companies before Dremel!

Continue reading “Vice Of Old Brought To The Modern Age”

Linux Fu: Compose Yourself!

Our computers can display an astonishing range of symbols. Unicode alone defines more than 150,000 characters, covering everything from mathematical operators and phonetic alphabets to emoji and obscure historical scripts. Our keyboards, on the other hand, remain stubbornly limited to a few dozen keys.

On Windows, the traditional workaround involves memorizing numeric codes or digging through character maps. Linux, being Linux, offers something far more flexible: XCompose. It’s one of those powerful, quietly brilliant features that’s been around forever, works almost everywhere, and somehow still feels like a secret.

XCompose is part of the X11 input system. It lets you define compose sequences: short key sequences that produce a Unicode character. Think of it as a programmable “dead key” system on steroids. This can be as simple as programming an ‘E’ to produce a Euro sign or as complex as converting “flower” into a little flower emoji. Even though the system originated with X11, I’ve been told that it mostly works with Wayland, too. So let’s look deeper.

Continue reading “Linux Fu: Compose Yourself!”

The Confusing World Of Bus Mice

The USB port which first appeared on our computers some time in the mid-1990s has made interfacing peripherals an easy task, save for the occasional upside down connector. But in the days before USB there were a plethora of plugs and sockets for peripherals, often requiring their own expansion card. Among these were mice, and [Robert Smallshire] is here with a potted history of the many incompatible standards which confuse the retrocomputing enthusiast to this day.

The first widely available mice in the 1980s used a quadrature interface, in which the output from mechanical encoders coupled to the mouse ball is fed directly to the computer interface which contains some form of hardware or microcontroller decoder. These were gradually superseded by serial mice that used an RS-232 port, then PS/2 mice, and finally the USB variant you probably use today.

Among those quadrature mice — or bus mice, as early Microsoft marketing referred to them — were an annoying variety of interfaces. Microsoft, Commodore, and Atari mice are similar electrically and have the same 9-pin D connector, yet remain incompatible with each other. The write-up takes a dive into the interface cards, where we find the familiar 8255 I/O port at play. We’d quite like to have heard about the Sun optical mice with their special mouse pad too, but perhaps their omission illustrates the breadth of the bus mouse world.

This piece has certainly broadened our knowledge of quadrature mice, and we used a few of them back in the day. If you only have a USB mouse and your computer expects one of these rarities, don’t worry, there’s an adapter for that.

Know Audio: Microphone Basics

A friend of mine is producing a series of HOWTO videos for an open source project, and discovered that he needed a better microphone than the one built into his laptop.  Upon searching, he was faced with a bewildering array of peripherals aimed at would-be podcasters, influencers, and content creators, many of which appeared to be well-packaged versions of very cheap genericised items such as you can find on AliExpress.

If an experienced electronic engineer finds himself baffled when buying a microphone, what chance does a less-informed member of the public have! It’s time to shed some light on the matter, and to move for the first time in this series from the playback into the recording half of the audio world. Let’s consider the microphone.

Background, History, and Principles

A microphone is simply a device for converting the pressure variations in the air created by sounds, into electrical impulses that can be recorded. They will always be accompanied by some kind of signal conditioning preamplifier, but in this instance we’re considering the physical microphone itself. There are a variety of different types of microphone in use, and after a short look at microphone history and a discussion of what makes a good microphone, we’ll consider a few of them in detail. Continue reading “Know Audio: Microphone Basics”

Microsoft’s WebTV Is Being Revived By Fans

During the 1990s, everyone wanted to surf the information super-highway — also known as the World Wide Web or just ‘Internet’ — but not everyone was interested in getting one of those newfangled personal computers when they already had a perfect good television set. This opened a market for TV-connected thin clients that could browse the web with a much lower entry fee, with the WebTV service being launched in 1996. Bought by Microsoft in 1997 and renamed MSN TV, it lasted until 2013. Yet rather than this being the end, the service is now being revived by members of the community through the WebTV Redialed project.

The DreamPi adds dial-up support back to old hardware.
The DreamPi adds dial-up support back to old hardware.

The project, which was recently featured in a video by [MattKC], replaces the original back-end services that the thin clients connected to via their dial-up modems, with the first revision using a proprietary protocol. The later and much more powerful MSN TV 2 devices relied on a standard HTTP-based protocol running on Microsoft’s Internet Information Services (IIS) web server and Windows.

What’s interesting about this new project is that it allows you to not just reconnect your vintage WebTV/MSN TV box, but also use a Windows-based viewer and more. What difficulty level you pick depends on the chosen hardware and connection method. For example, you can pair the Raspberry Pi with a USB modem to get online thanks to the DeamPi project.

Interestingly, DreamPi was created to get the Sega Dreamcast back online, with said console also having its own WebTV port that can be revived this way. Just in case you really want to get the full Dreamcast experience.

Continue reading “Microsoft’s WebTV Is Being Revived By Fans”

39C3: Liberating ESP32 Bluetooth

Bluetooth is everywhere, but it’s hard to inspect. Most of the magic is done inside a Bluetooth controller chip, accessed only through a controller-specific Host-Controller Interface (HCI) protocol, and almost everything your code does with Bluetooth passes through a binary library that speaks the right HCI dialect. Reverse engineering these libraries can get us a lot more control of and information about what’s going on over the radio link.

That’s [Anton]’s motivation and goal in this reversing and documentation project, which he describes for us in this great talk at this year’s Chaos Communication Congress. In the end, [Anton] gets enough transparency about the internal workings of the Bluetooth binaries to transmit and receive data. He stops short of writing his own BT stack, but suggests that it would be possible, but maybe more work than one person should undertake.

So what does this get us? Low-level control of the BT controller in a popular platform like the ESP32 that can do both classic and low-energy Bluetooth should help a lot with security research into Bluetooth in general. He figured out how to send arbitrary packets, for instance, which should allow someone to write a BT fuzzing tool. Unfortunately, there is a sequence ID that prevents his work from turning the controller into a fully promiscuous BT monitor, but still there’s a lot of new ground exposed here.

If any of this sounds interesting to you, you’ll find his write-up, register descriptions, and more in the GitHub repository. This isn’t a plug-and-play Bluetooth tool yet, but this is the kind of groundwork on a popular chip that we expect will enable future hacking, and we salute [Anton] for shining some light into one of the most ubiquitous and yet intransparent corners of everyday tech.