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

Feature Request: Bit Regenerator/Packet Repeater #144

Closed
radar27 opened this issue Apr 28, 2018 · 8 comments
Closed

Feature Request: Bit Regenerator/Packet Repeater #144

radar27 opened this issue Apr 28, 2018 · 8 comments

Comments

@radar27
Copy link

radar27 commented Apr 28, 2018

Greetings,

Would it be possible to add a bit regenerator/packet repeater function? Many years ago, TAPR introduced a hardware version which went into a standard TNC2, which when attached to appropriate hardware permitted a packet repeater that actually decoded+reencoded the (A)FSK signal versus just repeating the audio like a classic voice repeater would do:

https://www.tapr.org/kits_9600.html#bitregen

One of the big challenges with packet is the "hidden transmitter syndrome", which a packet repeater in a suitable location can largely address. I have had some success in using a crossover cable from one KISS TNC to another, but I was hoping we could do this in software in a more real-time fashion. that could ultimately then support other applications via the AGWPE and/or KISS over TCP interface.

Thanks for this great software.

73!

@Skinoku
Copy link

Skinoku commented Feb 21, 2019

Dear radar27,

I don't know if I understood correctly your issue but such a digi feature is already built into this software.
When a packet is digi'd the software will re-encode it (and adding, for example, the digi callsing) and then send it on-air.
Direwolf by default will try to fix up to 1 bit in order to retrieve some information from packet badly received, in the settings you could increase the level of "fix bits" but you WILL occasionally get some corrupted packets!
I don't think there's a way to fix the "hidden transmitter syndrome" because everyone is using a different packet engine, hardware, software, etc so no "standard" can be easily implemented.
AGWPE and KISS over TCP interface are already well supported.
Using com0com you can run software (on windows) that require a "real" RS232 port by emulating one!

Hope this helps
Cheers

@radar27
Copy link
Author

radar27 commented Mar 25, 2019

Hi Skinoku,

The feature I am referring to is geared towards an actual duplex repeater that simultaneously transmits on one frequency and receives on another. In a classic repeater environment, the signal that arrives on the receiver essentially has it's audio patched through to the transmitter. While this is largely the only option for voice communication, we do have a better option for digital. Rather than simply passing the audio, we can use Direwolf's excellent decoding (with or without FIX_BITS) and then reencode the audio in near realtime. Obviously the receiver would need a chance to start decoding prior to the transmitter being able to start encoding, but this delay could be relatively small. There is a hardware version from TAPR that does this, it has an 8 bit buffer:

https://www.tapr.org/kits_9600.html

See the "9600bps Modem Bit Regenerator Option" section.

The advantage in this approach is that we give Direwolf the chance to decode the packet as it is coming in and reencode it before going back out. This eliminates the hidden transmitter syndrome if all stations can reach the Packet Repeater itself (again very similar to a classic voice repeater extending the coverage over simplex). This also can clean up any marginal signals that Direwolf is able to successfully decode. Simply passing the marginal signal on the output may or may not result in a successful decode from the other packet repeater users (particularly if they are using an older hardware TNC for example).

There is a REGEN option today which allows one modem to send to another. From the documentation I can find it appears this was intended to change between baudrates. An example of this would be to run a 300 baud modem and 1200 baud modem with REGEN linking the two together. From there a user could have a 1200 baud only TNC linked to the 1200 baud side and let Direwolf act as a gateway down to 300 baud for HF packet. I have tested this option out and it does work well, the only difference I can tell between this and what I have requested here is that the regeneration occurs after the complete packet has been decoded as opposed to using a small buffer to perform a decode and encode with only a small delay (8 bit buffer in the TAPR design). The primary reason I seek the buffer is to try and eliminate collisions. If you were to operate a packet repeater with REGEN alone, the transmitter would not come up until the receiver has completed a decode. If there were another station on frequency, their carrier detect would not detect anything being transmit (listening to the transmit frequency) and could potentially key up on top of the other system, creating a "double" and likely causing neither packet to be successfully decoded.

This request is probably only applies to a small number of installations, but I think it can greatly enhance packet operation in a given area, particularly when there is a high profile site that could be used as a packet repeater.

73!

@mcilrain
Copy link

Not needing the entire packet to be received before being retransmitted is a very useful feature that (I think) is also used in some specialized wired packet network routers to minimize latency.

This feature is essential for low-latency full-duplex networks at low baud rates. Unfortunately such a use-case is currently rare so I doubt this will be seen as a high priority.

@wb2osz
Copy link
Owner

wb2osz commented Oct 30, 2021

In computer networking this is known as a cut-through switch.
It reduces latency and can help a lot in a situation where a single packet must go over many hops.
The internal architecture of direwolf is based on the store-and-forward concept.
Adding this capability would be difficult and I don't see the value for this application.

@wa7nwp
Copy link

wa7nwp commented Nov 7, 2021 via email

@wa7nwp
Copy link

wa7nwp commented Nov 7, 2021 via email

@wa7nwp
Copy link

wa7nwp commented Dec 6, 2021 via email

@wb2osz
Copy link
Owner

wb2osz commented Mar 30, 2025

The REGEN feature was originally added for speed conversion but it can also regenerate the packet at the same speed.
No changes are made.
Clearly, it would be bad to have two of these near each other. The same packet could potentially go back and forth forever.
As mentioned earlier, the direwolf is built around store and forward.
Transmitting the input, bit by bit would not fit in.

@wb2osz wb2osz closed this as completed Mar 30, 2025
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

No branches or pull requests

5 participants