martes, 1 de junio de 2021

OTA Flashing for Hackable smartwatches

Watches suporting OnTheAir flashing:
P8, C16 (and other Dafit watches)
DK08
...



Software to be flashed (Opensource) :
 
atcwatch
eucwatch
p8expruino
...
...
 
Software for flashing:
daflasher
nRFConnect
 
 
Process diagram :

 

Detailed procedures:


sábado, 9 de enero de 2021

outdoor/sport apps, smatwatches and openSource

A quick revision of opensource outdoor options 

(as 202304, more info and pictures are coming soon)

Index:

bangle.js smartwatch
bangle.js2 smartwatch
Bluetooth Heart Rate Monitor (bangle.js2)
Bluetooth Heart Rate Monitor (Lite)(bthrmlite)
BLE GATT HRM Service (bangle.js, 2)
GPS recorder (bangle.js, 2)
Bangle run (bangle.js, 2)
Route viewer (bangle.js)
Fitotrack (android)
Opentracks (android)
OSMand (android)
Runnerup (android)
AAT(android)
Strava(android/web - commercial)
Wikiloc (android/web - commercial)
OruxMaps (android/web - commercial)

 

 

bangle.js (smartwatch)

Unfortunately there are not many smartwatches focused in opensource apps, and less having GPS functions.

So if you want to use opensource in your watch during your activities you have to assume some limitations and wait or help for community improvements.

  • Heat rate function, is really unreliable, and it seems a problem of the sensor hardware, so even if software can reject weird measures there is not much hope.
  • GPS, seems reliable enough, and battery last long with it tracking
  • Apps, there are couple of good apps that are receiving support, see below. 
  • Support, besides other you can be part of the community and the solution.

 

bangle.js2 (smartwatch)

  • GPS and a Heat rate sensor more acqurate than bangle.js1 one.

Bluetooth Heart Rate Monitor (bangle.js2)

 App id: bthrm

Overrides the usage of the internal HR sensor with an external Bluetooth  

Settings: 

1) Mode=Default - Replaces internal HRM with BT HRM and falls back to internal HRM if no valid measurements received. 

2) Search for sensor

3) Open app?

