diff --git a/docs/lora/APRStt-ver301.doc b/docs/lora/APRStt-ver301.doc new file mode 100644 index 0000000..af7e939 Binary files /dev/null and b/docs/lora/APRStt-ver301.doc differ diff --git a/docs/lora/aprs101.pdf b/docs/lora/aprs101.pdf new file mode 100644 index 0000000..14f8d02 Binary files /dev/null and b/docs/lora/aprs101.pdf differ diff --git a/docs/lora/foxmash-protocol.md b/docs/lora/foxmash-protocol.md new file mode 100644 index 0000000..a72739a --- /dev/null +++ b/docs/lora/foxmash-protocol.md @@ -0,0 +1,37 @@ +# FoxMash - Protocol + +English version. In case of doubt, the English text shall be binding. +*[Deutsche Version anzeigen](foxmash-protocol_de.md)* + +## Automatic Stations at the ARDF Transmitting Facilities (Foxes) + +A fox regularly broadcasts its identifier and telemetry data. +This is done, whenever possible, at times when the fox is not transmitting on the 80m or 2m bands. +The purpose of this is, on the one hand, the time synchronization of adjacent nodes, and on the other hand, the regular official announcement of the call sign. +Usually, the call sign of the organizer or host of the direction-finding competition is used. + +## Beacon + +Composed based on the modified AX.25, APRS, and MeshCom protocols as follows: + +Pseudo-Byte-Stream: +`{OE3TKT-03nnnnnn` + + +### Structure: + +* **Byte 0: `"{ "` (0x7B)** + * **Data Type Identifier (DTI):** Derived from the APRS & MeshCom protocol specification (see [APRS Protocol Reference](https://ui-view.net)). + * **Reasoning:** This data type identifier is currently marked as `[Unused]` in the specification, and the character visually resembles a station icon. + +* **Bytes 1–6: `"OE3TKT"` (0x4F 0x45 0x33 0x54 0x4B 0x54)** + * **International Call Sign:** Formatted as a 1–2 character prefix, followed by one or more digits, and a 1–3 letter suffix. + * **Padding:** This field is strictly 6 characters wide. If the call sign is shorter, it must be right-padded with trailing spaces. + +* **Bytes 7+: Station Number / SSID Identifier** + * **Standard Notation (IDs 0–99):** Uses a hyphen followed by a two-digit SSID (Bytes 7–9), for example, `"-03"` (0x2D 0x30 0x33). + * **Extended Notation (IDs ≥ 100):** If the station number exceeds 100, you may take any letters as described in https://aprs11/SSIDs.txt (e.g., `OE3TKT-S6` for any special 6th station). + * **Backup / Hot-Standby Nodes:** To designate a station as a replacement node or an immediate hot-standby node, the hyphen is replaced by a tilde symbol (e.g., `OE3TKT~03`). + +* **Bytes 10–13: Telemetry Data (`nnnnnn`)** + * **Timestamp:** Signed 32-bit integer representing the number of milliseconds since the start of the competition day. diff --git a/docs/lora/foxmash-protocol_de.md b/docs/lora/foxmash-protocol_de.md new file mode 100644 index 0000000..1e8c969 --- /dev/null +++ b/docs/lora/foxmash-protocol_de.md @@ -0,0 +1,48 @@ +# FoxMash - Protokoll + +Deutsche Übersetzung. Im Zweifelsfall ist die englischsprachige Version bindend. +*[View English Version](foxmash-protocol.md)* + +## Automatische Stationen bei den ARDF-Sendeeinrichtungen (Füchsen) + +Ein Fuchs sendet regelmäßig seine Kennung (Identifier) und Telemetriedaten aus. +Dies geschieht, wann immer möglich, zu Zeiten, in denen kein Sendebetrieb des Fuchses im 80m- oder 2m-Band stattfindet. +Dies dient einerseits der Zeitsynchronisation der Nachbarknoten und andererseits der regelmäßigen, behördlich vorgeschriebenen Aussendung des Rufzeichens. +Üblicherweise wird das Rufzeichen des Ausrichters bzw. Veranstalters des Peilwettbewerbs verwendet. + +## Bake + +Setzt sich wie folgt aus den modifizierten AX.25-, APRS- und MeshCom-Protokollen zusammen: + +Pseudo-Byte-Stream: +`{OE3TKT-03nnnnxxRSqyyRSqzzRSq` + + +### Struktur: + +* **Byte 0: `"{ "` (0x7B)** + * **Data Type Identifier (DTI):** Abgeleitet aus der APRS- & MeshCom-Protokollspezifikation (siehe [APRS Protocol Reference](https://ui-view.net)). + * **Begründung:** Dieser Datentyp-Bezeichner ist in der Spezifikation derzeit noch als `[Unused]` (unbenutzt) markiert, und das Zeichen sieht visuell wie ein Stationssymbol aus. + +* **Bytes 1–6: `"OE3TKT"` (0x4F 0x45 0x33 0x54 0x4B 0x54)** + * **Internationales Rufzeichen:** Formatiert als 1–2 Zeichen langes Präfix, gefolgt von einer oder mehreren Ziffern und einem 1–3 Zeichen langen Suffix. + * **Padding (Auffüllung):** Dieses Feld ist strikt 6 Zeichen lang. Wenn das Rufzeichen kürzer ist, muss es rechtsbündig mit Leerzeichen aufgefüllt werden. + +* **Bytes 7+: Stationsnummer / SSID-Kennung** + * **Standard-Notation (IDs 0–99):** Verwendet einen Bindestrich, gefolgt von einer zweistelligen SSID (Bytes 7–9), zum Beispiel `"-03"` (0x2D 0x30 0x33). + * **Erweiterte Notation (IDs ≥ 100):** Wenn die Stationsnummer 100 überschreitet, können beliebige Buchstaben verwendet werden, wie unter https://aprs11/SSIDs.txt beschrieben (z. B. `OE3TKT-S6` für eine beliebige spezielle 6. Station). + * **Ersatz- / Hot-Standby-Knoten:** Um eine Station als Ersatzstation oder sofort einsatzbereiten Knoten zu kennzeichnen, wird der Bindestrich durch ein Tilde-Zeichen ersetzt (z. B. `OE3TKT~03`). + +* **Bytes 10–13: Telemetriedaten (`nnnnnn`)** + * **Zeitstempel:** Vorzeichenbehaftete 32-Bit-Ganzzahl (Signed 32-Bit Integer), die die Millisekunden seit Beginn des Wettbewerbstages darstellt. + + +`xxRSqyyRSqzzRSq` soll so etwas sein: Gehörte Nachbarknoten im Mesh mit einem Byte das die Qualität der Linkverbinung beinhaltet. xx ist z.B. ein Knoten mit SSID xx, und q ist die Qualtität der Verbinung: + q setzt sich zusammen aus: bit 7: 1 ... diese SSID (Nachbar) wurde in der letzten halben Stunde mindestens 3 mal empfangen. + 0 wenn das nicht der Fall ist (weniger als 3 mal gehört in den letzten 30 Minuten), aber zumindest einmal gehört, ansonsten verschwindet er aus der Liste. + bit 6-0 Zahler wie oft die Station gehört wurde (gleitender Wert pro 30 Minuten). + R ist der negative RSSI-Wert in unsigned char. und S entspricht dem vierfachen SNR-Wert (signed char). + + Beispiel: `0x00 03 9a 42 87...` + +Das bedeutet "0x00 03" ist die SSID mit der Zahl 3 (der Nachbar der gehört wird), 0x9a ist dezimal 154 diff --git a/docs/lora/meshcom-protocol.md b/docs/lora/meshcom-protocol.md new file mode 100644 index 0000000..179bbb5 --- /dev/null +++ b/docs/lora/meshcom-protocol.md @@ -0,0 +1,50 @@ +# Protocol MeshCom 4.0 + +## Stream - Example +``` +:~1~9~SP3TUT-1,OE1XAR-12,OE3TKT-12>*:z okolic Pi~~y kto~~ tu jest?~~~~~(~a~ + S +Hex: 3A BB 31 F3 39 93 53 50 33 54 55 54 2D 31 2C 4F 45 31 58 41 52 2D 31 32 2C 4F 45 33 54 4B 54 2D 31 32 3E 2A 3A 7A 20 6F 6B 6F 6C 69 63 20 50 69 C5 82 79 20 6B 74 6F C5 9B 20 74 75 20 6A 65 73 74 3F 00 03 88 16 C5 28 8C 61 7E + | =========== | =================================================================================== + | | | | + | | | > APRS Address Header (Source,Path, Destination) - "SP3TUT-1": Source Callsign of the transmitting amateur radio station from Poland, using SSID 1. + | | | > - + | | | > + | | > Flags & Hops [7] +B02 | > Message Identifier "~1~9" 0xBB31F339 - The unique 32-bit Message ID transmitted in Little-Endian format (least significant byte first). + | It is used by the mesh network to track packets and prevent duplication loops. +B01 > APRS Data Type Identifier ":" 0x3A - APRS Text Message, used for person-to-person Direct Messages (DMs), group messages, or general announcements. + Following this character, the parser expects a destination callsign, a tracking number, and the message content. + "@" 0x40 - APRS Position with Timestamp, used for automated position reports that include a precise time (such as weather node beacons or sttic trackers). + It tells the terminal to parse fixed-length chunks for latitude, longitude, and elevation. + "!" 0x21 - APRS Position without Timestamp, used for real-time mobile tracking (e.g., a node) with an integrated GPS sending live movement updates). + It skips the time fields to reduce airtime over LoRa. + ";" 0x3B - APRS Object Report, used to map an "Object" rather than a station. + For example, a node can broadcast the location of a local hamfest, emergency shelter, or repeater. + It is followed by a fixed 9-character object name. + ">" 0x3E - APRS Status Report: Used to transmit a station's current operating state or hardware information rather than geographic coordinates. + "$" 0x24 - APRS Raw NMEA Sentence: A legacy data type that allows raw GPS string passthrough (like $GPRMC or $GPGGA) directly from a serial GPS mouse. +Other DTI(Data Type Identifiers) + "=" 0x3D - Position with compressed APRS capability, a standard position beacon, but formatted in Base-91 compression to save airtime over busy RF networks. + "/" 0x2F - Mic-E Format Data, Microphone Encoder telemetry. Used by commercial radios (like Yaesu or Kenwood) to embed a GPS burst into a standard voice transmission PTT release. + "`" 0x60 - Mic-E Old Format, Legacy Microphone Encoder burst, rarely used by modern trackers but still supported for backward compatibility. + "_" 0x5F - Positionless Weather Report, used by automated weather stations (like fine-offset units or CWOP stations) to transmit pure wind speed, temperature, and barometric values without re-sending latitude/longitude. + ")" 0x29 - Item Report, identical to a map Object (;), but used for temporary or small Points of Interest (POIs) with a much shorter name (1–9 characters) and no timestamp. + "<" 0x3C - Station Capabilities, sent by intelligent digipeaters and internet gateways (iGates) to report what features they support (e.g., whether they handle messaging or special path routing). + "T" 0x54 - Raw Telemetry Data, used for automated analog data streams. Frequently found on high-altitude balloon payloads or weather satellites transmitting five channels of changing mathematical numbers. + "S" 0x53 - Telemetry Structural Definition, defines the scale and offsets of raw numbers sent in the T packet (so client maps like aprs.fi know if a raw value of 142 means volts, millibars, or degrees). + "?" 0x3F - Query/Poll Command, a packet explicitly asking another station or a server to respond. For instance, sending ?APRSP asks surrounding nodes for their current paths. + "{" 0x7B - User-Defined / Proprietary, reserved entirely for experimental protocols or internal applications. MeshCom and similar experimental LoRa platforms utilize these spaces to run custom network setups. +``` +## Callsign +``` +Every callsign is build with [Personal Amateur Radio Callsign]-[SSID], SSID is a number between 1 and 99. +• -0 (or no suffix): Standard home station / fixed station (usually avoided by MeshCom for mobile operation). +• -1 to -3: Additional stations with potential special functions (e.g., digipeaters). +• -7: Portable stations, handheld radios (e.g., a Heltec or T-Echo node carried in a pocket). +• -9: Mobile stations (vehicles). +• -10: Gateways, digipeaters, or Winlink nodes. +• -11: Pure client stations without gateway functionality. +• -12: Gateway stations including mesh routing functionality (very common for permanently running master nodes with an internet/Wi-Fi connection). +• -13: Weather stations or telemetry sensors. +```