Skip to content

server more changes to content and design - #6

Merged
sp5wwp merged 3 commits into
M17-Project:mainfrom
n7tae:main
Sep 9, 2026
Merged

sp5wwp merged 3 commits into
M17-Project:mainfrom
n7tae:main

Conversation

@n7tae

@n7tae n7tae commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

I have:

  • Changed the last paragraph of the Introduction to a "Purpose" and "Where to get involved" subsection.
  • Removed all numerical beginnings and any ending punctuation from all topic heading.
  • Allowed for the possibility of future improvement in urfd and made other improvements to Chapter 3.
  • Added some colons and dashes to make all tables look good and consistent.

@jancona jancona left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude-detected typos:
"can be use by other developers" → "used"
"and entire M17 ecosystem" → "and the entire"
"rasing" → "raising"
"group.io" → "groups.io"
"behave as legacy reflector" → "reflectors"
"DISC packet is send" → "sent" (not from by this PR, but maybe fix it while you're in there)

Thanks for doing this, it definitely adds to the spec!

Comment thread M17 Internet Interface.md

M17 is designed with this use in mind, and has native IP framing to support it.
In competing radio protocols, a repeater or some other RF to IP bridge is required for linking,
leading to the use of hot-spots (tiny simplex RF bridges).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I kind of like this paragraph. It says how M17 is different and why this document exists. Can it still be included in purpose?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agreed.

Comment thread M17 Internet Interface.md Outdated
This part of the specification is where M17 over-the-air engineering is translated to Internet Protocol (IP) capabilities that M17 users want. In the spirit of true Open-Source innovation, M17 developers are encouraged to document their M17 contributions here so that their M17 programs and tools can be use by other developers and entire M17 ecosystem can be used and enjoyed by all M17 users.


### Where to get involved

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't feel very "spec-like," plus we don't want to change the spec if a Discord channel name changes. Maybe the text should be in the README or a CONTRIBUTING file, with a pointer to that here.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agreed. the other info was moved to README.md.

Comment thread M17 Internet Interface.md Outdated

### Where to get involved

1. Casual discussion or simple questions on any M17 Specification related topic from anyone can be started on the #m17-specification channel of the [M17 Discord](https://discord.com/).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably want the Discord invitation URL: https://discord.gg/TYby5jq8u
Also two spaces before [Discord].

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This takes me to "Jim has invited you to join the M17 discord". I'm going to leave the simpler url.

Comment thread M17 Internet Interface.md Outdated

1. Legacy reflector are all *urfd* reflectors as well as any *mrefd* reflector with a version number less than 1.0.0. Legacy reflectors **do not** forward any packet mode data.
2. Any *mrefd* reflector with a version number greater or equal to 1.0.0, will forward both stream data and packet data from any client on any particular node to all nodes connected to that same module, except if the data is packet mode data and if that node is an interlinked, legacy reflector.
1. Legacy reflector any *mrefd* reflector with a version number less than 1.0.0. Legacy reflectors **do not** forward any packet mode data. All known *urfd* reflectors behave as legacy reflector, but evolution of *urfd* is possible.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/Legacy reflector any/Legacy reflectors are any/
s/behave as legacy reflector,/behave as legacy reflectors,/

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment thread M17 Internet Interface.md Outdated
#### Enforcing the "one hop" policy by appending a byte

Also be aware that both *urfd* and *mrefd* enforce a "one hop policy" for any incoming packet from a regular client. Fundamentally that means that any packet received from an interlinked reflector will not be forwarded to any other reflector. Therefore any number of reflectors that share a channel must be interlinked to all reflectors in that same group. That's the only way any client can hear every other client on that interlinked module.
It is important to note that interlinking methods both *urfd* and *mrefd* are based on [*xlxd*](https://github.com/LX3JL/xlxd) and enforce a "one hop policy" for any incoming packet from a regular client. Fundamentally that means that any packet received from an interlinked reflector will not be forwarded to any other reflector. Therefore any number of reflectors that share a channel must be interlinked to all reflectors in that same group. That's the only way any client can hear every other client on that interlinked module.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/interlinking methods both/interlinking methods in both/

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment thread M17 Internet Interface.md Outdated
1. Casual discussion or simple questions on any M17 Specification related topic from anyone can be started on the #m17-specification channel of the [M17 Discord](https://discord.com/).
1. More serious discussion that warrants a permanent record should take place by either rasing an issue on [this repo](https://github.com/M17-Project/M17_inet), or posting a message to the [M17-Users group.io](https://groups.io/g/M17-Users/topics) website.
1. Developers can submit a pull request (PR) to [this repo](https://github.com/M17-Project/M17_inet) to add information about their M17 application(s). They only need to supply the information in a new `##` Chapter in the `M17 Internet Interface.md` file. If they want to make sure the PDF is rendered properly, instructions for making the PDF are in the `README.md` file.
1. Even skilled M17 users can submit a PR if they already have an account on github.com and see a problem with either specification document and know how to fix it. Many have done so already.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Even skilled M17 users can submit a PR" might sound condescending. Maybe something like "M17 users who aren't developers can submit a PR".

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done.

Comment thread M17 Internet Interface.md Outdated
1. Any *mrefd* reflector with a version number greater or equal to 1.0.0, will forward both stream data and packet data from any client on any particular node to all nodes connected to that same module, except if the data is packet mode data and if that node is an interlinked, legacy reflector.

Importantly, legacy reflectors will only forward stream data if the destination in the packet is addressed to the module to which it is linked. For example, the destination address must decode to `M17-XYZ m` or `URFXYZ  m`, where `m` is an appropriate module letter, A-Z. In both cases, please note that these destinations fill the maximum width of an M17 callsign, there are two spaces before the module in the *urfd* address! Further, legacy reflectors will readdress the destination address to be the encoded callsign of the client receiving the data. Whenever a reflector modifies a packet, any CRCs affected by that modification will be recalculated.
Importantly, legacy reflectors will only forward stream data if the destination in the packet is addressed to the module to which it is linked. For example, the destination address must decode to `"M17-XYZ m"` or `"URFXYZ  m"`, where `m` is an appropriate module letter, A-Z. In both cases, please note that these destinations fill the maximum width of an M17 callsign, there are two spaces before the module in the *urfd* address! Further, legacy reflectors will readdress the destination address to be the encoded callsign of the client receiving the data. Whenever a reflector modifies a packet, any CRCs affected by that modification will be recalculated.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PDF rendering of the spaces in the destination address examples looks a little weird. I'm not sure what to do about it.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agreed. I rewrote this, as I couldn't find a way to do this either. This seems to be a limitation with the transcriber.

Comment thread M17 Internet Interface.md
| Field | Size | Description |
|:---------------|:---------|:-------------------------|
| Field | Size | Description |
|:-----:|:----:|:-------------------------|

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want the Field column centered? It looks a little funny to me.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like centered better than left justified. You can change it with your next PR!

@jancona jancona left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@sp5wwp
sp5wwp merged commit 6a8d8f2 into M17-Project:main Sep 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants