[Xastir] How to get CWOP weather on APRS network
km5vy Tom Russo
russo at bogodyn.org
Thu Jan 20 11:07:37 PST 2022
The code is pretty hard to read and is peppered with blocks of commented-out
code that have been that way since 2005. There used to be some attempt to
treat the injected stuff as third-party only if its callsign was different
from Xastir's, but all that is commented out and stuff injected by
xastir_udp_client is *always* treated as third-party.
Whether it gets inserted into xastir's "own" packets and adopted for
retransmission is another question, but I don't think it does.
When I tested this all out by hand, I didn't use the same SSID for the
injected packet, so I could tell the difference when I looked at aprs.fi
for whether it had been gated properly. Xastir retransmitted it fine, but
did not adopt it.
Since it's not an object or item, I don't think Xastir would have retransmitted
it anyway --- WeeWx's aprs extension creates a "weather station" packet payload,
not a "weather object" payload.
On Thu, Jan 20, 2022 at 11:00:57AM -0800, we recorded a bogon-computron collision of the <curt.we7u at gmail.com> flavor, containing:
> It's fuzzy in my memory now, but I believe there may be a side-effect
> in Xastir as well (which can be taken advantage of in some cases)
> where if the call and SSID are the same as the Xastir instance when
> injecting packets in via xastir_udp_client, Xastir can take up
> re-transmitting those packets at intervals. Like I said it's a bit
> fuzzy now as I haven't messed with that piece for some time.
>
> Where it can be and advantage is if you're trying to inject
> objects/items into Xastir from some other interface, using
> xastir_udp_client to do this injection.
>
> Of course the side-effect is if you don't desire Xastir to pick up the
> transmission as it's own and retransmit it. I believe this can be
> solved by using a different SSID and/or callsign for the injection.
>
> On Thu, Jan 20, 2022 at 10:50 AM Tom Russo <russo at bogodyn.org> wrote:
> >
> > Resurrecting an ancient thread, because Dj opened an issue on GitHub about it
> > this week, and I tracked down what is happening here. I'm following up to
> > the original thread to clear up the misunderstanding and get the answer into
> > the mailing list archive where it could presumably be found in web searches.
> >
> > Dj had Xastir and WeeWx's APRS extension working, but only by modifying
> > main.c.
> >
> > The reason for the suggested mods of main.c in the message I'm replying to
> > is to work around some mistaken usage of xastir_udp_client, which I think
> > may have been the result of some incomplete (or perhaps overly vague)
> > documentation.
> >
> > xastir_udp_client does NOT insert the packet header "FROMCALL>TOCALL:" into
> > the data passed to it on the command line, it does a straight insersion of
> > the data passed to it directly into Xastir's incoming packet stream. And so
> > one MUST include "FROMCALL>TOCALL:" at the beginning of the packet oneself.
> > Some other APRS tools for injecting packets do this for you, but
> > xastir_udp_client does not.
> >
> > Once injected, Xastir creates a third-party packet out of the data. Third
> > party packets look like "xastircall>APX219,PATH1,PATH2...:}tpcall>tocall:..."
> > where "xastircall" is the call sign of the Xastir instance and "tpcall" is the
> > call sign of the third party station (which may be the same as Xastir's).
> > When properly formatted, these packets show up in APRS clients (including web
> > based ones like aprs.fi) as being from tpcall.
> >
> > The main.c changes Dj mentions here basically break the third-party insertion
> > and mask the fact that he's left out the packet header in what he's passed to
> > xastir_udp_client. The fact that he was leaving out "tpcall>tocall:" was
> > why his packets were being flagged as invalid without those
> > modifications (the stuff after the "}" was incomplete).
> >
> > Once that usage error is corrected, Xastir should be able to take WeeWx's data
> > just fine. So the script to do the insertion would be:
> >
> > #!/bin/bash
> > #
> > weatherpacket=`cat /dev/shm/aprs.pkt`
> > /usr/local/xastir/bin/xastir_udp_client localhost 2023 YOURCALL XXXX -to_rf
> > "YOURCALL>APX219:$weatherpacket"
> >
> >
> > with the obvious modification to make it correct for your call sign. This
> > will work with Xastir unmodified, and is as xastir_udp_client was meant
> > to be invoked.
> >
> > I have examined the xastir_udp_client man page and found it to leave too much
> > to interpretation. I edited it and added more notes about how it really works
> > so that perhaps it will be easier for others to grok in the future. If anyone
> > still finds it confusing, I can modify it further.
> >
> > On Sat, Oct 31, 2020 at 08:30:18PM -0400, we recorded a bogon-computron collision of the <xastir at deej.net> flavor, containing:
> > > On 10/30/2020 1:07 AM, Steven Morrison wrote:
> > > > I can configure the WeeWx program to generate a report and send it to the
> > > xastir Pi, but how can i receive that report and transmit it in xastir?
> > >
> > >
> > > I'm doing it as follows in Linux (Raspberry Pi) with both WeeWx and Xastir
> > > running on the same RPi, but you could easily rsync the /dev/shm/aprs.kpt
> > > file to a different computer if needed.
> > >
> > > I have the APRS extension loaded into WeeWx
> > > (https://github.com/cavedon/weewx-aprs).
> > >
> > > In /etc/weewx/weewx.conf I have:
> > >
> > > # Options for extension 'aprs'
> > > [APRS]
> > > comment = "RaspberryPi-Xastir-Wx-Topsham,ME"
> > > include_position = 1
> > > symbol_code = _
> > > symbol_table = /
> > > output_filename = /dev/shm/aprs.pkt
> > >
> > >
> > > Then I have a crontab entry that does:
> > >
> > > 01,11,21,31,41,51 * * * * /home/xastir/scripts/send-weather-rf.sh >
> > > /dev/null
> > >
> > >
> > > and the send-weather-rf.sh script looks like (XXXX is my 4 digit APRS code):
> > >
> > > #!/bin/bash
> > > #
> > > weatherpacket=`cat /dev/shm/aprs.pkt`
> > > /usr/local/xastir/bin/xastir_udp_client localhost 2023 N1JOV XXXX -to_rf
> > > $weatherpacket
> > >
> > >
> > > I am using an older version of Xastar (2.1.1) compiled from source code, and
> > > had to make the following change in main.c to make the xastir_udp_client
> > > command work for the above. I do not know if this still needs to be done in
> > > later versions.
> > >
> > > main.c is my custom version, main.c.orig is the original.
> > >
> > > $ diff main.c main.c.orig
> > > 12180,12183c12180,12183
> > > < // char path[100+1];
> > > < // char info[100+1];
> > > < // char *path0 = NULL;
> > > < // char *info0 = NULL;
> > > ---
> > > > char path[100+1];
> > > > char info[100+1];
> > > > char *path0 = NULL;
> > > > char *info0 = NULL;
> > > 12187,12188c12187,12188
> > > < // path0 = strtok(line,":"); // Pointer to
> > > start of path
> > > < // info0 = strtok(NULL,""); // Pointer to
> > > information field
> > > ---
> > > > path0 = strtok(line,":"); // Pointer to
> > > start of path
> > > > info0 = strtok(NULL,""); // Pointer to
> > > information field
> > > 12190,12197c12190,12196
> > > < // xastir_snprintf(path, sizeof(path), "%s",
> > > path0);
> > > < // xastir_snprintf(info, sizeof(info), "%s",
> > > info0);
> > > < // //fprintf(stderr, "path: %s\n", path);
> > > < // //fprintf(stderr, "info: %s\n", info);
> > > < // //fprintf(stderr, "line: %s\n", line);
> > > < // xastir_snprintf(line, sizeof(line),
> > > "%s%s%s", path, ",NOGATE:", info);
> > > < // xastir_snprintf(line, sizeof(line),
> > > "%s%s%s", path);
> > > < // //fprintf(stderr, "line: %s\n", line);
> > > ---
> > > > xastir_snprintf(path, sizeof(path), "%s",
> > > path0);
> > > > xastir_snprintf(info, sizeof(info), "%s",
> > > info0);
> > > > //fprintf(stderr, "path: %s\n", path);
> > > > //fprintf(stderr, "info: %s\n", info);
> > > > //fprintf(stderr, "line: %s\n", line);
> > > > xastir_snprintf(line, sizeof(line), "%s%s%s",
> > > path, ",NOGATE:", info);
> > > > //fprintf(stderr, "line: %s\n", line);
> > > 12239c12238
> > > < // *(line + line_offset - 1) = '}';
> > > ---
> > > > *(line + line_offset - 1) = '}';
> > > 12242,12243c12241
> > > < // (char *)(line + line_offset - 1), //
> > > Raw data line
> > > < (char *)(line + line_offset), // Raw data
> > > line
> > > ---
> > > > (char *)(line + line_offset - 1), // Raw
> > > data line
> > >
> > >
> > > -Dj
> > >
> > >
> > > --
> > > Dj Merrill - N1JOV - EAA Chapter 87
> > > Currently Flying: Glastar
> > > Previously: Cessna 150 - Glasair 1 FT - Grumman AA1B
> > >
> > > _______________________________________________
> > > Xastir mailing list
> > > Xastir at lists.xastir.org
> > > http://xastir.org/mailman/listinfo/xastir
> >
> > --
> > Tom Russo KM5VY
> > Tijeras, NM
> >
> > echo "prpv_a'rfg_cnf_har_cvcr" | sed -e 's/_/ /g' | tr [a-m][n-z] [n-z][a-m]
> >
> > _______________________________________________
> > Xastir mailing list
> > Xastir at lists.xastir.org
> > http://xastir.org/mailman/listinfo/xastir
>
>
>
> --
> Curt, WE7U http://xastir.org http://www.sarguydigital.com
--
Tom Russo KM5VY
Tijeras, NM
echo "prpv_a'rfg_cnf_har_cvcr" | sed -e 's/_/ /g' | tr [a-m][n-z] [n-z][a-m]
More information about the Xastir
mailing list