Skip to content

llama1969/mondaine-sync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mondaine-sync

English | 中文

A Python CLI tool to calibrate Mondaine Stop2Go Bluetooth wall clocks via BLE, replacing the official Android/iOS app.

The BLE protocol was determined through clean-room interoperability analysis of the official companion app, for the sole purpose of enabling users to control hardware they have lawfully purchased.

Compatible models

Model Connection Supported
GGM.D069 (Stop2Go Bluetooth) BLE Yes
Other Mondaine Bluetooth clocks with MMT_CLOCK BLE name BLE Likely
GGM.D078 (Stop2Go WiFi) WiFi No

Requirements

  • Python 3.12+
  • uv
  • Bluetooth-enabled computer within range (~10m)

Linux

BlueZ must be installed and running:

sudo apt install bluez                # Ubuntu/Debian
sudo systemctl enable --now bluetooth # Start and enable on boot

Installation

git clone https://github.com/llama1969/mondaine-sync.git
cd mondaine-sync
uv sync

Usage

# Scan for nearby clocks
uv run python -m mondaine_sync scan

# Sync time to current local time
uv run python -m mondaine_sync sync

# Read device info and room temperature
uv run python -m mondaine_sync info

# Toggle Stop2Go (58s sweep + 2s pause at 12 o'clock)
uv run python -m mondaine_sync stop2go on
uv run python -m mondaine_sync stop2go off

# Specify clock address to skip scanning
# macOS: CoreBluetooth UUID
uv run python -m mondaine_sync -a B45101D5-60A1-7D6E-5E16-3754A9DB6B69 sync
# Linux: MAC address
uv run python -m mondaine_sync -a C8:20:98:F5:9C:72 sync

# Debug output
uv run python -m mondaine_sync -v sync

Cron scheduling

Find your clock address first:

uv run python -m mondaine_sync scan

Then add to crontab (crontab -e):

# Sync every 6 hours
0 */6 * * * cd /path/to/mondaine-sync && uv run python -m mondaine_sync -a YOUR_CLOCK_ADDRESS sync

# Sync once a day at 3:00 AM
0 3 * * * cd /path/to/mondaine-sync && uv run python -m mondaine_sync -a YOUR_CLOCK_ADDRESS sync

Tip: Without -a, the tool scans for ~10 seconds each time to find the clock. Specifying the address skips scanning and connects directly, which is faster and more reliable for cron jobs.

Legal disclaimer

Reverse engineering notice

The BLE protocol used by this project was determined through clean-room interoperability analysis of the official Mondaine companion app (com.mmtswissconnect.android.mondaineclock), for the sole purpose of achieving interoperability with the Mondaine Stop2Go Bluetooth wall clock hardware that users have lawfully purchased.

  • No copyrighted source code was copied, reproduced, or distributed. Only the functional BLE protocol (UUIDs, command bytes, data formats) -- which constitutes an interface specification necessary for interoperability -- was documented and reimplemented independently in Python.
  • This type of reverse engineering for interoperability purposes is generally permitted under:
    • EU Directive 2009/24/EC, Article 6 (decompilation for interoperability)
    • US Copyright Act, 17 U.S.C. 1201(f) (reverse engineering for interoperability)
    • Swiss Copyright Act (Urheberrechtsgesetz), Art. 21 (reverse engineering of software interfaces)

Trademarks

Mondaine, Stop2Go, SBB, and Swiss Railway Clock are trademarks of Mondaine Watch Ltd. and/or SBB AG. MMT and Swiss Connect are trademarks of Manufacture Modules Technologies Sarl. This project is not affiliated with, endorsed by, or sponsored by any of these companies.

No warranty

This software is provided "as is", without warranty of any kind. Use at your own risk. The authors are not responsible for any damage to your clock or any other equipment. See LICENSE for details.

License

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages