AX.25 on Linux: Difference between revisions
Add tncattach discussion |
mw push |
||
| (7 intermediate revisions by the same user not shown) | |||
| Line 5: | Line 5: | ||
As of April 2026, the in-tree kernel AX.25 stack has been removed from upstream Linux. This affects systems and applications that depend on Linux kernel AX.25 interfaces, but it does not mean AX.25 packet radio on Linux is going away. | As of April 2026, the in-tree kernel AX.25 stack has been removed from upstream Linux. This affects systems and applications that depend on Linux kernel AX.25 interfaces, but it does not mean AX.25 packet radio on Linux is going away. | ||
== In this guide == | |||
* [[AX.25 on Linux/Kernel vs user space]]: How the old kernel model differs from the user space model | |||
* [[AX.25 on Linux/Migration options]]: Common software and migration approaches | |||
* [[AX.25 on Linux/IP over AX.25]]: Possible directions for IP networking over AX.25 | |||
* [[AX.25 on Linux/Developing user-space tools]]: Design considerations for new work | |||
== Summary == | |||
* If your setup uses KISS or AGWPE to talk to a software TNC, hardware TNC, or packet-radio application, you are probably not affected by the kernel removal. | * If your setup uses KISS or AGWPE to talk to a software TNC, hardware TNC, or packet-radio application, you are probably not affected by the kernel removal. | ||
* If your setup uses Linux AX.25 interfaces like <code>ax0</code>, <code>kissattach</code>, <code>/etc/axports</code>, or <code>ax25d</code>, it will not keep working unchanged on | * If your setup uses Linux AX.25 interfaces like <code>ax0</code>, <code>kissattach</code>, <code>/etc/axports</code>, or <code>ax25d</code>, it will not keep working unchanged on future kernels. | ||
* Nothing breaks immediately just because the upstream kernel changed. Existing systems keep working until you update them to a kernel released after the change. | * Nothing breaks immediately just because the upstream kernel changed. Existing systems keep working until you update them to a kernel released after the change. | ||
| Line 23: | Line 30: | ||
== Timeline == | == Timeline == | ||
This change happened in “upstream Linux” first, referring to the mainline Linux kernel project. Distributions like Debian, Ubuntu, Fedora | This change happened in “upstream Linux” first, referring to the mainline Linux kernel project. Distributions like Debian, Ubuntu, and Fedora decide for themselves when to ship newer kernels, and long-term-support distributions may stay on older kernel lines for quite a while. | ||
That means this probably is not hitting most existing stations tomorrow. In many cases, you will keep working until your distribution moves you to a kernel that no longer includes the in-tree AX.25 code, whether that happens in a major distribution upgrade or in a later kernel update. | That means this probably is not hitting most existing stations tomorrow. In many cases, you will keep working until your distribution moves you to a kernel that no longer includes the in-tree AX.25 code, whether that happens in a major distribution upgrade or in a later kernel update. | ||
So you have some time to plan, but you may want to pay attention to updates that include newer kernels. | |||
== Am I affected? == | == Am I affected? == | ||
| Line 48: | Line 55: | ||
* Your applications talk to KISS or AGWPE directly, whether to a software TNC, hardware TNC, or another packet-radio program | * Your applications talk to KISS or AGWPE directly, whether to a software TNC, hardware TNC, or another packet-radio program | ||
If you are not sure, look at how your application is configured. KISS or AGWPE options are | If you are not sure, look at how your application is configured. KISS or AGWPE options are a good sign. | ||
== | == What should I do? == | ||
Broadly speaking, there are a few paths: keep the system running as it is, reconfigure applications around a different host-side interface, or replace part of the stack | Broadly speaking, there are a few paths: keep the system running as it is, reconfigure applications around a different host-side interface, or replace part of the stack. | ||
=== Freeze (keep it running as is) === | === Freeze (keep it running as is) === | ||
| Line 66: | Line 73: | ||
=== Replace === | === Replace === | ||
This is the likely path when the old application depends on the kernel AX.25 stack and cannot be reconfigured to use | This is the likely path when the old application depends on the kernel AX.25 stack and cannot be reconfigured to use anything else. You may be looking at anything from replacing one piece to rebuilding your stack from top to bottom. Depending on your goals, you might consider moving to something that has AX.25 and common packet tools built in, like LinBPQ or JNOS. You might also consider a more modular approach, with a software TNC like Dire Wolf and separate applications for messaging, BBS, or APRS. | ||
=== Revive === | === Revive === | ||
| Line 72: | Line 79: | ||
There is always the option of resurrecting or re-implementing the old kernel code; the kernel maintainers have not ruled out merging up-to-date code back in. If you have the technical interest and motivation, there’s nothing to stop you. | There is always the option of resurrecting or re-implementing the old kernel code; the kernel maintainers have not ruled out merging up-to-date code back in. If you have the technical interest and motivation, there’s nothing to stop you. | ||
The state of maintenance for the code that was just removed and the state of development in other tools might be considerations when evaluating this path. ARDC did fund [https://www.ardc.net/apply/grants/2021-grants/grant-fixing-the-linux-kernel-ax-25/ an effort related to AX.25 in the kernel] that encountered unexpected challenges and was not able to proceed | The state of maintenance for the code that was just removed and the state of development in other tools might be considerations when evaluating this path. ARDC did fund [https://www.ardc.net/apply/grants/2021-grants/grant-fixing-the-linux-kernel-ax-25/ an effort related to AX.25 in the kernel] that encountered unexpected challenges and was not able to proceed. | ||
New coding tools may make this a more approachable project than it might have been in the past, with some caveats noted in the [https://docs.kernel.org/process/index.html#an-introduction-to-how-kernel-development-works Linux kernel development documentation], particularly around [https://docs.kernel.org/process/coding-assistants.html the use of large language models]. | |||
== Further reading == | |||
== | |||
=== ARDC groups.io discussions === | |||
* [https://ardc.groups.io/g/community/topic/119004386 Boudewijn VE3TOK’s thread and discussion about paths forward] | |||
* [https://ardc.groups.io/g/community/topic/119004386 Bernard F6BVP’s retrospective and thoughts on the change] | |||
=== Kernel discussions === | === Kernel discussions === | ||
* [https://lore.kernel.org/netdev/20260421021824.1293976-1-kuba@kernel.org/ Jakub Kicinski’s April | * [https://lore.kernel.org/netdev/20260421021824.1293976-1-kuba@kernel.org/ Jakub Kicinski’s April 21, 2026 patch], proposing removal of the in-tree amateur-radio networking subsystem | ||
* [https://lore.kernel.org/netdev/20260424232427.792249-1-stephen@networkplumber.org/ Stephen Hemminger’s April 24, 2026 iproute2 cleanup patch noting that AX.25, ROSE, and NET/ROM have been removed upstream | * [https://lore.kernel.org/lkml/20260423235422.1541768-1-kuba@kernel.org/ Jakub Kicinski’s April 23, 2026 pull-request thread], with more discussion | ||
* [https://lore.kernel.org/netdev/CAEoi9W6ZRw6aEh62Xbgkg-TW8URHbVp6dHTT9krFiTkotjTuTA@mail.gmail.com/ Dan Cross on the likely user-space direction, including TUN/TAP for IP over AX.25 | * [https://lore.kernel.org/netdev/20260424232427.792249-1-stephen@networkplumber.org/ Stephen Hemminger’s April 24, 2026 iproute2 cleanup patch], noting that AX.25, ROSE, and NET/ROM have been removed upstream | ||
* [https://lore.kernel.org/netdev/CAEoi9W6ZRw6aEh62Xbgkg-TW8URHbVp6dHTT9krFiTkotjTuTA@mail.gmail.com/ Dan Cross on the likely user-space direction], including TUN/TAP for IP over AX.25 | |||
=== Independent coverage === | === Independent coverage === | ||
* [https://lwn.net/Articles/1068928/ LWN coverage from April 22, 2026 summarizing the broader kernel code-removal effort] | * [https://lwn.net/Articles/1068928/ LWN coverage from April 22, 2026], summarizing the broader kernel code-removal effort | ||
* [https://www.phoronix.com/news/Linux-7.1-PR-Remove-Old-Net Phoronix coverage from April 24, 2026], on the pull request removing legacy networking code, including AX.25 | |||
=== Repositories and source trees === | === Repositories and source trees === | ||
| Line 264: | Line 108: | ||
=== Older HOWTOs === | === Older HOWTOs === | ||
* [http://www.tldp.org/HOWTO/AX25-HOWTO/ Jeff | * [http://www.tldp.org/HOWTO/AX25-HOWTO/ Jeff Tranter VE3ICH’s 2001 Linux AX.25 HOWTO], useful mainly as historical background now | ||
=== Protocol references === | |||
* [https://files.tapr.org/tech_docs/AX25/AX25.2.2.1997.pdf AX.25 Link Access Protocol for Amateur Packet Radio, Version 2.2] | |||
* [https://ax25.net/ AX.25 Layer 2] | |||
* [https://www.on7lds.net/42/sites/default/files/AGWPEAPI.HTM AGWPE TCP/IP API reference] | |||
* [https://github.com/wb2osz/direwolf/blob/master/doc/AX25_plus_FEC_equals_FX25.pdf Dire Wolf’s AX.25 framing and FEC documentation] | |||
== Related pages == | == Related pages == | ||
Latest revision as of 19:48, 2 May 2026
- Note: This page is a work in progress. It is not yet complete, and it may contain inaccuracies or outdated information.
As of April 2026, the in-tree kernel AX.25 stack has been removed from upstream Linux. This affects systems and applications that depend on Linux kernel AX.25 interfaces, but it does not mean AX.25 packet radio on Linux is going away.
In this guide
- AX.25 on Linux/Kernel vs user space: How the old kernel model differs from the user space model
- AX.25 on Linux/Migration options: Common software and migration approaches
- AX.25 on Linux/IP over AX.25: Possible directions for IP networking over AX.25
- AX.25 on Linux/Developing user-space tools: Design considerations for new work
Summary
- If your setup uses KISS or AGWPE to talk to a software TNC, hardware TNC, or packet-radio application, you are probably not affected by the kernel removal.
- If your setup uses Linux AX.25 interfaces like
ax0,kissattach,/etc/axports, orax25d, it will not keep working unchanged on future kernels. - Nothing breaks immediately just because the upstream kernel changed. Existing systems keep working until you update them to a kernel released after the change.
This page explains what changed, how to tell whether your station depends on that older model, and what practical options exist now.
What is changing
- Mainline Linux no longer includes the traditional Linux AX.25, Net/ROM, and ROSE stack.
- Existing documentation that assumes
kissattach,/etc/axports,axinterfaces, orax25dwill no longer apply to systems running newer kernels. - Software that depends specifically on kernel AX.25 interfaces will be unable to run unchanged on newer kernels.
- Software that talks directly to KISS, AGWPE, serial TNCs, TCP TNCs, or its own built-in AX.25 implementation may continue to work without the kernel AX.25 stack.
- The out-of-tree repository
linux-netdev/mod-orphanwill host the removed code for those who want to inspect it or maintain it separately.
Timeline
This change happened in “upstream Linux” first, referring to the mainline Linux kernel project. Distributions like Debian, Ubuntu, and Fedora decide for themselves when to ship newer kernels, and long-term-support distributions may stay on older kernel lines for quite a while.
That means this probably is not hitting most existing stations tomorrow. In many cases, you will keep working until your distribution moves you to a kernel that no longer includes the in-tree AX.25 code, whether that happens in a major distribution upgrade or in a later kernel update.
So you have some time to plan, but you may want to pay attention to updates that include newer kernels.
Am I affected?
Yes, if your setup uses the Linux kernel AX.25 model. Probably not, if you use software that talks to devices directly.
You are probably using the kernel AX.25 stack if:
ifconfigorip linkshowsaxinterfaces likeax0- You use
kissattach - You configure
/etc/axports - You use
ax25d - Your application is configured to use a Linux AX.25 port or interface rather than KISS, AGWPE, serial, TCP, or a built-in packet engine
You are probably using a user-space approach if:
ifconfigorip linkdoes not show anyaxinterfaces- You already use a user-space TNC like Dire Wolf without
kissattach - Your application has its own AX.25 support built in, as many APRS tools do
- Your applications talk to KISS or AGWPE directly, whether to a software TNC, hardware TNC, or another packet-radio program
If you are not sure, look at how your application is configured. KISS or AGWPE options are a good sign.
What should I do?
Broadly speaking, there are a few paths: keep the system running as it is, reconfigure applications around a different host-side interface, or replace part of the stack.
Freeze (keep it running as is)
If you’re using software that depends on kernel AX.25, future kernel updates will break it. If you want to keep that software working, the simplest path may be to stay on the version of Linux you have now.
You can keep using that system for as long as you like, but you will find ample advice to consider the security implications. Older kernels do not receive fixes for newly discovered vulnerabilities, and the longer a system stays pinned to an old kernel, the more exposed it can become. If you choose this path, it is worth taking extra precautions to secure the system.
Reconfigure
If you’re using software released relatively recently, you may be able to reconfigure it. For example, an APRS application that can use AGWPE or KISS over TCP or serial may only need to be pointed at Dire Wolf or a hardware TNC via a different protocol.
Replace
This is the likely path when the old application depends on the kernel AX.25 stack and cannot be reconfigured to use anything else. You may be looking at anything from replacing one piece to rebuilding your stack from top to bottom. Depending on your goals, you might consider moving to something that has AX.25 and common packet tools built in, like LinBPQ or JNOS. You might also consider a more modular approach, with a software TNC like Dire Wolf and separate applications for messaging, BBS, or APRS.
Revive
There is always the option of resurrecting or re-implementing the old kernel code; the kernel maintainers have not ruled out merging up-to-date code back in. If you have the technical interest and motivation, there’s nothing to stop you.
The state of maintenance for the code that was just removed and the state of development in other tools might be considerations when evaluating this path. ARDC did fund an effort related to AX.25 in the kernel that encountered unexpected challenges and was not able to proceed.
New coding tools may make this a more approachable project than it might have been in the past, with some caveats noted in the Linux kernel development documentation, particularly around the use of large language models.
Further reading
ARDC groups.io discussions
- Boudewijn VE3TOK’s thread and discussion about paths forward
- Bernard F6BVP’s retrospective and thoughts on the change
Kernel discussions
- Jakub Kicinski’s April 21, 2026 patch, proposing removal of the in-tree amateur-radio networking subsystem
- Jakub Kicinski’s April 23, 2026 pull-request thread, with more discussion
- Stephen Hemminger’s April 24, 2026 iproute2 cleanup patch, noting that AX.25, ROSE, and NET/ROM have been removed upstream
- Dan Cross on the likely user-space direction, including TUN/TAP for IP over AX.25
Independent coverage
- LWN coverage from April 22, 2026, summarizing the broader kernel code-removal effort
- Phoronix coverage from April 24, 2026, on the pull request removing legacy networking code, including AX.25
Repositories and source trees
- linux-netdev/mod-orphan, the out-of-tree repository where the removed code is being staged
Older HOWTOs
- Jeff Tranter VE3ICH’s 2001 Linux AX.25 HOWTO, useful mainly as historical background now
Protocol references
- AX.25 Link Access Protocol for Amateur Packet Radio, Version 2.2
- AX.25 Layer 2
- AGWPE TCP/IP API reference
- Dire Wolf’s AX.25 framing and FEC documentation