Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Icom G3 Terminal protocol support #127

Closed
wants to merge 8 commits into from
Closed

Add Icom G3 Terminal protocol support #127

wants to merge 8 commits into from

Conversation

yo2loj
Copy link
Contributor

@yo2loj yo2loj commented Jun 16, 2019

I implemented a reverse engineered Icom G3 terminal mode for the IC-9700.

Modules are accessed using repeater access from terminal mode, using destination /XRFxxxN.
Modules can be changed on the fly by the client.

Tested in Terminal and AP mode, both using the internal gateway and the external gateway via Icom RS-MS3, and it works as expected.

Since no keepalive is provided by the protocol, it relies on ICMP unreachable received from the client on attempted periodic packet sending, and has a timeout of 1h of inactivity defined in main.h as a safeguard.

Added Icom G3 Terminal ports to firewall settings
@yo2loj
Copy link
Contributor Author

yo2loj commented Jun 16, 2019

I wrote this emulation primary as a way to replace the need to have an Icom G3 gateway access available, mainly for the IC-9700 which includes the RS-MS3 functionality in the radio itself and features an ethernet port. G3s are closed and by registration only, and allow only callsign routing, meaning no easy reflector access, so this would be an alternative, especially for hams outside the US and the UK, where G3 repeaters are rare.

AFAIK, the terminal mode via data cable is already supported in the latest beta of the pistar image.

Naming them XRF was just due to the fact that I wanted to use an existing node name, nothing more. And since REF, DCS and XRF where already there, because of the protocol similarities, I have chosen XRF, since the system uses XLX for XLX interlinks... But this can be easily changed.

What I actually thought is to add the routing part to ircDDBGateway, since the same G2 DV protocol is used in G3, too, and already implemented. But this will still not solve the issue of reflector access, since G2 call routing does not support connecting to reflectors.
I see this approach in XLX as the most user friendly one...

Since this is a xlx reflector, and not something else, use XLX* as the reflector name.
Tnx. Adrian, VK4TUX, for the suggestion.
2 options for now
- external IP adress to be used for rhe routing information
- restrict modules
Dele and recreate client for the same callsign but different IP to prevent lingering connections on IP change.
@yo2loj
Copy link
Contributor Author

yo2loj commented Jun 28, 2019

Updated the functionality a little:

  • use /XLXxxx# as the destination per Adrian's recommendations.
  • added an (optional) option file to set the used public IP to be able to be used behind routers with port forwarding, and to allow per module access permissions
  • changed to delete clients with the same callsign but on a new IP address to circumvent lingering clients on IP change (especially on LTE access)

@yo2loj
Copy link
Contributor Author

yo2loj commented Oct 15, 2019

I decided that this is not the proper way to get terminal access working, and a stand-alone application would fare much better.

@yo2loj yo2loj closed this Oct 15, 2019
@tuxracer111
Copy link

tuxracer111 commented Oct 15, 2019

I decided that this is not the proper way to get terminal access working, and a stand-alone application would fare much better.

Hi Marius, do you plan to publish a stand alone version? 73 Michael

@yo2loj
Copy link
Contributor Author

yo2loj commented Oct 15, 2019

Yes, of course. I just have to develop it first :-)
The issue is that there is no way to use the system as a single access point and forward connections to other reflectors.
I want to create a terminal gateway supporting outgoing Dextra, DCS and Dplus protocols to connect terminal clients to any available reflector, using the same modus operandi as ircddbgateway, to allow familiar ways to do it.
But this will take some time. I have the DCS and Dextra modules ready but it requires a multi-user terminal manager...

@1erbn
Copy link

1erbn commented Mar 7, 2020

Thanks for all the programming. Unfortunately I am not experienced enough to get the job done.
I updated all the files in my xlx reflector and rebooted the RPi after that. I opened UDP ports 40000 and 12345-12346 from- and to the RPi. Unfortunatey I still cannot connect to my reflector with my IC-9700 in terminal mode.
Is there something more I have to do?

@yo2loj
Copy link
Contributor Author

yo2loj commented Mar 7, 2020

There's another commit/pull request with an updated version, #140
One question would be: do you try to connect from the LAN or an external source?
For an external source via a router, you need to set the router's external ip in xlxd.terminal.
For LAN connection, the external IP must be commented out in the same file, since the local IP must be used (There is no way to use both).

@1erbn
Copy link

1erbn commented Mar 7, 2020

The IC-9700 is in the same LAN as the reflector so I leave the the IP address commented out. I will look into #140
Thanks.

@1erbn 1erbn mentioned this pull request Mar 7, 2020
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.

None yet

3 participants