←back to thread

233 points bahaaador | 9 comments | | HN request time: 0.814s | source | bottom

Hi HN! I built Bluetooth USB Peripheral Relay, a tool that lets Bluetooth devices (like keyboards and mice) connect to USB-only hosts using a Raspberry Pi Zero W.

Why? My friend needed a way to use his Bluetooth mouse and keyboard on a PC with Bluetooth disabled due to policy restrictions. This tool acts as a bridge, relaying Bluetooth input over USB. It also lets you use Bluetooth peripherals with older devices that only support USB input.

Tech: Written in Go, optimized for Raspberry Pi Zero W.

I love HN’s community and often lurk here—I’m hoping this project is useful or at least sparks some interesting discussions. Feedback and contributions are welcome!

1. jwr ◴[] No.42126100[source]
This is a wonderful hack!

But — using a Raspberry Pi and Linux is overkill for this. It introduces huge unnecessary complexity. A simpler approach would be to go with Zephyr and a small microcontroller (ARM Cortex M4).

replies(5): >>42126141 #>>42126157 #>>42126191 #>>42126220 #>>42126550 #
2. 0_____0 ◴[] No.42126141[source]
It's not unnecessary complexity if the thing wouldn't get made otherwise, especially for a personal project.
3. imhoguy ◴[] No.42126157[source]
Right, I think it is doable (an would say even easier/faster) with Raspberry Pico Pi W controller, it has BT and can behave like USB HID device.
4. JoBrad ◴[] No.42126191[source]
a.k.a.

> A delightfully over-engineered solution

replies(1): >>42126457 #
5. bahaaador ◴[] No.42126220[source]
Thank you!

I think that's a fair point about potentially wasted resources, something like Pico would have been and a leaner choice if this was going to be mass-produced. But for me, part of the decision was my comfort level with system programming and what I desired to tinker with and learn along the way and still, it's a very affordable option (around 20 CAD I believe)

Perhaps I'll look into porting it to Pico in future as new challenge and learning experience. Thank you for your sharing your thoughts.

replies(2): >>42126324 #>>42128878 #
6. imhoguy ◴[] No.42126324[source]
I had same worries like yours but worry not, check MicroPython/CircuitPython when you get a chance. You load it up onto Pico and play with REPL in IDE. It is easier than debugging Go on large-RPi.
7. bahaaador ◴[] No.42126457[source]
<3
8. beardyw ◴[] No.42126550[source]
I would think an esp32 with Bluetooth would do wouldn't it?
9. jwr ◴[] No.42128878[source]
Please don't get me wrong: I really do appreciate the hack value and I absolutely understand choosing this route to scratch a personal itch!

My point was more general: I see a lot of things getting built using Linux that really have no need for this level of complexity. And it doesn't come free: complex systems are more fragile, there are more things that can go wrong.

In this particular case, I'd recommend taking a look (for example) at the Seeed XIAO nRF52840 module and Zephyr: around $10, very capable CPU, very good Bluetooth stack (Zephyr+Nordic), USB-C connector.