I recently got a MetaWatch programmable watch. Unfortunately for me it is supposed to be used with a smart phone - either running on Android or iOS. Since I own only one with Symbian on it, I cannot use the watch as intended right now.
So to be able to use it at least as normal watch, I therefore needed a program to set the time - the watch resets itself each time it is connected to the charger (though this has changed with the latest firmware versions).
So I looked at the remote protocol documentation, and found that this is rather simple to do.
So here it is - in two versions for Linux and Windows (which differ in the usage of the serial port library, and the default serial port). The provided binary reads (and displays) the watch ID and the current battery voltage. After that, it sets the watch time and date to that of the computer. The only parameter which can be supplied is the device used for serial communication, which must be the one provided by the Bluetooth adapter. By default, '/dev/rfcomm0' is used on Linux, and 'Com6' on Windows.
In the source, there is also code for setting the watch configuration to display time in 24h format, and to display day before month. Just comment this in and compile the code to use this. Right now it works only with older firmware version, the protocol for setting these has been changed since about 1.0.
To use this program, connect the watch to the computer, and make sure a serial connection is available. Under Windows,
this should happen automatically on connection, on Linux you will need to do this manually (e.g. by using
the GUI client to your Bluetooth stack). The provide the name of the serial port device to the program as first
parameter. The program should show the device type first (1 for analog, 2 for a digital watch), then the battery voltage
and confirm setting the watch RTC as last step.
Since I'm now looking into newer firmware versions, the next step is to support setting the watch configuration with these
versions too. The program should then support both protocols.
I also should add some support for a simple command line interface to specify the actions to be executed, so one doesn't need to change the source code for that.
Last but not least I should add some support for managing the screens, since on firmware version 1.35 the watch screen looks rather funny when no managing client has been used.
If you want to have a look at what I'm doing in terms of working on the watch firmware itself, look at my
GitHub project. Right now its just bugfixing and adding minor improvements. But I hope to get a more standalone version of the firmware.
Version 0.1 Linux: Download
Version 0.1 Windows: Download