AX.25 in user space
The Linux kernel AX.25 implementation (and userspace) is pretty poor. I’ve encountered many problems. E.g.:
-
you can’t read() and write() from the same socket at the same time
-
CRC settings default such that at least all my radios (and direwolf) drop the first two packets sent. (fix with
kissparms radio -c 1
) -
On 64bit Raspberry Pi OS
setsockopt
for some flags don’t take effect at all (e.g. settingAX25_EXTSEQ
), and treat other obvious correct ones as invalid (e.g. can’t setAX25_WINDOW
to any value at all). -
I also get kernel null pointer dereferences on 32bit Raspberry Pi OS when testing AX.25. Not exactly comforting.
-
Other OSs don’t have AX.25 socket support. E.g. OpenBSD. And it’s not obvious to me that this is best solved in kernel space.
-
It doesn’t seem clear to anyone how the AX.25 stack in the kernel is supposed to work. E.g. should
axparms -assoc
be an enforcing ACL? It’s not, but is it supposed to be? -
I’ve also seen suggestions that AX.25 should be ripped out of the Linux kernel. Continue reading