Door Dustin Hendriks

Freelanceredacteur

De PineTime-smartwatch flashen

Tweaken op de millimeter

21-01-2022 • 06:00

15

Multipage-opmaak

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.

PineTime productfoto

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.

PineTime

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

PineTime schema

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.

Afbeeldingen PineTime

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.

Afbeeldingen PineTime

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.

PineTime InfinityTime PineTime InfinityTime PineTime InfinityTime PineTime InfinityTime

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.

PineTimeUpdater Latest Firmware

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 logoWASP-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.

PineTimeUpdater WaspOS

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.

PineTime WaspOS Bootloader

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.

PineTime WaspOS BootloaderFlash

Vervolgens moet een melding zichtbaar worden die duidelijk maakt dat het flashen succesvol is afgerond.

PineTime WaspOS Flash

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.

PineTime nrf Scanner

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.

PineTime Nrf ConnectedPineTime Nrf ConnectedPineTime Nrf Connected

Hiermee heb je de benodigde stappen voor de installatie van WASP-OS op de PineTime doorlopen.

PineTime WasOS apps clockPineTime WasOS apps clockPineTime WasOS apps clock

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.

PineTime buiten

Reacties (15)

15
15
11
2
0
3
Wijzig sortering
Bedankt voor de herinnering. Moet de mijne weer eens flashen.

Ik moet zeggen dat hij voornamelijk in de kast ligt omdat ik hem nog niet echt bruikbaar vond. Ik heb ook een Amazfit GTS 2 Mini en die werkt ook met Gadgetbridge (de app die voor de PineTime gebruikt wordt). Daardoor is hij net zo privacyvriendelijk: Geen bitje gaat het internet op. En hij doet het 2 weken op een accu, heeft GPS en een mooi Amoled scherm... Nou is hij wel 3x zo duur hoor, als de PineTime, maar als je de GPS niet wil kan je ook met een Mi Band 6 toe, ook op dezelfde privacygevoelige manier. En dan zit je wel aan dezelfde prijs.

Alleen de smartwatch zelf is dan niet open source. Wat ik bij de PineTime verwacht had maar nu erg mis, is de app store. Zelfs de vroegste Pebble had die en er ontplofte onmiddelijk een enorm ecosysteem van appjes. Bij de PineTime niet, want alles zit in de firmware zelf. Hopelijk komt dit nog. Dan zou dat wel een flinke meerwaarde geven boven de Amazfit want die kan dat helemaal niet.
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.
De PineTime is ook gewoon zonder devkit verkrijgbaar voor 27 dollar. En je kan hem ook gewoon programmeren via wifi. De devkit is niet perse nodig.

https://pine64.com/product-category/pinetime-smartwatch/

[Reactie gewijzigd door GekkePrutser op 23 juli 2024 21:28]

Auteurjetspiking Freelanceredacteur @GekkePrutser21 januari 2022 10:34
Ik moet zeggen dat hij voornamelijk in de kast ligt omdat ik hem nog niet echt bruikbaar vond. Ik heb ook een Amazfit GTS 2 Mini en die werkt ook met Gadgetbridge (de app die voor de PineTime gebruikt wordt). Daardoor is hij net zo privacyvriendelijk: Geen bitje gaat het internet op. En hij doet het 2 weken op een accu, heeft GPS en een mooi Amoled scherm... Nou is hij wel 3x zo duur hoor, als de PineTime, maar als je de GPS niet wil kan je ook met een Mi Band 6 toe, ook op dezelfde privacygevoelige manier. En dan zit je wel aan dezelfde prijs.
Ik ben benieuwd waar je tegenaan liep met de PineTime smartwatch, gingen er dingen mis?
De PineTime is ook gewoon zonder devkit verkrijgbaar voor 27 dollar. En je kan hem ook gewoon programmeren via wifi. De devkit is niet perse nodig.
Dat klopt inderdaad. Het nadeel is wel dat de verzegelde versie geen hardwarematige herstelmogelijkheden kan aanbieden. Een OTA-flash zou mis kunnen gaan, zeker bij bijvoorbeeld WASP-OS waarbij de bootloader ook moet worden overschreven. Het zou wel mogelijk moeten zijn om de verzegelde versie open te maken, maar de IP-rating verlies je dan. Het leuke aan de Dev Kit is denk ik ook de mogelijkheid om het bandje te verwijderen, dan zijn een stuk meer toepassingen mogelijk.

Bij het uitsluitend updaten van InfiniTime via de app zou ik het persoonlijk wel aandurven.

[Reactie gewijzigd door jetspiking op 23 juli 2024 21:28]

Ik ben benieuwd waar je tegenaan liep met de PineTime smartwatch, gingen er dingen mis?
Nee dat niet, gewoon heel erg beperkte functionaliteit vooralsnog. Dus ik heb hem in de kast gedaan om na een paar updates weer eens te kijken :)

[Reactie gewijzigd door GekkePrutser op 23 juli 2024 21:28]

Misschien offtopic, maar heb je ooit Notify gebruikt i.c.m. je Amazfit? Deze is gewoon te downloaden via de AppStore en zit bomvol features. Ik ben berg benieuwd hoe deze zicht weerhoudt t.o.v. gadgetbridge. Ook bij Notify gaat niks naar de cloud (of je eigen cloud als je dat wilt).
Ja heb ik momenteel zelfs in gebruik in plaats van GadgetBridge voor mijn Mi Band. De betaalde versie.

Notify is een app die veel meer functies heeft, ook veel meer en veel betere grafieken (de grafieken engine van gadgetbridge is nogal onhandig zeg maar).

