Gemini over LoRa

This is a holding page while I collect my thoughts and links.

TLS would be painful on an MCU, but not impossible. It might also limit the effectiveness, since LoRa bitrate drops with distance. So ditch TLS between client and gateway.

However, LoRaWAN offers 128-bit AES, so it's possible that TLS could be substituted for the existing tech.

https://blog.arduino.cc/2020/07/02/arduino-security-primer/

https://www.thethingsnetwork.org/docs/lorawan/security.html

Overview

What I have in mind is an MCU connected to to a LoRa module, a screen, and a keyboard. A connection is established by broadcasting for gateways, and the user selects from all that respond, and sends a Gemini URL. The gateway returns a 'token' that is used by the client to fetch the response in multiple packets.

Something like that anyway.

A gateway could perhaps operate with reduced LoRaWAN, or maybe LoRaLayer2 from disaster.radio, or something else.

The gateway will fetch the requested page, or returns the most recent page from the cache. It will be necessary to indicate if the page is 'fresh' or cached.

https://github.com/sudomesh/disaster-radio

https://github.com/sudomesh/LoRaLayer2

Maybe Longan Nano, since it has USB OTG for a keyboard and SPI to drive a display. However it seems hard to source a 640px wide display that's driven by SPI.

Another option is Raspberry Pi Zero, but it consumes a lot of power and has a really slow bootup process. I also don't like its dependence on SD cards for a boot device.

https://www.sigmdel.ca/michel/ha/gd32v/longan_nano_01_en.html

Gemini on ESP32

A project by Iván Ávalos provides a C++ Gemini client that runs on the ESP32 SoC microcontroller board. The code runs directly on the module, since WiFi is available. This has a number of interesting use-cases, though the range is of course limited by the frequency band it operates on.