Transmit data with the PC speaker
r2t2-1-small.mp4
Vid. r2t2 demonstration
This is a command-line program that encodes short messages/data into audio and plays it via the motherboard's PC speaker. To use this tool, you need to attach a piezo speaker/buzzer to your motherboard. Some computers have such speaker already attached.
You can then run the following commands:
# transmit the message "test" with default protocol "[R2T2] Normal"
echo test | sudo r2t2
# transmit the message "hello" with protocol "[R2T2] Fast"
echo hello | sudo r2t2 -t10
# transmit the message "foo bar" with protocol "[R2T2] Fastest"
echo "foo bar" | sudo r2t2 -t11
To receive the transmitted message, open the following page on your phone and place it near the speaker:
This tool can be useful when you need to transmit data from air-gapped machines. The hardware requirements are very cheap - you only need a PC speaker. For example, you can make an automated script to periodically emit some sensor data, which can be received by someone nearby running the r2t2
receiver application.
-
PC speaker / buzzer attached to the motherboard.
Here are the ones that I use:
Img. Left: PC speaker plugged into a motherboard. Right: two PC speakers with a coin for size comparison
- Unix operating system
- Add the
pcspkr
kernel module:sudo modprobe pcspkr
- The program requires to run as
sudo
in order to access the PC speaker
git clone https://github.com/ggerganov/ggwave --recursive
cd ggwave
mkdir build && cd build
make
./bin/r2t2
Thanks to Radoslav Gerganov for this cool idea!