Simmel is a platform that enables COVID-19 contact tracing while preserving user privacy. It is a wearable hardware beacon and scanner which can broadcast and record randomized user IDs. Contacts are stored within the wearable device, so you retain full control of your trace history until you choose to share it.
The Simmel design is open source, so you are empowered to audit the code. Furthermore, once the pandemic is over, you are able to recycle, re-use, or securely destroy the device, thanks to the availability of hardware and firmware design source.
The contact tracing algorithm is programmed using CircuitPython, to facilitate ease of code audit and community participation. The Simmel project does not endorse a specific contact tracing platform, but it is inherently not compatible with contact tracing proposals that rely on the constant upload of data to the cloud.
Simmel is being developed on a very short timeframe. We have two paths being explored in parallel.
- The BLE variant facilitates contact tracing via BLE.
- The NUS variant facilitates contact tracing via near ultrasound (NUS).
BLE is a proven, battle-tested technology with mature chipsets and protocol stacks. Thus it is plausible that a solution could be deployed at nation-state scales in a matter of months. However, BLE beacon signal strength is known to be a poor proxy for locality. Furthermore, running a BLE chipset constantly in scan mode is a relatively power hungry exercise, driving up battery requirements.
NUS is a novel proposal which relies on near ultrasound (18-22kHz) acoustically modulated transmissions to determine proximity. Ultrasound is fairly directional and does not penetrate walls, so it stands to reason that a signal detected on NUS is a good indicator of direct physical proximity. Furthermore, the power cost of sampling a microphone is less than that of BLE scanning. However, there is no established NUS protocol. Furthermore, NUS requires transducers that are expensive compared to BLE parts, and also requires the user to directly wear the device; we are assuming that e.g. a typical handbag would block the NUS signal. Thus while NUS may be preferable from a privacy and power standpoint, it is handicapped by a lack of maturity and higher cost.
Simmel provisions a 2MiB on-device SPINOR. We anticipate a contact record to consist of about 96 bytes, which should allow for about 20,000 contacts to be recorded in a circular buffer that expires over a period of 2-3 weeks (as set by the policy of the contact tracing application).
DVT Hardware Revision
As of August 2020, Simmel went through a hardware revision to make its form factor compatible with that of the Singapore TraceTogether token. Hardware design files can be found at https://github.com/simmel-project/hardware/tree/master/electrical/dvt1.
The left board is Simmel DVT, the right board is the Singapore TraceTogether token. Simmel DVT drops NUS support, but adds an independently battery-backed real time clock (RTC) so that elapsed time can be kept even when the main power is removed. Simmel DVT also features a hall-effect (that is, a magnetically activated) power switch. It's configured so that the PCB is off so long as the magnet is absent.
The idea behind Simmel DVT is to provide a fully open source alternative to the TraceTogether token, that can fit directly into a TraceTogether token case. The USB-C connector, used only by developers, fits without modification into the TraceTogether token shell, and the hall effect on/off switch allows users to turn off their tokens without having to open the case up, or modify the shell to add a power switch: instead, one tapes a magnet to the edge of the shell near the hall effect switch, and when they desire the token to be off, they may simply remove the magnet.
One compromise that resulted from fitting everything, including the USB-C connector, entirely within the outline of the TraceTogether token PCB is that developers need to use a USB type C extension cable to plug their boards into a host PC. However, given that developers are a minority of the users, it's probably the right trade-off to allow a direct drop-in replacement of the TraceTogether token board without requiring a case mod for the USB-C connector, versus positioning the connector so that it protrudes through the case for convenient developer access, but requiring every subsequent user to cut a hole in their TraceTogether token case to accommodate a connector they will never use.
Simmel will run a port of CircuitPython. CircuitPython was chosen oven an embedded C RTOS for the following reasons:
- The contact tracing algorithm should be simple enough that it can be implemented in CircuitPython
- CircuitPython has a lower barrier of entry compared to embedded C
- Code distribution can be done in source form. Provisioning and update is a matter of plugging the Simmel device into a USB port and copying the source file into an emulated mass storage device.
- CircuitPython has a baseline port to our BLE chipset family
- Simmel project will fill in the missing drivers, power management, and cryptographic primitives
Because of the open and easy nature of firmware update for Simmel, once the COVID-19 outbreak is over, users can re-use their Simmel devices for other applications. It is also easy to provision a script that securely erases the contact tracing ROM, allowing the devices to be donated to schools or other organizations for extended use after the outbreak.
Simmel does not endorse a specific contact tracing algorithm at this time; however, we are basing many of the system design assumption around support for protocols that are similar to Bluetrace. The Simmel hardware does not possess the ability to connect directly to the Internet, and is therefore incapable of sharing its logging data without user intervention.
Below are some images of the initial Simmel prototype as fabricated using a 3D printer.
In addition to being packed into a backpack, purse or briefcase, the simmel device can be hung from a lanyard.
Here's a photo of Simmel as plugged into a USB type C socket on a typical laptop.
And here are some photos of the Simmel PCBA.
About the Simmel Project
The Simmel project was started on April 10, 2020 in response to a request for a hardware design proposal by NLNet. The simmel-project GitHub repository's people page lists the developers that have elected to reveal their participation publicly.
The Simmel project name comes from Georg Simmel, an early researcher into sociology and social distance theory.
The administrative contacts for the Simmel project are:
Both contacts are currently at liberty to discuss details and opinions about any contact tracing technology.
The Simmel team is funded through the NGI0 PET Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 825310.