miércoles, 30 de septiembre de 2020

Smartwatch research (Opensource, P8, BLE, bangle.js, Pinetime, espruino, .

(entry in contruction, check other Smartwatch entries)

 

Tools and software

From a mobile Phone

   With LightBlue(Android):  
     or nRFConnect

 


From  Windows computer
   or BluetoothLE Explorer or Bluetooth LE Lab(Windows):
   or nRFConnect


Configure
  Windows10. Other Devices (privacy)



Checking Model (i.e P8a)


   or BluetoothLE Explorer or Bluetooth LE Lab(Windows):

Identify  Device Information:
Hardware Revision (UTF8-String) : A130PW2.0
Software Revision (UTF8-String) :MOY-TFK5-1.7.7

Heart Rate Measurement (it readable, so activate from watch)
(HEX) : A130PW2.0
 67
16


Avoid BLE issues



Error reading the file

when using NrfToolbox you can select the app to pick the file (a file manager)

ES explorer has 2 modes, so if one fails the other can work.

"DFU File ...not found"

turn off other bluetooth devices (specially if they were pair before)

use a different phone that you have never pair

companion apps like d6notification or gadgetbridge can try to connect even if they seem closed

Error GATT ERROR  a

       keep trying,
       disable/enable phone's Bluetooth
       kill daflasher app
       uninstall BLE apps (d6notification)
       turn off phone or
       try "nRF Connect" app as an alternative to Daflasher, as it also can flash a DFU



jueves, 17 de septiembre de 2020

bangle.js 1 -opensource smartwatch


BJS1 Specs:  
  • Nordic 64MHz nRF52832 ARM Cortex-M4 processor with Bluetooth LE
  • 64kB RAM 512kB on-chip flash, 4MB external flash
  • 1.3 inch 240x240 16 bit LCD display with 2 zone touch (1+2=3rd zone)

Launcher0.04 Toucher
Settings 0.21
 
Apps:
 Gadgetbridge
 Vertical face clock (digital watchface)
 Flappy bird (game to test on screen left and right button areas)

Configuration:

Setting:locale
// Spain 1 winter time  2 summer time BLE

Setting:BLE
BLE=on
programmable=on

Setting;Select Clock (i.e Vertical watch face)

Connection 

It supports only a simultaneous connection, so you have to disconnect others.
If Gadgetbridge, IDE or Apps web BLE  can't find the BLE connection
Setting, turn off, press button1 to turn on
 


Web BLE Admin apps

https://banglejs.com/apps/  (chrome browser and enable flags)
 Connect, Pair,
 
"My Apps" tab, apps installed already in your bangle.js
 
https://www.espruino.com/ide/#


Gadgetbridge

Gadgetbridge: 0.47.0 (android)

Android, Settings, Sounds and notifications,Notification access: Gadgetbridge (enabled)

Android, Settings, Sounds and notifications,App notifications: whatsapp (allowed),....

Very limited features: just notifications, and find your watch


Upgrade firmware

 
It can be done from the phone with NrfToolBox, NrdfConnect, or Daflasher
1. enter watch in dev mode
2. connect app to the watch
3. flash DFU  (ZIP)
 
http://www.espruino.com/Bangle.js#firmware-updates
https://www.espruino.com/Download

 

Installing basic apps

https://banglejs.com/apps/
About, click on "Install default apps"
 
or install manually

Bootloader
Settings
 
My favorite apps:
Touch/toucher Launcher. Really recommended (horizontal sliding based in touchscreen, an entry per screen and options) 
Note: To replace a previously installed launcher, it is required to uninstall/remove previous Launcher.
 
(DANE Touch Launcher  is the same launcher with borders)

App manager
File manager
Vertical clock (above v00.6) (support and display other widgets, touchscreen)
Fullscreen Notifications
Gadgetbridge  (widget)
Alarms

Flappy Bird 
Clock-Tris 
GPS recorder (records a GPS track even with app running in background, can display previous recorded tracks)
 
My favourites Widgets: (always in top, if widget bar is loaded)
As widget bar space is limited, so select well widgets and its width

Bluetooth Widget (single spaces)
Digital clock widget (multiple spaces)
Battery Level Widget   (multiple spaces)
Simple Heart Rate widget (check hr when screen is on) (single spaces)

 
 
 



Default apps but I've replaced
Launcher (Default) (vertical menu with several entries per screen and movement by keys)
default apps
Default notifications (too small characters)

You can install in one step all default apps, from About: "Install default apps" see screenshot showing the 9 apps.




https://espruino.github.io/BangleApps  (includes development versions)


Widget Configuration
Setting, App Widget Settings
toucher(Touch Launcher): set resolution high (will display app version), remove animation

jueves, 3 de septiembre de 2020

flashing espruino+ninebot/eucWatch to a P8 smartwatch

Flashing espruino+eucWatch (formerly ninebot-one)

[updated]

P8 with ninebot/enaon+espruino

Intro: 
Espruino: is javascript engine ported to nrf52 and P8 (fanoush)
Ninebot-one (nb): is a watch software that besides time, has some additional functions, especially the one that originally gave name to the software, a "page" that displays info from a unicycle mobility device.
eucWatch: latest version and new name for the Ninebot-one software
ATCwatch: another software for P8 based in Arduino (see other articles of this blog)




Steps:

1) Flash bootloader
1.1) if you have Dafit/stock ROM
or 
1.2B) if you have ATCwatch installed on the P8  
2) Daflasher step
3) Espruino step (PC and Chrome)
Configuring/coding nb espruino:
Using nb/ninebot UI
  

