{"id":23801897,"url":"https://github.com/notreeceharris/rpi-lora-comms","last_synced_at":"2025-10-09T17:38:06.974Z","repository":{"id":268963716,"uuid":"906005880","full_name":"NotReeceHarris/rpi-lora-comms","owner":"NotReeceHarris","description":"Secure, long-range communication system using Raspberry PI with encrypted radio transmission.","archived":false,"fork":false,"pushed_at":"2025-04-15T00:21:11.000Z","size":2510,"stargazers_count":5,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-01T09:57:03.898Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NotReeceHarris.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-20T00:53:00.000Z","updated_at":"2025-05-01T01:35:12.000Z","dependencies_parsed_at":"2024-12-22T22:21:33.467Z","dependency_job_id":null,"html_url":"https://github.com/NotReeceHarris/rpi-lora-comms","commit_stats":null,"previous_names":["notreeceharris/rpi-lora-encrypted-comms","notreeceharris/rpi-lora-comms"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NotReeceHarris/rpi-lora-comms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotReeceHarris%2Frpi-lora-comms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotReeceHarris%2Frpi-lora-comms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotReeceHarris%2Frpi-lora-comms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotReeceHarris%2Frpi-lora-comms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NotReeceHarris","download_url":"https://codeload.github.com/NotReeceHarris/rpi-lora-comms/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotReeceHarris%2Frpi-lora-comms/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001868,"owners_count":26083197,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-01T22:15:42.712Z","updated_at":"2025-10-09T17:38:06.957Z","avatar_url":"https://github.com/NotReeceHarris.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ![rpi-lora-encrypted-comms](documentation/banner-v1.0.png)\n\n\u003cins\u003e Encrypted Long-Range Radio Communication \u003c/ins\u003e, Powered by [Raspberry Pi](https://en.wikipedia.org/wiki/Raspberry_Pi) and the LoRa protocol, this project enables secure, offline communication between two nodes using various encryption algorithms, security techniques, and the [LoRa radio protocol](https://en.wikipedia.org/wiki/LoRa). Access the secure web interface via local-nework when connected to the Raspberry Pi's personal hotspot. This setup ensures data privacy and integrity over long distances, making it ideal for scenarios requiring private communication without traditional internet infrastructure.\n\n## Hardware Requirements\n\nTo implement this project, each node should have the following hardware. While you can adapt this concept to suit other devices, here's the most cost-effective and widely supported setup:\n\n- **Raspberry Pi:** [Raspberry Pi Zero WH (With headers)](https://thepihut.com/products/raspberry-pi-zero-wh-with-pre-soldered-header) / [Raspberry Pi Zero 2 W (With headers)](https://thepihut.com/products/raspberry-pi-zero-2) / [Raspberry Pi 3B ](https://thepihut.com/products/raspberry-pi-3-model-b)\n- **LoRa HAT:** [SX1268 LoRa HAT for Raspberry Pi (433MHz)](https://thepihut.com/products/sx1268-lora-hat-for-raspberry-pi-433mhz) ([docs](https://www.waveshare.com/wiki/SX1268_433M_LoRa_HAT))\n\n**Note:** For a basic point-to-point communication system, you'll need two of each items above (*I'm using a Raspberry Pi Zero WH*).\n\n## Getting started\n\nYou will need two nodes as described above. Once both nodes are set up, you can either use a [pre-created image](https://github.com/NotReeceHarris/rpi-lora-comms/releases) or follow the setup guide.\n\nIf you prefer to complete the setup manually or encounter issues with the installer, please refer to the [manual setup guide](documentation/setup.md). For the installer, you must first enable the serial ports. To do so, run the command `sudo raspi-config`, then navigate to: Interfacing Options → Serial → No → Yes.\n\n![Interfacing Options → Serial → No → Yes](documentation/serial-instructions-v1.1.png)\n\nOnce you have enabled the serial port hardware and disabled the login shell over serial, your LoRa component will be ready for communication after properly configuring the SX1268 LoRa HAT jumpers. First, remove all yellow jumpers from the UART selection jumpers **(10)** and LoRa mode selection jumpers **(11)**. Next, add jumpers to B on the UART selection jumpers **(10)**. You do not need to reconnect any of the LoRa mode selection jumpers **(11)**, as the board will be powered via the Raspberry Pi's GPIO pins. The attached image provides a clear visual guide for the jumper configurations.\n\n![Hardware diagram of SX1268 LoRa HAT](documentation/SX1268-LoRa-HAT-v1.6.png)\n\n\u003cdetails\u003e\n\u003csummary\u003eCorrectly configured jumpers. \u003c/summary\u003e\n\u003cbr\u003e\n\u003cimg src=\"documentation/SX1268-433M-LoRa-HAT-configured-jumpers-v1.0.jpg\"\u003e\n\u003c/details\u003e\n\nNext, you need to install the software. Below is an automatic installer that is ideally suited for use on a fresh OS image. If you prefer manual installation steps, they are [available here](documentation/setup.md).\n\n```bash\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/NotReeceHarris/rpi-lora-comms/HEAD/system/raspberry-pi-installer.sh)\"\n```\n\n\n## Documentation\n\n- **Raspberry PI:** [Setting up your own node](documentation/setup.md).\n- **LoRa Protocol:** [What is the LoRa protocol](documentation/lora.md).\n- **Security Conciderations:** [How secure is this, what are the potential vulnerabilities?](documentation/security.md)\n\n**Write up:** If your intreseted in my journey creating this project [please read my blog post](https://reeceharris.net/blog/creating-a-secure-radio-communication-system/). *(Beware alot of content)*\n\n\n\u003c!--\n\n## Prerequisites\n\n- Docker: Ensure Docker is installed on your system. You can download it from Docker's official website.\n- Docker Compose Plugin: Make sure you have the Docker Compose plugin installed. If you're using a recent version of Docker Desktop, it should be included. Otherwise, follow these instructions for installation.\n\n## Installation\n\n```bash\ngit clone https://github.com/NotReeceHarris/rpi-lora-encrypted-comms.git\ncd rpi-lora-encrypted-comms\ndocker compose up --build -d\n```\nI aim to provide pre-configured ISO images for the Raspberry Pi Zero 2 W in the future to simplify deployment on this specific hardware.\n\n### Additional Tips\n\n```bash\n# Building with No Cache: If you encounter issues or want to force a complete rebuild\ndocker compose build --no-cache\n\n# Running in Detached Mode: To run the containers in the background\ndocker compose up --build -d\n\n# Stopping the Containers: To stop the running containers\ndocker compose down\n```\n\n## Documentation\n\n- [SX1268 433M LoRa HAT](https://www.waveshare.com/wiki/SX1268_433M_LoRa_HAT)\n- [Docker Compose](https://docs.docker.com/engine/install/debian/)\n\n\n## What is LoRa?\n\nLoRa (Long Range) is a wireless modulation technique based on Chirp Spread Spectrum (CSS) technology, which uses chirp pulses to encode information on radio waves, similar to how dolphins and bats communicate. This technology:\n\n- Offers **robustness** against disturbances, allowing for reliable communication over long distances.\n- Is perfect for applications transmitting **small data packets** at **low bit rates** with **extended range** compared to technologies like WiFi, Bluetooth, or ZigBee.\n- Supports **low power consumption**, making it ideal for battery-powered IoT devices.\n\nLoRa operates on license-free sub-GHz ISM bands like:\n- 915 MHz (North America)\n- 868 MHz (Europe)\n- 433 MHz (Asia)\n\nIt can also operate on 2.4 GHz for higher data rates but at the expense of range.\n\n![Bandwidth vs. Range](assets/500px-SX1268-433M-LoRa-HAT-103.jpg)\n\n--\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotreeceharris%2Frpi-lora-comms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnotreeceharris%2Frpi-lora-comms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotreeceharris%2Frpi-lora-comms/lists"}