An open API service indexing awesome lists of open source software.

https://github.com/tiloup9291/onair

Software-Defined Acoustic Modem for QAM messenging
https://github.com/tiloup9291/onair

acoustic connectionless java messenging messenging-app modem software-defined streaming

Last synced: 6 days ago
JSON representation

Software-Defined Acoustic Modem for QAM messenging

Awesome Lists containing this project

README

          

# ONAIR
Software-Defined Acoustic Modem for QAM messenging
![Message](/assets/images/message.png)
![Settings](/assets/images/settings.png)
## What is ONAIR?
ONAIR is the protocol and also the user interface implementation. It is a software-defined acoustic modem with QAM modulation operating in streaming mode and connectionless for messenging. The goal is to make it/keep it simple to communicate by air, with audio line IN and line OUT.
## ONAIR protocol frame
Total frame :
```
[SYNC!] | [ONAIR] | [Length] | [Flags] | [Payload] | [(Filter span + 2) alternating of QAM order diagonal corners]
```
Payload :
```
[Recipient] | [Sender] | [Message]
```
SYNC! : Preamble detection;

ONAIR : Protocol magic number;

Length : Length of the payload;

Flags : Whether payload is encrypted or not;

Recipient : Recipient to which the message is destined;

Sender : Sender/Your local identification of the message;

Message : Message to be send;

(Filter span + 2) alternating of QAM order diagonal corners : Postamble of the frame;

## How it works?
1. Both the recipient and the sender must have the same modulation settings.

2. Only messages detected, for the protocol and for the recipient are demodulated and shown.

3. (Optional) If encryption is use, both the recipient and the sender must have the same cypher key.

4. To send message, you just need to click the "Send" button.

5. To start receiving message, you must activate the "ON-AIR" button.

6. A offline or test mode is available. It output the message to a WAV file for the sender. For the recipient, he can load a WAV file.

7. In the settings tab, there is a "Acoustic Preset" button that set the modulation settings to known sure/safe working settings.

## Pipeline
The modem detect the carrier. It then search the preambule to synchronize the frame. Then it search for the protocol magic number to be sure the frame match the protocol. After that, it use the length and flags fields to know how to demodulate the payload. Once the payload is managed, it compare the recipient field in the frame to the local sender name. If it match, the sender field and message are shown in the interface. The postamble is not counted in the length of the payload; its only use is to border the frame in the state ring-buffer of the demodulator.
## Things to consider
1. The quality of the user audio interface matters.

2. The quality of the line IN and line OUT matters.

3. The quality of devices matters (Example : speakers and microphones).

4. The quality of the transportation media matters (Example : air).

5. Environment noise impact demodulation. Higher noise = harder to demodulate.

6. Depending of drivers, OS and devices, disable all automatic sound processing features (Example : AGC, noise reduction, echo reduction).

### Technologies included
1. FFT and squelch carrier detector.

2. Correlation detector.

3. Costas Loop.

4. Gardner Timing Recovery.

5. RRC filter.

6. FIR filter.

7. QAM order from 2 to 65536.

8. Constellation in Gray Code.

9. State ring-buffer.

10. Phase-Locked Loop.