Een tweakable wearable
In dit artikel bespreken we hoe je de PineTime kunt flashen en hoe je een alternatief besturingssysteem op deze opensourcewearable kunt installeren. Zo helpen we je hopelijk op weg om zelf naar hartenlust te tweaken met dit apparaatje.
In de afgelopen jaren brachten fabrikanten tal van smartwatches uit, waaronder af en toe een bijzonder model. Dit geldt in ieder geval voor de PineTime-smartwatch van Pine64, een horloge dat volledig open source is. De PineTime Dev Kit bestaat uit een verzegelde en een onverzegelde smartwatch in één set. De verzegelde variant is bedoeld voor de eindgebruiker en kan beperkt worden aangepast. Hij heeft ook een IP67-rating, om aan te duiden dat hij bestand is tegen stof en onderdompelen in water tot een meter diepte. De onverzegelde smartwatch is het geschiktst om mee te experimenteren, omdat deze via een seriële interface geprogrammeerd kan worden. Het herstellen van de smartwatch bij problemen is daarmee ook eenvoudiger.
De in Hongkong gevestigde organisatie Pine64 heeft eerder al producten uitgebracht als de PinePhone en PineTab, respectievelijk een telefoon en tablet met documentatie en een ontgrendelde bootloader. Pine64 richt zich met het bestaande assortiment voornamelijk op ontwikkelaars. Het bedrijf haalt geld binnen uit investeringsrondes en donaties, naast de verkoop van bestaande producten.
Ook voor de PineTime heeft Pine64 documentatie beschikbaar gesteld, waarin het details uiteenzet die noodzakelijk zijn voor de programmatuur. Hieronder valt voornamelijk informatie over de hardware en bijbehorende drivers. Ook stelt Pine64 ontwikkelaars in staat om gerichte vragen te stellen, bijvoorbeeld via Telegram, Discord, Matrix en IRC.
:strip_exif()/i/2004881784.jpeg?f=imagenormal)
Specificaties
De PineTime is uitgerust met relatief eenvoudige hardware; de onderdelen zijn niet te vergelijken met de hardware in veel moderne smartwatches. Er is geen oledscherm, maar een ips-paneeltje, de resolutie is slechts 240x240 pixels, het aantal sensors is beperkt tot een stappenteller en een hartslagmeter, en de hardware is niet zo krachtig. Applicaties die veel rekenkracht vergen, kunnen daarom niet draaien op de smartwatch.
:strip_exif()/i/2004881688.jpeg?f=imagenormal)
De keuze voor minder krachtige hardware heeft niet uitsluitend te maken met het laag houden van de prijs. Er is bij de geïntegreerde onderdelen gekozen voor een energiezuinige en compacte aanpak. De smartwatch kan bovendien in combinatie met de nRF52832-processor op hardwareniveau worden aangestuurd; de datasheet van deze processor is als PDF online beschikbaar. Dat maakt het makkelijker om er software voor te ontwikkelen.
Hoewel wat zwaardere grafische applicaties niet mogelijk zijn door de relatief beperkte componenten, kunnen eenvoudige spellen en applicaties op het horloge draaien. Bovendien kan de accu van het apparaat ongeveer een week mee. Het belangrijkste is natuurlijk dat er wat te tweaken valt met de PineTime.
Display |
240x240 pixels, ips |
Soc |
64MHz nRF52832 |
Opslag |
4MB |
Bluetooth |
Bluetooth 5 en LE (ota) |
Sensors |
Stappenteller (via accelerometer), hartslagmeter |
Accu |
180mAh |
Afmetingen |
37,5x40x11mm |
Gewicht |
38g |
IP |
IP-67 |
:strip_exif()/i/2004881684.jpeg?f=imagenormal)
Schema van de PineTime. Klik voor downloaden van de pdf.
Besturingssystemen en flashing
Veel opensourceprojecten hebben een community die aan de slag gaat met de ontwikkeling van diverse maatwerksoftware. Dit is ook het geval voor de PineTime. InfiniTime is het standaard meegeleverde besturingssysteem. Andere besturingssystemen zijn nog niet zover ontwikkeld, maar kunnen leuk zijn om te proberen. Enkele bekende opties voor besturingssystemen staan hieronder.
InfiniTime (standaard) |
MbedOS (besturingssysteem voor iot-hardware) |
PineTime-rust-mynewt (besturingssysteem gebaseerd op Rust en Mynewt) |
RIOT (besturingssysteem voor iot-hardware) |
TinyGo (GO-compiler voor embedded apparaten) |
Wasp-os (besturingssysteem gebouwd op Micropython) |
Zephyr (RTOS voor iot-hardware) |
InfiniTime beschikt over een aantal zogenaamde Companion-applicaties. Die kunnen worden gebruikt om de firmware te updaten, voor het instellen van datum en tijd, en voor het verkrijgen van notificaties door middel van een Android- of iOS-toestel.
De besturingssystemen kunnen worden gevonden op GitHub en zijn voorzien van documentatie. Er kunnen individuele wijzigingen worden aangebracht die, na de compilatie, geflasht kunnen worden op het horloge.
Flashing
Er zijn verschillende manieren om de PineTime-smartwatch te flashen en daarmee een ander besturingssysteem of een nieuwere versie van een besturingssysteem te installeren. Daarbij staat de nRF52832-soc centraal.
In de PineTime is een Open On-Chip Debugger geïntegreerd. Deze debugger ondersteunt verschillende adapters die gebruikt kunnen worden om het horloge te flashen. Voor verschillende flashmogelijkheden is extra hardware vereist. Zo moet je het apparaat bij sommige (oudere) PineTime-edities eenmalig ontgrendelen om toegang te krijgen tot de debugpoorten. Hiervoor kan een Raspberry Pi worden ingezet. Bij modellen vanaf september 2020 is dit niet langer noodzakelijk.
Enkele andere opties zijn: Cmsis-DAP, JLink, ST-Link V2, Black Magic Probe en ESP32. Een ST-Link V2-adapter is de toegankelijkste optie; deze vereist relatief weinig stappen voordat hij kan worden gebruikt en kan direct door middel van PineTime-updater worden ingezet.
ST-Link V2
We hebben ervoor gekozen om gebruik te maken van een ST-Link V2-adapter, een USB-adapter die je voor ongeveer 15 euro kunt aanschaffen. Bij het gebruik van een ST-Link V2-adapter kunnen de PineTime Serial Wire Debug-pinnen, of SWD-pinnen, op de volgende manier worden verbonden:
PineTime |
ST-Link V2 |
GND |
GND |
Swdclk |
Swdclk |
Swdio |
Swdio |
VCC (3,3V) |
3,3V |
De verbinding kan tot stand komen door de meegeleverde kabels op de desbetreffende aansluitingen te solderen of door gebruik te maken van de zogenaamde Pogopin Jig, bij dat laatste is solderen niet langer nodig. Deze Pogopin Jig wordt overigens niet standaard meegeleverd bij de Dev-Kit en kost enkele euro's extra. Flashen is ook mogelijk door de kabels los, onder een kleine hoek tegen de contactpunten aan te duwen, maar deze (foutgevoelige) methode wordt niet officieel ondersteund.
:strip_exif()/i/2004832840.jpeg?f=imagenormal)
PineTime-updater
Een toegankelijke manier om firmware te flashen op de PineTime is via de PineTime-updater-software. Deze applicatie maakt gebruik van de OpenOCD-software. PineTime-updater kan worden geïnstalleerd op Linux en macOS. Bij Windows kan eventueel Hyper-V worden ingezet als bare-metalhypervisor om er een Linux-distributie naar keuze op te installeren. Via deze Linux-distributie kan de desbetreffende software worden geïnstalleerd en ingezet. Daarbij is het wel noodzakelijk om USB-adapters naar de hypervisor om te leiden. Dit kan bijvoorbeeld via het inschakelen van Enhanced Session Mode of via applicaties van derde partijen. In dit geval hebben we een laptop met een volledige installatie van Linux Ubuntu 20.04 LTS ingezet. Daarmee kunnen we flashen zonder extra configuratie.
:strip_exif()/i/2004832862.jpeg?f=imagenormal)
Via de terminal kan de PineTime-updater software worden geïnstalleerd:
git clone https://github.com/lupyuen/PineTime-updater
cd PineTime-updater
chmod +x run.sh
Het gedownloade en als uitvoerbaar gemarkeerde script kan vervolgens worden gestart.
./run.sh
InfiniTime updaten of WASP-OS installeren
InfiniTime is het standaard meegeleverde besturingssysteem op de PineTime. Dit OS is het compleetst en bevat de meeste functionaliteit. Een overzicht van de mogelijkheden en functionaliteit vind je hieronder. InfiniTime is open source conform GPLv3. Het ondersteunt Bluetooth LE voor software-updates, notificaties en tijdsynchronisatie, en het biedt keuze uit drie wijzerplaten: Digital, Analog en PineTimeStyle. Als apps bevat InfiniTime:
- Music, voor de besturing van muziek op je telefoon;
- Heart rate, een hartslagmeter;
- Navigation;
- Notification;
- Paddle, een Pong-achtige game;
- Two, een 2048-achtige game;
- Stopwatch;
- Motion sensor and step counter.
Daarnaast zijn er de companion apps Gadgetbridge voor Android, Amazfish voor Sailfish OS en Linux, Siglo voor Linux, WebBLEWatch als webapp en InfiniLink voor iOS.
Bij het uitvoeren van de gedownloade software heb je een aantal opties. Wij hebben de jongste firmware, versie 1.6.1, geflasht op de PineTime, die standaard werd geleverd met versie 1.2.0.