Het is wel een allegaartje van opties die op allerlei plaatsen verstopt zitten. Soms in het settings menu, soms moet je op een grafiekje drukken om het groter te openen en dan daar weer in een submenu voor extra opties... Overzichtelijk is het niet, maar het is wel heel erg krachtig :)

Ik weet ook niet hoe hij met je privacy omgaat, maar bij de betaalde versie zou hij niet zoveel tracking moeten doen. Maar ik heb er wat minder vertrouwen bij omdat hij wel internettoegang nodig heeft en het closed source is. GadgetBridge doet helemaal geen tracking en heeft niet eens een internet verbinding in het manifest dus hij kan niet eens internet op.

Uiteindelijk ben ik voor mijn Mi Band 6 naar Notify gegaan omdat ik daar per se de SpO2 slaap tracking wilde gebruiken en met GadgetBridge werkte dat (nog) niet. Ook dingen als Amazon Alexa werken niet. Met de GTS2 gebruik ik wel nog gadgetbridge. Ook omdat ik die toch al op mijn telefoon had voor de pinetime.

Dus als je met Gadgetbridge uit kan zou ik die doen, Notify is inderdaad een veel uitgebreidere en mooier alternatief. En nog steeds een heel stuk privacyvriendelijker dan de Mi app. Dus ja als je een goed compromis zoekt dan zit je daar het beste.

[Reactie gewijzigd door GekkePrutser op 23 juli 2024 21:28]

Dank je wel door dit artikel. Blij om te zien dat er steeds meer opensource producten op de markt gebracht worden, compleet met schematics. Ik laat deze echter wel aan mij passeren.
Ik heb drie jaar pogingen gedaan (als leek) om SailFishOS een kans te geven. Het punniken in de linux omgeving was erg leuk - wat een dealbreaker voor mij was dat de non-native applicaties zoals WhatsApp meer en meer lock-out gingen toepassen waardoor de hoepeltjes waar je doorheen moet springen steeds kleiner werden. En nee: de Familie was niet genegen WhatsApp niet meer te gebruiken. Uiteindelijk voor iOS gekozen.
Als ik kijk wat ik doe met mijn smartwatch (Fitbit Ionic) zie ik deze niet hierdoor vervangen worden. Ik ben niet blij met de overname door Google en ik ben mij dan ook aan het oriënteren op een alternatief. Gezien mijn ervaringen met SailFishOS (met name hoe de boze buitenwereld er op reageerde) denk ik niet dat ik deze hobby erbij wil ;)
Je kan bij Sailfish natuurlijk wel ook de Android whatsapp gebruiken via Android emulatielaag.
En via Aurora app store hou je die keurig op to date.
Meningen verschillen uiteraard. Maar naar mijn smaak best een lelijk onding.
Bijna net zo lelijk als een apple watch...
Leuk! Wachten op zoiets voor mijn Pebble time die nog ergens stof ligt te happen 😢
Hah ik had niet verwacht dat tweakers een artikel over de PineTime zou hebben, helemaal niet zo gedetailleerd.

Ik ben de (co)-auteur van Siglo waarmee de PineTime op Linux desktop en telefoons gekoppeld kan worden om te updaten. Het werkt op dit moment alleen met Infinitime, misschien eens tijd om meer besturingssystemen voor de PineTime te ondersteunen :)
Ik heb em net deze week als Daily carry ipv Amazfit T-Rex Pro om, Dit gaat nu goed met infinitime 1.8 die nu ook de steps in Gadgetbridge laat zien.Update in gadgetbridge over BT gaat goed (als je niet vergeet hoe het preciesa werkt).
De heart rate meeting duurt vaak lang om van dubbele getallen op de goede waarde te komen.(Maar is wel een kompleet opensource algoritme dacht ik). Nu nog slaap trekking en het kan mijn fitbit (met crack in scherm) echt vervangen. Fitbit SW sucks (heeft GPS nodig om data via internet up te date, en waarde in UI geven verschillende waardes op verschillende plaatsen).

Ik heb nog steeds de dev unit niet geprobeerd met python, vooral ook omdat infinitime op de gewone goed genoeg werkt. Ik speel ook 2048, dat redelijk gaat na touch updates :)
Ik heb nu dan toch ook besloten om een pine smartwatch aan te schaffen. Ik had een mi band 4 via gadgetbridge zodat ik niet aan de mi software vast zit. Maar dan moet alsnog de mi software eerst geinstalleerd worden (en via een mi account aangemeld) om een connection pair te genereren.
Als via de Pine smartwatch gadgetbridge out-of-the-box werkt dan voel ik me daar echt een stuk beter bij.
De Pebble ben ik nog niet vergeten. Leuk ding toen. Ver van perfect. Toen waren er weinig alternatieven. Maar dit voelt toch aan als morrelen in de marge, hobby-en met een driewieler en hopen dat je er de wereld mee rond kan of zo :O
Ik heb zo'n gevoel dat dit artikel meer afschrikt dan helpt. Er staan veel details, commands in en tools in voor het flashen/updaten van je PineTime, maar zo ingewikkeld is het allemaal niet. Het lijkt allemaal zo complex, terwijl je (indien je een Android telefoon hebt) simpelweg je PineTime kan flash/updaten via GadgetBridge. Je download the laatste versie van InfiniTime via GitHub en GadgetBrdige kan hem zo flashen als je update opent met die app. Het is zelfs makkelijker met Siglo als je een PinePhone of Linux laptop hebt, daar kan je de update selecteren binnen de app en wordt hij automatisch binnengehaald en toegepast. Daar heb je geen kabels of adapters of commandline voor nodig, uiteraard, als je de PineTime gewoon wil gebruiken :-)

Op dit item kan niet meer gereageerd worden.