The internet and mobile networks in oppressive regimes are monitored for restricted communications. CodeTalker uses light to enable mid-range communication that is difficult to monitor / crack-down on, as interception / detection require line-of-sight.

What it does

Send messages in airplane mode!

Transmission between two devices works by encoding a message as a series of binary flashes from the flashlight of one device that are then received by the camera on the other. Because it does not use radio waves, messages are difficult for a malevolent agent to monitor for or intercept without the presence of a significant ground / recon force.

The receiver can recognize light flashes but timing signal issues have made it difficult to decode. We receive the binary communication, but decoding is a work in progress. The project has been beset by several other unfortunate events which, theoretically, were probably a result of sabotage by malevolent agents of oppressive nation states who hate freedom of information.

How we built it

We used Java / Android Studio, as well as OpenCV for computer vision.

Challenges we ran into

Camera framerate was lower than we would have liked, necessitating a reduction in bandwidth to 10 bits per second. Java does not have unsigned primitive types (particularly bytes) which complicated encoding.

Accomplishments that we're proud of

The transmitter works perfectly, and the receiver is mostly working.

What we learned

Unit testing with JUnit, Android CameraManager API, Android Development / UI.

What's next for CodeTalker

Encryption to protect against adversaries that manage to achieve line-of-sight.

Image sending / receiving capabilities.

Quality of live improvements such as a nicer UI and voice input.

Generalization for other transmit and and receive devices.

A dedicated receiving device with a constant framerate would allow us to transmit with greater bandwidth.

Share this project: