AISAT Downlink Issues -- Defined
Hello Satellite APRS Operators,
I am new to this SIG. And, this is my first post. So, I hope it arrives as intended.
As you know, AISAT became available recently for Satellite APRS. One of the nice things about having an APRS Digipeater mounted to the Stage 4 Rocket platform is this equipment inherits solar panels, batteries, and antennas.
Unfortunately, the design team was given only 6 days to build and deliver the satellite. Apparently, end to end testing of the Digipeater was not possible. So, I believe they deserve a lot of slack.
Now, there are many (4ish) quirks in the downlink.
NOTE: the AISAT uplink appears nominal.
To explain the downlink issue we need to examine a sample packet. For this we can thank K4KDR for transmitting the packet and KG4PID for receiving the packet. If I remember this correctly, KG4PID is running PI-TNC and APRX while K4KDR is running Direwolf and UISS. The main thing to note here is that displaying packets may require more flexible software.
Sample packet from the APRX error log via KG4PID:
2019-04-11 02:06:38.961 ax25_to_tnc2(KG4PID-14,len=112) rejected the message: 00 86 a2 40 40 40 40 60|96 68 96 88 a4 40 6c 82|92 a6 82 a8 54 60 40 40|40 40 40 40 61 03 f0 3a|43 51 2d 30 20 20 20 20|20 3a 3d 33 37 34 37 2e|36 36 4e 2f 30 37 37 33|36 2e 36 37 57 60 64 65|20 4b 34 4b 44 52 20 73|63 6f 74 74 32 33 31 39|32 40 67 6d 61 69 6c 2e|63 6f 6d 20 56 69 72 67|69 6e 69 61 20 20 46 4d|31 37 65 73 7b 31 39 35| = .CQ 0|K4KDR 6A|ISAT*0 | a..:|CQ-0 | :=3747.|66N/0773|6.67W`de| K4KDR s|cott2319|2@gmail.|com Virg|inia FM|17es{195|
This same packet after byte by byte parsing with a simple Python script on my Mac laptop:
@@@
robertmachale@ucrwpa-2-1-10-25-34-138 ~/Documents/SCC/AISAT-EXPLAIN $ python explainAisat.py
Space Communcator Club Las Flores, California 92688 http://www.spaceCommunicator.club/igates/
1: byteAsHex: 00, byteAsText: 0, byteAsAScii: 0, byteAsChar: , endOfDigipath: 0 1: SSID: 0, Digipeated: 0 2: byteAsHex: 86, byteAsText: 134, byteAsAScii: 67, byteAsChar: C, endOfDigipath: 0 3: byteAsHex: a2, byteAsText: 162, byteAsAScii: 81, byteAsChar: Q, endOfDigipath: 0 4: byteAsHex: 40, byteAsText: 64, byteAsAScii: 32, byteAsChar: , endOfDigipath: 0 5: byteAsHex: 40, byteAsText: 64, byteAsAScii: 32, byteAsChar: , endOfDigipath: 0 6: byteAsHex: 40, byteAsText: 64, byteAsAScii: 32, byteAsChar: , endOfDigipath: 0 7: byteAsHex: 40, byteAsText: 64, byteAsAScii: 32, byteAsChar: , endOfDigipath: 0 8: byteAsHex: 60, byteAsText: 96, byteAsAScii: 48, byteAsChar: 0, endOfDigipath: 0 8: SSID: 0, Digipeated: 0 9: byteAsHex: 96, byteAsText: 150, byteAsAScii: 75, byteAsChar: K, endOfDigipath: 0 10: byteAsHex: 68, byteAsText: 104, byteAsAScii: 52, byteAsChar: 4, endOfDigipath: 0 11: byteAsHex: 96, byteAsText: 150, byteAsAScii: 75, byteAsChar: K, endOfDigipath: 0 12: byteAsHex: 88, byteAsText: 136, byteAsAScii: 68, byteAsChar: D, endOfDigipath: 0 13: byteAsHex: a4, byteAsText: 164, byteAsAScii: 82, byteAsChar: R, endOfDigipath: 0 14: byteAsHex: 40, byteAsText: 64, byteAsAScii: 32, byteAsChar: , endOfDigipath: 0 15: byteAsHex: 6c, byteAsText: 108, byteAsAScii: 54, byteAsChar: 6, endOfDigipath: 0 15: SSID: 12, Digipeated: 0 16: byteAsHex: 82, byteAsText: 130, byteAsAScii: 65, byteAsChar: A, endOfDigipath: 0 17: byteAsHex: 92, byteAsText: 146, byteAsAScii: 73, byteAsChar: I, endOfDigipath: 0 18: byteAsHex: a6, byteAsText: 166, byteAsAScii: 83, byteAsChar: S, endOfDigipath: 0 19: byteAsHex: 82, byteAsText: 130, byteAsAScii: 65, byteAsChar: A, endOfDigipath: 0 20: byteAsHex: a8, byteAsText: 168, byteAsAScii: 84, byteAsChar: T, endOfDigipath: 0 21: byteAsHex: 54, byteAsText: 84, byteAsAScii: 42, byteAsChar: *, endOfDigipath: 0 22: byteAsHex: 60, byteAsText: 96, byteAsAScii: 48, byteAsChar: 0, endOfDigipath: 0 22: SSID: 0, Digipeated: 0 23: byteAsHex: 40, byteAsText: 64, byteAsAScii: 32, byteAsChar: , endOfDigipath: 0 24: byteAsHex: 40, byteAsText: 64, byteAsAScii: 32, byteAsChar: , endOfDigipath: 0 25: byteAsHex: 40, byteAsText: 64, byteAsAScii: 32, byteAsChar: , endOfDigipath: 0 26: byteAsHex: 40, byteAsText: 64, byteAsAScii: 32, byteAsChar: , endOfDigipath: 0 27: byteAsHex: 40, byteAsText: 64, byteAsAScii: 32, byteAsChar: , endOfDigipath: 0 28: byteAsHex: 40, byteAsText: 64, byteAsAScii: 32, byteAsChar: , endOfDigipath: 0 29: byteAsHex: 61, byteAsText: 97, byteAsAScii: 48, byteAsChar: 0, endOfDigipath: 1 29: SSID: 0, Digipeated: 0 robertmachale@ucrwpa-2-1-10-25-34-138 ~/Documents/SCC/AISAT-EXPLAIN $
@@@
Notice 3 issues with the Digipath:
1) SSIDs arrive as ASCII rather than 4 bits in the AX.25 subfield 2) The Digipeated flag arrives as * rather than 1 bit in the AX.25 subfield 3) One extra (blank) callsign field exists at the end of the Digipath
Although the Kenwood will pickup the packet we may need to tap into the TNC raw output to decipher the packet manually. I can only imagine the Kenwood display will reject the packets as malformed. So, this leaves us with APRSDroid, UISS, and custom APRS software for displaying packets received.
Feel free to follow APRS packets from AISAT on our iGate report: http://www.spaceCommunicator.club/igates/
Also, you will find a note on this AISAT issue including helpful screen shots here: http://www.spaceCommunicator.club
Let me know your feedback and how I can help.
Happy Easter + Passover + Holiday!
73s
Robert MacHale KE6BLR (949) 371-6319 robert.machale@yahoo.com
participants (1)
-
KE6BLR Robert