From a browser download following apps from github
  • DaFitBootloader23Hacked.bin (A custom Bootloader using the preInstalled SoftDevice5.0.1)

If you start from p8 default status/Dafit stock then you have to install before the first 2 files.

 1) Flash bootloader

1.1) if you have Dafit/stock ROM 

 You must install before:
    DaFitBootloader23Hacked.bin
    FitbootloaderDFU2 zip 
(common steps with flashing ATCwatch)
 
On Daflasher
Select: P8 
(wait until button "Select File" is enabled)
Select File : DaFitBootloader23Hacked.bin
P8 screen [green screen, progress bar and end in 3 color squares]

Select: ATCdfu
Click button "Do DFU Update"
Selectfile: FitbootloaderDFU2 zip [check Use Nordic Bootloader]

(it can take a long time, fail several times during the process and recontinue from last %. But at the end it should complete flashing the file, speed is slow i.e 2,20kB/s)

  P8 screen    [red square and ATCnetz.de]

 

1.2) if you have ATCwatch installed on the P8

From p8 menu, Click "Bootloader"
  P8 screen    [red square and ATCnetz.de]

 

2) Daflasher step

At BLE devices list

Select: ATCdfu

Click button "Do DFU Update"
   [Checked box: Nordic bootloader]
   [Unchecked box: Toggle Bluetooth]
Select DFU file:  espruino_2v0x.xx_p8_SDK11_SD20.zip  

3) Espruino step (PC and Chrome)

(only tested on Windows) 

    Bluetooth has to be on
   "Connection Icon", "Web Bluetooth", P8 xxxx
   on left side terminal type:
             "require("Storage").eraseAll()"
 
  •  how to Flash /Upload "init" file   

Having  right side windows clear (empty of code)

