* Discuss: Future of AX25, NETROM and ROSE in the kernel ? @ 2026-04-11 7:35 Hugh Blemings 2026-04-13 23:31 ` Dan Cross 2026-04-19 20:37 ` David Ranch 0 siblings, 2 replies; 16+ messages in thread From: Hugh Blemings @ 2026-04-11 7:35 UTC (permalink / raw) To: linux-hams Hi, Long time lurker, (nearly) first time poster as the saying goes[0]. My email here seeks to see that we, as a technical community, navigate a potentially tricky point in the hobbies presence in the Linux kernel as well as possible. I've a decent long term view of the matters at hand, but lack a good "current" picture[1]. There's a thread[2] that kicked off, primarily in linux-hams that initially focused on bug fixes in the Netrom code. This has broadened into a discussion about the future of the AX25, NETROM and ROSE code in the kernel. A couple of well respected mainline kernel maintainers have noted the maintenance overhead of these (relatively) lightly used protocols. This has led to, quite reasonably I think, some discussion of whether they should be removed or deprecated - the perception being they're not used much. Note that none of this a judgement on the hobby itself or the utility to the broader community. There's also been some very good points raised in that thread by hams around whether it makes sense to move the implementation into userspace or to out of tree kernel code. Both can be done in such a way as to cause little to no impact from the actual application code that makes use of the protocols. My intuition is that we probably have folks here on linux-vger that have the requisite skills and reputation, or ability to gain them, to keep the in tree drivers up to date. But perhaps that's just "old" thinking on my part? So I figure a thread here to discuss how we go forward made some sense - stay with the current in kernel model, look to go oot or userspace. If the consensus is that trying to keep the drivers in thee tree up to date is the way ahead I'm happy to put my hand up to do this if no one else is so inclined - I've a couple friends I can bug to help me get back up to speed. But I'm also mindful there are other hams that have been more recently involved in kernel work, so am going to give them a gentle nudge offline too :) Cheers/73, Hugh VK3YYZ/AD5RV [0] First licensed in the late 80's and can even remember the smell and sound of a Model 33 teletype connected to a TNC :) [1] Installed Slackware in the early 90's and never fully recovered, some of my code still in the kernel to this day :) [2] https://lore.kernel.org/linux-hams/761f83cc-58eb-4b4a-ba91-d11412e7b2a6@gmail.com/T/#t -- I am slowly moving tohugh@blemings.id.au as my main email address. If you're usinghugh@blemings.org please update your address book accordingly. Thank you :) ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Discuss: Future of AX25, NETROM and ROSE in the kernel ? 2026-04-11 7:35 Discuss: Future of AX25, NETROM and ROSE in the kernel ? Hugh Blemings @ 2026-04-13 23:31 ` Dan Cross 2026-04-18 19:28 ` Dan Cross 2026-04-19 20:37 ` David Ranch 1 sibling, 1 reply; 16+ messages in thread From: Dan Cross @ 2026-04-13 23:31 UTC (permalink / raw) To: hugh; +Cc: linux-hams On Sat, Apr 11, 2026 at 3:36 AM Hugh Blemings <hugh@blemings.org> wrote: > [snip] > My email here seeks to see that we, as a technical community, navigate a > potentially tricky point in the hobbies presence in the Linux kernel as > well as possible. I've a decent long term view of the matters at hand, > but lack a good "current" picture[1]. > > There's a thread[2] that kicked off, primarily in linux-hams that > initially focused on bug fixes in the Netrom code. This has broadened > into a discussion about the future of the AX25, NETROM and ROSE code in > the kernel. > > A couple of well respected mainline kernel maintainers have noted the > maintenance overhead of these (relatively) lightly used protocols. This > has led to, quite reasonably I think, some discussion of whether they > should be removed or deprecated - the perception being they're not used > much. Note that none of this a judgement on the hobby itself or the > utility to the broader community. > > There's also been some very good points raised in that thread by hams > around whether it makes sense to move the implementation into userspace > or to out of tree kernel code. Both can be done in such a way as to > cause little to no impact from the actual application code that makes > use of the protocols. > > My intuition is that we probably have folks here on linux-vger that have > the requisite skills and reputation, or ability to gain them, to keep > the in tree drivers up to date. But perhaps that's just "old" thinking > on my part? > > So I figure a thread here to discuss how we go forward made some sense - > stay with the current in kernel model, look to go oot or userspace. I think it would help frame the discussion to present some background, go into the various options, and present pros and cons of each. With respect to keeping protocol implementations in the kernel and in-tree, it further makes sense to present these from two separate perspectives: a) hams who use the software, and b) the Linux kernel as a project. # Background Linux has had implementations of AX.25, NET/ROM, and ROSE in the kernel since the 1990s. Though it is nowhere near as popular as it was in the 1980s and early 90s, packet radio using these protocols is still in use world-wide: AX.25 in particular is the basis for APRS, and beyond that remains broadly popular for accessing packet BBSes, exchanging mail, sending radio telegrams via the various traffic services (e.g., NTS in the US), and so on. AX.25 is a bit of an odd duck by modern standards; if fits into neither the IP/TCP nor ISO/OSI models neatly, and in OSI terms, provides functionality spanning layers 2-4; details may be found in the relevant specification documents. Note that Linux implements version 2.0 of the protocol (http://bitsavers.informatik.uni-stuttgart.de/communications/arrl/AX.25_Link-Layer_Protocol_Ver_2.0_198410.pdf), while the current version is 2.2 (http://www.ax25.net/AX25.2.2-Jul%2098-2.pdf), with updates in 2017 (https://tarpn.net/t/faq/files/AX25.2.2-Sep%2017-1-10Sep17.pdf). NET/ROM adds multi-hop routing on top of AX.25 with dynamic routing, and provides a facility to address nodes using an alias (e.g., "CHAT" resolving to "G8BPQ-6" or similar). As far as I know, the specification is rather less formal than those for AX.25, and the protocol was original specified as a chapter in the manual for the original software. This has been extracted a few times, such as https://packet-radio.net/wp-content/uploads/2017/04/netrom1.pdf ROSE is basically an implementation of the CCITT X.25 network layer with some elements of AX.25 mixed in. Stations are addressed using a 10-digit "telephone numbers". It is statically routed. Its documentation describes it as, "The ROSE X.25 Packet Switch", e.g.: https://web.tapr.org/meetings/CNC_1989/CNC1989-ROSE-PacketSwitch-W2VY.pdf Of these, surely AX.25 is the most widely used (after all, it forms the basis for the others), with NET/ROM next and ROSE last. It's unclear how widely used ROSE is at this point; lack of interoperability with other packages that just don't implement it is probably a limiting factor here. A folks have run TCP/IP over packet radio by embedded IP datagrams (or their fragments) inside of AX.25 frames that are then sent over the air using the in-kernel stack. ## Recent Activity Outside of the Linux Kernel Newer developments in the amateur packet radio world have focused on: * Improving the implementation of AX.25 to increase robustness and throughput. For example, adaptations of Jacobson/Karels congestion control have been incorporated into some AX.25 implementations, as have adaptively pausing protocol timers if the link is detected to be in use. Also, adding forward error correcting codes at layer 2 to help with transit over marginal RF links e.g. FX.25 (https://web.archive.org/web/20110718212817/http://www.stensat.org/Docs/FX-25_01_06.pdf). * Newer protocols to try and work around some of the deficiencies of AX.25: IL2P ("Improved layer 2 Protocol": https://packet-radio.net/wp-content/uploads/2020/10/il2p-specification0-4.pdf), and ARNGLL (https://github.com/arngll/arngll-spec/blob/main/n6drc-arngll.md) are examples here. * The European amateur radio community noted problems with NET/ROM some time ago and proposed FlexNET as an alternative (https://www.qsl.net/ww2bsa/index_htm_files/DCC1995-FlexNet-DK7WJ-N2IRZ.pdf), but details on the protocol itself are scant. Similar problems were noted by others, and by all accounts, the best ideas of NET/ROM and FlexNET were synthesized into the INP3 protocol (https://wiki.oarc.uk/_media/packet:internodeprotocolnp.pdf). Not much, if any, of this work has been picked up by Linux writ large. Some doesn't make a lot of sense from a kernel perspective: FX.25, for instance, is more of a physical layer thing. However, while there have been patches proposed at various times (e.g., there was an implementation of INP3 done as a delta on top of the in-kernel NET/ROM code), little of it seems to have been integrated: I didn't see evidence that INP3 support was incorporated when I looked earlier this morning. ## Problems With the Kernel Implementations Put bluntly, the kernel implementations are showing their age. Although it has incorporated some enhancements (7-bit sequence numbers, for example) the AX.25 protocol implementation remains at version 2.0. Thomas Habets has noted a number of problems in a blog post: https://blog.habets.se/2021/11/AX25-user-space.html Some of these are purely quality of implementation issues ("setting CRC mode resets all other settings") but others seem rather more fundamental: e.g., the "10 REJs in a row" problem: this suggests that the kernel does not iterate over frames in the outbound window or examine the outbound queue when processing inbound supervisor frames. Problems including data corruption, leaked references, deadlocks, panics, etc, occur distressingly regularly. E.g., https://lore.kernel.org/linux-hams/CAEoi9W4FGoEv+2FUKs7zc=XoLuwhhLY8f8t_xQ6MgTJyzQPxXA@mail.gmail.com/ and https://lore.kernel.org/linux-hams/my4l7ljo35dnwxl33maqhyvw7666dmuwtduwtyhnzdlb6bbf5m@5sbp4tvg246f/ for recent-ish examples. A search of the `linux-hams` archive turns up a lot of problem reports, some of which are unaddressed for significant chunks of time. As Habets put it, if the current implementations were proposed for incorporation into the kernel today, they probably wouldn't be accepted, as they would not meet the required quality bar. Note that's not a comment on the original authors or their work, but rather, just an acknowledgement of the current state of affairs and how things have changed since these were first introduced. As the man page for ax25(4) puts it, "BUGS: Too numerous to list in full currently." # The Various Options It seems that there's consensus that the current situation is untenable, and something should be done. As I see it, there are essentially three paths, with some variations on each: 1. Keep AX.25, NET/ROM, and ROSE in the kernel and in-tree 2. Move the protocols to an out-of-tree module (so they still run in the kernel, but are not maintained in-tree) 3. Move the protocols into a userspace implementation, and provide backwards compatibility with a shim library that exposes the existing API, but implements it in terms of a new implementation ## Staying in-kernel, in-tree. This is the current state of affairs. Right now, the code receives token maintenance, and there are two paths forward: 1. Status quo, in which no maintainer(s) step up, and the code remains in a state of perpetual gloom, hovering between mostly working and mostly broken. It works _well enough_ for those who invest time in getting it up and running that it's not critical to change, but system updates are risky. As time goes forward, and more people are scouring the kernel looking for zero-day security exploits and DOS opportunities, it becomes an obvious attack vector. This is obviously not ideal. 2. One or more maintainers actively begin active work to modernize and clean up the implementations. It's a fairly large task, and requires coordination with a much larger effort (that is, the rest of the kernel). There are obviously folks who are skilled at working in the Linux kernel, well integrated into the community, and thus positioned to provide maintenance going forward. There are also folks who are interested in keeping this code in-tree. The question is whether the intersection of these two sets is large enough to be sustainable. Then there's the question of a larger roadmap: if the code stays in-tree, does it gain new functionality (e.g., implementing the latest version of AX.25) or is this just to keep what's there working well? ### Pros and Cons of Staying in the Kernel (for hams) Pros: * No need to change anything. Those with working AX.25/NETROM/ROSE configurations can keep using them as-is. There is no additional software to install, no additional services to set up, configure or monitor, nothing else to keep up to date, etc. Installation is de facto handled by the distribution. * Compatibility with existing software. Programs written to use the sockets API and these protocol families (e.g., `socket(AF_AX25, ...);`) work unchanged. * Likely some amount of prestige is attached to having a working implementation in a project as important as the Linux kernel. Cons: * Inaccessibility to most developers. The number of people who can write reasonable software in a higher-level language is pretty large at this point; the number who can do so in C is much smaller. The number who can competently write software in the Linux kernel and shepherd it through the review and integration process is a tiny fraction of that. * Slow rate of change. Updates goes through upstream and are generally filtered down through distros and vendors; this can take quite some time. Of course, users can compile and install their own kernels, but many do not. * A bug in the stack often manifests as a system `panic`, taking down the entire machine, not just the AX.25, NET/ROM, or ROSE software. * Shifting to active maintenance requires long-term investment. The intersection of people using this code and capable of working on it is small; unlike (say) TCP/IP, or process scheduling, memory management, or filesystems and management of storage devices, the number of people who are concerned about the health of this code at more than an abstract level is tiny, which means incentive to keep it up-to-date and well-maintained is inherently lower than other areas of the kernel. * Documentation is poor, in the sense that it hasn't been kept up to date as things have changed. The TLDP pages have good information, but their age shows, and the necessary formulae for figuring all of this out in 2026 is scattered across web pages, blogs, video tutorials, and mailing list archives in a way that can be bewildering to newcomers. I tried to document my own setup at https://kz2x.radio, but that just underscores the point. ### Pros and Cons of Staying in the Kernel (for Linux) Pros: * It keeps the kernel honest. Having a protocol that doesn't match the usual pattern of TCP/IP in-tree is a forcing function for exercising the common networking code (e.g., sockets etc) in useful ways to keep it flexible. Doing so makes it easier to incorporate future protocols that follow different models. * Goodwill with the ham community. Cons: * It is a maintenance drag. The state of this code is not great, it has many known bugs, and the amount of effort required to bring it up to current quality standards, not to mention incorporate e.g. the new versioner version of AX.25 or anything else, is substantial. A single motivated maintainer with kernel experience can likely stop the bleeding, but doing much more in a reasonable timeframe is going to need more folks who are invested and have the time to devote to it. * A bug in AX.25 usually kills the kernel. This isn't just a problem for hams, its a problem for the rest of the kernel, as well. * Related, if folks really started looking into it, it would probably turn into a security quagmire. Running in-kernel, with complete privileges over the entire machine, is the antithesis of a modern security posture, for that a tiny fraction of the overall Linux installed base would use. And as Habets pointed out, what _should_ the semantics be for e.g. network ACLs and AX.25? ### Discussion The most likely course of action is some middle path between status quo and active maintenance; my suspicion is that we can probably muster up a couple of folks who will improve the code to a point that it's substantially less buggy, leaky, and crash-prone as it is currently. That would certainly be an improvement; but will we be able to attract the combination of folks with the time, motivation, and familiarity required to, say, update the AX.25 v2.2? The central question I come back to is, what advantage is conferred by keeping these protocols in the kernel? Put another way, what is it about having them in the kernel that cannot be replicated by moving them out of the kernel and running them elsewhere? ## Moving to an Out-of-Tree Kernel Module An alternative that keeps the stack in the kernel, thus retaining the ham-perspective compatibility "Pro" listed above, is to move the implementations out-of-tree, so that they are still loaded as kernel modules, but no longer maintained in the kernel tree proper. ### Pros and Cons of an Out-of-Tree Kernel Module Pros: * As with an in-tree kernel module, compatibility with existing software is preserved. * Similarly, a working setup is mostly unchanged, caveat that the out-of-tree modules must be installed as an additional, explicit step. * Most kernel developers are freed from any sort of maintenance burden. The AX.25, NET/ROM, and ROSE code is not a priori a vector for security exploits, nor a magnet for sloppy LLM-generated patches or syzkaller fuzzing reports. Cons: * Maintenance is now squarely on the amateur radio community (which is not necessarily a bad thing) * Installing the modules for AX.25, NET/ROM, and ROSE would require additional steps, though would hopefully be facilitated by distros and package managers. Note that the userspace programs used with these protocols already require an additional step to install; this would just be adding a handful of other packages to the mix. * It is likely to be seen as a demotion by the ham community. No matter how much you explain it to folks, there will be some who view removal from the main kernel tree as a step down. * Inevitably, there will be impedance mismatches as kernel interfaces change. Whereas now these are mostly taken care of since the code is-tree along with the interfaces that are changing, out-of-tree modules will lag the kernel. Moreover, there is a versioning burden that does not exist right now: one must ensure one has the correct module version of their kernel, etc. * This code as a forcing function of an unusual protocol family to prevent the kernel's network stack from becoming too IP-centric is significantly lessened; it would still need to be accommodated, since it would run in the context of the kernel, but since it was not in the kernel by default, it wouldn't exert as much pressure on design. * It doesn't do much, if anything, for the documentation problem. * It doesn't do much to address the accessibility issue for most developers. ### Discussion Some more details are needed here, in particular around infrastructure to support this (where does it live? How is it tested?) and interaction with the kernel proper (how are breaking changes detected and mitigated?). ## Moving to a Userspace Implementation The final option on the list of viable alternatives is to excise the protocols from the kernel entirely, and run them in a userspace program. This is predicated on the observation that each of the three is run over relatively low-speed links: 1200 BAUD to 9600. In that case, there the performance penalty for crossing the userspace<->kernel boundary is insignificant. There is significant precedence for this: among extant AX.25 implementations, JNOS2, LinBPQ, Direwolf, Sailer's SoundModem (and probably others I'm unaware of), are all userspace implementation. ### Pros and Cons of a Userspace Implementation Pros: * The protocol code could be made completely independent of the kernel, and thus both are free to change at their own rate; the interface boundaries would be the usual system call interfaces. * A bug or failure merely crashes a program (which could be restarted); it does not take down the entire machine. * It could be reimplemented in whatever language one likes, or accessed via FFI; it not be constrained to C (or Rust). Libraries implementing the protocols could be incorporated into larger systems that use open monitoring systems, are managed by e.g. systemd, and so forth. * A suitable userspace implementation may already exist: LinBPQ and/or JNOS2, for example. LinFBB was brought up as a use case, and at a glance it appears that it may be possible to make LinFBB use LinBPQ directly. * Userspace code is arguably easier to develop and iterate on: portions can be unit-tested, it can be put into artificial test scaffolds and exercised, and so forth. The edit/compile/test cycle is fast and can be made fairly easy. Sanitizers, fuzzing, and other tooling can be easily brought to bear to flush out bugs and increase robustness. While much of this can likely be done in the kernel, as well, it requires considerably more expertise to do that well. * Userspace implementations of these protocols are not constrained by e.g., the sockets API that the existing kernel implementation exposes to client programs. They can provide whatever interface to clients that makes sense, specifically tailored to amateur radio use. * This could lead to further simplifications inside of the kernel: for example, special cases for routing IP over AX.25 and/or NET/ROM (if these exist) could be removed; TAP/TUN could handle that use case instead. * A userspace implementation is more portable. Perhaps Linux hams don't particularly care so much, but with some care, the implementation could be made to run on e.g. a microcontroller or another OS. Cons: * Compatibility with existing software requires more work. In particular, to use existing software that expects the sockets API unmodified, we would have provide a shim library that implements that interface, and then inject that into existing software: for dynamically linked executables, this can be done using `LD_PRELOAD` tricks; statically linked binaries would be out of luck. * Just emulating the sockets API doesn't give exact fidelity for other functionality. Files tied to AX.25 and synthesized by the kernel, such as those under /sys, are not easily provided (unless we overload `open` in addition to the socket APIs). Tools like `netstat` would no longer display information about amateur radio protocol state; to be fair, the `ip` and `ss` tools are already pretty anemic for these protocols, but the point is that some amount of retooling would be necessary. * Messaging would ideally be handled with thoughtfulness, care, and attention. I would anticipate that some members of the amateur radio community would have a hard time not misinterpreting removal from the kernel as "Linux kicking out hams!" Of course that wouldn't be the case; a significant factor of the motivation for proposing a userspace implementation is getting a much _better_ implementation for hams. ### Discussion Again, I would ask why people want AX.25, NET/ROM, and ROSE in the kernel, specifically. To my mind, the important part is being able to use these protocols from a stable platform; whether they are implemented in or out of the kernel is an implementation detail, and mostly irrelevant. To that end, the userspace route seems like the best, long-term, provided it is messaged and socialized properly, and folks step up who are committed to providing the necessary compatibility shim libraries. > If the consensus is that trying to keep the drivers in thee tree up to > date is the way ahead I'm happy to put my hand up to do this if no one > else is so inclined - I've a couple friends I can bug to help me get > back up to speed. > > But I'm also mindful there are other hams that have been more recently > involved in kernel work, so am going to give them a gentle nudge offline > too :) The above are my two cents. I'd be interested in other perspectives. - Dan C. (KZ2X) > Cheers/73, > Hugh > VK3YYZ/AD5RV > > > [0] First licensed in the late 80's and can even remember the smell and > sound of a Model 33 teletype connected to a TNC :) > > [1] Installed Slackware in the early 90's and never fully recovered, > some of my code still in the kernel to this day :) > > [2] > https://lore.kernel.org/linux-hams/761f83cc-58eb-4b4a-ba91-d11412e7b2a6@gmail.com/T/#t > > > > -- > I am slowly moving tohugh@blemings.id.au as my main email address. > If you're usinghugh@blemings.org please update your address book accordingly. > Thank you :) > > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Discuss: Future of AX25, NETROM and ROSE in the kernel ? 2026-04-13 23:31 ` Dan Cross @ 2026-04-18 19:28 ` Dan Cross 2026-04-18 23:24 ` Nate Bargmann 2026-04-19 4:01 ` Stuart Longland VK4MSL 0 siblings, 2 replies; 16+ messages in thread From: Dan Cross @ 2026-04-18 19:28 UTC (permalink / raw) To: hugh; +Cc: linux-hams [Top-posting to make meta-commendary] I wonder if other folks have thoughts, here? It doesn't bode well that the discussion hasn't progressed. :-( - Dan C. On Mon, Apr 13, 2026 at 7:31 PM Dan Cross <crossd@gmail.com> wrote: > On Sat, Apr 11, 2026 at 3:36 AM Hugh Blemings <hugh@blemings.org> wrote: > > [snip] > > My email here seeks to see that we, as a technical community, navigate a > > potentially tricky point in the hobbies presence in the Linux kernel as > > well as possible. I've a decent long term view of the matters at hand, > > but lack a good "current" picture[1]. > > > > There's a thread[2] that kicked off, primarily in linux-hams that > > initially focused on bug fixes in the Netrom code. This has broadened > > into a discussion about the future of the AX25, NETROM and ROSE code in > > the kernel. > > > > A couple of well respected mainline kernel maintainers have noted the > > maintenance overhead of these (relatively) lightly used protocols. This > > has led to, quite reasonably I think, some discussion of whether they > > should be removed or deprecated - the perception being they're not used > > much. Note that none of this a judgement on the hobby itself or the > > utility to the broader community. > > > > There's also been some very good points raised in that thread by hams > > around whether it makes sense to move the implementation into userspace > > or to out of tree kernel code. Both can be done in such a way as to > > cause little to no impact from the actual application code that makes > > use of the protocols. > > > > My intuition is that we probably have folks here on linux-vger that have > > the requisite skills and reputation, or ability to gain them, to keep > > the in tree drivers up to date. But perhaps that's just "old" thinking > > on my part? > > > > So I figure a thread here to discuss how we go forward made some sense - > > stay with the current in kernel model, look to go oot or userspace. > > I think it would help frame the discussion to present some background, > go into the various options, and present pros and cons of each. With > respect to keeping protocol implementations in the kernel and in-tree, > it further makes sense to present these from two separate > perspectives: a) hams who use the software, and b) the Linux kernel as > a project. > > # Background > > Linux has had implementations of AX.25, NET/ROM, and ROSE in the > kernel since the 1990s. Though it is nowhere near as popular as it > was in the 1980s and early 90s, packet radio using these protocols is > still in use world-wide: AX.25 in particular is the basis for APRS, > and beyond that remains broadly popular for accessing packet BBSes, > exchanging mail, sending radio telegrams via the various traffic > services (e.g., NTS in the US), and so on. > > AX.25 is a bit of an odd duck by modern standards; if fits into > neither the IP/TCP nor ISO/OSI models neatly, and in OSI terms, > provides functionality spanning layers 2-4; details may be found in > the relevant specification documents. Note that Linux implements > version 2.0 of the protocol > (http://bitsavers.informatik.uni-stuttgart.de/communications/arrl/AX.25_Link-Layer_Protocol_Ver_2.0_198410.pdf), > while the current version is 2.2 > (http://www.ax25.net/AX25.2.2-Jul%2098-2.pdf), with updates in 2017 > (https://tarpn.net/t/faq/files/AX25.2.2-Sep%2017-1-10Sep17.pdf). > > NET/ROM adds multi-hop routing on top of AX.25 with dynamic routing, > and provides a facility to address nodes using an alias (e.g., "CHAT" > resolving to "G8BPQ-6" or similar). As far as I know, the > specification is rather less formal than those for AX.25, and the > protocol was original specified as a chapter in the manual for the > original software. This has been extracted a few times, such as > https://packet-radio.net/wp-content/uploads/2017/04/netrom1.pdf > > ROSE is basically an implementation of the CCITT X.25 network layer > with some elements of AX.25 mixed in. Stations are addressed using a > 10-digit "telephone numbers". It is statically routed. Its > documentation describes it as, "The ROSE X.25 Packet Switch", e.g.: > https://web.tapr.org/meetings/CNC_1989/CNC1989-ROSE-PacketSwitch-W2VY.pdf > > Of these, surely AX.25 is the most widely used (after all, it forms > the basis for the others), with NET/ROM next and ROSE last. It's > unclear how widely used ROSE is at this point; lack of > interoperability with other packages that just don't implement it is > probably a limiting factor here. > > A folks have run TCP/IP over packet radio by embedded IP datagrams (or > their fragments) inside of AX.25 frames that are then sent over the > air using the in-kernel stack. > > ## Recent Activity Outside of the Linux Kernel > > Newer developments in the amateur packet radio world have focused on: > > * Improving the implementation of AX.25 to increase robustness and > throughput. For example, adaptations of Jacobson/Karels congestion > control have been incorporated into some AX.25 implementations, as > have adaptively pausing protocol timers if the link is detected to be > in use. Also, adding forward error correcting codes at layer 2 to > help with transit over marginal RF links e.g. FX.25 > (https://web.archive.org/web/20110718212817/http://www.stensat.org/Docs/FX-25_01_06.pdf). > * Newer protocols to try and work around some of the deficiencies of > AX.25: IL2P ("Improved layer 2 Protocol": > https://packet-radio.net/wp-content/uploads/2020/10/il2p-specification0-4.pdf), > and ARNGLL (https://github.com/arngll/arngll-spec/blob/main/n6drc-arngll.md) > are examples here. > * The European amateur radio community noted problems with NET/ROM > some time ago and proposed FlexNET as an alternative > (https://www.qsl.net/ww2bsa/index_htm_files/DCC1995-FlexNet-DK7WJ-N2IRZ.pdf), > but details on the protocol itself are scant. Similar problems were > noted by others, and by all accounts, the best ideas of NET/ROM and > FlexNET were synthesized into the INP3 protocol > (https://wiki.oarc.uk/_media/packet:internodeprotocolnp.pdf). > > Not much, if any, of this work has been picked up by Linux writ large. > Some doesn't make a lot of sense from a kernel perspective: FX.25, for > instance, is more of a physical layer thing. However, while there > have been patches proposed at various times (e.g., there was an > implementation of INP3 done as a delta on top of the in-kernel NET/ROM > code), little of it seems to have been integrated: I didn't see > evidence that INP3 support was incorporated when I looked earlier this > morning. > > ## Problems With the Kernel Implementations > > Put bluntly, the kernel implementations are showing their age. > Although it has incorporated some enhancements (7-bit sequence > numbers, for example) the AX.25 protocol implementation remains at > version 2.0. > > Thomas Habets has noted a number of problems in a blog post: > https://blog.habets.se/2021/11/AX25-user-space.html Some of these are > purely quality of implementation issues ("setting CRC mode resets all > other settings") but others seem rather more fundamental: e.g., the > "10 REJs in a row" problem: this suggests that the kernel does not > iterate over frames in the outbound window or examine the outbound > queue when processing inbound supervisor frames. > > Problems including data corruption, leaked references, deadlocks, > panics, etc, occur distressingly regularly. E.g., > https://lore.kernel.org/linux-hams/CAEoi9W4FGoEv+2FUKs7zc=XoLuwhhLY8f8t_xQ6MgTJyzQPxXA@mail.gmail.com/ > and https://lore.kernel.org/linux-hams/my4l7ljo35dnwxl33maqhyvw7666dmuwtduwtyhnzdlb6bbf5m@5sbp4tvg246f/ > for recent-ish examples. > > A search of the `linux-hams` archive turns up a lot of problem > reports, some of which are unaddressed for significant chunks of time. > As Habets put it, if the current implementations were proposed for > incorporation into the kernel today, they probably wouldn't be > accepted, as they would not meet the required quality bar. Note > that's not a comment on the original authors or their work, but > rather, just an acknowledgement of the current state of affairs and > how things have changed since these were first introduced. As the man > page for ax25(4) puts it, "BUGS: Too numerous to list in full > currently." > > # The Various Options > > It seems that there's consensus that the current situation is > untenable, and something should be done. As I see it, there are > essentially three paths, with some variations on each: > > 1. Keep AX.25, NET/ROM, and ROSE in the kernel and in-tree > 2. Move the protocols to an out-of-tree module (so they still run in > the kernel, but are not maintained in-tree) > 3. Move the protocols into a userspace implementation, and provide > backwards compatibility with a shim library that exposes the existing > API, but implements it in terms of a new implementation > > ## Staying in-kernel, in-tree. > > This is the current state of affairs. Right now, the code receives > token maintenance, and there are two paths forward: > > 1. Status quo, in which no maintainer(s) step up, and the code remains > in a state of perpetual gloom, hovering between mostly working and > mostly broken. It works _well enough_ for those who invest time in > getting it up and running that it's not critical to change, but system > updates are risky. As time goes forward, and more people are scouring > the kernel looking for zero-day security exploits and DOS > opportunities, it becomes an obvious attack vector. This is obviously > not ideal. > 2. One or more maintainers actively begin active work to modernize and > clean up the implementations. It's a fairly large task, and requires > coordination with a much larger effort (that is, the rest of the > kernel). There are obviously folks who are skilled at working in the > Linux kernel, well integrated into the community, and thus positioned > to provide maintenance going forward. There are also folks who are > interested in keeping this code in-tree. The question is whether the > intersection of these two sets is large enough to be sustainable. > > Then there's the question of a larger roadmap: if the code stays > in-tree, does it gain new functionality (e.g., implementing the latest > version of AX.25) or is this just to keep what's there working well? > > ### Pros and Cons of Staying in the Kernel (for hams) > > Pros: > * No need to change anything. Those with working AX.25/NETROM/ROSE > configurations can keep using them as-is. There is no additional > software to install, no additional services to set up, configure or > monitor, nothing else to keep up to date, etc. Installation is de > facto handled by the distribution. > * Compatibility with existing software. Programs written to use the > sockets API and these protocol families (e.g., `socket(AF_AX25, > ...);`) work unchanged. > * Likely some amount of prestige is attached to having a working > implementation in a project as important as the Linux kernel. > > Cons: > * Inaccessibility to most developers. The number of people who can > write reasonable software in a higher-level language is pretty large > at this point; the number who can do so in C is much smaller. The > number who can competently write software in the Linux kernel and > shepherd it through the review and integration process is a tiny > fraction of that. > * Slow rate of change. Updates goes through upstream and are generally > filtered down through distros and vendors; this can take quite some > time. Of course, users can compile and install their own kernels, but > many do not. > * A bug in the stack often manifests as a system `panic`, taking down > the entire machine, not just the AX.25, NET/ROM, or ROSE software. > * Shifting to active maintenance requires long-term investment. The > intersection of people using this code and capable of working on it is > small; unlike (say) TCP/IP, or process scheduling, memory management, > or filesystems and management of storage devices, the number of people > who are concerned about the health of this code at more than an > abstract level is tiny, which means incentive to keep it up-to-date > and well-maintained is inherently lower than other areas of the > kernel. > * Documentation is poor, in the sense that it hasn't been kept up to > date as things have changed. The TLDP pages have good information, > but their age shows, and the necessary formulae for figuring all of > this out in 2026 is scattered across web pages, blogs, video > tutorials, and mailing list archives in a way that can be bewildering > to newcomers. I tried to document my own setup at https://kz2x.radio, > but that just underscores the point. > > ### Pros and Cons of Staying in the Kernel (for Linux) > > Pros: > * It keeps the kernel honest. Having a protocol that doesn't match > the usual pattern of TCP/IP in-tree is a forcing function for > exercising the common networking code (e.g., sockets etc) in useful > ways to keep it flexible. Doing so makes it easier to incorporate > future protocols that follow different models. > * Goodwill with the ham community. > > Cons: > * It is a maintenance drag. The state of this code is not great, it > has many known bugs, and the amount of effort required to bring it up > to current quality standards, not to mention incorporate e.g. the new > versioner version of AX.25 or anything else, is substantial. A single > motivated maintainer with kernel experience can likely stop the > bleeding, but doing much more in a reasonable timeframe is going to > need more folks who are invested and have the time to devote to it. > * A bug in AX.25 usually kills the kernel. This isn't just a problem > for hams, its a problem for the rest of the kernel, as well. > * Related, if folks really started looking into it, it would probably > turn into a security quagmire. Running in-kernel, with complete > privileges over the entire machine, is the antithesis of a modern > security posture, for that a tiny fraction of the overall Linux > installed base would use. And as Habets pointed out, what _should_ > the semantics be for e.g. network ACLs and AX.25? > > ### Discussion > > The most likely course of action is some middle path between status > quo and active maintenance; my suspicion is that we can probably > muster up a couple of folks who will improve the code to a point that > it's substantially less buggy, leaky, and crash-prone as it is > currently. That would certainly be an improvement; but will we be > able to attract the combination of folks with the time, motivation, > and familiarity required to, say, update the AX.25 v2.2? > > The central question I come back to is, what advantage is conferred by > keeping these protocols in the kernel? Put another way, what is it > about having them in the kernel that cannot be replicated by moving > them out of the kernel and running them elsewhere? > > ## Moving to an Out-of-Tree Kernel Module > > An alternative that keeps the stack in the kernel, thus retaining the > ham-perspective compatibility "Pro" listed above, is to move the > implementations out-of-tree, so that they are still loaded as kernel > modules, but no longer maintained in the kernel tree proper. > > ### Pros and Cons of an Out-of-Tree Kernel Module > > Pros: > * As with an in-tree kernel module, compatibility with existing > software is preserved. > * Similarly, a working setup is mostly unchanged, caveat that the > out-of-tree modules must be installed as an additional, explicit step. > * Most kernel developers are freed from any sort of maintenance > burden. The AX.25, NET/ROM, and ROSE code is not a priori a vector > for security exploits, nor a magnet for sloppy LLM-generated patches > or syzkaller fuzzing reports. > > Cons: > * Maintenance is now squarely on the amateur radio community (which is > not necessarily a bad thing) > * Installing the modules for AX.25, NET/ROM, and ROSE would require > additional steps, though would hopefully be facilitated by distros and > package managers. Note that the userspace programs used with these > protocols already require an additional step to install; this would > just be adding a handful of other packages to the mix. > * It is likely to be seen as a demotion by the ham community. No > matter how much you explain it to folks, there will be some who view > removal from the main kernel tree as a step down. > * Inevitably, there will be impedance mismatches as kernel interfaces > change. Whereas now these are mostly taken care of since the code > is-tree along with the interfaces that are changing, out-of-tree > modules will lag the kernel. Moreover, there is a versioning burden > that does not exist right now: one must ensure one has the correct > module version of their kernel, etc. > * This code as a forcing function of an unusual protocol family to > prevent the kernel's network stack from becoming too IP-centric is > significantly lessened; it would still need to be accommodated, since > it would run in the context of the kernel, but since it was not in the > kernel by default, it wouldn't exert as much pressure on design. > * It doesn't do much, if anything, for the documentation problem. > * It doesn't do much to address the accessibility issue for most developers. > > ### Discussion > > Some more details are needed here, in particular around infrastructure > to support this (where does it live? How is it tested?) and > interaction with the kernel proper (how are breaking changes detected > and mitigated?). > > ## Moving to a Userspace Implementation > > The final option on the list of viable alternatives is to excise the > protocols from the kernel entirely, and run them in a userspace > program. This is predicated on the observation that each of the three > is run over relatively low-speed links: 1200 BAUD to 9600. In that > case, there the performance penalty for crossing the > userspace<->kernel boundary is insignificant. > > There is significant precedence for this: among extant AX.25 > implementations, JNOS2, LinBPQ, Direwolf, Sailer's SoundModem (and > probably others I'm unaware of), are all userspace implementation. > > ### Pros and Cons of a Userspace Implementation > > Pros: > * The protocol code could be made completely independent of the > kernel, and thus both are free to change at their own rate; the > interface boundaries would be the usual system call interfaces. > * A bug or failure merely crashes a program (which could be > restarted); it does not take down the entire machine. > * It could be reimplemented in whatever language one likes, or > accessed via FFI; it not be constrained to C (or Rust). Libraries > implementing the protocols could be incorporated into larger systems > that use open monitoring systems, are managed by e.g. systemd, and so > forth. > * A suitable userspace implementation may already exist: LinBPQ and/or > JNOS2, for example. LinFBB was brought up as a use case, and at a > glance it appears that it may be possible to make LinFBB use LinBPQ > directly. > * Userspace code is arguably easier to develop and iterate on: > portions can be unit-tested, it can be put into artificial test > scaffolds and exercised, and so forth. The edit/compile/test cycle is > fast and can be made fairly easy. Sanitizers, fuzzing, and other > tooling can be easily brought to bear to flush out bugs and increase > robustness. While much of this can likely be done in the kernel, as > well, it requires considerably more expertise to do that well. > * Userspace implementations of these protocols are not constrained by > e.g., the sockets API that the existing kernel implementation exposes > to client programs. They can provide whatever interface to clients > that makes sense, specifically tailored to amateur radio use. > * This could lead to further simplifications inside of the kernel: for > example, special cases for routing IP over AX.25 and/or NET/ROM (if > these exist) could be removed; TAP/TUN could handle that use case > instead. > * A userspace implementation is more portable. Perhaps Linux hams > don't particularly care so much, but with some care, the > implementation could be made to run on e.g. a microcontroller or > another OS. > > Cons: > * Compatibility with existing software requires more work. In > particular, to use existing software that expects the sockets API > unmodified, we would have provide a shim library that implements that > interface, and then inject that into existing software: for > dynamically linked executables, this can be done using `LD_PRELOAD` > tricks; statically linked binaries would be out of luck. > * Just emulating the sockets API doesn't give exact fidelity for other > functionality. Files tied to AX.25 and synthesized by the kernel, > such as those under /sys, are not easily provided (unless we overload > `open` in addition to the socket APIs). Tools like `netstat` would no > longer display information about amateur radio protocol state; to be > fair, the `ip` and `ss` tools are already pretty anemic for these > protocols, but the point is that some amount of retooling would be > necessary. > * Messaging would ideally be handled with thoughtfulness, care, and > attention. I would anticipate that some members of the amateur radio > community would have a hard time not misinterpreting removal from the > kernel as "Linux kicking out hams!" Of course that wouldn't be the > case; a significant factor of the motivation for proposing a userspace > implementation is getting a much _better_ implementation for hams. > > ### Discussion > > Again, I would ask why people want AX.25, NET/ROM, and ROSE in the > kernel, specifically. To my mind, the important part is being able to > use these protocols from a stable platform; whether they are > implemented in or out of the kernel is an implementation detail, and > mostly irrelevant. > > To that end, the userspace route seems like the best, long-term, > provided it is messaged and socialized properly, and folks step up who > are committed to providing the necessary compatibility shim libraries. > > > If the consensus is that trying to keep the drivers in thee tree up to > > date is the way ahead I'm happy to put my hand up to do this if no one > > else is so inclined - I've a couple friends I can bug to help me get > > back up to speed. > > > > But I'm also mindful there are other hams that have been more recently > > involved in kernel work, so am going to give them a gentle nudge offline > > too :) > > The above are my two cents. I'd be interested in other perspectives. > > - Dan C. > (KZ2X) > > > Cheers/73, > > Hugh > > VK3YYZ/AD5RV > > > > > > [0] First licensed in the late 80's and can even remember the smell and > > sound of a Model 33 teletype connected to a TNC :) > > > > [1] Installed Slackware in the early 90's and never fully recovered, > > some of my code still in the kernel to this day :) > > > > [2] > > https://lore.kernel.org/linux-hams/761f83cc-58eb-4b4a-ba91-d11412e7b2a6@gmail.com/T/#t > > > > > > > > -- > > I am slowly moving tohugh@blemings.id.au as my main email address. > > If you're usinghugh@blemings.org please update your address book accordingly. > > Thank you :) > > > > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Discuss: Future of AX25, NETROM and ROSE in the kernel ? 2026-04-18 19:28 ` Dan Cross @ 2026-04-18 23:24 ` Nate Bargmann 2026-04-19 1:31 ` Steven R. Loomis 2026-04-19 4:01 ` Stuart Longland VK4MSL 1 sibling, 1 reply; 16+ messages in thread From: Nate Bargmann @ 2026-04-18 23:24 UTC (permalink / raw) To: linux-hams [-- Attachment #1: Type: text/plain, Size: 1489 bytes --] * On 2026 18 Apr 14:29 -0500, Dan Cross wrote: > [Top-posting to make meta-commendary] > > I wonder if other folks have thoughts, here? It doesn't bode well that > the discussion hasn't progressed. :-( Your reply was so comprehensive, there isn't much to add! A few years ago I had in mind to give using the kernel AX25 stack a go but reading various reports kind of turned me away. I had last done so in the late '90s or so as I recall. I did do some testing with Direwolf at the time instead. As a potential user it really makes no difference whether support is in the kernel proper or user space. From a maintainer's view, it's likely that putting the AX25 code entirely in user space (option 3) is the best practice these days. Let's face it. The kernel is no longer a niche hobby project but is very much an enterprise project. It makes sense to move the AX25 stack entirely into user space. Before doing so, what could the AX25 stack in user space do that Direwolf cannot? I know no one is suggesting this, but should an option four be considered where the AX25 code is dropped entirely from the kernel and potential users are directed to Direwolf or some such existing project? 73, Nate, N0NB -- "The optimist proclaims that we live in the best of all possible worlds. The pessimist fears this is true." Web: https://www.n0nb.us Projects: https://github.com/N0NB GPG fingerprint: 82D6 4F6B 0E67 CD41 F689 BBA6 FB2C 5130 D55A 8819 [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Discuss: Future of AX25, NETROM and ROSE in the kernel ? 2026-04-18 23:24 ` Nate Bargmann @ 2026-04-19 1:31 ` Steven R. Loomis 2026-04-19 2:02 ` jj 0 siblings, 1 reply; 16+ messages in thread From: Steven R. Loomis @ 2026-04-19 1:31 UTC (permalink / raw) To: Nate Bargmann; +Cc: linux-hams I have a dormant project [1] to add Node.js bindings for AX25 to be able to write Node.js apps directly on AX25. My AX25 use is also dormant, but I would love to bring it back up someday. User space makes a lot of sense for the reasons given. Since maintenance is a question though, perhaps it’s a question of who would volunteer for making any change (beyond no change)? > what could the AX25 stack in user space do that Direwolf cannot? The AX25 stack would still attach to Direwolf so that connected AX25 apps could run. [1]: https://github.com/srl295/node-ax25-seqpacket/blob/add-actual-stuff/lib/ax25-seqpacket.js -- Steven R. Loomis K6SPI ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Discuss: Future of AX25, NETROM and ROSE in the kernel ? 2026-04-19 1:31 ` Steven R. Loomis @ 2026-04-19 2:02 ` jj 0 siblings, 0 replies; 16+ messages in thread From: jj @ 2026-04-19 2:02 UTC (permalink / raw) To: Steven R. Loomis, Nate Bargmann; +Cc: linux-hams I have actual RF ports with ax25/netrom/tcpip connectivity to our MARCAN packet system on vhf 1200b and I'm willing to do any real-world testing if needed.. On 2026-04-18 22:31, Steven R. Loomis wrote: > I have a dormant project [1] to add Node.js bindings for AX25 to be able to write Node.js apps directly on AX25. > My AX25 use is also dormant, but I would love to bring it back up someday. > > User space makes a lot of sense for the reasons given. > Since maintenance is a question though, perhaps it’s a question of who would volunteer for making any change (beyond no change)? > >> what could the AX25 stack in user space do that Direwolf cannot? > The AX25 stack would still attach to Direwolf so that connected AX25 apps could run. > > [1]: https://github.com/srl295/node-ax25-seqpacket/blob/add-actual-stuff/lib/ax25-seqpacket.js > > -- > Steven R. Loomis > K6SPI > > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Discuss: Future of AX25, NETROM and ROSE in the kernel ? 2026-04-18 19:28 ` Dan Cross 2026-04-18 23:24 ` Nate Bargmann @ 2026-04-19 4:01 ` Stuart Longland VK4MSL 2026-04-19 9:36 ` Hugh Blemings 1 sibling, 1 reply; 16+ messages in thread From: Stuart Longland VK4MSL @ 2026-04-19 4:01 UTC (permalink / raw) To: Dan Cross, hugh; +Cc: linux-hams On 19/4/26 05:28, Dan Cross wrote: > [Top-posting to make meta-commendary] > > I wonder if other folks have thoughts, here? It doesn't bode well that > the discussion hasn't progressed. 🙁 I haven't had a chance to fully review what you've posted… there was a lot of historical information in there including detail on the protocols in question. I've earmarked it to go through closely however. (e.g. I had heard of "ROSE" but never seen a spec for it.) My situation was wanting a library that I could use to do AX.25 networking from userspace without having applications having to elevate to `root` to achieve it. There was also a maintenance concern. Rather than try and work out the AX.25 kernel stack, I opted to instead build my own. Instructive, but difficult as the documentation is sketchy in places. My implementation was written in Python 3.5+ for ease of development. Probably not the best option, but it got the job done. `aioax25` allowed me to deliver a project for an emergency comms group and provides a reasonable foundation for simple tasks. The stack is also portable to other platforms. (I mostly only care about Linux and *BSD, but well written software should work elsewhere too. Apparently it works fine on Apple MacOS X.) A userspace AX.25 daemon which implements the stack would seem to be the best course of action, but the elephant in the room is what the API would look like. The only thing I've seen close to achieving something like that would be the AGWPE protocol, however the author of that AX.25 stack has categorically stated that he "owns" that protocol. I don't feel like going to court to argue copyright of interfaces for the sake of a hobby. The AGWPE protocol is also very limiting: a lot of fields in the AX.25 frame are not accessible via this protocol, either for reading or setting. Want to use the two reserved bits to signal something in a custom protocol? Too bad. I was therefore pondering a "stream"-like protocol using KISS-style framing (to re-use existing code). The frames would serve as an RPC mechanism for implementing something like the `libax25` API, exposing the same functionality and allowing an application to interact with the AX.25 stack without having to implement the whole protocol (as they'd have to do with KISS). Client applications could connect either via Unix domain sockets or TCP. You mention the performance hit of crossing the kernel/user-space boundary… I think Direwolf experimentally can work as high as 38400bps. A turn-of-the-century desktop PC was easily able to keep up with that for PPP links (with `pppd` running in userspace). ARMv7 single board computers made 15 years later can deliver similar performance. I don't think this will be much of a bottleneck in practice. I think userspace is the right way forward given the niche use case here. -- Stuart Longland (aka Redhatter, VK4MSL) I haven't lost my mind... ...it's backed up on a tape somewhere. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Discuss: Future of AX25, NETROM and ROSE in the kernel ? 2026-04-19 4:01 ` Stuart Longland VK4MSL @ 2026-04-19 9:36 ` Hugh Blemings 2026-04-19 16:18 ` Steve Conklin 0 siblings, 1 reply; 16+ messages in thread From: Hugh Blemings @ 2026-04-19 9:36 UTC (permalink / raw) To: Stuart Longland VK4MSL, Dan Cross; +Cc: linux-hams HI All, On 19/4/2026 14:01, Stuart Longland VK4MSL wrote: > On 19/4/26 05:28, Dan Cross wrote: >> [Top-posting to make meta-commendary] >> >> I wonder if other folks have thoughts, here? It doesn't bode well that >> the discussion hasn't progressed. 🙁 > > I haven't had a chance to fully review what you've posted… there was a > lot of historical information in there including detail on the > protocols in question. I've earmarked it to go through closely > however. (e.g. I had heard of "ROSE" but never seen a spec for it.) > > My situation was wanting a library that I could use to do AX.25 > networking from userspace without having applications having to > elevate to `root` to achieve it. There was also a maintenance > concern. Rather than try and work out the AX.25 kernel stack, I opted > to instead build my own. > > Instructive, but difficult as the documentation is sketchy in places. > > My implementation was written in Python 3.5+ for ease of development. > Probably not the best option, but it got the job done. `aioax25` > allowed me to deliver a project for an emergency comms group and > provides a reasonable foundation for simple tasks. The stack is also > portable to other platforms. (I mostly only care about Linux and > *BSD, but well written software should work elsewhere too. Apparently > it works fine on Apple MacOS X.) > > A userspace AX.25 daemon which implements the stack would seem to be > the best course of action, but the elephant in the room is what the > API would look like. > > The only thing I've seen close to achieving something like that would > be the AGWPE protocol, however the author of that AX.25 stack has > categorically stated that he "owns" that protocol. I don't feel like > going to court to argue copyright of interfaces for the sake of a hobby. > > The AGWPE protocol is also very limiting: a lot of fields in the AX.25 > frame are not accessible via this protocol, either for reading or > setting. Want to use the two reserved bits to signal something in a > custom protocol? Too bad. > > I was therefore pondering a "stream"-like protocol using KISS-style > framing (to re-use existing code). The frames would serve as an RPC > mechanism for implementing something like the `libax25` API, exposing > the same functionality and allowing an application to interact with > the AX.25 stack without having to implement the whole protocol (as > they'd have to do with KISS). > > Client applications could connect either via Unix domain sockets or TCP. > > You mention the performance hit of crossing the kernel/user-space > boundary… I think Direwolf experimentally can work as high as > 38400bps. A turn-of-the-century desktop PC was easily able to keep up > with that for PPP links (with `pppd` running in userspace). ARMv7 > single board computers made 15 years later can deliver similar > performance. I don't think this will be much of a bottleneck in > practice. > > I think userspace is the right way forward given the niche use case here. Apologies, I kicked off this thread and life intervened a bit and have only now had a chance to get back to read through the excellent discourse since. I did have one off list conversation about this which was similarly leaning towards a well managed/discussed shift to a userspace approach. The individual in question has had quite a lot of both ham radio and FOSS experience - I'll give them a nudge and see if they would be willing to weigh in here too as I think they'd add a lot to the thread. I wonder if anyone on list feels they have the right skills to put together the shim/compatibility library that would be needed to allow the kernel code to be removed? Seems like that might be the next thing to explore ? Hoping things settle down a bit and will be able to contribute more to ongoing discussion vy 73 Hugh VK1YYZ/AD5RV -- I am slowly moving to hugh@blemings.id.au as my main email address. If you're using hugh@blemings.org please update your address book accordingly. Thank you :) ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Discuss: Future of AX25, NETROM and ROSE in the kernel ? 2026-04-19 9:36 ` Hugh Blemings @ 2026-04-19 16:18 ` Steve Conklin 2026-04-21 6:28 ` Hugh Blemings 0 siblings, 1 reply; 16+ messages in thread From: Steve Conklin @ 2026-04-19 16:18 UTC (permalink / raw) To: hugh; +Cc: Stuart Longland VK4MSL, Dan Cross, linux-hams On Sun, Apr 19, 2026 at 4:36 AM Hugh Blemings <hugh@blemings.org> wrote: > > HI All, > > On 19/4/2026 14:01, Stuart Longland VK4MSL wrote: > > On 19/4/26 05:28, Dan Cross wrote: > >> [Top-posting to make meta-commendary] > >> > >> I wonder if other folks have thoughts, here? It doesn't bode well that > >> the discussion hasn't progressed. 🙁 > > > > I haven't had a chance to fully review what you've posted… there was a > > lot of historical information in there including detail on the > > protocols in question. I've earmarked it to go through closely > > however. (e.g. I had heard of "ROSE" but never seen a spec for it.) > > > > My situation was wanting a library that I could use to do AX.25 > > networking from userspace without having applications having to > > elevate to `root` to achieve it. There was also a maintenance > > concern. Rather than try and work out the AX.25 kernel stack, I opted > > to instead build my own. > > > > Instructive, but difficult as the documentation is sketchy in places. > > > > My implementation was written in Python 3.5+ for ease of development. > > Probably not the best option, but it got the job done. `aioax25` > > allowed me to deliver a project for an emergency comms group and > > provides a reasonable foundation for simple tasks. The stack is also > > portable to other platforms. (I mostly only care about Linux and > > *BSD, but well written software should work elsewhere too. Apparently > > it works fine on Apple MacOS X.) > > > > A userspace AX.25 daemon which implements the stack would seem to be > > the best course of action, but the elephant in the room is what the > > API would look like. > > > > The only thing I've seen close to achieving something like that would > > be the AGWPE protocol, however the author of that AX.25 stack has > > categorically stated that he "owns" that protocol. I don't feel like > > going to court to argue copyright of interfaces for the sake of a hobby. > > > > The AGWPE protocol is also very limiting: a lot of fields in the AX.25 > > frame are not accessible via this protocol, either for reading or > > setting. Want to use the two reserved bits to signal something in a > > custom protocol? Too bad. > > > > I was therefore pondering a "stream"-like protocol using KISS-style > > framing (to re-use existing code). The frames would serve as an RPC > > mechanism for implementing something like the `libax25` API, exposing > > the same functionality and allowing an application to interact with > > the AX.25 stack without having to implement the whole protocol (as > > they'd have to do with KISS). > > > > Client applications could connect either via Unix domain sockets or TCP. > > > > You mention the performance hit of crossing the kernel/user-space > > boundary… I think Direwolf experimentally can work as high as > > 38400bps. A turn-of-the-century desktop PC was easily able to keep up > > with that for PPP links (with `pppd` running in userspace). ARMv7 > > single board computers made 15 years later can deliver similar > > performance. I don't think this will be much of a bottleneck in > > practice. > > > > I think userspace is the right way forward given the niche use case here. > > Apologies, I kicked off this thread and life intervened a bit and have > only now had a chance to get back to read through the excellent > discourse since. > > I did have one off list conversation about this which was similarly > leaning towards a well managed/discussed shift to a userspace approach. > The individual in question has had quite a lot of both ham radio and > FOSS experience - I'll give them a nudge and see if they would be > willing to weigh in here too as I think they'd add a lot to the thread. > > I wonder if anyone on list feels they have the right skills to put > together the shim/compatibility library that would be needed to allow > the kernel code to be removed? Seems like that might be the next thing > to explore ? > > Hoping things settle down a bit and will be able to contribute more to > ongoing discussion > > vy 73 > Hugh > VK1YYZ/AD5RV > > > > -- > I am slowly moving to hugh@blemings.id.au as my main email address. > If you're using hugh@blemings.org please update your address book accordingly. > Thank you :) > > Hi all, I'm another former maintainer who has been less active in the FOSS hamm community for a while. Thanks for all the history, and it's been great to see familiar names and callsigns again. /wave My personal take is that moving to userspace is the right long-term goal. As for deciding the exact form that takes, this thread is a good start. I'd like to make an offer for a long-term home for these components. I'm a director at ORI (Open Research Institute), and ORI could be a home for these. We're a project-based, completely open and volunteer nonprofit focused on ham radio and communications. We have volunteers with FOSS and ham radio experience, and we're already set up with a GitHub org, slack chat, and the infrastructure to manage projects. https://www.openresearch.institute/ https://www.openresearch.institute/your-project-is-welcome/ Anyone who currently maintains or has an interest in this is welcome to participate there. I personally volunteer to help move development infrastructure to ORI, if that's the wish of the community. Steve Conklin AI4QR ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Discuss: Future of AX25, NETROM and ROSE in the kernel ? 2026-04-19 16:18 ` Steve Conklin @ 2026-04-21 6:28 ` Hugh Blemings 2026-04-21 12:06 ` Dan Cross 0 siblings, 1 reply; 16+ messages in thread From: Hugh Blemings @ 2026-04-21 6:28 UTC (permalink / raw) To: Steve Conklin; +Cc: Stuart Longland VK4MSL, Dan Cross, linux-hams, netdev Hi All, Just to note in this thread (top posting as it's a bit orthogonal to the rest of this discussion) that events have preceeded us somewhat here A patch just recently submitted removes the AX25, NETROM and ROSE code from the kernel moving it to the mod-orphan sub tree of netdev https://lore.kernel.org/netdev/20260421021824.1293976-1-kuba@kernel.org/T/#u A shame but perhaps inevitable - but I think we have a good plan unfolding to both take care of medium term maintenance of the kernel code (in tree or out as it may be) as well as a move to userspace in the longer term. For the benefit of the netdev readership - we had a thread over in linux-hams on this but that may not have been visible to folks in netdev. TL;DR: we think we have a way forward but appreciate this may not be quick enough to meet the requirements/concerns put forward If we can delay removal, that'd be grand, but appreciate that moment may have passed. Cheers/73 Hugh VK3YYZ/AD5RV On 20/4/2026 02:18, Steve Conklin wrote: > On Sun, Apr 19, 2026 at 4:36 AM Hugh Blemings <hugh@blemings.org> wrote: >> HI All, >> >> On 19/4/2026 14:01, Stuart Longland VK4MSL wrote: >>> On 19/4/26 05:28, Dan Cross wrote: >>>> [Top-posting to make meta-commendary] >>>> >>>> I wonder if other folks have thoughts, here? It doesn't bode well that >>>> the discussion hasn't progressed. 🙁 >>> I haven't had a chance to fully review what you've posted… there was a >>> lot of historical information in there including detail on the >>> protocols in question. I've earmarked it to go through closely >>> however. (e.g. I had heard of "ROSE" but never seen a spec for it.) >>> >>> My situation was wanting a library that I could use to do AX.25 >>> networking from userspace without having applications having to >>> elevate to `root` to achieve it. There was also a maintenance >>> concern. Rather than try and work out the AX.25 kernel stack, I opted >>> to instead build my own. >>> >>> Instructive, but difficult as the documentation is sketchy in places. >>> >>> My implementation was written in Python 3.5+ for ease of development. >>> Probably not the best option, but it got the job done. `aioax25` >>> allowed me to deliver a project for an emergency comms group and >>> provides a reasonable foundation for simple tasks. The stack is also >>> portable to other platforms. (I mostly only care about Linux and >>> *BSD, but well written software should work elsewhere too. Apparently >>> it works fine on Apple MacOS X.) >>> >>> A userspace AX.25 daemon which implements the stack would seem to be >>> the best course of action, but the elephant in the room is what the >>> API would look like. >>> >>> The only thing I've seen close to achieving something like that would >>> be the AGWPE protocol, however the author of that AX.25 stack has >>> categorically stated that he "owns" that protocol. I don't feel like >>> going to court to argue copyright of interfaces for the sake of a hobby. >>> >>> The AGWPE protocol is also very limiting: a lot of fields in the AX.25 >>> frame are not accessible via this protocol, either for reading or >>> setting. Want to use the two reserved bits to signal something in a >>> custom protocol? Too bad. >>> >>> I was therefore pondering a "stream"-like protocol using KISS-style >>> framing (to re-use existing code). The frames would serve as an RPC >>> mechanism for implementing something like the `libax25` API, exposing >>> the same functionality and allowing an application to interact with >>> the AX.25 stack without having to implement the whole protocol (as >>> they'd have to do with KISS). >>> >>> Client applications could connect either via Unix domain sockets or TCP. >>> >>> You mention the performance hit of crossing the kernel/user-space >>> boundary… I think Direwolf experimentally can work as high as >>> 38400bps. A turn-of-the-century desktop PC was easily able to keep up >>> with that for PPP links (with `pppd` running in userspace). ARMv7 >>> single board computers made 15 years later can deliver similar >>> performance. I don't think this will be much of a bottleneck in >>> practice. >>> >>> I think userspace is the right way forward given the niche use case here. >> Apologies, I kicked off this thread and life intervened a bit and have >> only now had a chance to get back to read through the excellent >> discourse since. >> >> I did have one off list conversation about this which was similarly >> leaning towards a well managed/discussed shift to a userspace approach. >> The individual in question has had quite a lot of both ham radio and >> FOSS experience - I'll give them a nudge and see if they would be >> willing to weigh in here too as I think they'd add a lot to the thread. >> >> I wonder if anyone on list feels they have the right skills to put >> together the shim/compatibility library that would be needed to allow >> the kernel code to be removed? Seems like that might be the next thing >> to explore ? >> >> Hoping things settle down a bit and will be able to contribute more to >> ongoing discussion >> >> vy 73 >> Hugh >> VK1YYZ/AD5RV >> >> >> >> -- >> I am slowly moving to hugh@blemings.id.au as my main email address. >> If you're using hugh@blemings.org please update your address book accordingly. >> Thank you :) >> >> > Hi all, > > I'm another former maintainer who has been less active in the FOSS > hamm community for a while. Thanks for all the history, and it's been > great to see familiar names and callsigns again. > /wave > > My personal take is that moving to userspace is the right long-term > goal. As for deciding the exact form that takes, this thread is a good > start. > > I'd like to make an offer for a long-term home for these components. > > I'm a director at ORI (Open Research Institute), and ORI could be a > home for these. We're a project-based, completely open and volunteer > nonprofit focused on ham radio and communications. We have volunteers > with FOSS and ham radio experience, and we're already set up with a > GitHub org, slack chat, and the infrastructure to manage projects. > > https://www.openresearch.institute/ > https://www.openresearch.institute/your-project-is-welcome/ > > Anyone who currently maintains or has an interest in this is welcome > to participate there. > I personally volunteer to help move development infrastructure to ORI, > if that's the wish of the community. > > Steve Conklin AI4QR > -- I am slowly moving to hugh@blemings.id.au as my main email address. If you're using hugh@blemings.org please update your address book accordingly. Thank you :) ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Discuss: Future of AX25, NETROM and ROSE in the kernel ? 2026-04-21 6:28 ` Hugh Blemings @ 2026-04-21 12:06 ` Dan Cross 2026-04-21 14:43 ` Steven R. Loomis 0 siblings, 1 reply; 16+ messages in thread From: Dan Cross @ 2026-04-21 12:06 UTC (permalink / raw) To: hugh; +Cc: Steve Conklin, Stuart Longland VK4MSL, linux-hams, netdev On Tue, Apr 21, 2026 at 2:28 AM Hugh Blemings <hugh@blemings.org> wrote: > Hi All, > > Just to note in this thread (top posting as it's a bit orthogonal to the > rest of this discussion) that events have preceeded us somewhat here > > A patch just recently submitted removes the AX25, NETROM and ROSE code > from the kernel moving it to the mod-orphan sub tree of netdev > > https://lore.kernel.org/netdev/20260421021824.1293976-1-kuba@kernel.org/T/#u Wow, that happened much faster than I had anticipated. > A shame but perhaps inevitable - but I think we have a good plan > unfolding to both take care of medium term maintenance of the kernel > code (in tree or out as it may be) as well as a move to userspace in the > longer term. > > For the benefit of the netdev readership - we had a thread over in > linux-hams on this but that may not have been visible to folks in > netdev. TL;DR: we think we have a way forward but appreciate this may > not be quick enough to meet the requirements/concerns put forward > > If we can delay removal, that'd be grand, but appreciate that moment may > have passed. Personally, I think this may actually turn out to be a good thing. If nothing else, it's a forcing function for the ham community to get serious about providing an implementation that works well, and in the short term, an out-of-tree module can keep things working for folks while alternatives are investigated and prepared. I appreciate that folks want to discuss timing, but it doesn't appear that there is much else to be done at this point. It would make sense to continue discussion of alternatives over on linux-hams, sparing the already-overloaded readers of the netdev list from the sordid details. - Dan C. (KZ2X) ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Discuss: Future of AX25, NETROM and ROSE in the kernel ? 2026-04-21 12:06 ` Dan Cross @ 2026-04-21 14:43 ` Steven R. Loomis 2026-04-21 15:00 ` Andrew Lunn 0 siblings, 1 reply; 16+ messages in thread From: Steven R. Loomis @ 2026-04-21 14:43 UTC (permalink / raw) To: Dan Cross; +Cc: hugh, Steve Conklin, Stuart Longland VK4MSL, linux-hams, netdev So, is an important next step, having a repo with *just* the ham items with its own build structure? because there are a number of other modules in the repo mentioned: https://github.com/linux-netdev/mod-orphan -- Steven R. Loomis K6SPI > El abr 21, 2026, a las 7:06 a.m., Dan Cross <crossd@gmail.com> escribió: > > On Tue, Apr 21, 2026 at 2:28 AM Hugh Blemings <hugh@blemings.org> wrote: >> Hi All, >> >> Just to note in this thread (top posting as it's a bit orthogonal to the >> rest of this discussion) that events have preceeded us somewhat here >> >> A patch just recently submitted removes the AX25, NETROM and ROSE code >> from the kernel moving it to the mod-orphan sub tree of netdev >> >> https://lore.kernel.org/netdev/20260421021824.1293976-1-kuba@kernel.org/T/#u > > Wow, that happened much faster than I had anticipated. > >> A shame but perhaps inevitable - but I think we have a good plan >> unfolding to both take care of medium term maintenance of the kernel >> code (in tree or out as it may be) as well as a move to userspace in the >> longer term. >> >> For the benefit of the netdev readership - we had a thread over in >> linux-hams on this but that may not have been visible to folks in >> netdev. TL;DR: we think we have a way forward but appreciate this may >> not be quick enough to meet the requirements/concerns put forward >> >> If we can delay removal, that'd be grand, but appreciate that moment may >> have passed. > > Personally, I think this may actually turn out to be a good thing. If > nothing else, it's a forcing function for the ham community to get > serious about providing an implementation that works well, and in the > short term, an out-of-tree module can keep things working for folks > while alternatives are investigated and prepared. > > I appreciate that folks want to discuss timing, but it doesn't appear > that there is much else to be done at this point. It would make sense > to continue discussion of alternatives over on linux-hams, sparing the > already-overloaded readers of the netdev list from the sordid details. > > - Dan C. > (KZ2X) ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Discuss: Future of AX25, NETROM and ROSE in the kernel ? 2026-04-21 14:43 ` Steven R. Loomis @ 2026-04-21 15:00 ` Andrew Lunn 0 siblings, 0 replies; 16+ messages in thread From: Andrew Lunn @ 2026-04-21 15:00 UTC (permalink / raw) To: Steven R. Loomis Cc: Dan Cross, hugh, Steve Conklin, Stuart Longland VK4MSL, linux-hams, netdev On Tue, Apr 21, 2026 at 09:43:52AM -0500, Steven R. Loomis wrote: > So, is an important next step, having a repo with *just* the ham items with its own build structure? because there are a number of other modules in the repo mentioned: > > https://github.com/linux-netdev/mod-orphan Please don't top post. This git site is just to collect the modules as out of tree code, so they don't fully disappear. They will just languish here and bitrot over time. If there is going to be an active Maintainer, you need a full tree, so you can send git pull requests. Once you have the tree, send us a patch for MAINTAINERs, adding a T: entry pointing to your tree, and set the L: entry pointing to your mailing list etc. Andrew ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Discuss: Future of AX25, NETROM and ROSE in the kernel ? 2026-04-11 7:35 Discuss: Future of AX25, NETROM and ROSE in the kernel ? Hugh Blemings 2026-04-13 23:31 ` Dan Cross @ 2026-04-19 20:37 ` David Ranch 2026-04-21 19:29 ` Dan Cross 1 sibling, 1 reply; 16+ messages in thread From: David Ranch @ 2026-04-19 20:37 UTC (permalink / raw) To: hugh, linux-hams Hello Hugh, <snip> > There's also been some very good points raised in that thread by hams > around whether it makes sense to move the implementation into > userspace or to out of tree kernel code. Both can be done in such a > way as to cause little to no impact from the actual application code > that makes use of the protocols. I've done a little bit of research on the LD_PRELOAD concept and it seems that one major gap here is compiling those tools and their dependencies. Specifically, if the AX25 headers are removed from the kernel tree, some if not all of these libraries and/or programs will file to compile. The key dependencies consist of: - the libax25 library compiled which requires the AX.25 kernel headers - My preferred source (more up to date): https://github.com/ve7fet/linuxax25 or - Original AX.25 userland repos that are a bit stale: https://linux-ax25.in-berlin.de/wiki/Main_Page To solve the maintenance issue, there once was an ARDC grant ( https://www.ardc.net/apply/grants/2021-grants/grant-fixing-the-linux-kernel-ax-25/ ) to have someone take on this responsibility but the person who originally accepted the grant, backed out and that need remains unfulfilled. I have also considered proposing a grant to rewrite the libax25 code to offer both in-kernel support but also offer the ability to translate requests to a remote AGW/PE stack and remove any in-kernel AX.25 code. That could be an excellent alternative but the current defacto AGW API interface is limiting and either needs to be extended or a parallel control interface needs to be implemented. > If the consensus is that trying to keep the drivers in thee tree up to > date is the way ahead I'm happy to put my hand up to do this if no one > else is so inclined - I've a couple friends I can bug to help me get > back up to speed. > But I'm also mindful there are other hams that have been more recently > involved in kernel work, so am going to give them a gentle nudge > offline too :) Until some *real* options exist, I would dearly appreciate if you'd be willing to take this role up and I (as well as I'm sure others) would be happy to help on the testing side. It should also be noted that Dan Cross's comprehensive post did highlight some keys points as well. The Linux AX.25 v2.1 stack is behind the times as the AX.25 v2.2 spec added several valuable improvements. A few userland AX.25 stacks such as from WB2OSZ Direwolf, G8BPQ LinBPQ, VE4KLM JNOS, etc. have added AX.25 v2.2 support, FX.25 FEC support, etc. It would be great to see Linux natively add them too but maybe Linux go even further? Ideas like adding native Flexnet routing support would be an excellent addition. Ultimately, my preference of in-linux support is all the fantastic routing flexibility that UNIX is naturally good at. I suppose that userland could do this too but when you might be running multiple AX.25 userland programs talking to another Userland program acting as a router, I imagine things will get complicated for totally different reasons. --David KI6ZHD Maintainer of the Linpac packet terminal program Silicon Valley 44-Net AMPR coordinator Maintainer of the Linpac and AX25mail-tools programs Long time Linux advocate since the linux-1.2 days including being a long run IP Masquerade HOWTO maintainer Maintainer of other many Linux-centric documentation programs like the TrinityOS HOWTO, Packet Radio on Raspberry Pi HOWTO, etc. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Discuss: Future of AX25, NETROM and ROSE in the kernel ? 2026-04-19 20:37 ` David Ranch @ 2026-04-21 19:29 ` Dan Cross 2026-04-26 3:17 ` Joshua McAdam 0 siblings, 1 reply; 16+ messages in thread From: Dan Cross @ 2026-04-21 19:29 UTC (permalink / raw) To: David Ranch; +Cc: hugh, linux-hams On Sun, Apr 19, 2026 at 4:37 PM David Ranch <linux-hams@trinnet.net> wrote: > > [snip] > > There's also been some very good points raised in that thread by hams > > around whether it makes sense to move the implementation into > > userspace or to out of tree kernel code. Both can be done in such a > > way as to cause little to no impact from the actual application code > > that makes use of the protocols. > > I've done a little bit of research on the LD_PRELOAD concept and it > seems that one major gap here is compiling those tools and their > dependencies. Specifically, if the AX25 headers are removed from the > kernel tree, some if not all of these libraries and/or programs will > file to compile. For things like this, usually the compat shims library provides whatever headers are needed to build the library. It's common for most distros to split things up so that package managers provide both "foo" and "foo-dev" packages; the former tends to be runtime artifacts (e.g., the `.so` libraries) and the latter build-time/development artifacts (headers and whatever else is needed for building tools and things). Bottom line, I don't think this is a big obstacle. > The key dependencies consist of: > > - the libax25 library compiled which requires the AX.25 kernel headers > - My preferred source (more up to date): > https://github.com/ve7fet/linuxax25 > or > - Original AX.25 userland repos that are a bit stale: > https://linux-ax25.in-berlin.de/wiki/Main_Page > > To solve the maintenance issue, there once was an ARDC grant ( > https://www.ardc.net/apply/grants/2021-grants/grant-fixing-the-linux-kernel-ax-25/ > ) to have someone take on this responsibility but the person who > originally accepted the grant, backed out and that need remains > unfulfilled. I have also considered proposing a grant to rewrite the > libax25 code to offer both in-kernel support but also offer the ability > to translate requests to a remote AGW/PE stack and remove any in-kernel > AX.25 code. That could be an excellent alternative but the current > defacto AGW API interface is limiting and either needs to be extended or > a parallel control interface needs to be implemented. It seems like upstream has made the decision to remove this code from the kernel, and to do so on a time scale much faster than I, personally, had anticipated. > > If the consensus is that trying to keep the drivers in thee tree up to > > date is the way ahead I'm happy to put my hand up to do this if no one > > else is so inclined - I've a couple friends I can bug to help me get > > back up to speed. > > But I'm also mindful there are other hams that have been more recently > > involved in kernel work, so am going to give them a gentle nudge > > offline too :) > > Until some *real* options exist, I would dearly appreciate if you'd be > willing to take this role up and I (as well as I'm sure others) would be > happy to help on the testing side. It should also be noted that Dan > Cross's comprehensive post did highlight some keys points as well. The > Linux AX.25 v2.1 stack is behind the times as the AX.25 v2.2 spec added > several valuable improvements. A few userland AX.25 stacks such as from > WB2OSZ Direwolf, G8BPQ LinBPQ, VE4KLM JNOS, etc. have added AX.25 v2.2 > support, FX.25 FEC support, etc. It would be great to see Linux natively > add them too but maybe Linux go even further? Probably the quickest stop-gap measure is to take the existing code from the mod-orphans repo and get it building out-of-tree, then one could just load it and continue as before. > Ideas like adding native > Flexnet routing support would be an excellent addition. The problem with FlexNET, specifically, is that documentation for it just doesn't seem to be available. I tried looking, and it's possible a version in German exists somewhere (I neither read nor speak German) but I couldn't find it. I went as far as looking for old DCC papers describing it, and some exist that describe the major ideas, but nothing with sufficient detail to do an implementation. > Ultimately, my preference of in-linux support is all the fantastic > routing flexibility that UNIX is naturally good at. What flexibility are you thinking about, specifically? A number of places (hyperscalars, HPC) move networking out of the kernel for greater flexibility or performance. Importantly in this case, the Linux AX.25 stack never really took much advantage of most of the whizbang features available from the kernel, and it's not clear what utility some of the more advanced stuff would have when applied to amateur radio protocols. > I suppose that > userland could do this too but when you might be running multiple AX.25 > userland programs talking to another Userland program acting as a > router, I imagine things will get complicated for totally different reasons. (It sounds like you might be referring to muxing AX.25 connections between userspace programs?) Multiple userspace programs handling one or more logical connections, coordinating with a server of some kind implementing the lower-layers of a protocol, follows a pretty well-understood implementation pattern. The same techniques the kernel uses to map file descriptors to such connections can be used in userspace: each connection is represented by some token that maps to an identifier that uniquely identifies the protocol-level connection in the server; the actual mapping from identifier to such connection is just a some kind of associative container maintained by the server. As events occur (data sent, data received, timers expire or are reset, control operations of various kinds) those connections are looked up, logic to handle the events is run, the connections might transition into new states, and side-effects (e.g., actual transmission of data, or re-arming a timer) are emitted and acted upon. - Dan C. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Discuss: Future of AX25, NETROM and ROSE in the kernel ? 2026-04-21 19:29 ` Dan Cross @ 2026-04-26 3:17 ` Joshua McAdam 0 siblings, 0 replies; 16+ messages in thread From: Joshua McAdam @ 2026-04-26 3:17 UTC (permalink / raw) To: linux-hams On Wed, Apr 22, 2026 at 5:30 AM Dan Cross <crossd@gmail.com> wrote: > > Multiple userspace programs handling one or more logical connections, > coordinating with a server of some kind implementing the lower-layers > of a protocol, follows a pretty well-understood implementation > pattern. The same techniques the kernel uses to map file descriptors > to such connections can be used in userspace: each connection is > represented by some token that maps to an identifier that uniquely > identifies the protocol-level connection in the server; the actual > mapping from identifier to such connection is just a some kind of > associative container maintained by the server. As events occur (data > sent, data received, timers expire or are reset, control operations of > various kinds) those connections are looked up, logic to handle the > events is run, the connections might transition into new states, and > side-effects (e.g., actual transmission of data, or re-arming a timer) > are emitted and acted upon. > > - Dan C. Hi All, Like Hugh I have also been lurking here for a long time but this is also my first post, As a fairly active user of the Kernel Ham stack for decades, seeing this discussion start is timely because I have been wondering how I could help, as I could see things seemed to be slowing down and approaching a turning point where action is necessary. I believe many people still rely on the kernel stack for BBS's, Digipeaters, I-Gates, Winlink Gateways and nodes out there running IP over AX25 - even things like PAT for Winlink which has no native KISS support, so it relies on Kernel KISS interfaces (i use this personally). If there is a way I can help with maintenance or even become a co-maintainer, I'd be interested to learn more as I've written kernel drivers before and patched things - but never gotten involved in the mainline kernel to date. While I am still fairly proficient in C and have written AX25 implementations for Arduino projects among other things, I wonder (and hope I don't unintentionally upset anyone by suggesting this) if there is an opportunity to look at new options like using the recently introduced kernel rust support to rewrite / tidy things up along the way to resolve many of the memory safety and many other issues that have been coming to light lately. It would be a shame to let this "die on the vine" in both the kernel and linuxax25 given all the work put in over the years..... Regards, Josh M VK4JLM ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2026-04-26 3:17 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-04-11 7:35 Discuss: Future of AX25, NETROM and ROSE in the kernel ? Hugh Blemings 2026-04-13 23:31 ` Dan Cross 2026-04-18 19:28 ` Dan Cross 2026-04-18 23:24 ` Nate Bargmann 2026-04-19 1:31 ` Steven R. Loomis 2026-04-19 2:02 ` jj 2026-04-19 4:01 ` Stuart Longland VK4MSL 2026-04-19 9:36 ` Hugh Blemings 2026-04-19 16:18 ` Steve Conklin 2026-04-21 6:28 ` Hugh Blemings 2026-04-21 12:06 ` Dan Cross 2026-04-21 14:43 ` Steven R. Loomis 2026-04-21 15:00 ` Andrew Lunn 2026-04-19 20:37 ` David Ranch 2026-04-21 19:29 ` Dan Cross 2026-04-26 3:17 ` Joshua McAdam
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox