{
  "id": "lusofw",
  "name": "LusoFW",
  "type": "fork",
  "maintainer": "MeshCore Portugal",
  "maintainerUrl": "https://github.com/Meshcore-Portugal",
  "description": "A community MeshCore firmware distribution for the Portuguese community, with Portugal-oriented radio defaults, duty-cycle enforcement, network time synchronisation, flood-advert controls, and curated repeater and bridge builds.\n",
  "repository": "https://github.com/Meshcore-Portugal/lusofw",
  "website": "https://meshcore.pt",
  "license": "MIT",
  "status": "active",
  "scope": "universal",
  "lifecycle": "active",
  "maturity": "stable",
  "distribution": "community",
  "lineage": {
    "kind": "fork",
    "upstreamFirmwareId": "meshcore",
    "upstreamRepository": "https://github.com/meshcore-dev/MeshCore"
  },
  "runtime": {
    "framework": "arduino",
    "language": "C++"
  },
  "roles": [
    "repeater"
  ],
  "features": [
    "Portugal-oriented radio and region defaults",
    "Duty-cycle enforcement",
    "Network time synchronisation",
    "Flood-advert scheduling and reduction",
    "ESP-NOW and RS-232 repeater bridge builds",
    "SX126x boosted receive gain controls",
    "Curated browser-flashable releases"
  ],
  "capabilities": {
    "protocol": {
      "meshcoreCompatible": true
    },
    "transports": {
      "usbSerial": true
    },
    "operations": {
      "webFlasher": true,
      "ota": true
    },
    "networking": {
      "repeater": true,
      "roomServer": false,
      "observer": false,
      "mqtt": false,
      "kissModem": false
    },
    "hardware": {
      "gps": true,
      "display": true,
      "sensors": true,
      "lowPowerRx": false
    }
  },
  "verification": {
    "sourceAvailable": true,
    "releasesAvailable": true,
    "signedReleases": false,
    "reproducibleBuilds": false,
    "ciBuilds": true,
    "webFlasher": false,
    "hasDocumentation": true,
    "lastChecked": "2026-06-25",
    "notes": [
      "Release assets include SHA-1 checksum files.",
      "Published releases are curated repeater and repeater-bridge builds."
    ]
  },
  "devices": [
    {
      "id": "heltec-t114",
      "status": "supported",
      "target": "heltec_t114",
      "platformio_board": "heltec_t114"
    },
    {
      "id": "heltec-v3",
      "status": "supported",
      "target": "heltec_v3",
      "platformio_board": "heltec_wifi_lora_32_V3"
    },
    {
      "id": "heltec-v4",
      "status": "supported",
      "target": "heltec_v4",
      "platformio_board": "heltec_v4"
    },
    {
      "id": "heltec-v4-exp",
      "status": "supported",
      "target": "heltec_v4",
      "platformio_board": "heltec_v4",
      "notes": "Uses the Heltec V4 TFT release target."
    },
    {
      "id": "heltec-wsl3",
      "status": "supported",
      "target": "heltec_v3",
      "platformio_board": "heltec_wifi_lora_32_V3"
    },
    {
      "id": "lilygo-t3-s3-sx126x",
      "status": "supported",
      "target": "lilygo_t3s3",
      "platformio_board": "t3_s3_v1_x"
    },
    {
      "id": "lilygo-t3-s3-sx127x",
      "status": "supported",
      "target": "lilygo_t3s3_sx1276",
      "platformio_board": "t3_s3_v1_x"
    },
    {
      "id": "lilygo-tlora-1-6",
      "status": "supported",
      "target": "lilygo_tlora_v2_1",
      "platformio_board": "ttgo-lora32-v21"
    },
    {
      "id": "rak-3112",
      "status": "supported",
      "target": "rak3112",
      "platformio_board": "esp32-s3-devkitc-1"
    },
    {
      "id": "rak-4631",
      "status": "supported",
      "target": "rak4631",
      "platformio_board": "rak4631"
    },
    {
      "id": "sensecap-solar-p1",
      "status": "supported",
      "target": "sensecap_solar",
      "platformio_board": "seeed_sensecap_solar"
    },
    {
      "id": "sensecap-solar-p1-pro",
      "status": "supported",
      "target": "sensecap_solar",
      "platformio_board": "seeed_sensecap_solar"
    },
    {
      "id": "lilygo-t-beam-sx1262",
      "status": "supported",
      "target": "lilygo_tbeam_SX1262",
      "platformio_board": "ttgo-t-beam"
    },
    {
      "id": "lilygo-t-beam-1-2-sx1276",
      "status": "supported",
      "target": "lilygo_tbeam_SX1276",
      "platformio_board": "ttgo-t-beam"
    },
    {
      "id": "lilygo-tbeam-supreme",
      "status": "supported",
      "target": "lilygo_tbeam_supreme_SX1262",
      "platformio_board": "t_beams3_supreme"
    },
    {
      "id": "xiao-nrf52",
      "status": "supported",
      "target": "xiao_nrf52",
      "platformio_board": "seeed-xiao-afruitnrf52-nrf52840"
    },
    {
      "id": "xiao-esp32s3",
      "status": "supported",
      "target": "xiao_s3_wio",
      "platformio_board": "seeed_xiao_esp32s3"
    }
  ],
  "source": {
    "path": "data/firmwares/lusofw/firmware.yaml",
    "updatedAt": "2026-06-27T23:09:56+02:00"
  },
  "latest_version": "2026.5.2",
  "released": "2026-05-27",
  "releases": [
    {
      "version": "v2026.5.2",
      "name": "v2026.5.2",
      "datetime": "2026-05-27T15:22:12Z",
      "url": "https://github.com/Meshcore-Portugal/lusofw/releases/tag/v2026.5.2",
      "prerelease": false,
      "notes": "Based on MeshCore v1.15.0\nmain@ecd0cfc1c133aad93e65257f002151591f6bcfd9\n\n### Features\n\n- Add support for the Seeed P1 Pro bridge type\n- Restrict the “01” advert reduction to repeaters only",
      "notesHtml": "<p>Based on MeshCore v1.15.0\nmain@ecd0cfc1c133aad93e65257f002151591f6bcfd9</p>\n<h3>Features</h3>\n<ul>\n<li>Add support for the Seeed P1 Pro bridge type</li>\n<li>Restrict the “01” advert reduction to repeaters only</li>\n</ul>\n"
    },
    {
      "version": "v2026.5.1",
      "name": "v2026.5.1",
      "datetime": "2026-05-22T16:26:25Z",
      "url": "https://github.com/Meshcore-Portugal/lusofw/releases/tag/v2026.5.1",
      "prerelease": false,
      "notes": "## [v2026.5.1] - 22/05/2026\r\n\r\nBased on MeshCore v1.15.0\r\nmain@ecd0cfc1c133aad93e65257f002151591f6bcfd9\r\n\r\n### Features\r\n\r\n- Update versioning scheme to year.month.release format (e.g. 2026.5.1)\r\n- Include Lora longer preamble #1954 to improve 868MHz performance in Portugal\r\n- Reduce advert rate from 3 to 1 within the permitted broadcast window\r\n- Prevent advert from mobile repeaters identified with (01)\r\n\r\n**Full Changelog**: https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.7...v2026.5.1",
      "notesHtml": "<h2>[v2026.5.1] - 22/05/2026</h2>\n<p>Based on MeshCore v1.15.0\nmain@ecd0cfc1c133aad93e65257f002151591f6bcfd9</p>\n<h3>Features</h3>\n<ul>\n<li>Update versioning scheme to year.month.release format (e.g. 2026.5.1)</li>\n<li>Include Lora longer preamble #1954 to improve 868MHz performance in Portugal</li>\n<li>Reduce advert rate from 3 to 1 within the permitted broadcast window</li>\n<li>Prevent advert from mobile repeaters identified with (01)</li>\n</ul>\n<p><strong>Full Changelog</strong>: <a href=\"https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.7...v2026.5.1\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.7...v2026.5.1</a></p>\n"
    },
    {
      "version": "v0.0.7",
      "name": "v0.0.7",
      "datetime": "2026-04-01T14:51:33Z",
      "url": "https://github.com/Meshcore-Portugal/lusofw/releases/tag/v0.0.7",
      "prerelease": true,
      "notes": "# Changelog\r\n\r\n## [v0.0.7] - 01/04/2026\r\n\r\nBased on MeshCore v1.14.1\r\nmain@467959cc3bfc884e5f3425caac89453a450151b6\r\n\r\n### Features\r\n\r\n- Increase default airtime factor to 9.0 (targets ~10% duty cycle)\r\n- Set default `flood_advert_interval` to 24 hours (instead of disabled)\r\n- Only schedule flood advert timers when `flood_advert_interval` is greater than 0\r\n- Add version-aware defaults migration with persisted firmware version tracking\r\n- Apply only defaults newer than the stored version during migration\r\n- `radio.lna` renamed to `radio.rxgain`, use with `get` and `set`\r\n- Add rs232 support for Xiao NRF52 (serial1, rx(7), tx(6))\r\n\r\n**Full Changelog**: https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.6...v0.0.7",
      "notesHtml": "<h1>Changelog</h1>\n<h2>[v0.0.7] - 01/04/2026</h2>\n<p>Based on MeshCore v1.14.1\nmain@467959cc3bfc884e5f3425caac89453a450151b6</p>\n<h3>Features</h3>\n<ul>\n<li>Increase default airtime factor to 9.0 (targets ~10% duty cycle)</li>\n<li>Set default <code>flood_advert_interval</code> to 24 hours (instead of disabled)</li>\n<li>Only schedule flood advert timers when <code>flood_advert_interval</code> is greater than 0</li>\n<li>Add version-aware defaults migration with persisted firmware version tracking</li>\n<li>Apply only defaults newer than the stored version during migration</li>\n<li><code>radio.lna</code> renamed to <code>radio.rxgain</code>, use with <code>get</code> and <code>set</code></li>\n<li>Add rs232 support for Xiao NRF52 (serial1, rx(7), tx(6))</li>\n</ul>\n<p><strong>Full Changelog</strong>: <a href=\"https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.6...v0.0.7\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.6...v0.0.7</a></p>\n"
    },
    {
      "version": "v0.0.6",
      "name": "v0.0.6",
      "datetime": "2026-03-06T13:49:38Z",
      "url": "https://github.com/Meshcore-Portugal/lusofw/releases/tag/v0.0.6",
      "prerelease": true,
      "notes": "# Changelog\r\n\r\n## [v0.0.6] - 06/03/2026\r\n\r\nBased on MeshCore v1.14.0\r\ndev@3fe2dd7f48733fe77da7549cd24ef28bf07e1e5a\r\n\r\n### Features\r\n\r\n- Disable advert interval by default (was 2 minutes)\r\n- Disable flood advert interval by default (was 12 hours)\r\n- Enable listen before talk with interference threshold of 14\r\n- Refactor buildAdvertData to use prefs when no GPS support is enabled\r\n- Set default loop detection preference to minimal sensitivity\r\n- Add 0x01 to reserved identity hash prefixes\r\n\r\n------\r\n\r\n**Full Changelog**: https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.5...v0.0.6",
      "notesHtml": "<h1>Changelog</h1>\n<h2>[v0.0.6] - 06/03/2026</h2>\n<p>Based on MeshCore v1.14.0\ndev@3fe2dd7f48733fe77da7549cd24ef28bf07e1e5a</p>\n<h3>Features</h3>\n<ul>\n<li>Disable advert interval by default (was 2 minutes)</li>\n<li>Disable flood advert interval by default (was 12 hours)</li>\n<li>Enable listen before talk with interference threshold of 14</li>\n<li>Refactor buildAdvertData to use prefs when no GPS support is enabled</li>\n<li>Set default loop detection preference to minimal sensitivity</li>\n<li>Add 0x01 to reserved identity hash prefixes</li>\n</ul>\n<hr />\n<p><strong>Full Changelog</strong>: <a href=\"https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.5...v0.0.6\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.5...v0.0.6</a></p>\n"
    },
    {
      "version": "v0.0.5",
      "name": "v0.0.5",
      "datetime": "2026-03-04T20:03:53Z",
      "url": "https://github.com/Meshcore-Portugal/lusofw/releases/tag/v0.0.5",
      "prerelease": true,
      "notes": "**Full Changelog**: https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.4...v0.0.5",
      "notesHtml": "<p><strong>Full Changelog</strong>: <a href=\"https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.4...v0.0.5\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.4...v0.0.5</a></p>\n"
    },
    {
      "version": "v0.0.4",
      "name": "v0.0.4",
      "datetime": "2026-02-23T12:30:49Z",
      "url": "https://github.com/Meshcore-Portugal/lusofw/releases/tag/v0.0.4",
      "prerelease": true,
      "notes": "**Full Changelog**: https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.3...v0.0.4",
      "notesHtml": "<p><strong>Full Changelog</strong>: <a href=\"https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.3...v0.0.4\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.3...v0.0.4</a></p>\n"
    },
    {
      "version": "v0.0.3",
      "name": "v0.0.3",
      "datetime": "2026-02-21T12:12:33Z",
      "url": "https://github.com/Meshcore-Portugal/lusofw/releases/tag/v0.0.3",
      "prerelease": true,
      "notes": "**Full Changelog**: https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.2...v0.0.3",
      "notesHtml": "<p><strong>Full Changelog</strong>: <a href=\"https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.2...v0.0.3\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.2...v0.0.3</a></p>\n"
    },
    {
      "version": "v0.0.2",
      "name": "v0.0.2",
      "datetime": "2026-02-20T17:26:07Z",
      "url": "https://github.com/Meshcore-Portugal/lusofw/releases/tag/v0.0.2",
      "prerelease": true,
      "notes": "**Full Changelog**: https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.1...v0.0.2",
      "notesHtml": "<p><strong>Full Changelog</strong>: <a href=\"https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.1...v0.0.2\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/Meshcore-Portugal/lusofw/compare/v0.0.1...v0.0.2</a></p>\n"
    },
    {
      "version": "v0.0.1",
      "name": "v0.0.1",
      "datetime": "2026-02-18T11:24:51Z",
      "url": "https://github.com/Meshcore-Portugal/lusofw/releases/tag/v0.0.1",
      "prerelease": true,
      "notes": "**Full Changelog**: https://github.com/Meshcore-Portugal/lusofw/commits/v0.0.1",
      "notesHtml": "<p><strong>Full Changelog</strong>: <a href=\"https://github.com/Meshcore-Portugal/lusofw/commits/v0.0.1\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/Meshcore-Portugal/lusofw/commits/v0.0.1</a></p>\n"
    }
  ],
  "changelogSource": "github",
  "changelogUpdatedAt": "2026-06-25T18:51:06.654Z",
  "deviceFamilies": [
    {
      "id": "heltec-wifi-lora-32",
      "label": "Heltec"
    },
    {
      "id": "lilygo-t-beam",
      "label": "LilyGo T-Beam"
    },
    {
      "id": "lilygo-t3-s3",
      "label": "LilyGo T3 S3"
    },
    {
      "id": "rak-wisblock",
      "label": "RAK"
    },
    {
      "id": "seeed-sensecap-solar",
      "label": "Seeed Studio SenseCAP Solar Node"
    },
    {
      "id": "heltec-t114",
      "label": "Heltec T114"
    },
    {
      "id": "heltec-wsl3",
      "label": "Heltec WSL3"
    },
    {
      "id": "lilygo-lora32-1-1-6",
      "label": "LilyGo LoRa32 V2.1_1.6"
    },
    {
      "id": "seeed-xiao-wio",
      "label": "Seeed Studio Xiao nRF52 WIO"
    },
    {
      "id": "seeed-xiao-s3-wio",
      "label": "Seeed Studio Xiao S3 WIO"
    }
  ],
  "primaryFamily": {
    "id": "heltec-wifi-lora-32",
    "label": "Heltec"
  },
  "scopeGroup": null
}
