Feature request: Acoustic channel
Overview
Along with BT, WiFi, Internet and file exchange channels, I propose implementing an acoustic channel, based on already existing FLOSS library.
Pros of the feature
- Landline and cell phone lines may remain intact during the internet outages, as they usually raise way less concern of censorship authorities. Acoustic channel can be employed for long distance messaging if there is a working phone nearby. Note: while I didn't test this use case myself, I can predict no technical challenges here.
- Acoustic channel can be run over any kind of two-way radio. While BT and Wi-Fi have a range limit of hundred meters, cheap license-free VHF/UHF radios can make up to 10 km link, 27MHz CB radio up to 100km. HF ham radios, as well as Satcom/Meridian satellites, used by some anarchic hams, both provide a worldwide link. Note: recently I tested the library suggested below over a UHF radio with a fellow ham and it works. We used simple mic-to-speaker coupling, the connection can be more stable if you make a special cable (our test will follow)
- Acoustic channel can be used per se, as a super-close-range wireless channel, despite I can't imagine a probable use case. Note: of course, I tested that way of operation for the library proposed and it works.
Cons of the feature
- Use of acoustic channel required the microphone active for data reception. Despite Briar being FLOSS, some users surely will have a privacy concern. Solution: Make the acoustic channel to be optional, disabled by default, and showing a warning before the first activation. Only if user consent is obtained we will ask for mic access permission.
- Accidental transmission of a large file can congest the channel for a long time, but it must not be absolutely forbidden as the file may have life-critical value (e.g. ID papers of a war journalist). Solution: by default we display a warning on the both sides, stating that transmitting that file via audio will be at least xx:xx long (algorithmic estimation for the best luck). Though, if both conversation sides insist on transmitting and both click their warnings, Briar will proceed. This will protect from accidental channel congestion, but as well obey operators' will.
Backend technology
There are a library and some impelementation examples at https://github.com/aicodix. All code there is licensed under 0BSD, making it perfectly legal to include into any FLOSS project.
The library acts as a software modem. It can transmit and receive any digital data using COFDM modulation of a sound carrier, and have buult-in error correction capabilities.
A notable implementation example is Android software named Rattlegram, avialable in the same repo and in Google Play. You can play around the technology without need to write code. My aforementioned tests of direct and radio-borne transmissions were performed using Rattlegram.
Promises
- I have a bit of Android development skills myself and can contribute to the implementation if approved.
- Feel free requesting me to conduct any other tests, I will be glad to help.