{"id":20338420,"url":"https://github.com/valerio-vaccaro/loracaster","last_synced_at":"2025-06-21T21:07:48.653Z","repository":{"id":41559347,"uuid":"154165349","full_name":"valerio-vaccaro/LoraCaster","owner":"valerio-vaccaro","description":"A LoraWan TTN compatible firmware for a cheap ESP32/Lora board.","archived":false,"fork":false,"pushed_at":"2018-12-16T17:06:09.000Z","size":1144,"stargazers_count":58,"open_issues_count":0,"forks_count":6,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-11T23:14:26.599Z","etag":null,"topics":["esp32","iot","lorawan","ttn"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/valerio-vaccaro.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}},"created_at":"2018-10-22T15:11:44.000Z","updated_at":"2025-01-10T19:33:03.000Z","dependencies_parsed_at":"2022-09-21T13:20:16.190Z","dependency_job_id":null,"html_url":"https://github.com/valerio-vaccaro/LoraCaster","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/valerio-vaccaro/LoraCaster","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valerio-vaccaro%2FLoraCaster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valerio-vaccaro%2FLoraCaster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valerio-vaccaro%2FLoraCaster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valerio-vaccaro%2FLoraCaster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/valerio-vaccaro","download_url":"https://codeload.github.com/valerio-vaccaro/LoraCaster/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valerio-vaccaro%2FLoraCaster/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261193126,"owners_count":23122909,"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","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":["esp32","iot","lorawan","ttn"],"created_at":"2024-11-14T21:13:05.326Z","updated_at":"2025-06-21T21:07:43.634Z","avatar_url":"https://github.com/valerio-vaccaro.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LoraCaster, the Swiss Army Knife of LoraWan\nLoraCaster, the Swiss Army Knife of LoraWan, is a LoraWan TTN compatible firmware for the cheap ESP32/Lora boards.\n\n```\n*===================================================================================*\n :::         ...    :::::::..    :::.       .,-:::::   :::.     .::::::.::::::::::::\n ;;;      .;;;;;;;. ;;;;``;;;;   ;;`;;    ,;;;'````'   ;;`;;   ;;;`    `;;;;;;;;''''\n [[[     ,[[     [[,[[[,/[[['  ,[[ '[[,  [[[         ,[[ '[[, '[==/[[[[,    [[\n $$'     $$$,     $$$$$$$$$c   c$$$cc$$$c $$$        c$$$cc$$$c  '''    $    $$\no88oo,.__\"888,_ _,88P888b \"88bo,888   888,`88bo,__,o, 888   888,88b    dP    88,\n\"\"\"\"YUMMM  \"YMMMMMP\" MMMM   \"W\" YMM   \"\"`   \"YUMMMMMP\"YMM   \"\"`  \"YMmMY\"     MMM   ER\n                   LoraCaster, the Swiss Army Knife of LoraWan\n*===================================================================================*\n                 LoraCaster v.0.0.1 build on Oct 28 2018 21:26:41\n*===================================================================================*\n\nGeneral commands:\n   h - shows this help\n   v - toggle verbosity\n   l - toggle led\nCommunication commands:\n   p[hex payload]! - charge payload in the memory max 1k byte\n   d - dump actual payload present in the memory\n   S - start transmission\n   H - halt transmission\nAdvanced commands:\n   t - send a Test message with content 0123456789 (ASCII)\n   c - shows LoraWan/TTN Configuration\n   b[]! - set message dimension in byte 0-100 (actual 100)\n   r - toggle retransmission (actual 0)\n   w[value]! - set delay between packets in second 0-255 (actual 0)\n   f[] - set spreading factor between 7,8,9,10,11,12 (actual 7)\n   R - generate a new random packet ID (actual 0x53 0x12)\n*===================================================================================*\n```\n\n## General commands\n\n- h - shows help and main configurations .\n- v - enable/disable verbose debug messages.\n- l - toggle the status of the blue led on the board.\n\n## Communication commands\n\n- p[hex payload]! - load the hex payload passed in the board memory (MAX 1k byte).\n- d - dump the actual payload present in the board memory.\n- S - start the transmission of the payload present in memory. The payload is broken on chunks compatibles with the maximum message dimension (set with b command).\n- H - set the halt flag, next transmission will be halted.\n\n## Advanced commands:\n\n- t - send a Test message with content 0123456789 (ASCII), this command set the halt flag in order to stop next message.\n- c - shows LoraWan/TTN configuration in hexadecimal format.\n- b[]! - set the message maximum dimension in byte 0-100.\n- r - toggle retransmission flag (useful for transmit the same payload many times)\n- w[]! - set delay between packets in second 0-255.\n- f[] - set spreading factor between 7,8,9,10,11,12.\n- R - generate a new random packet ID\n\n## Communication protocol\nThe payload is exploded in n messages based on message maximum dimension. Every message has the following format:\n\n1. LWC - magic number (3 bytes )\n2. \u0026ast; - separator (1 byte)\n3. 00 - packet ID (2 bytes) same ID for the same parts of the same payload\n4. \u0026ast; - separator (1 byte)\n5. 0 - message number (1 byte) progressive message counter\n6. 0 - total messages (1 byte) number of total messages needed to have the complete message\n7. \u0026ast; - separator (1 byte)\n8. ... - informative content (1-100 bytes) part of the complete message to be transmitted\n\n## Available boards\nThe firmware is actually tested on the following boards:\n\n- TTGO ESP32 Lora (with or without OLED)\n- HelTec WiFi Lora 32 v.1 - consider to buy a [v.2](http://www.heltec.cn/project/wifi-lora-32/?lang=en)\n\n## Usage examples\nSome examples are provided in order to use LoraCast in some real scenarios:\n\n- [File](https://github.com/valerio-vaccaro/LoraCaster/tree/master/usage_examples/File) - move a file in the memory of the board, send in via Lora and receive with provided python script.\n- [BTC](https://github.com/valerio-vaccaro/LoraCaster/tree/master/usage_examples/BTC) - generate a new transaction (via RPC), send it via Lora, receive the complete transaction, check and broadcast it (using the RPC available from a core node) - Require a Bitcoin core working node.\n- [LTC](https://github.com/valerio-vaccaro/LoraCaster/tree/master/usage_examples/LTC) - generate a new transaction (via RPC), send it via Lora, receive the complete transaction, check and broadcast it (using the RPC available from a core node) - Require a Litecoin working node.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalerio-vaccaro%2Floracaster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvalerio-vaccaro%2Floracaster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalerio-vaccaro%2Floracaster/lists"}