Hacker News new | ask | show | jobs
by ggerganov 2924 days ago
In your experience, how reliable is the communication between 2 devices when using speakers and microphone (no cable) at distance ~3 meters? What bandwidth do you typically achieve in such conditions?
1 comments

~3 meters is indeed quite a challenging scenario. I've tested it with the lowest bit-rate supported (1 kbps), but it doesn't work reliably.

You can try my Android app [1] to reproduce the experiments for short transmissions.

[1] https://play.google.com/store/apps/details?id=bit.zeyde.audi...

Nicely done, I'll note for the readership here that a similar technique works fine at 300 baud across the room using FSK.

Something you might consider is to write a web camera backend for it and use the screen/webcam. That has a lot more bandwidth and has higher SNR as the selector effect of the web camera is so much better than that of a microphone.

FSK across the room? Does that have noise restrictions?

I’ve found all the phase modulation schemes work poorly across the room. DSSS works ok but is very slow. I would be curious how reliable FSK is in that situation.

With 1270Hz/1070Hz you've got over 3 complete cycles to identify the tone at 300 baud, at higher frequency pairs it gets better. The person who wrote it was Tom Lyon at Sun but I bet I could reproduce it with a gnuradio-companion flow graph. That would make it pretty easy for anyone to play with it.
Interesting, I will have to give it a try then. Thanks!
I don't have first hand experience but I believe a big problem with sound channels is multipath propagation/challenging frequency response. FSK naturally deals quite well with those; it's similar to OFDM but more robust due to single carried symbols. You can extend the symbol period as long as you like while using an adequate number. Finally in challenging environments it'd a good idea to use error correction, not just error detection as done here -- you can (in theory) achieve reliable transmission over arbitrarily noisy channels by adding redundancy.
I have experimented with FSK modulation myself and was able to achieve quite reliable transmission across the room [1]. Although the bandwidth is quite low (8-16 B/s), it works most of the time.

[1] https://ggerganov.github.io/jekyll/update/2018/05/31/data-ov...

Neat library!

Your post mentions not finding any reliable modem libraries. I'm curious what issues you had with mine, if you tried it?

https://quiet.github.io/quiet-js

hmm, if you where using a screen/webcam, could you do something horribly crude like flash QR codes and leverage their EC?.
Funny you should mention that, I wrote exactly that sort of link using my QR clock code (tweet embedded video of same: https://twitter.com/ChuckMcManis/status/794025248203022336)