Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make SwissCovid version using microG as libraries #9

Closed
4 tasks done
ineiti opened this issue Sep 28, 2020 · 5 comments
Closed
4 tasks done

Make SwissCovid version using microG as libraries #9

ineiti opened this issue Sep 28, 2020 · 5 comments
Assignees

Comments

@ineiti
Copy link
Collaborator

ineiti commented Sep 28, 2020

This issue tracks the steps needed to produce a version of the SwissCovid app that can run on phones that lack the Google Play services, by bundling the subset of microG relevant to EN as libraries.
This follows an approach suggested in a discussion with the microG developers, and is also tracked there.

  • Finish implementation of EN client library in microG.
  • Copy EN-relevant microG modules into a fork of the SwissCovid sdk; use this in a fork of the SwissCovid app.
  • Make required updates to microG, SwissCovid sdk, and SwissCovid app to have a working app.
  • Document the changes in this repo
@cgrigis cgrigis self-assigned this Sep 28, 2020
@cgrigis cgrigis changed the title Use microG in SwissCovid Make SwissCovid version using microG as libraries Sep 28, 2020
@cgrigis
Copy link
Collaborator

cgrigis commented Sep 28, 2020

PR for the changes in the microG client library.

@cgrigis
Copy link
Collaborator

cgrigis commented Sep 28, 2020

Forks of SwissCovid sdk and app are currently available @c4dt:

@cgrigis
Copy link
Collaborator

cgrigis commented Oct 13, 2020

Quick summary of the latest progress on the GAENless lib and app:

  • I am now fairly confident that, functionality-wise, the app bundled with the microG app is operational, at the same level as the normal app. I had to track down and fix a couple of tricky bugs in the microG EN code, but I am now able to reproduce a "put phones in proximity - declare one positive - exposure notification appears on the other" scenario.
  • When I say "at the same level as the normal app", I mean that I don't account for possible bugs in the regular app 😉 In my opinion, I would like to see a lot more unit and integration tests to increase the level of confidence in the various app scenarios (such as sync logic etc.)...
  • I am now concentrating on the low-level Bluetooth and security properties, as discussed in Tests #11 (advertisement, RPI rotation, MAC changes, etc.). I am learning more about the BLE details. There is a nice way to have low-level Bluetooth traces on Android by enabling the so-called "Bluetooth HCI Snoop Log" option, which produces a trace compatible with Wireshark. That seems to give a good overview of the Bluetooth activity, but one limitation I see is that as this traces HCI-level traffic (host <-> controller), it does not show the packets emitted when advertising: there are the commands to set parameters and enable advertising, but then the controller operates on its own. We do see received advertisements, though.
    I played a bit with the Nordic Android app ("nRF Connect"), which is nice (particularly nice RSSI graphs), but also has its limitations. For better traces, it seems necessary to go with a real sniffer. Ideally, this would require specialized hardware (such as a Bluefruit, Ubertooth or Nordic dev board), as normal Bluetooth controllers on laptops don't have a firmware allowing sniffing.

@cgrigis
Copy link
Collaborator

cgrigis commented Feb 9, 2021

With the required changes now all pushed to microG, the no-GAEN versions of DP3T-SDK and SwissCovid no longer bundle microG libraries, but point to their released versions on Maven.

@cgrigis cgrigis closed this as completed Feb 9, 2021
@ineiti
Copy link
Collaborator Author

ineiti commented Feb 9, 2021

Wow - that's quite a feat! Congrats!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants