ESP32 Turned Open Source COVID-19 Contact Tracer

Over the past few months we’ve heard a lot about contact tracers which are designed to inform users if they’ve potentially come into close proximity with someone who has the virus. Generally these systems have been based on smartphone applications, but there are also hardware solutions that can operate independently for those who are unable or unwilling to install the software. Which is precisely what [Tom Bensky] has implemented using an ESP32 and a USB battery bank.

The idea is simple: the software generates a unique ID which is broadcast out by the ESP32 over Bluetooth Low Energy. Appended to that ID is a code that indicates the person’s current physical condition. There’s no centralized database, each user is expected to update their device daily with any symptoms they may be experiencing. If your tracker is blinking, that means somebody has come in close enough proximity that you should look at the collected data and see how they were feeling at the time.

It’s not a perfect system, of course, as for one thing the number of people that are willing and able to flash this firmware onto a spare ESP32 and carry the thing around with them all day is going to be extremely small. This might have filled an interesting niche if we were still going to hacker and maker cons this summer, but all of those have gone virtual anyway. That said, it’s an interesting look at how a decentralized contact tracing system can be implemented cheaply and quickly.

Another detail worth taking a look at is how [Tom] handled the user experience in his firmware. In an effort to make the tracer as easy as possible to configure, he’s using the Web Bluetooth capability of Google Chrome. Just open up the local web page in your browser, and it will handle talking to the hardware for you. Even if you’re not in the market for a contract tracer, we think this is a great example for how to handle end-user configuration on the ESP32.

We’ve already looked at contact tracer APIs from Google and Apple, dedicated COVID-19 hardware tokens, and even other open source attempts at decentralized proximity tracking. It’s a lot to process, and everyone seems to have their own idea on how it should be done. In the end, the most practical solution is probably to just stay at home as much as possible.

17 thoughts on “ESP32 Turned Open Source COVID-19 Contact Tracer

  1. It’s a cool project, even though I can’t find a license and the code is stuffed into a single file which is almost devoid of comments.

    But don’t contact tracing apps rely on a very large number of people using them? Is this supposed to be a postmodern art piece?

    Maybe I’m just jaded because it seems like only yesterday that all of my friends were trying to design their own DIY ventilators and strutting around like they were about to save the world. The attention-seeking response of the “maker community” to this pandemic has really disappointed me, although there have been a few bright spots like Prusa’s face shield design and the proliferation of homemade mask patterns.

    Oh, to be anything but a cynic…

    1. Its so tiring to see projects without any real depth to them. So many Arduino based 10$ ventilators which basically work by squeezing a bag of air. Anyone who has done ANY kind of rudimentary research on how ventilators work (hell just reading the HaD article gives you some amazing insight) will be able to conclude that such a design is an express, one way ticket to barotrauma land.

      Let me make this clear, I 100% support these projects. The people making them are probably learning a whole lot, and having a blast doing it. What I hate is the media circus that follows, and projects which are specifically made to be presented to the media circus for publicity.

      Headlines like, “Local 17 year old makes a 10$ ventilator” type of news is what gets me. It gets me because there are men and women who are knowledgeable in the field, and they are working to make something like the MIT Ventilator, to actually help people. They barely get any recognition, but teenagers who throw together a servo motor with an arduino make prime time news. That ventilator could actually KILL someone.

    2. Ventilator was the wrong focus as people that needed it was mostly dead. What the western media should have focus is the *correct* message of prevention – the proper science of wearing of mask, hygiene and distancing.
      Instead they are feeding the beast because it sells clicks and eyeballs.

      Meanwhile countries like Taiwan was doing okay. They built production lines for making enough mask for their citizens not ventilators.

    3. @Vinalon said: “But don’t contact tracing apps rely on a very large number of people using them?”

      These would get the necessary large number of compliant users in crowded places where COVID-19 contact tracing is is most needed and enforcement is relatively easy. Hmmm… Someplace like an Amazon warehouse, a military base, and oh yeah, an Aircraft Carrier! That’s it, sell them to the military for a kilobuck-a-pop!

  2. Hi There Mike

    It seems you have come down with a severe case of Conspiretardosis!

    It is curable, but you do have to discontinue use of Facebook, Twitter and other social media platforms that perpetuate amateur memes and info graphics about 5G enabled Bats made in MS paint.

    Consume plenty of big name scary chemicals such as Dihydrogen Oxide and you’ll be on the road to good health.

  3. This writeup takes totally wrong aproach.
    If you are feeling sick – stay home or in a care facility.
    Do not go near people (except as directed by a health care provider to get testing/treatment).

    If you want to take this approach – carry a sign or make a t-shirt
    listing your symptoms. Then people won’t have to have one of these
    to know to stay away from you.

  4. It’s weird to me how all it takes is a small flu to have seemingly “everyone” become pro big-brother surveillance gleefully working on finding new ways to track people.


    > *achoo!*


    It’s some scary stuff how quick I’ve seen people flip.

  5. This project is nice and all but it being not compatible to the de-facto standard exposure notification api makes it pretty much useless.

    as some people have posted their esp32/arduino/… expno api implementations: here is a version for the card10 badge (badge of the 2019 chaos communication camp) based on schneider’s work that logs exposures and some tooling to parse the data and check it against published exposure keys from austria. other countries are easy to implement if they use the same standard file format, only the api endpoint has to be added to the scripts.
    I even built the crypto for sending such notifications (hacked together in pure micropython but sidechannel-proof and speed are not a requirement here ^^) but the cardio bluetooth api currently has no way of sending such broadcast packets.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.