{"id":39909323,"url":"https://github.com/robthomson/mlrs-ethos","last_synced_at":"2026-01-18T16:05:10.204Z","repository":{"id":321772098,"uuid":"1087092699","full_name":"robthomson/mlrs-ethos","owner":"robthomson","description":"Configure your mLRS module from within ethos.","archived":false,"fork":false,"pushed_at":"2025-12-30T15:06:52.000Z","size":91,"stargazers_count":2,"open_issues_count":2,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-03T07:39:21.962Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robthomson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"robthomson"}},"created_at":"2025-10-31T11:16:14.000Z","updated_at":"2025-12-30T15:06:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/robthomson/mlrs-ethos","commit_stats":null,"previous_names":["robthomson/mlrs-ethos"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/robthomson/mlrs-ethos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robthomson%2Fmlrs-ethos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robthomson%2Fmlrs-ethos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robthomson%2Fmlrs-ethos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robthomson%2Fmlrs-ethos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robthomson","download_url":"https://codeload.github.com/robthomson/mlrs-ethos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robthomson%2Fmlrs-ethos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28541068,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T14:59:57.589Z","status":"ssl_error","status_checked_at":"2026-01-18T14:59:46.540Z","response_time":98,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2026-01-18T16:05:10.130Z","updated_at":"2026-01-18T16:05:10.197Z","avatar_url":"https://github.com/robthomson.png","language":"Lua","funding_links":["https://github.com/sponsors/robthomson"],"categories":[],"sub_categories":[],"readme":"# MLRS mBridge-over-CRSF Tool for Ethos\n\nA Lua utility for **Ethos transmitters** that provides a graphical configuration interface for **MLRS (Malink Long Range System)** devices over the **CRSF protocol** using the *mBridge* layer.\n\nThis script allows you to **view, edit, and save MLRS parameters** directly from your Ethos radio without connecting to a computer or using the MLRS web configurator.\n\n---\n\n## ✨ Features\n\n- 📡 **Direct MLRS integration** via CRSF (Crossfire) telemetry.\n- 🧭 **Automatic discovery** of device parameters and metadata.\n- ⚙️ **Auto-reconnect** after module reboot or power cycle.\n- 🧱 **Fully dynamic UI** — fields are built automatically from MLRS parameter descriptors.\n\n---\n\n## 🛰️ What Is MLRS?\n\n**MLRS (Modular Long Range System)** is an open-source, low-latency, long-range RC link used by the FPV and RC communities.  \nIt supports both RC control and telemetry and is highly customizable, allowing flexible configuration of parameters such as power, frequency, failsafe, etc.\n\nProject links:\n\n- 🌍 [Official MLRS GitHub](https://github.com/AlessandroAU/ExpressLRS/tree/mlrs)\n- 💬 [Discord \u0026 Community](https://discord.gg/expresslrs)\n\n---\n\n## 🧩 What Is mBridge?\n\n**mBridge** is a lightweight bridge layer inside MLRS that exposes its internal parameters over the CRSF protocol.  \nThis script communicates with mBridge by sending and receiving `A0+CMD` packets over CRSF telemetry.  \nEach parameter (or \"item\") is described by a set of structured frames (`ITEM`, `ITEM2`, `ITEM3`), from which the script dynamically builds the Ethos form fields.\n\n---\n\n## 🕹️ Installation\n\n1. Copy `main.lua` into your transmitter’s **Ethos → Tools → Scripts** folder.  \n   Example:  \n```/SCRIPTS/TOOLS/MLRS/main.lua```\n\n\n2. Restart your radio or reload the tools list.\n\n3. In Ethos:\n- Open **Model → Tools**\n- Add a new tool\n- Select **MLRS**\n\n4. Power up your MLRS module.  \nThe script will automatically connect, read the parameter list, and show configuration fields.\n\n---\n\n## 💾 Saving Settings\n\n- After editing values, tap **Save** at the bottom of the form.\n- The script will:\n1. Send the `PARAM_STORE` command to MLRS.\n2. Keep the progress loader open while the module reboots.\n3. Automatically reconnect and reload the parameters.\n- The loader text will change from “Writing…” → “Reconnecting…” → “Complete” once ready.\n\n---\n\n## 🧠 Troubleshooting\n\n- **Not all parameters appear?**  \nWait a few seconds — some metadata arrives after the main list.  \nIf persistent, ensure your CRSF link is stable and firmware up to date.\n\n- **Progress dialog flickers or closes early?**  \nThis version uses a *persistent loader* that stays visible through save → reboot → reconnect.  \nIf you still see flicker, verify that your Ethos version supports `form.openProgressDialog()` properly.\n\n- **No MLRS detected?**  \nMake sure the module is powered and connected via CRSF UART.\n\n---\n\n## 🧑‍💻 Development Notes\n\n- Written entirely in **Lua** for the Ethos scripting API.\n- Compatible with both internal and external MLRS modules using CRSF telemetry (e.g. TX16S, X20, etc.).\n- All form fields are created dynamically from parameter frames.\n- Implements a **single persistent progress dialog** managed by `progressEnsure()` for smoother user flow.\n\n---\n\n## 📜 License\n\nGPL-3.0 © 2025 Rob Thomson  \nSee [LICENSE](LICENSE) for details.\n\n---\n\n## 🧩 Credits\n\n- **Rob Thomson** — development and Ethos integration  \n- **MLRS / mBridge developers** — for open protocol and reference implementations  \n- **Ethos Team** — for providing a flexible Lua interface\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobthomson%2Fmlrs-ethos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobthomson%2Fmlrs-ethos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobthomson%2Fmlrs-ethos/lists"}