Skip to content
Albert Armea edited this page Mar 26, 2018 · 3 revisions

Noise should work across multiple radios to decrease the barrier to entry but still allow for long-range communication.

Discovery

Bluetooth LE - this is discussed in more detail on my blog.

Syncing

Bluetooth

Bluetooth LE bootstraps a Bluetooth Classic serial connection, which we can then use bidirectional sync on.

IP-based discovery

Useful anywhere there is an existing Wi-Fi network but it has no Internet access (or connecting to the Internet costs money, like on a cruise ship)

See how others do it

Once a connection is established, we'll have a full-duplex socket we can use bidirectional sync on.

Ultrasound

TODO

Two-way radios

General idea

  • Plug in the phone to a two-way radio via the headphone jack using a crossover cable (headphone out <-> microphone in on both ends), and use it like a modem
  • Maybe establish a specific set of channels to be used for Noise?
  • Open question: Does this violate FCC rules? There are many unlicensed standards, like FRS and GMRS
  • Open question: Will we be able to control when the radio is transmitting from the app? 2.5mm headsets can have a push-to-talk button, so hopefully this can be triggered by a channel on the headphone out -- see this pinout, definitely need to test this
  • Quiet, an Android softmodem library: https://github.com/quiet/org.quietmodem.Quiet

Broadcast protocol

The protocol for this is a little weird - if everyone is on the same channel, all communications are necessarily broadcast, and only one device should be allowed to broadcast at once

  • Because we are broadcasting, there is no opportunity to negotiate modem parameters so these will have to be predetermined
  • Each device can keep a record of when it received each message and use the frequency in a given amount of time to determine how popular it is. When sending messages, it should prioritize sending unpopular but important messages until some equilibrium is reached. (see ant job allocation)
  • Devices need to take turns broadcasting. Once it's a device's turn to broadcast, it will send out a fixed number of messages and then yield the channel to the next device.
  • Open question: How is the order determined? This should also be a self-regulating system of some sort
  • LTE time slicing
  • One solution could be to allocate slices a few seconds each within a period of a few minutes. Each device can then pick one or a few random slots to broadcast in, with the amount varying inversely by some measure of how crowded the channel is.