2020-06-12 09:36:17 +02:00
# Covid Bracelet, compatibile with iOS and Android
2020-06-08 11:15:05 +02:00
2020-06-10 16:38:30 +02:00
**Contributions Welcome!**
2020-06-08 11:15:05 +02:00
## Features
2020-06-10 16:38:30 +02:00
* Sends and receives exposure beacons as specified by Google and Apple for Covid Contact Tracing
2020-06-08 11:45:02 +02:00
* Rolling, encrypted, anonymous beacons
2020-06-08 11:15:05 +02:00
* Compatible with Apple iOS and Android phones
2020-06-10 16:38:30 +02:00
* With rolling proximity identifiers and encrypted metadata
* Proximity identifiers and BLE addresses change every 10 minutes
* Stores own keys for 14 days
* Stores contacts of more than 5 minute duration
2020-06-08 11:15:05 +02:00
* Upon infection upload keys to a public database
* Retrieve keys of infections from database
2020-06-08 11:45:02 +02:00
* computes rolling proximity identifiers
* compares to stored contacts to check for exposure
2020-06-08 11:15:05 +02:00
2020-06-10 16:38:59 +02:00
Builds on on Zephyr OS and NRF52 BLE SOCs. Note: as we do not use the flash for key storage, this only works on nrf52480 or you can just store a very small number of keys
2020-06-10 16:38:30 +02:00
## Get Started:
We use Zepyhr master as we need a newer mbed TLS as the ones that ships with Zephyr 2.2. We are waiting for the Zepyhr 2.3 release. To build, please install Zephyr and compile via west. Note that Platform.io does not support Zephyr 2.3 rc / Zepyhr master at the current time.
2020-06-08 11:16:05 +02:00
**Note: this is a proof of concept and not ready for production**
2020-06-08 11:15:05 +02:00
2020-06-09 23:06:21 +02:00
## Demo Video
[![Video Demo ](https://img.youtube.com/vi/tYGsFJC3LtE/0.jpg )](https://youtu.be/tYGsFJC3LtE)
2020-06-08 11:15:05 +02:00
## Open / Possible next steps
2020-07-01 00:03:52 +02:00
* firmware of the air updates (signed): done in testing
2020-06-08 11:15:05 +02:00
* fix entropy: keys are always the same on boot up
2020-07-01 00:03:52 +02:00
* time sync
* set device name, user id or so in Flash
2020-06-08 11:15:05 +02:00
* set scanning interval to the correct value, for now we just use the default
* set advertisement interval, correct value, for now we just use the default: should be 200-270 milliseconds
* store long-term contacts in flash
2020-07-01 00:03:52 +02:00
* get infections from DB, check their signatures
* extensive logging: crash, reboot, battery level, charging state, contacts, memory useage, flash usage,
* extensive compatibility testing with Apple iOS and Android devices
* contininous integration testing
2020-06-08 11:15:05 +02:00
* Energy efficiency
* BLE advertisements sets
2020-07-01 00:03:52 +02:00
* Secure GATT services and authentication of base statation in general
* More platforms: with display etc.
2020-06-08 11:15:05 +02:00
2020-06-08 11:17:03 +02:00
## TODOs Wristband
2020-06-08 11:15:05 +02:00
Possible platforms for real-world deployment many, as many of the cheap fitness trackers base on NRF52 or chips with similar capabilities.
However, many would need the firmware to be shipped to manufactures.
* Watch UI
* Pine Time could be good for testing
2020-06-08 11:17:03 +02:00
## TODOs App and Basestation
2020-06-08 11:15:05 +02:00
* extend this beyond the simple basestation
* read keys form national databases