DEV Community

Abrish
Abrish

Posted on

How I used Python to turn a cheap 20$ smartwatch into a PC remote!

An image showing the watch turning into the final product in a cool way

We’ve all seen them—those $20 Smartwatches on Amazon or AliExpress. They look decent, but they are locked behind sketchy, ad-filled mobile apps. I wanted to see if I could "liberate" the hardware.

Today, I’m open-sourcing Synod: A Python-based engine that turns any generic BLE wearable into a dedicated macro deck for your PC.

Why build this?
Most smartwatches send "UI Notifications" over Bluetooth Low Energy (BLE). Your phone's official app listens for these to control music or shutter the camera.

I realized that if I could sniff these packets on Windows, I could map them to anything. No cloud, no proprietary drivers, just raw Python power.

The Tech Stack
To make this happen, I used three key libraries:

Bleak: For cross-platform asynchronous BLE communication.

Pycaw: To hook into the Windows Core Audio API (so I could teleport volume levels instead of just "stepping" them).

CustomTkinter: For a modern, dark-themed GUI.

Universal Learning Mode
The hardest part was that every watch manufacturer uses different Hexadecimal IDs for their buttons. I didn't want to hardcode support for just one watch.

Instead, I built a Learning Mode. The app listens for a notification, captures the 0x1C packet ID, and saves it to a local synod_profile.json.

Translation: If it has a Bluetooth chip and a button, Synod can probably learn to use it.

How to get started
If you have an old watch lying in a drawer, here’s how you can try it:

Clone the repo: git clone https://github.com/Abrish-Yir/synod

Install dependencies: pip install bleak pycaw customtkinter screen-brightness-control

Run synod.py, scan for your watch, and start "Learning Mode."

I need your help! (Open Source Call to Action)

Synod is currently in its early stages, and I want to make it truly universal. I’m looking for contributors to help with:
MacOS/Linux Support: Currently, the audio engine is Windows-specific (pycaw).

Pre-made Profiles: If you successfully map a watch, submit your JSON as a PR!

UI/UX: Let's make the dashboard even cleaner.

Check out the repo here: https://github.com/Abrish-Yir/synod

Top comments (0)