If It’s Electronic Paper, Why Not Print To It?

E-ink is supposed to be the electronic version of dead-tree paper, but there’s one enormous difference: how you get your images and text onto it. For paper, you print on it. E-ink? Well, it depends on what it’s hooked up to. If it’s an ESP32C3-based Xteink X4 and X3, then you can just print to that, too, thanks to [Nishant Joshi]’s fork of the popular CrossPoint firmware.

The fork implements the Internet Printer Protocol, IPP, on the ESP32-C3. It makes loading documents a breeze: select the printer in your operating system, and press print. To the computer, the reader advertises itself as a printer that provides monochrome, single-sided output at 300 DPI on A5 paper, and accepts Apple raster and PWG raster formats. Of course these raster images are enormous compared to the paltry RAM available on the microcontroller, so pixels are received and written row-by-row — both to the screen directly, and to the SD card for later perusal. That makes a folder on the SD card the equivalent of a printer’s output tray.

This interface is amazing in its simplicity, and we’d love to see it in other E-ink devices. It reminds us somehow of AlphaSmart word processors — which are still relevant today in large part because their ‘file transfer’ mechanism is to pretend to be a USB keyboard and type the document onto your computer. As long as IPP is available, so too will you be able to get documents onto this e-reader.

There’s A Whole Computer Inside This Mouse

[Gadget Industry] bills it as “a PC inside a Mouse“, but that depends on your definition of a “PC”. This is a Personal Computer inside a mouse, yes, but there’s nothing IBM-compatible about the tiny ARM board he squeezes inside what’s normally a peripheral — it actually started life as a smartphone, which only takes this build up a notch compared to starting with a single-board computer like a Pi.

Specifically, he starts with a Galaxy S21 5G. Starting with a Samsung means he can leave the stock Android alone and just take advantage of Samsung’s DeX desktop mode, rather than layer a Linux environment on top or replace the operating system entirely with something like Postmarket OS, which are both viable options.

Continue reading “There’s A Whole Computer Inside This Mouse”

A Split Keyboard Designed For Human Hands

A surprising number of things we use in everyday life retain most of their design cues from their 19th century ancestors. The bicycle retains the same basic design as it had in 1890, as does the sewing machine, the toilet, the car, and of course, the keyboard and the QWERTY layout from old typewriters. But we aren’t doomed to have our technology perpetually living in the past. [Paul] wanted a keyboard designed around human hands, rather than being designed around a machine, so he built this unique split keyboard.

The design of this specific keyboard went through around 50 iterations before he was comfortable with it. Other design goals here were for it to be portable, and the split nature of this certainly makes it more compact as does the use of low-profile switches. Each finger’s column is angled and spaced based on the needs of that finger, with the ring finger keys sitting higher and the index finger columns angled inward. Each thumb has access to three keys, one of which is the spacebar and the other two layer keys, which is what enables this design to get down to only 36 total keys.

When thinking about it for any length of time, the modern keyboard’s design holdovers from the 1800s are fairly wasteful compared to this split, ergonomic version. Especially when looking at the spacebar, which ties up both thumbs and only performs a single task, there’s a lot of opportunity for modern designs to be more efficient, more portable, and easier on one’s body. Feel free to take this to the extreme and use all three dimensions, as long as you aren’t particularly concerned with portability.

Running Zork On The Steam Controller

The Steam Controller is a device capable of many interesting feats. It’s intended to act simply as an input device, and yet, it can run games all on its own. As [Owen Feldman] has demonstrated, by having the Steam Controller play Zork.

[Owen] took quite an interesting route to get the there: he wrote a Rust program to emulate the Intel 8080 CPU and CP/M, as one does. This was ported to the Steam Controller, which emulates the CPU and memory on its own internal processor. I/O is streamed over USB, since the Steam Controller lacks a keyboard or screen. The CP/M disk lives in the controller, but the Zork disk data is streamed over USB as well.

If you’re wondering how [Owen] got all this running on the controller, he explains on his personal website. He used what appears to be an undocumented tool included with Steam that allows flashing firmware on the device. Helpfully, Valve also include the original firmware in the same folder, unsigned and only relying on a simple CRC checksum. [Owen] bricked his controller a couple times experimenting with this tool and loading his own firmware, but all came good in the end.

