#13 Using kernel AX.25 mangles valid mic-e packets


When using the linux kernel AX.25 interface, the fmt()
function in ax25socket.cpp (used to be sockets.cpp)
cleans up the packets a bit too much. Specifically it
uses isprint() to select which characters to pass on
and that breaks mic-e, which uses, among others,
decimal characters 28-31 and 127.

I've attached here a small patch that does away with
the isprint() by specifically passing all bytes of
decimal value 28-127 and discarding all other bytes.
This also discards many national characters that are
over 127 decimal, but to me that is just keeping up
with the APRS specification that only talks about 7-bit
ASCII characters. I guess a similar clearly defined
cleaning procedure could be applied to the plain
command mode TNC interface as well.

Tapio, OH2KKU (@iki.fi)


  • Nobody/Anonymous

    Logged In: NO

    After receiving some heat on aprssig (mainly because aprs
    and aprs-is "specifications" are not clear on things) one
    might want to let all bytes with a value of 28 or over pass.
    This can be done by just removing the second condition of
    the if-clause in my previous patch. Or one might even want
    to let all bytes (including zero) pass and leave it to
    everyone who parses the data to worry about it.


  • Curt Mills

    Curt Mills - 2006-04-24

    Logged In: YES

    In fact, telemetry packets and user-defined packets may
    have 8-bit data. You need to pass all characters without


Log in to post a comment.