>> Home / hardware / oshw, e-ink, firmware, wearable, watchy
∵ Julius Enriquez ∴ 2024-12-31 ∞ 13'
Around a month ago, I bought and got a Watchy. To be more specific, a Watchy clone with a USB-C (rather than MicroUSB) port from AliExpress. It's fairly cheap, built around open-source from board to firmware, and has an E-Ink screen. E-Ink has always been fascinating, being sunlight-readable screen tech mimicking physical paper which retains graphics even without power. However most devices using it have been out-of-reach, both financially and regionally.
That is, until discovering the Watchy.
Before any further hardware talk, we need to talk about a prevailing problem with Watchy v2 and its clones.
The USB-to-TTL chip on a Watchy v2 clone (CH9102F) under a microscope
Watchy v2 and clones based on its design lack TVS (transient-voltage-suppression) diodes, which means that they will eventually stop being recognised when plugged into a USB port. It will still be possible to charge them, however. There are multiple quality lotteries at play here: silicon (USB-to-TTL chip), power source, and cable. To postpone this fate, it is recommended to charge via a computer solely using the cable that comes with a Watchy.
Official Watchy render from SQFMI
The Watchy is based on ESP32, specifically either the ESP32-Pico-D4 (v1 and v2) or the ESP32-S3FN8 microcontroller. It has WiFi (802.11n), Bluetooth 4.2, an RTC (real-time clock), and can be flashed via USB serial. Clones such as my Watchy unit may come with a USB -C port, in lieu of a MicroUSB port. A good change from the original design, due to the increasing prevalence of USB Type C and its various benefits over MicroUSB.
Watchy v2 with a black, anodised aluminum case and a silicone strap
I ordered my Watchy with a black, anodised aluminium case and a silicone strap. The case really does make it feel more premium and sturdy than without, despite its price and hackable nature. The silicone strap unfortuantely causes mild skin irritation after extended use, but thankfully the case uses NATO watch straps so it won't be difficult to find replacements. The case makes the watch a bit thick; this is not to the point of being unwieldy to brandish, but some wrists may find it too large for comfort. There are other case designs such as the Watchy Invader Remix which have slimmer profiles.
The buttons are a bit squishy, yet have a decent click to them. The 200x200 resolution E-Ink display came with a protective acrylic layer. While the acrylic makes the screen glossy, the screen remains rather readable even under a tropical sun. I may look into either an alternative acrylic layer with a matte finish or cut a matte plastic screen protector to size later.
The original firmware is rather simple and hasn't been updated for years, making it somewhat of a challenge to actually compile. Due to this, most people instead flash any of these actively-developed (as of time of writing) custom firmwares:
Common features between them are NTP sync via WiFi, custom watchface support, and step counting. We will go through each of these three firmwares, in descending order of how long I've used them.
TinyWatchy is an endurance-focused firmware with a minimal featureset. It only supports a single WiFi network and the NTP server cannot be changed without patching the source code. It comes with three watchfaces by default, tries to wake up the Watchy as little as possible, and has alarms. It should be noted that this does not officially support Watchy v3.
This stayed on my Watchy the least, since it was failing to do NTP sync. Unfortunately, this also meant that I wasn't able to do real-world power endurance testing to verify its claims of being power-efficient.
InkWatchy
InkWatchy is feature-packed, coming with all sorts of novel features including:
The main watchface also has these modules which are shown at the bottom of the screen and can be switched between each other:
The developer of InkWatchy is also very active on the Watchy and *atchy Discord communities, in addition to presently creating a spiritual Watchy successor in Yatchy with improved hardware.
As for actually using InkWatchy, it was mostly quite good! The menus have smaller text than the original firmware, but remain very comfortably readable regardless; undoubtedly helped by the main menu items also having icons.
The Weather app has 16-day forecast fetching, far more than any other Watchy firmware inactive and active. However, the graphs used can be difficult to parse due to the small Y-axis numbers and lack of X-axis numbers. It can take a while to fetch 16 days worth of weather data, which is forgivable; I do wish there was a config setting in the source to limit how much weather data is fetched, though.
The UNIX-Hater's Handbook being read in InkWatchy while wearing the Watchy
The E-book reader works by converting EPUB and PDF files to text files, as part of the resource generation step when compiling the firmware manually. Even will small text, e-books remain somewhat readable on the small screen. However, this also means that a single page will be split into multiple sections. So while books will be readable, it is not practical to do so.
cohost's eggbug with 2022-2024 written underneath on the Watchy
The encrypted image vault feature meanwhile is more than just a novelty. The E-Ink screen is dense enough for my national ID's big QR code to be readable on it, albeit with a bit of camerawork needed. Although admittedly, it was mostly for fun. Had a great time making some small art to load up on to the Watchy!
The single-player Pong game is a good time-waster, however only for a very short amount of time. There is a Tetris tetrominoes game in development for InkWatchy however, which hopefully will be more compelling.
For debugging, InkWatchy has the most amenities available. From debug menus to live logging via USB, it is far and away the most friendly to bug testers and developers. This was how me and InkWatchy dev Szybet were able to figure out that NTP sync was failing due to pool.ntp.org
ratelimiting and WiFi code weirdness, leading to an NTP server option in the configuration and WiFi country code fixes. There is also watchy-scom, which allows for mirroring the screen of a connected Watchy to a PC. I wasn't able to get it working however, but that was presumably due to a misconfigured build.
Unfortunately before I could return to InkWatchy after trying the next firmware in this post, the CH9102F USB-to-TTL chip in my Watchy broke. I was therefore unable to do extended, real-world power endurance testing. From what comparatively little time I had with InkWatchy, it was able to comfortably last multiple days on a single charge when not using a debug build.
Despite the extensive featureset though, InkWatchy by design has most of its configuration in headers. This means recompiling whenever WiFi netwroks need to be changed, setting a weather location, etc. Also, no alarm functionality. I've talked with Szybet about this and it is planned eventually.
Watchy GSR version (1.4.7N) shown in a menu on the Watchy
Watchy GSR was the firmware I spent the most time with, intially unintentionally due to being unable to reflash the Watchy after a hadware issue. However over time, I'd say that this would prolly be true even without said HW problem.
Watchy GSR is meant to be a spiritual successor to the original firmware, with a couple more features on top. It is supposed to be easier to port watchfaces made for the original firmware. It has alarms, timers, and weather sync for watchfaces that support it. Although at the moment, only the 7-SEG watchface does.
Watchy GSR configuration web UI
A lot of configuration is accessible via an HTTP web interface, accessible over either a connected WiFi network or through its own Watchy Connect hotspot. Settings load and save, WiFi networks, preferred NTP server, and weather location are all available here. Additionally, Over-the-Air (OTA) updating via the web UI is available. This proved to be significantly useful over time and gives Watchy GSR a major edge over other other firmware.
Alarm 2 settings in Watchy GSR
Watchy GSR can store multiple alarms and timers. Countdown and elapsed timer types are present here. The vibration options for these features are confugrable, with pulse patterns and intensity. The vibration motor isn't strong enough to wake you up, unless the Watchy is on a thin and hollow object or membrane of sorts. However, it is more than enough if the Watchy is already being worn.
This is by far the only firmware that I was able to do extended real-life power endurance testing. With power saving mode and 8.5dBm [Medium]
WiFi Tx power:
I have yet to do tests with the Starry Night watchface, which is supposedly the most battery-intensive watchface.
There is still a lot of power usage headroom left over. WiFi Tx power can be set all the way down to 2 dBm [Low]
and vibration feedback can be turned off. There are also further power optimisation configuration available in the source code, similar with other firmwares.
For Watchy v2 owners:
Watchy v3 owners only have InkWatchy and Watchy GSR available with official support, so the former is recommended for both endurace and featureset.
Overall, I'd recommend Watchy GSR as a daily driver firmware. With regards to featureset, it is in-between TinyWatchy and InkWatchy. However, what features it does have lends it extremely well for using Watchy on-the-go.
With most of the essential settings and OTA updating being available without the need to recompile, the Watchy is most practically useful with Watchy GSR while travelling. Having multiple alarms became particularly useful for especially long-distrance travelling. The ability to host a hotspot for changing settings was rather convenient when going through airports and between destinations. The timers came in handy while cooking at home and walking during travels.
On a Watchy v2 with a broken USB-to-TTL chip, Watchy GSR's OTA update feature becomes the only way to flash firmware. It is why for Watchy v2 owners Watchy GSR is very strongly recommended, due to an inherently flawed hardware design leading to a guaranteed eventual inability to access a Watchy via USB. That is, unless someone is willing to buy many spare parts of the USB-to-TTL chip in addition to having the equipment and expertise for surface-mounted soldering. Or alternatively, find a repair shop willing to perform surface-mounted chip replacement; this may be more challenging than it may seem, as it took me visiting more than a dozen repair shops before finding one that was willing to do the procedure.
Despite not being rated for water resistance, the Watchy has survived even heavy torrential rain. The acrylic layer atop the E-Ink screen is sensitive to scratching with deeper grooves at a level 4, but not yet to the point of making the screen hard to read. As long as you're not dunking the watch into water or going headfirst into a sandstorm, the Watchy will mostly be fine.
As a basic yet hackable smartwatch, the Watchy is a great way to cheaply get into E-Ink and developing for a specific niche (wearable). It does the absolute basic features well and is open enough for further improvements. The battery life on a single charge is measurable in many days to weeks, making it very low maintenance once settled on the firmware. I know that this post is too late for Christmas, but it could be an inexpensive yet valuable gift to anyone interested in maker culture, display tech, open-source, and/or privacy.
Some of the in-progress watchface design mockups
This is only the start of my journey with Watchy. For the hardware, there are some plans to improve upon it in small ways; namely, coating the board with nail polish and getting a USB-C cover to improve water resistance significantly. As for the software, I am currently learning how to port watchfaces made for the original firmware to Watchy GSR. Once that's figured out, I will try to make new watchfaces based on design mockups including some of those in the picture above. The design process for watchfaces has been fun! Working within the technical constraints of a small E-Ink screen that can only show pure black and white without dithering (although the dithering is cool anyways) has been an intriguing design challenge, massively improving what relatively little UI/UX sensibilities I previously had until now.
I'll also be watching how developments around Watchy progress over time. While there's somewhat inactive firmware that implements notification support alongside an Android app, I have yet to be able to compile it and the related app. InkWatchy dev Szybet has also expressed interest in implementing this feature, however they are unfamiliar with Android development. Someone in the *atchy Discord has also been crafting a wooden Watchy case, which is looking great so far! The community around Watchy is small, yet has a lot of potential to do great things and hopefully this blog post will help it get bigger.
P.S. Tell me if there are any clock or system aesthetics that would lend themselves well with a monochrome screen. Besides Classic Mac OS, that is. Looking for more watchface design inspirations. :D