experimental data transceiver using QR codes
Demo at https://bitfountain.mguentner.de
Open the application on one device and select Transmitter
. Then select a file that you want
to transmit to another device.
Please be aware that currently only max. ~20 KiB work in an acceptable timeframe.
Then, open the same app on another device and select Receiver
. Allow access to your camera
and point it to the QR codes generated by the Transmitter
.
A file-download dialog will open once the transmission has been completed.
- Make sure the camera keeps the other screen in focus, the picture needs to be sharp
- Center the QR code in the image, leave some space to all sides
- It may take some time until the
Receiver
reads the first descriptor slice. Only then you will see the file information.
Since the Transmitter
does not know what parts of the file the Receiver
already has received, Luby Transform Codes are used in contrast to naive looping.
- Ivan Daniluk wrote some awesome blog posts about his
research about Luby Codes and his project txqr that uses
gomobile
. - https://github.com/google/gofountain is a great go package than links to useful papers in the comments. Worth a read!
- react-use-qrcode: This project uses a modified version of https://github.com/pocesar/react-use-qrcode, (
src/useQrCode.ts
&src/workers/qrcode.worker
). File
/Blob
mocks:src/test/file/*
is a modified version copied from https://github.com/capricorn86/happy-domsrc/FileUtils.ts
contains a port of https://github.com/google/gofountain/blob/master/block.go
Find the source code at https://github.com/mguentner/bitfountain
License: MIT
Maximilian Güntner, 2021