| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
This repository documents the N1MM Logger+ multi-user network protocol and provides small Python examples for parsing frames, advertising a virtual station, and sending simple test state messages.
The focus is practical interoperability:
Important: this is not official N1MM documentation. It is a developer-oriented reference built from information gathered by studying the network protocol, with proof-of-concept tools and examples for interoperability testing.
Parse one frame:
python3 examples/python/parse_frame.py 'DATA__00%N1MM-A%ECHOREQ%2026-06-02%12:00:00%~__DATA'Run the tests:
python3 -m unittest discover -s testsStart a passive monitor/virtual station:
python3 examples/python/virtual_station.py \
--station N1MMVIRT \
--operator N0CALL \
--advertise-ip 192.0.2.50 \
--passiveBy default the virtual station listens for UDP discovery on port 12070 and opens outbound TCP links to stations it hears. If the auto-detected --advertise-ip is correct for your LAN, this is enough to join and learn:
python3 examples/python/virtual_station.py --mimic-masterStart an active virtual station that advertises itself and connects to a peer:
python3 examples/python/virtual_station.py \
--station N1MMVIRT \
--operator N0CALL \
--advertise-ip 192.0.2.50 \
--peer 192.0.2.10 \
--version 1.0.11229.0 \
--contest CQWPXCW \
--country-file-version CN--peer is still useful when you already know a station IP or when UDP broadcast discovery is blocked. Heard stations and explicit peers are both used.
Learn the real master station's visible contest/status identity and mimic those values automatically:
python3 examples/python/virtual_station.py \
--station N1MMVIRT \
--operator N0CALL \
--advertise-ip 192.0.2.50 \
--peer 192.0.2.10 \
--mimic-masterWith --mimic-master, the virtual station watches for MASTER, CONTESTNAME, and STATUS. After it learns the master station, it advertises matching:
If you already know the master station name, skip waiting for a MASTER announcement:
python3 examples/python/virtual_station.py \
--station N1MMVIRT \
--operator N0CALL \
--advertise-ip 192.0.2.50 \
--peer 192.0.2.10 \
--mimic-master \
--mimic-source-station N1MMAMimic a master station with explicit contest/status identity:
python3 examples/python/virtual_station.py \
--station N1MMVIRT \
--operator N0CALL \
--advertise-ip 192.0.2.50 \
--peer 192.0.2.10 \
--master \
--version 1.0.11229.0 \
--contest CQWPXCW \
--contest-subtype "" \
--country-file-version CN \
--operator-category MULTI-OP \
--transmitter-category ONE \
--mode CW \
--pass-freq-x100 1407400 \
--current-freq-x100 1407400 \
--runningUse --master only if you intentionally want the virtual station to announce itself as master. To mimic the master's settings while a real master is present, use --mimic-master without --master.
To disable discovery-based peer learning:
python3 examples/python/virtual_station.py --no-auto-discover --peer 192.0.2.10Ask the running virtual station to send an XMIT active/release burst:
python3 examples/python/send_xmit_once.py --seconds 3 --macro F1VirtualUse documentation addresses such as 192.0.2.50 only as examples. Replace them with addresses from your station LAN.
docs/
protocol.md Core lifecycle, discovery, framing, liveness, shutdown
commands.md All known multi-user TCP commands and field layouts
ports.md Port matrix and options
payload-examples.md Copy-paste command/XML/ADIF examples
implementation-notes.md Parser and virtual-station guidance
examples/python/
parse_frame.py DATA frame parser CLI
virtual_station.py Minimal virtual station / protocol monitor
send_xmit_once.py Local UDP control helper for virtual_station.py
n1mm_protocol/
frame.py Reusable frame/discovery helpers
commands.py Command layout constants
tests/
test_protocol_frames.py Unit tests for helpers and examples
The sample virtual station can send real protocol messages to N1MM instances on your LAN. Use it first in a test database or non-contest environment.
Important caveats:
Start with docs/protocol.md, then use docs/commands.md and docs/payload-examples.md while implementing.
| Back | FazBrowse Home | New Git URL |