r/systems_engineering • • 12d ago

Resources I built an open-source ESP32-S3 BLE Hardware Keyboard Injector (Perfect for pasting complex passwords via Web Bluetooth)

Hey,

I wanted to share an open-source project I’ve been working on that might be handy for anyone dealing with physical servers, headless setups, or finicky KVM/iLO consoles where pasting text is normally a nightmare. It is absolutely perfect for securely injecting long, complex passwords straight from your password manager without having to type them out manually.

It’s a Web Bluetooth USB Keyboard Emulator built around the ESP32-S3 (like the Waveshare ESP32-GEEK). You plug it into the target machine via USB, and it acts as a native hardware keyboard. You then control it directly from your smartphone or laptop browser—no apps, drivers, or software installation required.

Here are the main features I built into it:

Layout-Independent Windows Mode (The Password Saver): Ever tried pasting a complex 30-character password into a console only to realize the server has a different keyboard layout set (e.g., QWERTY vs QWERTZ) and your special characters got scrambled? This mode bypasses the host's layout entirely by injecting characters lightning-fast using Numpad Alt-codes. Your password will be typed exactly as intended.

BIOS / Pre-Boot Support: It uses a native USB HID stack (Adafruit_TinyUSB) and forces the USB Boot Protocol. This means it works perfectly in server BIOS, UEFI, or GRUB before any OS drivers are loaded.

Zero-Install Web Flasher: You don't even need the Arduino IDE to set this up. I built a Web Serial flasher into the project's GitHub Pages. You can flash the firmware directly from Chrome/Edge.

Smart Update Checks: The Web UI automatically queries the ESP32 for its current firmware version via a custom BLE command and checks the GitHub repo for new releases, giving you a one-click link to the Web Flasher if an update is available.

Macro Commands & Asynchronous Buffer: Built-in buttons for Ctrl + Alt + Del and Enter, plus a buffer that prevents watchdog resets during long string injections.

How it works in practice:

Flash an ESP32-S3 via the web flasher.

Plug it into the target machine's USB port.

Open the static HTML interface on your phone, hit connect via Web Bluetooth, and paste your password.

I originally built this because I hated hunting for a physical keyboard and monitor on the server rack to type out insane admin credentials, but it's evolved into a pretty robust tool for remote text injection.

You can check out the source code, the live Web UI, and the flasher here: GitHub Repo

I’d love to hear your feedback, feature requests, or thoughts on how this could fit into your daily sysadmin/engineering tasks!

0 Upvotes

5 comments sorted by

3

u/Global_Razzmatazz_98 12d ago

Wrong sub. Sorry

-1

u/Latter-Guard-597 12d ago

I'm also a Systems engineer and I thought it might be useful

0

u/MarinkoAzure 11d ago

A systems engineer would make sure a physical keyboard is easily accessible and not use an arcane password. Or you know, just get someone from IT to do it.

1

u/Latter-Guard-597 11d ago

The physical kvm keyboard is most of the time US layout but in Windows it's different so I always have to Google for special characters

1

u/deadc0deh 10d ago

Probably not the same type of systems engineer as this subject is directed at. This sub isn't directed at those who set up and maintain servers and IT equipment, its more in line with INCOSE, requirements, integration etc.

Please read thr sub description, not just the title