Over the last couple of weeks, I’ve become interested in off-grid communication, and I am currently looking into creating a simple communication protocol wherein multiple raspberry pi’s are able to send and receive messages to each over a long range (approximately 10-15km) in a mesh network configuration. This would be beneficial in a developing context, where the cost of data is prohibitive and locals have a desire to access localised services and chat within their context in an intranet-like setting. It could empower them to create their own decentralised communication networks, which are a lot cheaper to set up and owned by the individuals, as opposed to relying on telecom infrastructure which can be censored.

The system would be used as follows:

The user first connects to raspberry pi device via Bluetooth from their mobile phone (in an ideal setting, each user would own their own device and carry it around their pocket, so the device itself needs to be relatively inexpensive).

The user opens up a messaging app which works offline, the app checks for the required connectivity to the raspberry pi device.

The app allows users to send and receive encrypted text messages. Whenever the user presses send, it transfers the message to the radio device and that is broadcasted to the network. In order to send and receive messages, the recipient must be connected to nearby radio device so that they can listen for a message with a specific wave signature. Once they receive the message, it is decrypted automatically and available for them to consume. In order to ensure that the recipient is online, the sender’s radio sends out a handshake message to the recipient. Once the recipient consumes the message, they respond with an affirmation message, which then creates a communication channel between both sender/recipient which expires after 24 hrs, or when either participant goes offline.

If a participant has internet access, then they can act as en exit nodes. Exit nodes can earn money by making calls to the “outside world” for network participants. For example, if a participant wants to find out the USD-GBP FX rate, they can ping the network to find out who has that information. If no one has it, then they can pay the exit node a small fee (0.01 cents) to retrieve the data on their behalf.

I was just wondering how I would go about achieving this with the raspberry pi. What kind of hardware would I need to get started?

  • connects to raspberry pi device via Bluetooth connects what? a bluetooth headset? a mobile phone? The user opens up a messaging app on the RPi? or on the device that connects to the RPi? Jul 12 '18 at 23:18
  • Yes the user connects a phone to the raspberry pi device via bluetooth and then opens up the messaging app on the RPi.
    – methuselah
    Jul 13 '18 at 8:50
  • why would someone possess a phone where there is no mobile signal? :p Jul 13 '18 at 8:50
  • It's fairly common. People tend to travel to the cities or somewhere with signal when they need to make a call. Also, it might be that the cost of owning a phone is cheaper than the cost of purchasing airtime. We are quite privileged in the West to have access to cheap data bundles. It's not the same everywhere
    – methuselah
    Jul 13 '18 at 8:56
  • Bear in mind that during government elections in repressed jurisdictions, the government tend to throttle access to mobile networks when it suits them. Decentralising communications infrastructure can offset that risk. Companies like gotenna.com are already doing it
    – methuselah
    Jul 13 '18 at 8:59

You can probably use LoraWAN. It is built for an application like this. There might already be a LoraWAN network deployed near you. The commercial deployments let low power devices send data to the internet by sending data to gateways first which relay the data to the internet.

What you can do is to deploy a gateway connected to the internet and all the nodes would send the data to that gateway or relay it to another gateway which sends it to the internet. On the other side you could either deploy something like a Lora module connected to a bluetooth module which can be used to communicate with mobile phones and have them send data over the Lora network and get it back.

There are Raspberry Pi based nodes and gateways available and there are companies like this which sell and deploy commercial Lora networks

  • Thanks for this. I’ll have a look. Is there any way to do some thing like this: n-o-d-e.net/meshdevice.html
    – methuselah
    Jul 12 '18 at 13:39
  • Ideally I want to develop a system that doesn’t depend too much on third party vendors so that it will work in extremely harsh conditions
    – methuselah
    Jul 12 '18 at 13:51
  • You can pretty much deploy LoraWAN on your own too once you get all the hardware, however that would mean deploying your own gateways as well as configuring and maintaining them.
    – karan
    Jul 12 '18 at 15:11

This is actually something that the Raspberry Pi isn't ideally suited to. There are 32 bit microcontrollers such as Esp32, Stm32, and various ARM options that would have much lower power requirements (as in microwatts during deep sleep that they can come out of either on a timer, or by certain events). These would be much more likely to be able to be off grid and with lower cost. I agree with the LoRa recommendation though that is available for these microcontrollers too.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.