Het script zal vervolgens zoeken naar een aangesloten PineTime via ST-Link V2. Het flashproces gaat automatisch van start als er een PineTime verbonden is, anders volgt een foutmelding.
WASP-OS
WASP-OS is een alternatief besturingssysteem dat relatief compleet is in vergelijking met de overige beschikbare besturingssystemen. De naam is een afkorting van 'Watch Application System in Python'. De eerste versie van WASP-OS voor de PineTime is in 2020 uitgebracht. Het besturingssysteem heeft met regelmatige updates meer functionaliteit en extra apps gekregen en inmiddels kunnen de volgende apps ingeschakeld en gebruikt worden:
- Alarm
- Calculator
- Chrono
- Fibonacci Clock
- Game Of Life
- Music Player
- Play 2048
- Snake Game
- Torch
- Test
Er is ook een emulator beschikbaar voor WASP-OS. Via deze emulator kunnen applicaties worden ontwikkeld zonder de noodzaak om de PineTime voortdurend opnieuw te flashen. Je kunt de emulator hier downloaden.
Om WASP-OS te installeren, moet een aantal stappen worden doorlopen. Om te beginnen kan via GitHub de laatst uitgebrachte update worden binnengehaald. Je kunt dan twee belangrijke bestanden uitpakken, waaronder 'bootloader.hex' en 'micropython.zip'. Deze worden gebruikt om respectievelijk de bootloader te flashen en WASP-OS te installeren.
Vervolgens verbind je de smartwatch via de ST-Link V2-adapter met de computer of laptop, start je het Pinetime-updaterscript en selecteer je de optie om een gedownload bestand te flashen.

