[Xastir] corrupt packets

Tom Russo russo at bogodyn.org
Wed Oct 19 12:29:31 EDT 2011


On Wed, Oct 19, 2011 at 08:02:33AM -0700, we recorded a bogon-computron collision of the <aa9vi at yahoo.com> flavor, containing:
> The last couple of days I have been reading about corrupt packets getting transmitted over the air.? This sounds similar to what I had mentioned a month ago.? There was no obvious solution then.? I use a KPC3 and Xastir 2.0.0.? I could find no solution until I set permissions on the objects.log and objects-temp.log file to 555.? So, there is some over the air feedback mechanism causing bad packets to be heard over the air and then get fed back into Xastir and then overwrite the default settings. Wouldn't a simple solution be to not have that feedback algorithm?? 

The "feedback algorithm" is in fact how Xastir is intended to work, so 
removing that requires a complete rewrite of how Xastir handles its own
objects.

When Xastir generates an object, it does so by producing the text for a packet
and running it through its normal data parsing routines via a "loopback" 
interface.  Those routines enter the data into the internal database of heard 
information, and if the "FROM" callsign is its own callsign/ssid, then Xastir 
considers the object/item its own and schedules beaconing for it.

This is how we are able to use the server port to inject objects from 
external programs.  If the external program sends the object to Xastir
using a FROM callsign that is the same callsign/ssid that Xastir is using,
then as far as Xastir is concerned, it produced the object, and it begins
beaconing it.  

BUT, if some local digi is corrupting packets and digipeating them, then when
Xastir hears the packet it still claims it is FROM your own station (its from 
callsign was not corrupted), but it doesn't match an existing record (as it 
would if it were not corrupted).  So it enters the "new" data into its 
database, and because the callsign is its own, takes ownership and begins 
beaconing it just as if it had produced the data itself.  Making it not do 
this would require that the object processing mechanism be completely 
revamped, and would break the intended use of server ports to inject data.  

This is different from what Lynn just described:  if someone ELSE beacons
an object with the same name as one we are beaconing already, it will have a 
DIFFERENT "FROM" callsign than Xastir does;  Xastir will NOT adopt it, the 
object will be changed in its internal database as now being owned by some 
other station.  Since the object is no longer its own, it will stop beaconing 
that object.  

Now, the idea that your station is producing garbled objects because it is
receiving them garbled from a digipeater is just a theory, but it seems
at least plausible.  Since you say you were able to stop it from working  by
changing permissions on the objects.log files, then it is almost certain that 
the real issue is that some station other than your own is digipeating garbled 
copies of your own packets --- Xastir refuses to accept them now, because you 
have broken its ability to record its own objects in objects.log.

Your best bet for figuring out where these corrupted packets are coming from
is to start clean  --- remove (or move) objects.log, and start xastir over
with now objects beaconed.  Beacon one object and log your TNC data.
Watch the log until a garbled version of your packet shows up.  Look for the
very first instance of the garbled packet, and scan its digi path.  One of
the stations in that path is broken --- and probably because it's got PASSALL
on in its TNC.  PASSALL off prevents a TNC from sending to the attached 
computer any packets whose data do not have the same computed checksum as 
their transmitted checksums, thus ignoring corrupted packets.  With PASSALL
ON, all packets, irrespective of checksum match, are passed to the attached
machine.  PASSALL is a debugging tool, and should never be on in a TNC used
for a digipeater or IGate.

Come to think of it, it is ALSO possible that your packets are being injected
into APRS-IS by a bad IGate, and picked up again by your station through
APRS-IS rather than your own TNC.  Either way, if the from callsign is not
mangled by the broken station, Xastir will think the packet is its own and
adopt it.  Eliminate *this* possibility by turning off any internet server 
interface you have while looking for the problem on the RF side.  If you
stop receiving garbled packets, but they still show up on, say FINDU or 
aprs.fi, then your job will be to track down which IGate is first injecting 
the garbled packets.

Good luck with that.

-- 
Tom Russo    KM5VY   SAR502   DM64ux          http://www.swcp.com/~russo/
Tijeras, NM  QRPL#1592 K2#398  SOC#236        http://kevan.org/brain.cgi?DDTNM
 "One man alone can be pretty dumb sometimes, but for real bona fide
 stupidity, there ain't nothin' can beat teamwork." - Edward Abbey




More information about the Xastir mailing list