<div dir="ltr">Thanks Scott - I will forward this info to OE3XWJ-11's operators.<div><br></div><div>73,</div><div>Joerg</div><div>DF1JSL</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Aug 4, 2021 at 7:28 PM Scott Miller <<a href="mailto:scott@opentrac.org">scott@opentrac.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">If they're using the TOCALL of APOTW1 to identify their software, they <br>
need to pick something else. That's the identifier for the ADS-WS1 <br>
weather station and has been for a dozen years. All of the 'APOTxx' <br>
TOCALLs should be OpenTracker derivatives.<br>
<br>
Scott<br>
N1VG<br>
<br>
On 8/4/2021 3:24 AM, Pete Loveall AE5PL Lists via aprssig wrote:<br>
> It is not the q construct but a bad IGate implementation.  The qAO construct indicates that the IGate is receive-only (does not transmit to RF).  However, it appears that OE3XWJ-11>APOTW1 (I include the TOCALL to identify the IGate software) is apparently improperly responding with a rej to messages it thinks are to stations it sees on RF.  This is bad behavior for 2 reasons: first, the IGate is falsely identifying itself as the station on RF and second, the IGate is falsely assuming it is the only path to APRS-IS for the station on RF.  As you have shown, the second assumption is wrong (an ack does get through) and generating packets falsely identified as being from a different station is NEVER proper operation.  The second assumption is always a bad assumption because of the necessary dupe checking that occurs at the servers on APRS-IS.<br>
><br>
> Hope this helps.<br>
><br>
> 73,<br>
><br>
> Pete Loveall AE5PL<br>
> pete at ae5pl dot net<br>
><br>
> -----Original Message-----<br>
> From: aprssig <<a href="mailto:aprssig-bounces@lists.tapr.org" target="_blank">aprssig-bounces@lists.tapr.org</a>> On Behalf Of Jörg Schultze-Lutter<br>
> Sent: Wednesday, August 4, 2021 2:36 AM<br>
> To: <a href="mailto:aprssig@lists.tapr.org" target="_blank">aprssig@lists.tapr.org</a><br>
> Subject: [aprssig] APRS-IS q construct / (server?) reject messages "qAO" related to foreign call sign<br>
><br>
> tl;dr: I think that an Austrian call sign causes unintended message interferences with APRS-IS and several APRS bots - including mine. I haven't seen this behavior in the past and I don't believe that there is a general design flaw with my program. Please advise.<br>
><br>
> --<br>
><br>
> I am the author of an APRS bot which started its life in January as a functional clone of KI6WJP's WXBOT (my program was written from scratch, though). The bot uses its own TOCALL identifier (<a href="http://aprs.org/aprs11/tocalls.txt" rel="noreferrer" target="_blank">http://aprs.org/aprs11/tocalls.txt</a>). Raw APRS messages can be accessed here:  <a href="https://aprs.fi/?c=raw&call=MPAD&limit=1000&view=normal" rel="noreferrer" target="_blank">https://aprs.fi/?c=raw&call=MPAD&limit=1000&view=normal</a><br>
><br>
> Over the past few days, I noticed that there was a decline in the number of messages that I was able to receive from my bot via *radio* transmission. Based on the analysis of the message flow, it looks to me as if my bot and others are affected by an Austrian call sign (OE3XWJ-11) which results in the intermittent generation of qAO reject messages that are broadcasted in response to the user's original requests to our bots. This issue only affects messages with message ID's - unconfirmed messages are not affected. I would like to get some clarification on how to remedy this issue on my end (if possible).<br>
><br>
> Message exchange examples follow. Note that all reject messages use the generic "APRS" ToCall identifier which makes me assume that they were all generated by the APRS-IS server itself.<br>
><br>
> 1 - message exchange:  APRS-IS to APRS-IS (via an IOS app)<br>
> --<br>
> 2021-08-03 07:29:54 CEST: DF1JSL-10>APSK21,TCPIP*,qAC,T2GYOR::MPAD     :cwop{2<br>
> 2021-08-03 07:29:55 CEST: MPAD>APMPAD,TCPIP*,qAC,T2UKRAINE::DF1JSL-10:ack2<br>
> 2021-08-03 07:29:55 CEST: MPAD>APRS,qAO,OE3XWJ-11::DF1JSL-10:rej2<br>
> 2021-08-03 07:30:02 CEST: MPAD>APMPAD,TCPIP*,qAC,T2UKRAINE::DF1JSL-10:CWOP DW6761 03-Aug-21 11C 136deg Spd 0.0km/h Gust 0.0km/h Hum 94%{OO<br>
> 2021-08-03 07:30:08 CEST: MPAD>APMPAD,TCPIP*,qAC,T2UKRAINE::DF1JSL-10:Pres 1014.3mb Rain(cm) 1h=0.0, 24h=0.0, mn=0.0{OP<br>
> 2021-08-03 07:30:02 CEST: DF1JSL-10>APSK21,TCPIP*,qAC,T2GYOR::MPAD     :ackOO<br>
> 2021-08-03 07:30:02 CEST: DF1JSL-10>APRS,qAO,OE3XWJ-11::OE3BCB-1 :rejOO<br>
> 2021-08-03 07:30:08 CEST: DF1JSL-10>APRS,qAO,OE3XWJ-11::MPAD     :rejOP<br>
> 2021-08-03 07:30:08 CEST: DF1JSL-10>APSK21,TCPIP*,qAC,T2GYOR::MPAD     :ackOP<br>
><br>
> 2 - message exchange: radio to APRS-IS (via FTM-400XDE)<br>
> --<br>
> 2021-08-03 08:20:08 CEST: DF1JSL-1>APY400,WIDE1-1,WIDE2-1,qAR,DB0BI-10::MPAD     :cwop{41<br>
> 2021-08-03 08:20:08 CEST: MPAD>APRS,qAO,OE3XWJ-11::DF1JSL-1 :rej41<br>
> 2021-08-03 08:20:09 CEST: MPAD>APMPAD,TCPIP*,qAC,T2UKRAINE::DF1JSL-1 :ack41<br>
> 2021-08-03 08:20:16 CEST: MPAD>APMPAD,TCPIP*,qAC,T2UKRAINE::DF1JSL-1 :CWOP EW6958 03-Aug-21 11C 23deg Spd 0.0km/h Gust 3.2km/h Hum 95%{OT<br>
> 2021-08-03 08:20:22 CEST: MPAD>APMPAD,TCPIP*,qAC,T2UKRAINE::DF1JSL-1 :Pres 1014.0mb Rain(cm) 1h=0.0, 24h=0.10, mn=0.0{OU<br>
> 2021-08-03 08:20:16 CEST: DF1JSL-1>APRS,qAO,OE3XWJ-11::MPAD     :rejOT<br>
> 2021-08-03 08:20:22 CEST: DF1JSL-1>APRS,qAO,OE3XWJ-11::MPAD     :rejOU<br>
> 2021-08-03 08:20:35 CEST: DF1JSL-1>APY400,WIDE1-1,WIDE2-1,qAR,DB0BI-10::MPAD     :ackOU<br>
><br>
> Additional example traffic from the other affected bots' logs can be found at the end of this email.<br>
><br>
> Based on <a href="http://www.aprs-is.net/q.aspx" rel="noreferrer" target="_blank">http://www.aprs-is.net/q.aspx</a>, my conclusion is as follows:<br>
><br>
> 1) My call sign  (DF1JSL) sends a message to my MPAD APRS bot.<br>
> 2) The APRS-IS server network generates a reject message (qAO, FROMCALL does not match login) that is associated with call sign OE3XWJ-11 and sends that reject back to my call sign DF1JSL-xx.<br>
> 3) The original request to my bot still traverses through the APRS-IS network and therefore gets picked up by my bot.  Similar to WXBOT and its clones, my bot does not take ack/req requests into consideration.<br>
> 4) Additionally: As the reject msg from the APRS-IS server was sent to the sender's call sign (DF1JSL..), my bot would never have seen it anyway. So it will honor the user's request and process it.<br>
> 5) The bot generates an ack message, processes the user's initial query and sends the response messages back to the user via APRS-IS.<br>
><br>
> What I don't understand is the constant association of each reject message with that Austrian call sign. Regardless of the content that I send to my bot - it aways triggers a reject which is always associated with the same Austrian call sign. As several other bots also seem to be affected, I doubt that this is a general design flaw with all of our bots.<br>
><br>
> It also looks to me that from time to time, any bot response received via *radio* can sometimes experience long/very long delays between sending the request and receiving the response. This might be related to the "reject" responses which _may_ prevent the response message to be broadcasted via radio - or the radio itselfs rejects the message after receiving the 'rej'. Everything I SEND to my bot via radio or APRS-IS is usually received by the bot without any delay, though.<br>
><br>
> Is there any way for my bot to detect and remedy this situation? As mentioned earlier, the reject message gets returned to the original sender (and *not* to my bot) so that message will not pass my bot's APRS-IS message filter (g/MPAD). Disabling the APRS-IS filters, having a look at the whole traffic and detecting the reject message cannot be the answer. What is the best cause of action for such a case?<br>
><br>
> .... or did I just misinterpret the whole thing and this is normal behavior? :-)<br>
><br>
> Thanks for taking the time to read this.<br>
><br>
> 73's from Germany<br>
> Joerg<br>
> DF1JSL<br>
> <a href="https://github.com/joergschultzelutter/mpad" rel="noreferrer" target="_blank">https://github.com/joergschultzelutter/mpad</a><br>
><br>
> Additional examples which make the "Austrian reject pattern" obvious. Every reject message is associated with OE3XWJ-11.<br>
><br>
> from WXBOT<br>
><br>
> 2021-08-02 19:03:40 CEST: N0ISU-9>APY400,WIDE1-1,WIDE2-1,qAR,W0RAY::WXBOT    :friday {01<br>
> 2021-08-02 19:03:40 CEST: WXBOT>APRS,qAS,KI6WJP::N0ISU-9  :ack01<br>
> 2021-08-02 19:03:40 CEST: WXBOT>APRS,qAO,OE3XWJ-11::N0ISU-9  :rej01<br>
> 2021-08-02 19:03:46 CEST: WXBOT>APRS,qAS,KI6WJP::N0ISU-9  :Waukee IA. Friday,Sunny High 87{UX<br>
><br>
> from WXYO (WXBOT clone)<br>
><br>
> 2021-08-01 23:18:29 CEST: WXYO>APRS,qAO,OE3XWJ-11::YO9JAZ-9 :rej3<br>
> 2021-08-01 23:18:29 CEST: WXYO>APRS,qAS,YO8SDE-1::YO9JAZ-9 :ack3<br>
> 2021-08-01 23:18:36 CEST: WXYO>APRS,qAS,YO8SDE-1::YO9JAZ-9 :Targoviste in h clear sky T:23.83C,W28@3.18,H44,P1009hPa,rain 0mm,c{GQ<br>
><br>
> from WA1GOV-10 (not even a WXBOT clone)<br>
><br>
> 2021-08-01 23:42:38 CEST: WA1GOV-10>APRS,qAO,OE3XWJ-11::YO9JAZ-9 :rej1<br>
> 2021-08-01 23:42:38 CEST: WA1GOV-10>APX217,TCPIP*,qAC,T2USANE::YO9JAZ-9 :ack1<br>
> 2021-08-01 23:43:05 CEST: WA1GOV-10>APX217,TCPIP*,qAC,T2QUEBEC::YO9JAZ-9 :ISS over KN43GS AOS 02Aug21 10:01 UTC AZ 169 MaxEL/AZ 6/128<br>
><br>
><br>
> _______________________________________________<br>
> aprssig mailing list<br>
> <a href="mailto:aprssig@lists.tapr.org" target="_blank">aprssig@lists.tapr.org</a><br>
> <a href="http://lists.tapr.org/mailman/listinfo/aprssig_lists.tapr.org" rel="noreferrer" target="_blank">http://lists.tapr.org/mailman/listinfo/aprssig_lists.tapr.org</a><br>
<br>
<br>
_______________________________________________<br>
aprssig mailing list<br>
<a href="mailto:aprssig@lists.tapr.org" target="_blank">aprssig@lists.tapr.org</a><br>
<a href="http://lists.tapr.org/mailman/listinfo/aprssig_lists.tapr.org" rel="noreferrer" target="_blank">http://lists.tapr.org/mailman/listinfo/aprssig_lists.tapr.org</a><br>
</blockquote></div>