mirror of
https://github.com/CovidBraceletPrj/CovidBracelet.git
synced 2024-12-05 00:55:43 +01:00
Restructure README
This commit is contained in:
parent
5fea4b55e7
commit
b211d716e3
73
README.md
73
README.md
@ -1,12 +1,14 @@
|
||||
# Covid Bracelet, compatibile with Covid Apps on iOS and Android [![Actions Status: test](https://github.com/CovidBraceletPrj/CovidBracelet/workflows/test/badge.svg)](https://github.com/CovidBraceletPrj/CovidBracelet/actions) [![Actions Status: build](https://github.com/CovidBraceletPrj/CovidBracelet/workflows/build/badge.svg)](https://github.com/CovidBraceletPrj/CovidBracelet/actions)
|
||||
# Contact Tracing Wristband [![Actions Status: test](https://github.com/CovidBraceletPrj/CovidBracelet/workflows/test/badge.svg)](https://github.com/CovidBraceletPrj/CovidBracelet/actions) [![Actions Status: build](https://github.com/CovidBraceletPrj/CovidBracelet/workflows/build/badge.svg)](https://github.com/CovidBraceletPrj/CovidBracelet/actions)
|
||||
|
||||
This project aims to add support the [Exposure Notification (EN) protocol for tracing contacts from Apple and Google](https://covid19.apple.com/contacttracing) on low-power wristbands. It maintains full compatibility with smartphone Apps based on the EN protocol.
|
||||
|
||||
**Note: this is a proof of concept and not ready for production**
|
||||
**Contributions Welcome!**
|
||||
|
||||
|
||||
|
||||
## Features
|
||||
* Sends and receives exposure beacons as specified by Google and Apple for Covid Contact Tracing
|
||||
* Builds on Zephyr OS targetting the NRF52 BLE SOCs
|
||||
* Easy project setup using [PlatformIO](https://platformio.org/platformio-ide)
|
||||
* Sends and receives exposure beacons as specified by Google and Apple for Covid Contact Tracing
|
||||
* Rolling, encrypted, anonymous beacons
|
||||
* Compatible with Apple iOS and Android phones
|
||||
* With rolling proximity identifiers and encrypted metadata
|
||||
@ -18,47 +20,66 @@
|
||||
* computes rolling proximity identifiers
|
||||
* compares to stored contacts to check for exposure
|
||||
|
||||
Builds on on Zephyr OS and NRF52 BLE SOCs. Note: as we for now do not use the flash for key storage, this currently only works on nrf52480 or you can just store a very small number of keys. Moving the keys to flash is on the TODO list and will fix this.
|
||||
Note: as we for now do not use the flash for key storage, this currently only works on nrf52480 or you can just store a very small number of keys. Moving the keys to flash is on the TODO list and will fix this.
|
||||
|
||||
## Getting Started
|
||||
This project is based on platformIO for an easy setup process, see: [https://platformio.org/platformio-ide](https://platformio.org/platformio-ide).
|
||||
|
||||
## Get Started:
|
||||
This project is based on platformIO, see: [https://platformio.org/platformio-ide](https://platformio.org/platformio-ide)
|
||||
|
||||
## Testing
|
||||
To run the tests for the desktop environment select the test task for desktop or run:
|
||||
To run the tests for the desktop environment select the task *test* for desktop or run:
|
||||
|
||||
```
|
||||
platformio test -e desktop
|
||||
```
|
||||
|
||||
**Note: this is a proof of concept and not ready for production**
|
||||
|
||||
## Demo Video
|
||||
|
||||
[![Video Demo](https://img.youtube.com/vi/tYGsFJC3LtE/0.jpg)](https://youtu.be/tYGsFJC3LtE)
|
||||
|
||||
## Open / Possible next steps
|
||||
* firmware of the air updates (signed): done in testing
|
||||
* fix entropy: keys are always the same on boot up
|
||||
* time sync
|
||||
* set device name, user id or so in Flash
|
||||
## Roadmap
|
||||
|
||||
### Flash Support
|
||||
* Store long-term contacts in flash
|
||||
|
||||
### Device Initialization
|
||||
The devices need to be initialized:
|
||||
* Fix entropy: keys are always the same on boot up
|
||||
* Synchronize time
|
||||
* Set device name, user id or so in Flash (-> persistend configuration)
|
||||
|
||||
### Device Synchronization
|
||||
* Extend beyond the simple (existing) basestation
|
||||
* Synchronize time
|
||||
* Get infections from DB, Check their signatures
|
||||
* Secure GATT services and authentication of base statation in general
|
||||
* Read keys form national databases
|
||||
|
||||
### Extract Keys from Device
|
||||
In case of an infection, the keys need to be extracted from the device:
|
||||
* Secure extraction of keys
|
||||
(Base version existing)
|
||||
|
||||
### Device Updates Over the Air (OTA)
|
||||
Securely updating many running devices over the air with signed firmware will greatly improve maintainability. Related feature branch: [feature/ota](https://github.com/CovidBraceletPrj/CovidBracelet/tree/feature/ota)
|
||||
|
||||
### Logging
|
||||
* extensive logging: crash, reboot, battery level, charging state, contacts, memory useage, flash usage
|
||||
* Energy efficiency
|
||||
|
||||
### Protocol Specifications
|
||||
* 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
|
||||
* set transmit power and store this in the corona beacons
|
||||
* 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
|
||||
* Energy efficiency
|
||||
* BLE advertisements sets
|
||||
* Secure GATT services and authentication of base statation in general
|
||||
|
||||
### Other
|
||||
* Contininous integration testing
|
||||
* More platforms: with display etc.
|
||||
|
||||
## TODOs Wristband
|
||||
## Possible Platforms
|
||||
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
|
||||
|
||||
## TODOs App and Basestation
|
||||
* extend this beyond the simple basestation
|
||||
* read keys form national databases
|
||||
|
Loading…
Reference in New Issue
Block a user