The goal of this project is to allow to create and modify watch faces for SMA-based smart watches.
Code is developed with help of Trevi T-Fit 400 C.
The application used by these watches is SMART-TIME PRO.
Warning: Use at your own risk!
The project is managed using uv.
Ensure uv is installed on the machine and run uv sync to fetch all required dependencies.
The SMA watch face creator is GUI application providing ability to inspect, edit and create watch faces for supported devices. The software is structured in two main panes:
- layer view, which shows the different blocks comprising the watch face, along with their parameters, like block type, size, position, etc., and
- scene view, which shows the positioning of different blocks and allows to move, resize and rotate them.
The File menu allows to load and save watch face files.
The Tools menu allows to create GIF preview for the current watch face, but also export all the image resources used in the loaded/created watch face.
To run the GUI, execute the following command in shell:
uv run sma_wf_creator.py
The watch face data format is described in smawf.py script.
Basically, the watch face file starts with info for how many blocks are there and how many image resources.
After that, there is info for each block, such as block type, size, positioning, etc.
After the blocks meta data, there is table holding the size of each image resource in the watch face file.
Finally, the image resources are placed at the end of the file.
Based on the compression of the resource, pixel data is stored in a different manner.
The data for each pixel is in RGB565 or Alpha + RGB565 format.
Compressed images utilize line-based run-length encoding to shrink down the image size.
The first tool developed while looking at the watch face data format is decompress.py, which allows to extract all the image resources from watch face file.
Example to extract the images from file wf.bin in directory wf:
python decompress.py -i wf.bin
The script edit.py allows to compress the image resources extracted from a given watch face file and create edited watch face file.
Example to create new watch face file called wf_edited.bin from watch face called wf.bin, with edited image resources in directory wf:
python edit.py -i wf.bin -r wf -o wf_edited.bin
To download custom watch face to the watch, we can utilize the cache used by the Smart-Time Pro application.
Basically, once we download watch face to the watch from the application, the application caches that watch file file in its data storage directory, which can be found under Android/data/com.sma.smartv3.pro/cache/dial directory.
We can replace the cached watch face file in this directory with our custom watch face (using adb for example), and then inside the application, we can download the cached watch face to the watch.
The application will preview the original watch face, but our custom one will be downloaded.
ADB steps via Wireless debugging to push custom watch face are given below:
adb connect <IP_addr_phone:port>
adb push 'AM08_T-fit 400 C_10011.bin' /storage/self/primary/Android/data/com.sma.smartv3.pro/cache/dial
Replace 'AM08_T-fit 400 C_10011.bin' with other known watch face file.
The directory watch_face contains watch faces obtained from the app, but also modified and custom ones.
| Preview | Device | File |
|---|---|---|
| Trevi T-Fit 400 C | 10011_blue.bin | |
| Trevi T-Fit 400 C | robot.bin |