The Steam Controller is probably the oddest device to run CP/M for a while, but hey—it’s a neat party trick. Not much is going to top the auto-docking hack from a few months ago, though.

Continue reading “Running Zork On The Steam Controller”

Your Laptop Keyboard, On Another Device

It’s likely many of us have been in the position of first set-up on a machine such as a Raspberry Pi, and had keyboard problems. Either no spare keyboard is to be found, or a cluttered desk has to find extra space for a full-size keyboard. [Þórarinn] and [Arni] have a handy solution: use the existing keyboard on your laptop.

His approach is both ingenious and simple, as it’s only the K part of a KVM. On the laptop end, it’s a serial terminal, without the receiving side. The serial port in question is an RP2040 board which implements a USB-to-serial port. This serial connection goes to another RP2040, which does the ingenious bit. It’s a serial-to-USB HID keyboard. All of this means that keystrokes on the laptop are sent down the serial connection, and appear on the Pi or whatever computer as a USB keyboard as though typed locally. The mildly annoying first set-up can be done, and then it can be run via SSH or whatever other remote access protocol as normal. The code is provided, so anyone with a couple of RP2040 boards can do it.

We like this hack, because we’ve had the annoyance of needing a keyboard to set up what would otherwise be a completely headless machine too many times. It’s one to store away at the back of your mind, for those rare improvisational need-an-extra-keyboard moments.

Thanks [Henk] for the tip.

Read A USB Logitech Racing Wheel On An ESP32‑S3

Now that MCUs like the ESP32-S3 are quite capable computer systems including USB host functionality, it only makes sense that you can connect USB peripherals like Logitech racing wheels to them. Of course, these aren’t basic HID USB devices, so they require a bit of setup to make them start spitting out the data updates which we’re interested in. Making this process easy is the goal of the LogiWheelHost project for ESP32-S3 by [Joel Kometz].

This single-header library supports the G29, G923, G920, G27, G25, DFGT, Driving Force Pro wheels, building on top of the EspUsbHost project. As explained in the README, these racing wheels do not start streaming all updates to their controls once powered on, but boot into a restricted mode in which only neutral or combined-axis data is sent.

To change this you need to trigger the so-called native mode switch in which far more detailed information as well as updates on extended features like separate pedals, all buttons and the gear shifter become available. This is done by sending a HID output report to the USB device, which is easy enough.

In addition to handling this detail the library also provides an API using which obtaining and using these controller states in your own code should be quite easy. Presumably the library will work on or can be ported to other ESP32 MCUs that support host USB mode, so this might be good news for anyone who is looking to do more with that old Logitech racing wheel.

Wrist Welcomes Wii Nunchuk As Gloriously Ergonomic Macropad

[John Dingley] spends a lot of time editing videos, and as many of us know, when it comes to repetitive tasks the more ergonomic the better.

Keyboard shortcuts exist for common video editing functions, but [John] found that the vast majority of his work needed only three or four of them. Feeling he could do better than a three-key macropad, he turned to what’s perhaps one of the most ergonomic devices ever designed — the Wii Nunchuk.

A Wii Nunchuk is an I2C device, so there needs to be some intermediary device involved if you want to plug it into a computer. [John] solves that with the ANAVI Handle, an open source adapter to make a Nunchuk act like a USB Human Interface Device (HID). That addresses the connectivity problem, but the default firmware on the adapter only treats the Nunchuk as a mouse or joystick, so a few more changes are required before it can be pressed into service as an ultra-comfortable macropad.

The ANAVI Handle runs CircuitPython code on an RP2040, and modifying its behavior is as simple as plugging it in via USB and editing the code right on the device. One has to define some keyboard events, configure the device to act as a keyboard, and send the right events when the buttons or joystick get pushed. [John] provides the code, and walks through the changes on video so even those without any coding experience can get it done.

The Nunchuk design is still being sold and used today, and it’s shown up in all kinds of places. We’ve seen a Bluetooth-enabled one and even seen a Raspberry Pi Zero shoehorned into one, complete with HDMI output.

Continue reading “Wrist Welcomes Wii Nunchuk As Gloriously Ergonomic Macropad”