unix-ax25-stack: use existing libax25 programs for Linux and other operatings systems without the Linux in-kernel AX.25/NETROM protocol stack #1
dl9sau
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Linux has dropped all support for the in-kernel AX.25 / NETROM / ROSE packet radio protocols since v7.1. This distruptive loss has orphaned many classic packet radio programs and without a solution, they will only fade away into history.
I have developed a solution to address this and give these programs a future. This new solution is functional today but also very extenable to support many different complex scearios that Linux was able to natively support. You're welcome to bring in your own opinion and ideas as we need feedback about what you want to see supported, what to test to catch what is missing, misbehavior, bugs, etc.
I've moved my original libax25 / ax25-apps / ax25-tools hosted at https://linux-ax25.in-berlin.de/wiki/Main_Page to github:
https://github.com/unix-ax25-stack
New architecture in a few words:
This new libax25 is still downwardly compatible with older Linux kernels and can simultaneously support both both classic packet radio programs expecting the Linux in-kernel AX.25/NETROM/ROSE stack as well as this new appoach. This affords the users an easy migration path in the future when they are ready to switch.
The new libax25 approch is the following:
libax25 interprets the socket(), bind(), listen(), accept(), connect() calls and passes them to a userspace program that has it's own AX.25 / NETROM stack (no ROSE support at this time).
It offers this support via a concept called "connectors" and we are open for more or better ideas in the future if needed. This new solution is also Unix-system agnostic and works on Apple Mac OSX and others today.
The new libax25 can pass these classic Unix calls
a) via the AGWPE connector to the new ax25netd userland daemon which can in turn translate the traffic to accessing remote AGW TNC software. This includes using Direwolf (which could be installed locally or accessed remotely via tcp; direwolf talks via serial kiss to a TNC or via soundmodem to the outer world), G8BPQ Soundmodem, UZ7HO soundmodem or others.
b) to the newly revamped WAMPES (KA9Q NOS derivative) via a more efficient I/O interface for very rich networking possibilities (routing, encapsulation, etc).
With the revamped support of the Wampes NOS system, packet stations will natively support various packet radio protocols like flexnet, netrom and netrom/inp3, AXIP, AXUDP and many others. In theory, frames with PID for Netrom and ROSE protocols could be passed to other userspace programs. These need to be written / contributed) which handle that protocol on their own but now that things are in user space, this will be FAR easier to create / maintain / enhance.
I started with the design and implementation and integration from Aug 09 2026 but this new stack has been operational and running the DB0FHN packet superstation with good reliability. You may look at it live - full service as before, but without kernel-AX.25 involved.
This is all brand new and may have undiscovered bugs but it's now way more than just a personal experiment.
Furthermore, you could even run programs which are not programmed / designed to use libax25 or linked against: syscalls are intercepted by LD_PRELOAD — thus interpreted and handled by libax25 and routed to the outbound connector.
Side-Effect: even other unix systems like macos have now support for packet-radio programs that use libax25; also the LD_PRELOAD variant (mentioned above) works — even for a system that had never ever seen sockets of type AF_AX25.
Btw, this is the reason the project is called, platform neutral, unix-ax25-stack ;)
direwolf had, and WAMPES now has support for macos.
I’d appreciate BSD users would test, and report what needs to be done if compilation fails, or something behaves unexpected.
Please help in distributing this information in your community.
vy 73,
For reference: this text comes from https://github.com/orgs/unix-ax25-stack/discussions/1
All reactions