Drag an drop "init" file to left side (

Click on Send to espruino arrow down icon, choose Upload destination, "Storage" , choose name ".bootrst"

 Click on ".bootrst"

 

  •   (optional) Edit "handler" file before upload 
Depending on P8 model, touch and accelerator controller can change
 
for example for a P8a/TFK5 set
      const touchtype="716" and acctype="BMA421"
 whereas a P8b can be a touchtype="716" or "816S" and acctype="SC7A20"
  • Upload files
[enter in DEV mode]
  type on the left side:     reset() ,   [press enter while holding the button on the p8]
 
>reset()

=undefined
Welcome!
*** DevMode ***
Short press the side button

to restart in WorkingMode

  •    Click on Storage/HD icon (Access files in device's storage),   "Upload a file":  handler, main, settings, calc,...
  (handler, main, settings, minimum files required for basic/testing)
  (euc file is not required, only for ninebot unicycle owners).


  • Verify/execute

Click on Storage/HD icon (Access files in device's storage), verify existence of files and .bootrst

short tap on the button, and it will boot to working mode

 On left side terminal, execute command "reset()" or "E.reboot()"  (last one reset the hardware and loose the time)

DEV mode: (required for future files upload)

Do a reset() while holding the p8 button

from Settings-info- long press in restart button

 

Configuring/coding nb espruino:

During file upload, time is set on espruino. However, depending on timezone  value for an attribute, the displayed time can be wrong.
 
file: init/.bootrst  (Now .bootcde)
E.setTimeZone(2);
// 3=default
// Spain 1 winter time  2 summer time 
 
file:handler
const touchtype="716"; //716 for P8a/TFK | 816|816s for P8b
 
(for models and hardware check a previous post)  
 
Upgrading espruino
Daflasher
Chose: p8
Click "Start bootloader"
p8 screen [redsquare]
DFU 
 
Upgrading n-b (ninebot) version or many files

Erase and start from scratch
 
require("Storage").eraseAll()
connect
 
require("Storage").compact()  [???]
init to .bootrst




 
 

Using nb/ninebot UI

reset() .The normal reset, command or from p8 screen, "INF" (settings-info) menu, long hold on reboot
E.reboot() , command or from p8  holding the button for~15 secs, it will kick the watchdog 
 
TOR=Torch
AL=Alarms (for timer, hold press and will set current time+10min)
CALC= Calculator
BRI=Bright
ACC=Accelerator/step counter
HID=control over bluetooth keyb/media
CLI=enable nordic serial (required by espruino IDE webIDE)
ATC=enable to sync with d6Notification android app (time, receive commands...)


Set time. 
from web IDE: upload an empty code to RAM
from d6: re/enable notification
BLE command: AT+DT=202008251300 (2020-Aug25th13:00)


type of events:
button,
long press button,
long press touch screen
Slide left/right/left touch screen
Slide up/down/up touch screen


viernes, 24 de julio de 2020

P8 usage + Phone companion/sync apps (dafit,d6...)

P8 smartwatch and companion apps 

(draft/post undercontruction)

D6 Notification (for atchwatch)

 

Install D6 notification
d6 notification

Select Device
   Add device  +
Allow location

Select Apps
    Clock
    Calendar
    Whatsapp
    Phone
    Messages



Dafit app

 Da fit(for default/stock ROM)

Da fit 2.0.0 (From MoFit (CRREPA) , Privative)
    Tracking map based in Google Maps

firewall and connections
    Permissions: Mandatory : Phone and Location
dafit storage
    TCP connections:
       (can be stopped by firewall,
                                       gmaps : mad01s24-in
                                       weather:media-router-fp-prod1    
                                       firm upgrade:
        )


dafit database
     Fitness Data:
         - It lacks of a export function, so you need backup.
         - Data can be backup with Titanium backup or oandbackup.
         - Data is associated to the phone/user and not to an specific watch, so you can add a new device, keeping the previous data.
         




watchfaces
   Main and editable watchface accepts 240x240 png files  

   Downloaded watchfaces
         are stored as .bin files
root://data/data/com.crrepa.band.dafit/files/crrepa/band/wf

         each has a preview image (png or bmp)
root://data/data/com.crrepa.band.dafit/files/crrepa/band/wf/preview

Main/custom photo watchface:
image:
root://data/data/com.crrepa.band.dafit/files/crrepa/band/customize/P8a/0.png


databases
root://data/data/com.crrepa.band.dafit/databases/crrepa-db

table: SUPPORT_WATCH_FACE
Field: WATCH_FACE_ID (i.e 181)
Field: WATCH_FACE_URL  (i.e .....71e35.bin) analogic
Field: PREVIEW_URL  (i.e .....55808.png)

Field: WATCH_FACE_ID (i.e 28)
Field: WATCH_FACE_URL  (i.e .....0215e.bin) digital
Field: PREVIEW_URL  (i.e .....cdaec.png)

Configuration
root://data/data/com.crrepa.band.dafit/shared_prefs/config.xml
  band_ui_style=1 (customizable image + customizable digital info)
  band_ui_style=4 (last downloaded WF)
  set_watch_face_layout =false (image + digital customizable)


Gadgetbridge (opensource, available at F-droid)

    not compatible yet :(

martes, 21 de julio de 2020

Flashing atcwatch and Stock(dafit) to P8 smartWatch


atcwatch menu

Flashing P8 - Daflasher (atcwatch and Stock)

Index
  • flashing atcwatch
  • flashing/restore the original P8 - stock dafit
    • flashing SD5
    • flashing the stock application (for dafit)
  • Common problems and solutions
  • Additional info/links
  • Glossary

 Intro:

OTA flashing process require to install and execute daflasher or nRFConnect app (available at Play)

[if you want to preserve you personal data from Dafit app, you can do a backup with android "oandbackup")

Note that:

Obvious, mobile requires to have BT enabled

If Dafit or other app to sync with smartbands are installed, they will be using the BLE connection so device will not be found, uninstall Dafit, and others such as D6notifications

flashing atcwatch

From a browser download following apps from github
  • DaFitBootloader23Hacked.bin (A custom Bootloader using the preInstalled SoftDevice5.0.1)
  • FitbootloaderDFU2 zip    (Soft Device 2)
  • ATCwatchP8.ino.zip
Daflasher app

Open daflasher app (* for  nrfConnect app see below )

Selectfile: DaFitBootloader23Hacked.bin
go back
Select: ATCdfu
Click button "Do DFU Update"
Selectfile: FitbootloaderDFU2 zip

  P8 screen    [red square and ATCnetz.de]

go twice back


Select: ATCdfu
Click button "Do DFU Update"
Atcwatch about
   [Checked box: Nordic bootloader]
   [Unchecked box: Toggle Bluetooth]
Select DFU file:  ATCwatchP8.ino.zip


 

 

flashing/restore the original P8 - stock dafit 

Intro:

Note that going back to Stock-Dafit disables the possibility of later OTA/BLE flashing. So no more easy way to flash experimental OS/ROM. You can still do it but it will require to open the back lid and connect a cable to pins)

You need to download  

  • SoftDevice: ATCdfuFromSD2toSD5.zip  (from atc1441 github page) 
  • The stock "firmware" application, you can try get the package from dafit upgrade function, and it will be .bin file of 1xxKB
  •  
Generate DFU package/nrfutil

Then you need to create DFU package containing the bin with nrfutil, a private key will be applied to the package. Though the previously downloaded SD5 will accept any possible key.

>nrfutil version  (nrfutil version 6.1.0 )

>nrfutil keys generate myprivate.key

 >nrfutil.exe pkg generate --hw-version 52 --application-version 1 --application MOY-TFK5-1.7.7.bin --sd-req 0x9D --key-file myprivate.key p8stock_tfk5.zip 

  --sd-req  softdevice FWIDs 

 --sd-req 0x9D = S132 v5.0.0S132 v5.0.0 (SD5 for stock TFK5-1.7.7)

 

flashing SD5

Select: ATCWatch

StartBootLoader
 P8 screen    [red square and ATCnetz.de]

Click button "Do DFU Update"
   [Checked box: Nordic bootloader]
   [Unchecked box: Toggle Bluetooth]
Select DFU file:ATCdfuFromSD2toSD5.zip


 P8 screen  [3 color squares and ATCnetz.de]


flashing the stock application (for dafit)

Select: ATCWatch
Do DFU Update
   [Checked box: Nordic bootloader]
   [Unchecked box: Toggle Bluetooth]
Select DFU file: p8stock_tfk5.zip  (3 files, inc .bin)





Common problems and solutions

  • Device is not found in BLE list
        turn off other BLE devices around
        stop or remove other apps that are using BLE connections
  • Progress percentage stop a some point, or it is is increasing in each attempt
      Do not panic and keep trying because to complete the flashing it can require several attempts, including restarting the P8 with a shortcut.
  • Error GATT ERROR  until success
       keep trying,
       disable/enable phone's Bluetooth
       kill daflasher app
       uninstall BLE apps (d6notification)
       turn off phone or
       try "nRF Connect" app as an alternative to Daflasher, as it also can flash a DFU 

  • Daflasher DFU FILE NOT FOUND
    • try with different file explorers
    • ES explorer (has 2 pick file 2modes), CXexplorer and Amaze
  • Reset the watch. requires to open the back lid, and create a Short in the battery, (during decs of a second) connect with metal both pins (+ and -)
  • Turn off the watch. It requires to open the back lid and unsolder the the red cable(+)

Additional info/links:

nrfConnect
select watch, Connect, DFU, ZIP
 
more info:
https://github.com/enaon/ninebot-one-nRF52/tree/master/p8-nb
https://github.com/fanoush/ds-d6/tree/master/espruino/DFU/P8 
https://github.com/atc1441/DaFlasherFiles

Glossary:

OTA On The Air
RSSI  Received Signal Strength Indicator
GATT Generic Attribute Profile
BLE Bluetooth Low Energy
DFU  Device Firmware Update
SD Soft device
precompiled and linked binary software implementing a wireless protocol developed by Nordic Semiconductor.
.ino.??
nb  ninebot (electric unicycle)



jueves, 18 de junio de 2020

Smartwatches, hack and opensource




P8 Smartwatch (based in RF52) 

Rebranding:Colmi, Makibes, utelite...
nRF52832 
ARM Cortex-M4, CPU with floating point unit running at 64 MHz
64KB de RAM, 512KB de RAM
Flash 4MB SPI (Serial Peripheral Interface) ¿NOR?  
240x240 color display.
170 mAh lithium polymer
 Normal/non rotated display 

Manufactured by: MoYoung/CRREPA 

strap:20mm


Stock firmware/ROM: MOY-XXXN-1.7.N
MOY=Moyoung (company)
XXX model can be normal or rotated display
 

Model ID Touch Accel Notes
P8, Pinetime TEH,TBH... Hynitron 00B40001 CST816S BMA421 best touch, S=200hz
P8a, Pinetime TFK,... Hynitron 00B40002 CST716S BMA421 worse touch, S=200hz
P8b TIN,... Hynitron 00B40002 CST716S SC7A20 (no step counter) worse touch, worse accel,S=200hz
More technical info
pinout: CLK=2,MOSI=3,MISO=4,CS=5


Alternative ROM

    ATCWatch (Arduino C++ firmware)
     https://github.com/atc1441/ATCwatch
    (to flash with DaFlasher, Companion app: D6 notifications)

    Espruino for DS-D6 and P8
    https://github.com/fanoush/ds-d6/tree/master/espruino/DFU/P8


Recommend notification apps



Other Opensource "smart"watches

PineTime

nRF52832 ARM Cortex-M4 processor with Bluetooth LE
RAM: 64KB  Flash: 512KB with additional 4MB SPI NOR 

Underdevelopment, many options in the future
By default has a fully operative P8 stock firmware/ROM: MOY-XXXN-1.7.N
Companion App(underdevelopment): https://github.com/lupyuen/pinetime-companion

banglejs

  • nRF52832 ARM Cortex-M4 processor with Bluetooth LE
  • 64kB RAM 512kB on-chip flash, 4MB external flash
  • 1.3 inch 240x240 16 bit LCD display with 2 zone touch 
  • GPS/Glonass receiver (UBlox)
  • Many javascript apps 
  • strap: 30mm

https://shop.espruino.com/banglejs
Apps: https://banglejs.com/apps/
Companion app: compatible with Gadgetbridge

Developer emulator: https://www.espruino.com/ide/emulator.html
Forum http://forum.espruino.com/microcosms/1424/

Based in watch. No.1 F18
Companion app: Hplus Watch
164 KB  RAM
ROM de 512 KB

DK08

  •  nRF52832 ARM Cortex-M4 processor with Bluetooth LE
  • LCD 1,28" 176x176 64 colors (RGB222) ST7301
  • HR sensor EM7028
  • Accelerometer Bosch BMA222E 
  • 2MB SPI flash / fontchip GT24L24A2Y
  
    
   

SMA-Q2

Another NRF52832smartwatch to run open source firmware on it
https://hackaday.io/project/85463-color-open-source-smartwatch
https://github.com/Emeryth/sma-q2-oss


Tools and Utilities

BLExplorer. Bluetooth Low Energy Explorer
lightBLUE. Bluetooth Low Energy Tool and Explorer 
nRF Toolbox (apk). test heart monitor
nRF Connect (apk). technical tests 
Packet  Capture (apk) 
serial bluetooth terminal (apk)

viernes, 5 de junio de 2020

Palm revival and Internet access (2020)


Palm connectted through Android: BlueDUN+

Enable Bluetooth
Pair devices (i.e Note4)

Config Palm OS

Pref; Connection
New
Name: (i.e) DUN BT Note4
to: Local network
by: Bluetooth
device: Note4

Pref; Network
Click Top ;menu; New
Service: Access DUN Note4
Connection: DUN BT Note4
User: xx
Pass:xx
Advanced (by default)

Android device
Download and install BlueDUN+
Open BlueDUN+ app
Start service

Connect to Internet (from  PalmOs )
Open an Internet app

Web/Blazer and Xiino webbrowser can't connect through BT connection.


OperaMini can load quite modern pages (requires java)
WebPro (Palm web pro)(requires to disable its default proxy in its preferences)

Open a http url  (not SSL)
  http://www.360k.es
  http://www.mundoviejuno.com/blog.htm
  mowidi.com



checkWWW  (testing app)
Ping a server
  Ping: cisco.com
  or
  Ping: 72.163.4.185

  Ping: mowidi.com
  or
  Ping: 91.109.0.108

RescoNews (RSS reader)
 add  sources (rss v1)
  http://bloglon.blogspot.com/feeds/posts/default?alt=rss