11

Github ggwave/examples/r2t2 at master · ggerganov/ggwave · GitHub

 3 years ago
source link: https://github.com/ggerganov/ggwave/tree/master/examples/r2t2
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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:

https://r2t2.ggerganov.com

Applications

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.

Requirements

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

Build

git clone https://github.com/ggerganov/ggwave --recursive
cd ggwave
mkdir build && cd build
make
./bin/r2t2

Acknowledgements

Thanks to Radoslav Gerganov for this cool idea!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK