Can this be done (internet backhaul)?


Can this be done with Firmware and/or App update?

What the photo shown above is:

  • [ Handset(s) without goTenna(client) ] will link to [ Handset with goTenna(host) ] via Wifi
    So users within the same house Only uses 1 goTenna

Does this map assume there is a powered Wifi Router (which is not shown)?

As GoTenna’s are meant for more emergency situation (i.e. one where the network is down), the chances of having a powered and functional wifi router would be an issue.

As phones cannot create an ad hoc wifi network the interphone connections would need to be Bluetooth and at that point (given the limited range) the needs for this kind of things evaporates.

I suppose if you assume a situation where local power exist but not Wide Area Network or Cell network existed (like a College Campus with good backup power) that the GoTenna app could try to pass app to app messages but it would need some ad hoc protocol to do so.

One problem is that the GoTenna Device does not pass messages not for itself through to the software on the phone and hence any GID downstream of the user with the GoTenna device would not be reached.

To achieve what you suggest not only would the protocol for passing GoTenna content ad hoc across a functional wifi network be needed but now all traffic would need to be passed which causes all kind of privacy issues. Alternatively, a significant change would be necessary so that every downstream GID was known to the GoTenna and hence it would keep and pass internally any messages for one of the GID’s known to be downstream (much like a CelTower know you are in the area to pass a call to you)

Given the above, the idea is probably not viable for one or more of the stated reasons.


You actually got me thinking that there must already be some form of off grid chat for the iPhone (sorry I am an apple guy).

