\
Reverse engineered Bluetooth Low Energy commands to control smartwatch screen wake and timeout, then automated it using Python + systemd.
- Reverse engineered proprietary smartwatch protocol
- Direct BLE GATT command replay
- Automatic reconnect on boot
- Low resource background service
- Keeps watch screen awake continuously
- Pure Python implementation using
bleak
- Captured Bluetooth traffic using Wireshark
- Analyzed HCI snoop log from Android device
- Identified custom GATT characteristics
- Reverse engineered smartwatch communication protocol
- Replayed commands to control watch behavior
| Action | Hex Command |
|---|---|
| Screen Turn ON | fe ea 20 06 53 0e |
| Timeout 30 sec | fe ea 20 06 7d 1e |
| Timeout 60 sec | fe ea 20 06 7d 3c |
| Timeout 120 sec | fe ea 20 06 7d 78 |
Linux PC
│
│ BLE (Bleak)
▼
Python Script (ezwake.py)
│
▼
GATT Write Command
│
▼
Smartwatch
(Screen stays awake)
- Linux (tested on Kali Linux)
- Python 3
- Bluetooth adapter
- Python library:
bleak - systemd
mkdir /home/sam/scripts
cd /home/sam/scripts
# copy or download ezwake.py into this folder
code .rm -rf venv
python3 -m venv venv
source venv/bin/activate
python -m ensurepip --upgrade
python -m pip install --upgrade pip
python -m pip install bleaksudo bluetoothctlThen run:
power on
agent on
default-agent
scan on
pair XX:XX:XX:XX:XX:XX
trust XX:XX:XX:XX:XX:XX
connect XX:XX:XX:XX:XX:XX
exit
Create service file:
sudo nano /etc/systemd/system/ezwatch.servicePaste:
[Unit]
Description=Keep Smartwatch Awake
After=bluetooth.target
Requires=bluetooth.target
[Service]
Type=simple
User=sam
ExecStart=/home/sam/scripts/venv/bin/python /home/sam/scripts/ezwake.py
Restart=always
RestartSec=3
Environment=PYTHONUNBUFFERED=1
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
Enable service:
sudo systemctl daemon-reload
sudo systemctl enable ezwatch
sudo systemctl start ezwatchjournalctl -u ezwatch -fExpected output:
Trying to connect...
Connected to watch
Wake (connected)
Check if enabled:
sudo systemctl is-enabled ezwatchEnable if needed:
sudo systemctl enable ezwatch/scripts
├── ezwake.py
├── README.md
├── requirements.txt
└── LICENSE
This project was created through reverse engineering for educational purposes. Use responsibly.
Reverse engineered and developed by Onimous
Give the repo a star — it helps a lot!