Electronic – Begin programming using audio signals

configurationprogramming

I recently purchased a Amcrest ProHD IP2M-841W 1080P camera where the initial configuration is done over some kind of audio signal, a companion app for mobile phones which, at the end of the configuration phase plays a masked "sonar ping"ish sound, barely audible were some kind of clicks and whistles which reminded me of 90s-era dial-up internet.

I've heard this technology is sometimes used in TV ads and similar, paired with malware in phones to track people's viewing habits but I'd never imagined it useful for programming hardware settings into a difficult-to-access device.

I tried researching programming using audio signals, serial and SPI modulators/demodulators and turned up nearly nothing, anything mentioning ultrasound yielded results about ultrasonic depth sensors and CV topics.

What is this technique of programming using audio(& visual?) signals called, and does it require (or benefit from) special hardware, is it reliable, etc?

It seems ideal for first-time configuration of embedded systems, or diagnostics.

Best Answer

I did some research and found out that there's some really simple solutions. There's a software project by the name of minimodem which allows two computers to communicate over audio signals transmitted either over a cable, or over speakers and a mic.

This minimodem project is compatible with another project Arduino RTTY (Radio TTY) which literally gives the API RTTY.tx('Hello World'), from which the data can be picked up on a PC with a soundcard.

Going in reverse (transmitting from a PC/smartphone/etc to an Arduino) is significantly less well documented.

The general concept is called (Audio) Frequency Key Shifting ((A)FSK) and there are guides from TI and other manufactures of how to do it. Most solutions attach a small daughter board to handle the ADC, however it's documented that for low bit rates, the Arduino can handle this using the on-board hardware alone.