The edge of a laptop is shown with a USB cable plugged into it. the other end of the cable is plugged into a Raspberry Pi Zero.

SSH Over USB On A Raspberry Pi

Setting up access to a headless Raspberry Pi is one of those tasks that should take a few minutes, but for some reason always seems to take much longer. The most common method is to configure Wi-Fi access and an SSH service on the Pi before starting it, which can go wrong in many different ways. This author, for example, recently spent a few hours failing to set up a headless Pi on a network secured with Protected EAP, and was eventually driven to using SSH over Bluetooth. This could thankfully soon be a thing of the past, as [Paul Oberosler] developed a package for SSH over USB, which is included in the latest versions of Raspberry Pi OS.

The idea behind rpi-usb-gadget is that a Raspberry Pi in gadget mode can be plugged into a host machine, which recognizes it as a network adapter. The Pi itself is presented as a host on that network, and the host machine can then SSH into it. Additionally, using Internet Connection Sharing (ICS), the Pi can use the host machine’s internet access. Gadget mode can be enabled and configured from the Raspberry Pi Imager. Setting up ICS is less plug-and-play, since an extra driver needs to be installed on Windows machines. Enabling gadget mode only lets the selected USB port work as a power input and USB network port, not as a host port for other peripherals.

An older way to get USB terminal access is using OTG mode, which we’ve seen used to simplify the configuration of a Pi as a simultaneous AP and client. If you want to set up headless access to Raspberry Pi desktop, we have a guide for that.

Thanks to [Gregg Levine] for the tip!

ESP32 BTE Keyboard

Wired To Wireless: ESP32 Gives Your USB Keyboard Bluetooth

Few things rival the usability and speed of a full-sized keyboard for text input. For decades, though, keyboards were mostly wired, which can limit where you use your favorite one. To address this, [KoStard]’s latest project uses an ESP32 to bridge a USB keyboard to BLE devices.

The ESP32-S3 packs a ton of fantastic functionality into its small size and low price—including USB-OTG support, which is key here. Taking advantage of this, [KoStard] programmed an ESP32-S3 to host a keyboard over its USB port while connecting via BLE to devices like cellphones.

There are some slick tricks baked in, too: you can pair with up to three devices and switch between them using a key combo. Some of you might be wondering how you can just plug a microcontroller into a keyboard and have it work. The truth is, it doesn’t without extra hardware. Both the keyboard and ESP32-S3 need power. The simplest fix is a powered USB hub: it can be battery-powered for a truly mobile setup, or use a wired 5V supply so you never have to charge batteries.

We love seeing a simple, affordable microcontroller extend the usefulness of gear you already have. Let us know in the comments about other hacks you’ve used to connect keyboards to devices never designed for them.

Continue reading “Wired To Wireless: ESP32 Gives Your USB Keyboard Bluetooth”

Graphing Calculator Gets USB-C Upgrade

Unlike Texas Instruments, whose graphing calculators have famously not made technological improvements in decades despite keeping the same price tag, HP has made a few more modern graphing calculators in the last few years. One of which is the HP Prime which boasts hardware from the mid-2010s including an ARM processor, a color screen, and rechargeable lithium battery. But despite this updated hardware it’s still using micro-USB for data and charging. [David] wanted to fix that by giving this calculator a USB-C port.

The first steps were disassembling the calculator case and removing the micro-USB port. The PCB is glued to the LCD screen which isn’t ideal, but he was able to work on it with everything attached. The parts are small enough to need a microscope, and with a hot air station he was quickly able to remove the USB port. His replacements from a generic online retailer were able to be soldered without much effort, but there was one major complication. The new USB-C ports didn’t account for the “On The Go” mode supported by micro-USB and were shorting a pin to ground which put the calculator into “host” mode instead of acting as a device. But using the microscope and cutting a trace on the PCB disabled this mode permanently and got the calculator working properly.