4) see values on widget (widhrm,...

Not compatible with "Heart Rate Monitor(hrm)"

Bluetooth Heart Rate Monitor (Lite)(bthrmlite)

 Old version, and lightweight without configuration and the recommended for Bangle.js1

BLE GATT HRM Service (bootgatthrm)

 A GATT HRM Service to advertise the measured HRM over BLE. Compatible with Opentracks and Fitotrack.  Detected but not working with Runnerup and AAT

 

GPS recorder (bangle.js, 2)

Opinion: It is a very reliable app+widget that can work in background, so you can use other functions during the activity, and when completed the track can be exported in a standard format to other apps.

The look and feel is very old school, just text without icons, and the menus can be managed only through buttons. 

Tips:

Using OpenStreetMap from web apploader you can upload a map/tiles and this map can be displayed in the background of the track.

As getting a valid GPS signal takes quite long, and you require it to start tracking, from web apploader use the app "Assisted GPS Update (AGPS)" to download satellite info for a day (8kB) or a week (46kB).




Missing functions: 

  • Follow a track. I mean functions to import a track, display the track in screen and track a new one over it (in a different color)
  • Use of touch screen, i.e change of screen by sliding movement  
  • A Graphical dashboard, showing summary and enabling pause in friendly and quickly way.

Import/export:

internal file format:

timestamp,latitude,longitude,altitude    (but more attributes can be added to be logged , such as  HR, HR(bluetooth) ,HR int or steps.

Export format: (from apps loader page): .KML , .GPX 

Tip: exporting from Android's Chrome, then the downloaded track file can be open with some apps.

 


RUN (bangle.js)  RUN+

Opinion: the user interface is based in a single screen managed only by buttons, and it can track your activity including lot of precision and heart rate

But the worst (hopefully it will be corrected soon)is that the apps is not available as widget so can't work on background and the tracking has too much precision (and not necessary) so the output file grows too much.

As curiosity this app is not written in basic Javascript but TypeScript that after "compiled" generates a obfuscated Javascript, for developers maybe it is not important but for other can be an additional step.

Missing functions: 

  • Run in background 
  • A parameter to define the time between tracking points
  • Display a track or statistics
  • Use of touch screen, i.e change of screen by sliding movement 

Import/export:

internal file format:

timestamp,latitude,longitude,altitude,duration,distance,heartrate,steps
1602954919045,38.418089,-0.x09480,36.88,0,0.65,104,1

 Export format (from apps loader page): .KML , .GPX 

 

Route viewer (bangle.js)

Opinion: it allows to display map  and/or a track in the screen and your current GPS position over it. Also it shows distance an a direction arrow.

 Is not a standard Javascript app, but a realtime generated app+map track. From the apps loader web you load a .KML and the result is uploaded as bangle.js app

Missing functions:

  • zoom function is missing 
  • a single a app able to open different tracks/maps
  • Direct access to track files in memory from banglerun or GPSrecorder

Import/export: import .KML



Fitotrack (android, FOSS)

Opinion: A good app for sports and well supported, has voice notifications to inform about pace, etc...

Supports external heart rate sensor(fails with decathlon BLE and not paired devices?) and can display sections/intervals, elevation/speed graphs

Missing functions: 
  • Text notifications that other apps can process and send to smartbands/watches 

Import/export:

Export:  GPX


 


Opentracks (android, FOSS) 

"+OSM Dashboard por Opentracks"

Opinion: a  good tracking app with a easy an intuitive and complete dashboard.

To be able display the activity in a map it requires to install "OSM Dashboard por Opentracks" (another small opensource app) and from opentracks "show on map" and select "OpenTracks Dashboard API", and button "Always".

Advanced functions, as voice notifications, Interoperability with BLE devices: Heart rate (chest strap or watch), cadence, power, speed, and wheel size

It shows intervals, elevation/speed graphs and has voice

The Dashboard with the default layout shows many information fields, and can be customized.

Missing/Concerns:

-Permission: "Location always", is not being used, so it can stop tracking with saving mode or lossing the foreground

Import/export:

Export:  GPX, KML,KMZ, KMZ(inc photos)
@fdroid


OSMand (android, FOSS)

Opinion: though focused in navigation, it has tracking function and many options and features, such as following a previous track.

Require more learning and adaptation than other tracking apps, but the potential is incredible.  

Import/export: .GPX

@fdroid

 

Runnerup (android, FOSS)

 

Functions: Workouts and intervals, audio notifications, Laps, Map(using version from Play), sensors (ANT+, BLE), upload activity to some social networks

There are versions that can run in old in Android4(usually lighter and smaller)

Missing functions: 

  • Display the map during the exercise tracking.
  • Text notifications that other apps can process and send to smartbands/watches 

  Import/export: 

Export to: database, .GPX .TCX

Import: only from database

@fdroid


AAT (android)

An activity tracker, with a good UI but that can require more time to get used, for example the dashboard is called "Cockpit"

Activity: preconfiguration (autopause, recording filter, backlight,..)

cockpitA: fullscreen stats (HR in a smaller font size),map, graph

cockpitB: splited screen stats/map,  stats are in a smaller font size)

Advanced functions, through touch on topleft/bottom (cockpitB screen) or bottom(cockpitA map screen)

Support/Functions:  online Maps(several ones)/offline maps, BLE sensors,...

Import/export: .GPX

@fdroid

Missing functions: 

  • HR limits and warning notifications



Strava(android/web - commercial)

It is not opensource but if you want share your activities with friends probably they use it.

Fortunately you can use other apps during the activity and just upload to share with others.

Import/export:

Import/Export: .TCX, .FIT or .GPX

Import from  http://www.strava.com/upload/select



Wikiloc (android/web - commercial)

An app/web especially useful to find and share tracks for different sports (like mountain paths), sometimes well described, classified and with pictures

The app can be used to track or follow a previously downloaded track, supports offline maps and has basic statistics for the activity.

Negative points, besides being commercial it has some dependencies on Google services, that is specially bad for devices without Play services (such as BlackBerry10  android runtime)

Import/export: app exports to .GPX


OruxMaps (android/web - commercial)

Powerful GPS app with plenty of functions, requires time to learn and get the best of it. Supports loading a track and tracking/following over it.

Import/export:  import .KML and .GPX

Export to   .GPX, .KML, .KMZ, .FIT, TCX, .CSV

Upload to: Strava and other services ...