This app caught my eye (

This might make a nice side addition to GoTenna allowing a GoTenna user to pass messages and a human operator.

Interesting to note while it works fine over Wifi the initial negotiation of the ad hoc network uses BlueTooth to “data transfers get negotiated and carried out by establishing a direct connection between the two devices’ Wi-Fi antennas, making possible short-range content transfers.”

Of course, as sideloading is not easily achieved on an iOS device this is best prepared for in advance.


With some upgrades to the app, that should be possible. Phones can create a WiFi hotspot that other devices can connect to and the host app simply relays the GID and message of the client app. Business-wise, GoTenna would likely rather sell you more Mesh units than have a single device host many clients (though I’d gladly like to be proven wrong).

As for Firechat, I’ve been down that road and GoTenna blows it out of the water for functionality. It’s worked for me once in real world.


Will review and give input asap. Got to go to my night job then hike up a mountain :slight_smile:

The update, FireChat Love, lets you create a network where any iOS device can connect to any Android device. The old version of the app would only let you connect iOS-to-iOS or Android-to-Android. So there’s no longer a need to discriminate between friends based on their choice of device when creating a mesh network. You can now just discriminate against who you actually want to talk to.


@R-Man can you tell us about the problem your solution may help solve?

1 Like

It might be easier to add support for the new Bluetooth mesh protocol. Then there would not be any powered Wi-Fi required. I believe that any device that supports Bluetooth LE will be able to receive the driver update for Bluetooth Mesh.


This is possible now if someone wants to write the app using the API from gotenna and the API from these guys:


@dbfish looks just like the Open Garden SDK?

1 Like

Same idea but firechat is terrible and their app actually works pretty well.

1 Like

Upon review this is out of my area of expertise HOWEVER: It is an awesome idea! Make it happen!

1 Like

I second the notion that firechat is not all that great. For someone that develops Android apps this should not be too tough with the SDK. I would invision one Android device that receives all the messages and passes them on. A wireless router would be needed as well if you wanted good results. Many routers can run directly off 12 volts. My personal Android coding skills aren’t that great. I think the last app I made was on Android 2.0 or 3.0. A lot has changed since then. If I take on a project it will be Tasker integration. Until the snow falls here in Michigan all my attention is on outdoor activities. Mostly Kayaking and biking.

I suggested the idea of a Tasker plug in to Jorge. Tasker is an Android app that let’s you build your own tasks to do all kinds of cool stuff. Those tasks can be exported as full Apps that can be put into the Android market. I think Tasker support would open us up to all kinds of cool projects that might otherwise be a little too technical for the average user.

1 Like

Would be great, even better if you could connect it to destop / laptop computers.

Would not hold my breath on this. Gotenna rather sells more units…

1 Like

I’d go lighter on the assumptions :wink: We think of ourselves as a protocol company that makes specialized hardware because our devices are locked away from and/or cannot currently provide this functionality. As I said to TechCrunch yesterday:

And perhaps in the end, Perdomo suggested, goTenna will actually make its own hardware obsolete:

“Today our phones don’t allow us to do what goTenna does, but we’re going to prove that they should be able to.”


From what I can tell gotenna can network a collection of clients within 3-4 hops of each other. Problem is with any collection of people doing something there’s often someone organizing things. Said person often has internet access, but may not be local. Seems like gotenna would have many new/exciting uses if clients could be anywhere.

Sure an SMS gateway is an ugly hack, insecure, generally limited to phones, and won’t work unless there’s a local cell tower for the receiver. After all how are rescuers on the north side of the mountain going to talk to those on the south side?

A much more useful setup would be allow users to use the android app to communicate with any gotenna user world wide. I don’t think it would be particularly hard to setup, but from browsing the SDK I do think it would require changes to the gotenna units.

It could work something like:

  • gotenna would add a setting to say “This is a gateway” and exposes it via the SDK.
  • Gateway nodes would let local gotenna nodes know it’s a gateway. Passively spying might be enough assuming the GIDs of each client are not encrypted.
  • non-gateway nodes with messages for a GID they can’t locate would forward to the gateway
  • non-gateway nodes would occasionally let the gateway know they are online (every 10 minutes?)
  • The laptop/raspberry Pi/android widget connected to the gateway would form a global DHT (distributed hash table) and would find other nodes running the same software. For each local GID it would post to the DHT the ipaddress and port of the gateway so anyone on the planet would know which gateway to connect to. This is exactly how torrent nodes can find peers on the same torrent world wide.
  • Any message for a non-local GID would do a lookup in the DHT looking for a gateway to connect to. Once found the messages would be forwarded to the gateways IP:port.

The bandwidth needs should be modest. This would allow android/IOS apps (with minimal changes) to chat with any gotenna client. This would allow scenarios like happened in Puerto Rico where people at home are scouring local resources to find things that are needed in the field. I read stories about folks cutting into building and running out of saw blades, feeding that request up the line, and people helping from home and using social media to get that saw to where it was needed.

Any non-trivial rescue operation is going to have some resources outside of that 3-4 hop range. Seems silly to require humans to be the go between for the gotenna network and the rest of the planet. Creating a routing layer (that’s internet aware) would fix that. When having fun you could taunt your online friends into coming… even if your phone didn’t currently have a network connection. Personally I’d leave my phone + gotenna in router mode most of the time as long as the bandwidth didn’t get so high it was costing me noticeably money.

I’d be happy to explain this in more detail. DHTs are common for this kind of thing (finding peers world wide). I ported one written in Go to IPV6. The nice thing about this is any local nodes could form a DHT. Say an island hit by a hurricane with no network off the island. They could still use what’s left of the local network to coordinate between separate pools of gotenna users. Ham Packet radio could also handle the long haul links if needed.

I’d be willing to work on this if the needed changes could be made in the gotenna units and the needed calls added to the SDK.


@spikebike this is a bold assumption that may not be 100% true. If you scan this community alone, I am sure you will find many examples of people using goTenna Mesh for group activities, search & rescue etc.
Establishing connectivity across users anywhere is a goal we are working towards.

I am very glad to hear that you are interested in building an app that uses the goTenna SDK and offers backhaul to the internet. Happy to help!

If you are interested in building your own app, you can easily do this without requiring any changes to the current SDK. The app you are building can advertise to a web service, whenever it detects that internet connectivity is available. Doing this will not require a change to the SDK.

Your app could send out a shout message advertising gateway nodes. I do not recommend this. Every message sent over the goTenna Mesh network, consumes bandwidth & battery life. The goal should always be to keep transmissions to the minimum.

Same comment as above. Minimize transmissions whenever possible.

Sounds like a great idea.

Neat! You can do this with the today’s SDK.

Hope this clarifies things. Excited to learn more about what you are building!


If this was done the coverage map could be updated in kinda real time. TTL would be important to think about (number of hops before a router drops the request) if you want to do “live” internet connections. The data would most likely be slower compared to wifi and 4G (do not let that stop you… slow data is better than no data).

Maybe having a few stored websites with a client to access them built into the device would be a better idea? Kinda like the Outernet idea

Use news sites for an example (They are always updating):
When a node connects to the internet through bluetooth to the phone to the internet, it fetches the latest news page and saves it to the mesh node… the node with the old news page “asks” for the new news page from the node and the new updated page is sent with the latest news… this news works its way throughout the network until eventually everyone has a copy of the new news page


Very true words here :wink:

1 Like

You can’t just go around doing this without letting us know. (So we can go read the articles). :wink: You might have posted on Twitter or Facebook but I don’t go to either one very often. It would be cool if we had some place to go for Gotenna news even if you just post it here occasionally.

1 Like