As far as modernizing calculators go, it seems like the HP Prime checks a lot of boxes, with the major downside that the LCD screen and more powerful processor means that the battery needs to be charged more often than the old TI calculators. Rather than carry a dongle around everywhere, [David] found this to be a much more efficient change to his trusty HP. If you’re still stuck using TI calculators, though, there are a few ways to modernize those as well like this build which adds a lithium battery or this one which ports a few Game Boy games to the platform.

Plug Into USB, Read Hostname And IP Address

Ever wanted to just plug something in and conveniently read the hostname and IP addresses of a headless board like a Raspberry Pi? Chances are, a free USB port is more accessible than digging up a monitor and keyboard, and that’s where [C4KEW4LK]’s rpi_usb_ip_display comes in. Plug it into a free USB port, and a few moments later, read the built-in display. Handy!

The device is an RP2350 board and a 1.47″ Waveshare LCD, with a simple 3D-printed enclosure. It displays hostname, WiFi interface, Ethernet interface, and whatever others it can identify. There isn’t even a button to push; just plug it in and let it run.

Here’s how it works: once plugged in, the board identifies itself as a USB keyboard and a USB serial port. Then it launches a terminal with Ctrl-Alt-T, and from there it types and runs commands to do the following:

  1. Find the serial port that the RP2350 board just created.
  2. Get the parsed outputs of hostname, ip -o -4 addr show dev wlan0, ip -o -4 addr show dev eth0, and ip -o -4 addr show to gather up data on active interfaces.
  3. Send that information out the serial port to the RP2350 board.
  4. Display the information on the LCD.
  5. Update periodically.

The only catch is that the host system must be able to respond to launching a new terminal with Ctrl-Alt-T, which typically means the host must have someone logged in.

It’s a pretty nifty little tool, and its operation might remind you, in concept, of how BadUSB attacks happen: a piece of hardware, once plugged into a host, identifies itself to the host as something other than what it appears to be. Then it proceeds to input and execute actions. But in this case, it’s not at all malicious, just convenient and awfully cute.

USB Video Capture Devices: Wow! They’re All Bad!!

[VWestlife] purchased all kinds of USB video capture devices — many of them from the early 2000s — and put them through their paces in trying to digitize VHS classics like Instant Fireplace and Buying an Auxiliary Sailboat. The results were actually quite varied, but almost universally bad. They all worked, but they also brought unpleasant artifacts and side effects when it came to the final results. Sure, the analog source isn’t always the highest quality, but could it really be this hard to digitize a VHS tape?

Continue reading “USB Video Capture Devices: Wow! They’re All Bad!!”

Standalone USB-PD Stack For All Your Sink Needs

USB PD is a fun protocol to explore, but it can be a bit complex to fully implement. It makes sense we’re seeing new stacks pop up all the time, and today’s stack is a cool one as far as code reusability goes. [Vitaly] over on Hackaday.io brings us pdsink – a C++ based PD stack with no platform dependencies, and fully-featured sink capabilities.

Continue reading “Standalone USB-PD Stack For All Your Sink Needs”

USB DAC Comes With Graphic EQ

[shiura] had a problem — they wanted a nice high-quality audio output for their computer, but they didn’t fancy any of the DACs that were readily available on the market. They specifically wanted one that was affordable, capable, and included a graphic equalizer so they could simply hook it up to a regular amplifier and dial in the perfect sound. When they couldn’t find such a device, they decided to build their own.

The build is based around a Raspberry Pi Pico, chosen for its feature set that makes it easy to configure as a USB audio device. It’s paired with a Waveshare Pico Audio module, which is based on the PCM5101A stereo DAC and slots neatly on top of the microcontroller board. An SPI-controlled LCD screen was also fitted in order to display the graphic equalizer interface that [shiura] whipped up. The project write-up explains the code required to implement the equalizer in detail. A four-channel equalizer was possible on the original Pi Pico (RP2040), while upgrading to a more powerful Pi Pico 2 (RP2350) allowed implementing eight channels in total.

If you’re looking to build a digital audio system with the ability to do some equalization to suit your listening room, this might be a project of interest to you. We’ve featured other projects in this realm before, too.

Continue reading “USB DAC Comes With Graphic EQ”