Je kunt nu een bestand selecteren dat geflasht gaat worden op de PineTime. Voor WASP-OS moet het correcte pad naar het bestand 'bootloader.hex' worden opgegeven.
/i/2004881256.png?f=imagenormal)
Daarna is een dialoog zichtbaar met een adres om naar te flashen. Dit adres staat standaard op 0x80, maar moet worden aangepast naar 0x0 voor het flashen van een bootloader.

Vervolgens moet een melding zichtbaar worden die duidelijk maakt dat het flashen succesvol is afgerond.
/i/2004881262.png?f=imagenormal)
Tot slot kun je het besturingssysteem zelf installeren.
Via een Android- of iOS-toestel kun je de applicatie nRFConnect downloaden. Met deze app kun je het bestand 'micropython.zip' op het horloge flashen. Na het openen van de nRFConnect-applicatie kun je navigeren naar de Scanner, waarmee alle beschikbare BLE-apparaten zichtbaar worden. In deze lijst moet 'PineDFU' voorkomen; hiermee kan dan worden verbonden.
:strip_exif()/i/2004881264.jpeg?f=imagenormal)
Na het tot stand komen van de verbinding met het horloge moet de PineTime, herkenbaar als PineDFU, zichtbaar zijn in combinatie met de knop Disconnect. Hieraan zie je dat de verbinding succesvol tot stand is gekomen.
Door vervolgens te klikken op het zojuist gekoppelde apparaat PineDFU kun je navigeren naar het tabblad DFU, wat staat voor Device Firmware Update. Hier kun je een pakket selecteren om naar het horloge te uploaden. In dit geval kun je hier gebruikmaken van het installatiebestand voor WASP-OS 'micropython.zip'. Nadat je op de blauwe Start-knop hebt gedrukt, gaat het proces van start. Na afloop zie je een bevestiging van het succesvol afronden van de update.
Hiermee heb je de benodigde stappen voor de installatie van WASP-OS op de PineTime doorlopen.
Ook goed voor levensduur
De PineTime laat zien dat ook aan compacte hardware gesleuteld kan worden en mits goed uitgevoerd, komt dat de levensduur van het product ten goede. Bovendien is de hardware niet afhankelijk van de ondersteuningstermijn van specifieke software. Daardoor kan dit product in theorie vele jaren lang mee, waarbij de rol van horloge tussendoor kan worden ingewisseld voor een andere toepassing.
Mocht je na het lezen van deze how-to zelf aan de slag willen, dan kost je dat geen honderden euro's. Voor iets meer dan 60 euro inclusief invoerheffing is de PineTime-Dev-Kit, bestaande uit een verzegelde en onverzegelde smartwatch verkrijgbaar.
Er zijn veel mogelijkheden om het horloge aan te passen aan je eigen wensen. Het installeren van een besturingssysteem naar keuze en het programmeren en toevoegen van (eigen) applicaties zijn geen nutteloze luxe en vooral ook leuk om te doen. Het standaard meegeleverde InfiniTime heeft de meeste functionaliteit en de actieve en betrokken community werkt het besturingssysteem voortdurend bij. Je kunt echter ook naar hartenlust experimenteren met verschillende (nieuwere) besturingssystemen. Kortom, met dit horloge blijf je bij de tijd.
/i/2004887166.png?f=imagenormal)