Coffee Space


Second Attempt #PineTime

Preview Image

Preview Image

First Device

With my first PineTime I was very enthusiastic about programming it. My original intention was even to build my own OS for it, but actually I realised I don't really have enough experience with working on such controllers to do so.

I originally played with the idea of running a micro virtual machine on the device to allow for multiple apps to run relatively sandboxed on the device. I even looked to utilise a Java VM designed to run on microcontrollers (designed for a Lego robot I believe). Unfortunately it was never meant to be.

I got my first PineTime a while back and was working on a method to flash it using an Orange Pi, but in my foolish attempt to solder such a small pitch board ended up back-firing and I broke the watch. I made a few attempts, but there is no recovery of this device - something is fundamentally broken now.

Second Device

I still needed a decent smart watch to monitor my health, and after having purchased an off-the-shelf solution from China with a fake sensor, I decided enough is enough and I really want to pursue this project again. I ordered another device, but this time it came with the firmware written by JF002, which came with the awesome ability to support OTA (over the air) updates via BLE.

I got the device with version 0.7.0 (I believe) and was easily able to flash it to 0.9.0 using the latest relase from GitHub, using the OTA DFU process. I was very happy about how well this process worked and decided to (controversially) super glue the device together.

As long as I don't flash crazy bad firmware, in theory this should continue to work... We shall see though!


Code example for I2C driver

Code example for I2C driver

The next step was to build a development environment that I was happy with that can build various images. After a couple of hours of reading and hacking, I finally built a development environment based on Vagrant. There is a docker version, but honestly I would rather have a completely enclosed virtual machine rather than container given we're running random binaries.

I'm currently working towards getting the heart rate sensor up and running, a basic feature I want in order to be able to use this as a daily driver. Without it, it's just an overly complicated time interface (and honestly, not a great one).


After having spent a few hours in the code base, I have a few thoughts (which may be subject to change at a later date):

Regarding the hardware, I have a few thoughts:

Anyway, this is enough ranting for now - hopefully I will be in a position to improve the situation!