diff --git a/AGWAPI.c b/AGWAPI.c index 5dc2f9c..96eb3b8 100644 --- a/AGWAPI.c +++ b/AGWAPI.c @@ -550,16 +550,20 @@ int AGWConnected(struct BPQConnectionInfo * Con, int Stream) if (ApplCall[i]==32) ApplCall[i]=0; -// See if incomming connection +// See if incoming connection if (Con->Listening) { // Allocate Session and send "c" Message // // Find an AGW session + + Debugprintf("Incoming AGW Call for ApplCall %s", ApplCall); for (sockptr=&Sockets[1]; sockptr <= &Sockets[CurrentSockets]; sockptr++) { + Debugprintf("Trying Socket %d, Calls %s %s", i, sockptr->CallSign1, sockptr->CallSign2); + if (sockptr->SocketActive && (memcmp(sockptr->CallSign1, ApplCall, 10) == 0) || (memcmp(sockptr->CallSign2, ApplCall, 10) == 0)) { @@ -572,6 +576,7 @@ int AGWConnected(struct BPQConnectionInfo * Con, int Stream) int maxframe; int l4window; + Debugprintf("Connection Found, Checking for duplicate calls"); keyptr=(byte *)&Con->CallKey; @@ -594,13 +599,13 @@ int AGWConnected(struct BPQConnectionInfo * Con, int Stream) for (i = 0; i < CurrentConnections; i++) { - if (Con->BPQStream == Stream) + if (AGWConnections[i].BPQStream == Stream) continue; // Dont Check ourself! if (AGWConnections[i].SocketIndex == sockptr && memcmp(&Con->CallKey, &AGWConnections[i].CallKey,21) == 0) { - SendMsg(Stream, "AGWtoBPQ - Callsign is already connected\r", 43); + SendMsg(Stream, "AGWAPI - Callsign is already connected\r", 43); Sleep (500); Disconnect(Stream); Con->CallKey[0]=0; @@ -1393,12 +1398,12 @@ int ProcessAGWCommand(struct AGWSocketConnectionInfo * sockptr) if (sockptr->AGWRXHeader.DataKind == 'V') // Unproto with VIA string { Digis = sockptr->MsgData[0]; // Number of digis - - if (Digis > 7) - { - AGWDataSocket_Disconnect(sockptr); - return 0; - } + + if (Digis > 7) + { + AGWDataSocket_Disconnect(sockptr); + return 0; + } for (j = 1; j<= Digis; j++) { diff --git a/APRSCode.c b/APRSCode.c index e8f6257..1ea6e79 100644 --- a/APRSCode.c +++ b/APRSCode.c @@ -103,6 +103,7 @@ void GetSavedAPRSMessages(); static VOID GPSDConnect(void * unused); int CanPortDigi(int Port); int FromLOC(char * Locator, double * pLat, double * pLon); +BOOL CheckExcludeList(UCHAR * Call); extern int SemHeldByAPI; extern int APRSMONDECODE(); @@ -1108,6 +1109,14 @@ Dll VOID APIENTRY Poll_APRS() monchars = (UCHAR *)monbuff; AdjBuff = Orig = (MESSAGE *)monchars; // Adjusted for digis + // Check Exclude List + + if (CheckExcludeList(Orig->ORIGIN) == 0) + { + ReleaseBuffer(monbuff); + continue; + } + Port = Orig->PORT; if (Port & 0x80) // TX @@ -3304,6 +3313,19 @@ VOID ProcessAPRSISMsg(char * APRSMsg) return; *(Dest++) = 0; // Termainate Source + + if (ExcludeList[0]) + { + // Check if excluded. Need to convert to ax.25 + + UCHAR AXCall[7]; + + ConvToAX25(Source, AXCall); + + if (CheckExcludeList == 0) + return; + } + ptr = strchr(Dest, ','); if (ptr) diff --git a/BBSUtilities.c b/BBSUtilities.c index f56e24f..e872cb9 100644 --- a/BBSUtilities.c +++ b/BBSUtilities.c @@ -452,7 +452,7 @@ void WriteLogLine(CIRCUIT * conn, int Flag, char * Msg, int MsgLen, int Flags) // Don't close/reopen logs every time -// if ((LT - LastLogTime[Flags]) > 60) + if ((LT - LastLogTime[Flags]) > 30) { LastLogTime[Flags] = LT; fclose(LogHandle[Flags]); @@ -501,6 +501,7 @@ VOID __cdecl Debugprintf(const char * format, ...) va_start(arglist, format); Len = vsprintf(Mess, format, arglist); + va_end(arglist); #ifndef LINBPQ WriteLogLine(NULL, '!',Mess, Len, LOG_DEBUG_X); #endif @@ -519,6 +520,7 @@ VOID __cdecl Logprintf(int LogMode, CIRCUIT * conn, int InOut, const char * form va_start(arglist, format); Len = vsprintf(Mess, format, arglist); + va_end(arglist); WriteLogLine(conn, InOut, Mess, Len, LogMode); return; @@ -2444,6 +2446,7 @@ VOID __cdecl nodeprintf(ConnectionInfo * conn, const char * format, ...) va_start(arglist, format); len = vsprintf(Mess, format, arglist); + va_end(arglist); QueueMsg(conn, Mess, len); @@ -2463,6 +2466,7 @@ VOID __cdecl nodeprintfEx(ConnectionInfo * conn, const char * format, ...) va_start(arglist, format); len = vsprintf(Mess, format, arglist); + va_end(arglist); QueueMsg(conn, Mess, len); @@ -10897,6 +10901,8 @@ int Connected(int Stream) user->flags |= F_Temp_B2_BBS; conn->NewUser = TRUE; + + user->lastmsg = LatestMsg - 20; // Limit L command for new users } user->TimeLastConnected = time(NULL); @@ -12068,6 +12074,8 @@ void run_pg(CIRCUIT * conn, struct UserInfo * user) iop = NULL; + printf("Len %d %x %x %x\n", conn->InputLen, conn->InputBuffer[0], conn->InputBuffer[1], conn->InputBuffer[2]); + conn->InputBuffer[conn->InputLen] = 0; strlop(conn->InputBuffer, 13); @@ -12077,7 +12085,7 @@ void run_pg(CIRCUIT * conn, struct UserInfo * user) { if (isalnum(conn->InputBuffer[i]) == 0 && conn->InputBuffer[i] != ' ') { - BBSputs(conn, "PG commnand string invalid\r"); + BBSputs(conn, "PG command string invalid\r"); conn->InputMode=0; SendPrompt(conn, user); return; @@ -12092,7 +12100,7 @@ void run_pg(CIRCUIT * conn, struct UserInfo * user) user->Temp->RUNPGPARAMS->user = user; user->Temp->RUNPGPARAMS->conn = conn; strncpy(user->Temp->RUNPGPARAMS->InputBuffer, conn->InputBuffer, 80); // needs to be length of actual input! - user->Temp->RUNPGPARAMS->Len = conn->InputLen; + user->Temp->RUNPGPARAMS->Len = strlen(conn->InputBuffer); if (conn == 0 || user == 0) { @@ -12345,7 +12353,7 @@ void run_pg( CIRCUIT * conn, struct UserInfo * user ) user->Temp->RUNPGPARAMS->user = user; user->Temp->RUNPGPARAMS->conn = conn; strncpy(user->Temp->RUNPGPARAMS->InputBuffer, conn->InputBuffer, 80); // needs to be length of actual input! - user->Temp->RUNPGPARAMS->Len = conn->InputLen; + user->Temp->RUNPGPARAMS->Len = strlen(conn->InputBuffer); index = user->Temp->PG_INDEX; conn->InputBuffer[conn->InputLen] = 0; @@ -12357,7 +12365,7 @@ void run_pg( CIRCUIT * conn, struct UserInfo * user ) { if (isalnum(conn->InputBuffer[i]) == 0 && conn->InputBuffer[i] != ' ') { - BBSputs(conn, "PG commnand string invalid\r"); + BBSputs(conn, "PG command string invalid\r"); conn->InputMode=0; SendPrompt(conn, user); return; @@ -13410,6 +13418,7 @@ VOID __cdecl nprintf(CIRCUIT * conn, const char * format, ...) va_start(arglist, format); vsprintf(buff, format, arglist); + va_end(arglist); BBSputs(conn, buff); } diff --git a/BPQINP3.c b/BPQINP3.c index a01767b..ccb100d 100644 --- a/BPQINP3.c +++ b/BPQINP3.c @@ -43,7 +43,7 @@ int NegativeDelay = 10; // Seconds between checks for negative info - should int PositiveDelay = 300; time_t SENDRIFTIME = 0; -int RIFInterval = 60; +int RIFInterval = 3600; VOID SendNegativeInfo(); VOID SortRoutes(struct DEST_LIST * Dest); @@ -97,10 +97,10 @@ VOID __cdecl Debugprintf(const char * format, ...); VOID SendINP3RIF(struct ROUTE * Route, UCHAR * Call, UCHAR * Alias, int Hops, int RTT); VOID SendOurRIF(struct ROUTE * Route); -VOID UpdateNode(struct ROUTE * Route, UCHAR * axcall, UCHAR * alias, int hops, int rtt); -VOID UpdateRoute(struct DEST_LIST * Dest, struct INP3_DEST_ROUTE_ENTRY * ROUTEPTR, int hops, int rtt); +VOID UpdateNode(struct ROUTE * Route, UCHAR * axcall, int hops, int rtt, time_t Now, unsigned char * Options); +VOID UpdateRoute(struct DEST_LIST * Dest, struct INP3_DEST_ROUTE_ENTRY * ROUTEPTR, int hops, int rtt, time_t Now); VOID KillRoute(struct INP3_DEST_ROUTE_ENTRY * ROUTEPTR); -VOID AddHere(struct INP3_DEST_ROUTE_ENTRY * ROUTEPTR,struct ROUTE * Route , int hops, int rtt); +VOID AddHere(struct INP3_DEST_ROUTE_ENTRY * ROUTEPTR,struct ROUTE * Route , int hops, int rtt, time_t Now); VOID SendRIFToNewNeighbour(struct ROUTE * Route); VOID DecayNETROMRoutes(struct ROUTE * Route); VOID DeleteINP3Routes(struct ROUTE * Route); @@ -112,7 +112,7 @@ struct _RTTMSG RTTMsg = {""}; //struct ROUTE DummyRoute = {"","",""}; -int RIPTimerCount = 0; // 1 sec to 10 sec counter +int RIPTimerCount = 10; // 1 sec to 10 sec counter int PosTimerCount = 0; int NegTimerCount = 0; @@ -127,6 +127,13 @@ int RTTTimeout = 6; // 1 Min (Horizon is 1 min) uint32_t RTTID = 1; +// BPQ32001 - Original. Sends RIF in mS and adds link rtt before sending +// BPQ32002 - Sends RIF in 10mS and adds link rtt before sending +// BPQ32003 - Original. RIF in 10mS and doesn't add link rtt before sending (XR compatiblity) +// BPQ32004 - Original. RIF in 10mS ,doesn't add link rtt before sending and sends full routing table every hour + + + VOID InitialiseRTT() { UCHAR temp[256] = ""; @@ -136,7 +143,7 @@ VOID InitialiseRTT() memset(&RTTMsg, ' ', sizeof(struct _RTTMSG)); memcpy(RTTMsg.ID, "L3RTT: ", 7); memcpy(RTTMsg.VERSION, "LEVEL3_V2.1 ", 12); - memcpy(RTTMsg.SWVERSION, "BPQ32003 ", 9); // Follows XR by not adding route time before sending RIF + memcpy(RTTMsg.SWVERSION, "BPQ32004 ", 9); // Follows XR by not adding route time before sending RIF, send Hourly RIF refresh and time out routes _snprintf(temp, sizeof(temp), "$M%d $N $H%d ", MAXRTT, MaxHops); // trailing spaces extend to ensure padding if the length of characters for MAXRTT changes. memcpy(RTTMsg.FLAGS, temp, 20); // But still limit the actual characters copied. memcpy(RTTMsg.ALIAS, &MYALIASTEXT, 6); @@ -381,7 +388,7 @@ VOID ProcessRTTReply(struct ROUTE * Route, struct _L3MESSAGEBUFFER * Buff) if (Route->RTTIncrement == 0) Route->RTTIncrement = 1; - if (Route->OldBPQ) + if (Route->senderaddsRTT) Route->TXRTTIncrement = Route->RTTIncrement; else Route->TXRTTIncrement = 0; @@ -411,16 +418,21 @@ VOID ProcessRTTReply(struct ROUTE * Route, struct _L3MESSAGEBUFFER * Buff) } } +UCHAR * SkipOptions(UCHAR * ptr1, int msglen); +void DecodeRIFOptions(struct DEST_LIST * Dest, UCHAR * Options); + VOID ProcessINP3RIF(struct ROUTE * Route, UCHAR * ptr1, int msglen, int Port) { unsigned char axcall[7]; int hops; unsigned short rtt; - int len; - int opcode; char alias[6]; UINT Stamp, HH, MM; char Normcall[10]; + time_t Now = time(NULL); + unsigned char * Options; + int i; + UCHAR * oldptr1; if (Route == 0 || Route->NEIGHBOUR_LINK == 0 || Route->NEIGHBOUR_LINK->LINKCALL == 0) return; @@ -443,7 +455,7 @@ VOID ProcessINP3RIF(struct ROUTE * Route, UCHAR * ptr1, int msglen, int Port) // Update Timestamp on Route - Stamp = time(NULL) % 86400; // Secs into day + Stamp = Now % 86400; // Secs into day HH = Stamp / 3600; Stamp -= HH * 3600; @@ -462,9 +474,12 @@ VOID ProcessINP3RIF(struct ROUTE * Route, UCHAR * ptr1, int msglen, int Port) memset(alias, ' ', 6); memcpy(axcall, ptr1, 7); - if (axcall[0] < 0x60 || (axcall[0] & 1)) // Not valid ax25 callsign + for (i = 0; i < 6; i++) + { + if (axcall[i] < 0x40 || (axcall[i] & 1)) // Not valid ax25 callsign return; // Corrupt RIF - + } + ptr1+=7; hops = *ptr1++; @@ -475,40 +490,30 @@ VOID ProcessINP3RIF(struct ROUTE * Route, UCHAR * ptr1, int msglen, int Port) // if other end is old bpq then value is mS otherwise 10 mS unita - if (Route->OldBPQ == 1) + if (Route->mSRIF == 1) rtt /= 10; - if (Route->OldBPQ == 0) - rtt += Route->RTTIncrement; // Don't do this if OldBPQ set - other end has added it + if (Route->senderaddsRTT == 0) + rtt += Route->RTTIncrement; msglen -= 10; - while (*ptr1 && msglen > 0) - { - len = *ptr1; - opcode = *(ptr1+1); + Options = ptr1; - if (len < 2 || len > msglen) - return; // Duff RIF + oldptr1 = ptr1; + + ptr1 = SkipOptions(ptr1, msglen); // We now extact options here and decode them once we have a Node record - if (opcode == 0) - { - if (len > 1 && len < 9) - memcpy(alias, ptr1+2, len-2); - else - { - if (DEBUGINP3) Debugprintf("Corrupt INP3 Message"); - return; - } - } - ptr1+=len; - msglen -=len; - } + if (ptr1 == 0) + return; // Corrupt RIF + + msglen -= (ptr1 - oldptr1); // options len ptr1++; msglen--; // EOP - UpdateNode(Route, axcall, alias, hops, rtt); + UpdateNode(Route, axcall, hops, rtt, Now, Options); + } return; @@ -519,7 +524,7 @@ VOID KillRoute(struct INP3_DEST_ROUTE_ENTRY * ROUTEPTR) } -VOID UpdateNode(struct ROUTE * Route, UCHAR * axcall, UCHAR * alias, int hops, int rtt) +VOID UpdateNode(struct ROUTE * Route, UCHAR * axcall, int hops, int rtt, time_t Now, unsigned char * Options) { struct DEST_LIST * Dest; struct INP3_DEST_ROUTE_ENTRY * ROUTEPTR; @@ -527,6 +532,9 @@ VOID UpdateNode(struct ROUTE * Route, UCHAR * axcall, UCHAR * alias, int hops, char call[11]=""; APPLCALLS * APPL; int App; + XROptions noOptions; + int n = sizeof(noOptions); + // SEE IF any of OUR CALLs - DONT WANT TO PUT IT IN LIST! @@ -616,6 +624,7 @@ VOID UpdateNode(struct ROUTE * Route, UCHAR * axcall, UCHAR * alias, int hops, return; } + memset(&noOptions, 0, sizeof(noOptions)); if (FindDestination(axcall, &Dest)) goto Found; @@ -631,12 +640,12 @@ VOID UpdateNode(struct ROUTE * Route, UCHAR * axcall, UCHAR * alias, int hops, memset(Dest, 0, sizeof(struct DEST_LIST)); memcpy(Dest->DEST_CALL, axcall, 7); - memcpy(Dest->DEST_ALIAS, alias, 6); // Set up First Route Dest->INP3ROUTE[0].Hops = hops; Dest->INP3ROUTE[0].STT = rtt; + Dest->INP3ROUTE[0].LastRefreshed = Now; Dest->INP3FLAGS = NewNode; @@ -647,6 +656,15 @@ VOID UpdateNode(struct ROUTE * Route, UCHAR * axcall, UCHAR * alias, int hops, ConvFromAX25(Dest->DEST_CALL, call); if (DEBUGINP3) Debugprintf("INP3 Adding New Node %s Hops %d RTT %d", call, hops, rtt); + DecodeRIFOptions(Dest, Options); + +// if (memcmp(Options, &noOptions, sizeof(noOptions)) != 0) +// { +// Dest->XROptions = malloc(sizeof(noOptions)); +// memcpy(Dest->XROptions, Options, sizeof(noOptions)); +// Options->LOC = Options->QTH = Options->Ver = 0; // So not freed later +// } + return; Found: @@ -662,8 +680,7 @@ Found: ConvFromAX25(Dest->DEST_CALL, call); if (DEBUGINP3) Debugprintf("INP3 Updating Node %s Hops %d TT %d", call, hops, rtt); - if (alias[0] > ' ') - memcpy(Dest->DEST_ALIAS, alias, 6); + DecodeRIFOptions(Dest, Options); // See if we are known to it, it not add @@ -672,7 +689,7 @@ Found: if (ROUTEPTR->ROUT_NEIGHBOUR == Route) { if (DEBUGINP3) Debugprintf("INP3 Already have as route[0] - TT was %d updating to %d", ROUTEPTR->STT, rtt); - UpdateRoute(Dest, ROUTEPTR, hops, rtt); + UpdateRoute(Dest, ROUTEPTR, hops, rtt, Now); return; } @@ -681,7 +698,7 @@ Found: if (ROUTEPTR->ROUT_NEIGHBOUR == Route) { if (DEBUGINP3) Debugprintf("INP3 Already have as route[1] - TT was %d updating to %d", ROUTEPTR->STT, rtt); - UpdateRoute(Dest, ROUTEPTR, hops, rtt); + UpdateRoute(Dest, ROUTEPTR, hops, rtt, Now); return; } @@ -690,7 +707,7 @@ Found: if (ROUTEPTR->ROUT_NEIGHBOUR == Route) { if (DEBUGINP3) Debugprintf("INP3 Already have as route[2] - TT was %d updating to %d", ROUTEPTR->STT, rtt); - UpdateRoute(Dest, ROUTEPTR, hops, rtt); + UpdateRoute(Dest, ROUTEPTR, hops, rtt, Now); return; } @@ -706,7 +723,7 @@ Found: // Add here if (DEBUGINP3) Debugprintf("INP3 adding as route[%d]", i); - AddHere(ROUTEPTR, Route, hops, rtt); + AddHere(ROUTEPTR, Route, hops, rtt, Now); if (i == 0) Dest->LastTT = 0; SortRoutes(Dest); @@ -728,7 +745,7 @@ Found: memcpy(&Dest->INP3ROUTE[2], &Dest->INP3ROUTE[1], sizeof(struct INP3_DEST_ROUTE_ENTRY)); memcpy(&Dest->INP3ROUTE[1], &Dest->INP3ROUTE[0], sizeof(struct INP3_DEST_ROUTE_ENTRY)); - AddHere(&Dest->INP3ROUTE[0], Route, hops, rtt); + AddHere(&Dest->INP3ROUTE[0], Route, hops, rtt, Now); return; } @@ -738,7 +755,7 @@ Found: if (DEBUGINP3) Debugprintf("INP3 Replacing route 1"); memcpy(&Dest->INP3ROUTE[2], &Dest->INP3ROUTE[1], sizeof(struct INP3_DEST_ROUTE_ENTRY)); - AddHere(&Dest->INP3ROUTE[1], Route, hops, rtt); + AddHere(&Dest->INP3ROUTE[1], Route, hops, rtt, Now); return; } @@ -747,7 +764,7 @@ Found: // We are better. Add here if (DEBUGINP3) Debugprintf("INP3 Replacing route 2"); - AddHere(&Dest->INP3ROUTE[2], Route, hops, rtt); + AddHere(&Dest->INP3ROUTE[2], Route, hops, rtt, Now); return; } @@ -759,12 +776,12 @@ Found: } -VOID AddHere(struct INP3_DEST_ROUTE_ENTRY * ROUTEPTR,struct ROUTE * Route , int hops, int rtt) +VOID AddHere(struct INP3_DEST_ROUTE_ENTRY * ROUTEPTR,struct ROUTE * Route , int hops, int rtt, time_t Now) { ROUTEPTR->Hops = hops; ROUTEPTR->STT = rtt; ROUTEPTR->ROUT_NEIGHBOUR = Route; - + ROUTEPTR->LastRefreshed = Now; return; } @@ -914,7 +931,7 @@ VOID UpdateTTforRoute(struct ROUTE * Route, int TTChange) -VOID UpdateRoute(struct DEST_LIST * Dest, struct INP3_DEST_ROUTE_ENTRY * ROUTEPTR, int hops, int rtt) +VOID UpdateRoute(struct DEST_LIST * Dest, struct INP3_DEST_ROUTE_ENTRY * ROUTEPTR, int hops, int rtt, time_t Now) { if (ROUTEPTR->Hops == 0) { @@ -922,6 +939,7 @@ VOID UpdateRoute(struct DEST_LIST * Dest, struct INP3_DEST_ROUTE_ENTRY * ROUTEPT ROUTEPTR->Hops = hops; ROUTEPTR->STT = rtt; + ROUTEPTR->LastRefreshed = Now; SortRoutes(Dest); return; @@ -931,6 +949,7 @@ VOID UpdateRoute(struct DEST_LIST * Dest, struct INP3_DEST_ROUTE_ENTRY * ROUTEPT { ROUTEPTR->STT = rtt; ROUTEPTR->Hops = hops; + ROUTEPTR->LastRefreshed = Now; SortRoutes(Dest); return; @@ -939,6 +958,7 @@ VOID UpdateRoute(struct DEST_LIST * Dest, struct INP3_DEST_ROUTE_ENTRY * ROUTEPT ROUTEPTR->STT = rtt; ROUTEPTR->Hops = hops; + ROUTEPTR->LastRefreshed = Now; SortRoutes(Dest); return; @@ -996,14 +1016,49 @@ VOID ProcessRTTMsg(struct ROUTE * Route, struct _L3MESSAGEBUFFER * Buff, int Len { // Extract other end's SRTT - // Get SWVERSION to see if other end is old (Buggy) BPQ + // Get SWVERSION to see if other end is old (Buggy) BPQ (000) or not updating RIF before sending (001) - if (memcmp(RTTMsg->SWVERSION, "BPQ32001 ", 9) == 0) - Route->OldBPQ = 1; - else if (memcmp(RTTMsg->SWVERSION, "BPQ32002 ", 9) == 0) - Route->OldBPQ = 2; // XR mode + int inpVer = 0; // Not BPQ + + if (memcmp(RTTMsg->SWVERSION, "BPQ32", 5) == 0) + { + inpVer = atoi(&RTTMsg->SWVERSION[5]); + + if (inpVer == 1) + { + Route->mSRIF = 1; // Set if other end is BPQ sending RIF in mS (Ver < 2) + Route->senderaddsRTT = 1; // Set if link RTT added before sending (Ver = 1) + Route->timeoutRoutes = 0; // Set if other end always sends timed RIF updates (Hourly) + } + else if (inpVer == 2) + { + Route->mSRIF = 0; // Set if other end is BPQ sending RIF in mS (Ver < 2) + Route->senderaddsRTT = 1; // Set if link RTT added before sending (Ver = 1) + Route->timeoutRoutes = 0; // Set if other end always sends timed RIF updates (Hourly) + } + else if (inpVer == 3) + { + Route->mSRIF = 0; // Set if other end is BPQ sending RIF in mS (Ver < 2) + Route->senderaddsRTT = 0; // Set if link RTT added before sending (Ver = 1) + Route->timeoutRoutes = 0; // Set if other end always sends timed RIF updates (Hourly) + } + else if (inpVer >= 4) + { + Route->mSRIF = 0; // Set if other end is BPQ sending RIF in mS (Ver < 2) + Route->senderaddsRTT = 0; // Set if link RTT added before sending (Ver = 1) + Route->timeoutRoutes = 1; // Set if other end always sends timed RIF updates (Hourly) + } + } else - Route->OldBPQ = 0; + { + // XR or others + + Route->mSRIF = 0; // Set if other end is BPQ sending RIF in mS (Ver < 2) + Route->senderaddsRTT = 0; // Set if link RTT added before sending (Ver = 1) + Route->timeoutRoutes = 1; // Set if other end always sends timed RIF updates (Hourly) + + Debugprintf(RTTMsg->SWVERSION); + } sscanf(&Buff->L4DATA[6], "%u %u", &Dummy, &OtherRTT); @@ -1092,6 +1147,13 @@ VOID SendRTTMsg(struct ROUTE * Route) sprintf(temp, "$M%d $N $H%d ", MAXRTT, MaxHops); // trailing spaces extend to ensure padding if the length of characters for MAXRTT changes. memcpy(RTTMsg.FLAGS, temp, 20); // But still limit the actual characters copied. + // Normally we use Version BPQ32004 but if not using the new standard rif timer refresh (Hourly) switch to BPQ32003 which disables node timeout at other end + + if (RIFInterval == 3600) + memcpy(RTTMsg.SWVERSION, "BPQ32004 ", 9); + else + memcpy(RTTMsg.SWVERSION, "BPQ32003 ", 9); + memcpy(Msg->L4DATA, &RTTMsg, 236); Msg->LENGTH = 256 + 1 + MSGHDDRLEN; @@ -1134,7 +1196,7 @@ VOID SendKeepAlive(struct ROUTE * Route) SendNetFrame(Route, Msg); } -int BuildRIF(UCHAR * RIF, UCHAR * Call, UCHAR * Alias, int Hops, int RTT, char * Dest) +int BuildRIF(UCHAR * RIF, UCHAR * Call, UCHAR * Alias, int Hops, int RTT, char * Dest, XROptions * Options) { int AliasLen; int RIFLen; @@ -1151,6 +1213,18 @@ int BuildRIF(UCHAR * RIF, UCHAR * Call, UCHAR * Alias, int Hops, int RTT, char * RIF[8] = RTT >> 8; RIF[9] = RTT & 0xff; + if (Options && Options->Optionslist) + { + // Will include alias + + int optlen = Options->Optionslist[0]; // includes terminalting null + memcpy(&RIF[10], &Options->Optionslist[1], optlen); + RIFLen = 10 + optlen; + + if (DEBUGINP3) Debugprintf("INP3 sending RIF Entry %s:%s %d %d to %s", AliasCopy, Normcall, Hops, RTT, Dest); + return RIFLen; + } + if (Alias) { // Need to null-terminate Alias @@ -1166,18 +1240,17 @@ int BuildRIF(UCHAR * RIF, UCHAR * Call, UCHAR * Alias, int Hops, int RTT, char * RIF[10] = AliasLen+2; RIF[11] = 0; memcpy(&RIF[12], Alias, AliasLen); - RIF[12+AliasLen] = 0; + RIF[12+AliasLen] = 0; RIFLen = 13 + AliasLen; - if (DEBUGINP3) Debugprintf("INP3 sending RIF Entry %s:%s %d %d to %s", AliasCopy, Normcall, Hops, RTT, Dest); - return RIFLen; - } - RIF[10] = 0; + if (DEBUGINP3) Debugprintf("INP3 sending RIF Entry %s %d %d to %s", Normcall, Hops, RTT, Dest); - if (DEBUGINP3) Debugprintf("INP3 sending RIF Entry %s %d %d to %s", Normcall, Hops, RTT, Dest); + return RIFLen; + } - return (11); + RIF[10] = 0; + return 11; } @@ -1198,7 +1271,7 @@ VOID SendOurRIF(struct ROUTE * Route) if (DEBUGINP3) Debugprintf("INP3 Sending Our Call and Applcalls to %s ", Normcall); - if (Route->OldBPQ == 1) // old bpq bug - send mS not 10 mS units + if (Route->mSRIF == 1) // old bpq bug - send mS not 10 mS units sendTT *= 10; Msg = GetBuff(); @@ -1209,7 +1282,7 @@ VOID SendOurRIF(struct ROUTE * Route) // send a RIF for our Node and all our APPLCalls - RIFLen = BuildRIF(&Msg->L3SRCE[totLen], MYCALL, MYALIASTEXT, 1, sendTT, Normcall); + RIFLen = BuildRIF(&Msg->L3SRCE[totLen], MYCALL, MYALIASTEXT, 1, sendTT, Normcall, 0); totLen += RIFLen; for (App = 0; App < NumberofAppls; App++) @@ -1218,7 +1291,7 @@ VOID SendOurRIF(struct ROUTE * Route) if (APPL->APPLQUAL > 0) { - RIFLen = BuildRIF(&Msg->L3SRCE[totLen], APPL->APPLCALL, APPL->APPLALIAS_TEXT, 1, sendTT, Normcall); + RIFLen = BuildRIF(&Msg->L3SRCE[totLen], APPL->APPLCALL, APPL->APPLALIAS_TEXT, 1, sendTT, Normcall, 0); totLen += RIFLen; } } @@ -1447,7 +1520,7 @@ VOID SendRIF(struct ROUTE * Route, struct _L3MESSAGEBUFFER * Msg) SendNetFrame(Route, Msg); } -VOID SendRIFToOtherNeighbours(struct DEST_LIST * Dest, UCHAR * alias, struct INP3_DEST_ROUTE_ENTRY * Entry, int Negative, int portNum) +VOID SendRIFToOtherNeighbours(struct DEST_LIST * Dest, UCHAR * alias, struct INP3_DEST_ROUTE_ENTRY * Entry, int Negative, int portNum, int includeOptions) { UCHAR * axcall = Dest->DEST_CALL; struct ROUTE * Routes = NEIGHBOURS; @@ -1455,7 +1528,8 @@ VOID SendRIFToOtherNeighbours(struct DEST_LIST * Dest, UCHAR * alias, struct INP int count, MaxRoutes = MAXNEIGHBOURS; char NodeCall[10]; char destCall[10]; - + int rifLen; + unsigned char rif[256]; int sendHops, sendTT, lastTT; // if portNum is set sending a periodic refresh. Just sent to this port @@ -1553,16 +1627,22 @@ VOID SendRIFToOtherNeighbours(struct DEST_LIST * Dest, UCHAR * alias, struct INP if (Msg) { - if (Routes->OldBPQ == 1) // old bpq bug - send mS not 10 mS units + if (Routes->mSRIF == 1) // old bpq bug - send mS not 10 mS units sendTT *= 10; - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], axcall, alias, sendHops, sendTT, destCall); + if (includeOptions) + rifLen = BuildRIF(rif, axcall, alias, sendHops, sendTT, destCall, Dest->XROptions); + else + rifLen = BuildRIF(rif, axcall, alias, sendHops, sendTT, destCall, 0); - if (Msg->LENGTH > 250 - 15) + if (Msg->LENGTH + rifLen > 250) { SendRIF(Routes, Msg); - Routes->Msg = NULL; + Msg = Routes->Msg = CreateRIFHeader(Routes); } + + memcpy(&Msg->L3SRCE[Msg->LENGTH], rif, rifLen); + Msg->LENGTH += rifLen; } } } @@ -1578,6 +1658,8 @@ VOID SendRIFToNewNeighbour(struct ROUTE * Route) struct _L3MESSAGEBUFFER * Msg; int sendHops, sendTT; char Normcall[10]; + int rifLen; + unsigned char rif[256]; if (Route->NEIGHBOUR_LINK == 0) // shouldn't happen but to be safe.. return; @@ -1615,16 +1697,18 @@ VOID SendRIFToNewNeighbour(struct ROUTE * Route) if (Msg == NULL) return; - if (Route->OldBPQ == 1) // old bpq bug - send mS not 10 mS units + if (Route->mSRIF == 1) // old bpq bug - send mS not 10 mS units sendTT *= 10; - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], Dest->DEST_CALL, Dest->DEST_ALIAS, sendHops, sendTT, Normcall); - - if (Msg->LENGTH > 250 - 15) + rifLen = BuildRIF(rif, Dest->DEST_CALL, Dest->DEST_ALIAS, sendHops, sendTT, Normcall, Dest->XROptions); + + if (Msg->LENGTH + rifLen > 250) { SendRIF(Route, Msg); - Route->Msg = NULL; + Msg = Route->Msg = CreateRIFHeader(Route); } + memcpy(&Msg->L3SRCE[Msg->LENGTH], rif, rifLen); + Msg->LENGTH += rifLen; } } } @@ -1693,7 +1777,7 @@ VOID SendNegativeInfo() if (Entry->ROUT_NEIGHBOUR == 0) continue; - SendRIFToOtherNeighbours(Dest, Dest->DEST_ALIAS, Entry, TRUE, FALSE); + SendRIFToOtherNeighbours(Dest, Dest->DEST_ALIAS, Entry, TRUE, FALSE, FALSE); if (Entry->STT >= 60000) { @@ -1750,7 +1834,7 @@ VOID SendPositiveInfo() Entry = &Dest->INP3ROUTE[0]; if (Entry->ROUT_NEIGHBOUR) - SendRIFToOtherNeighbours(Dest, Dest->DEST_ALIAS, Entry, FALSE, FALSE); + SendRIFToOtherNeighbours(Dest, Dest->DEST_ALIAS, Entry, FALSE, FALSE, FALSE); } } @@ -1777,7 +1861,7 @@ VOID SendNewInfo() Entry = &Dest->INP3ROUTE[0]; - SendRIFToOtherNeighbours(Dest, Dest->DEST_ALIAS, Entry, TRUE, FALSE); // Send as negative so will always be worse than zero + SendRIFToOtherNeighbours(Dest, Dest->DEST_ALIAS, Entry, TRUE, FALSE, TRUE); // Send as negative so will always be worse than zero } } } @@ -1813,12 +1897,10 @@ VOID sendAlltoOneNeigbour(struct ROUTE * Route) if (Msg == 0) return; - if (Route->OldBPQ == 1) - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], MYCALL, MYALIASTEXT, 1, Route->TXRTTIncrement * 10, Call); - else if (Route->OldBPQ == 2) - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], MYCALL, MYALIASTEXT, 1, Route->TXRTTIncrement, Call); + if (Route->mSRIF == 1) + Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], MYCALL, MYALIASTEXT, 1, Route->TXRTTIncrement * 10, Call, 0); else - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], MYCALL, MYALIASTEXT, 1, 1, Call); + Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], MYCALL, MYALIASTEXT, 1, 1, Call, 0); for (App = 0; App < NumberofAppls; App++) { @@ -1826,12 +1908,10 @@ VOID sendAlltoOneNeigbour(struct ROUTE * Route) if (APPL->APPLQUAL > 0) { - if (Route->OldBPQ == 1) - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], APPL->APPLCALL, APPL->APPLALIAS_TEXT, 1, Route->TXRTTIncrement * 10, Call); - else if (Route->OldBPQ == 2) - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], APPL->APPLCALL, APPL->APPLALIAS_TEXT, 1, Route->TXRTTIncrement, Call); + if (Route->mSRIF == 1) + Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], APPL->APPLCALL, APPL->APPLALIAS_TEXT, 1, Route->TXRTTIncrement * 10, Call, 0); else - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], APPL->APPLCALL, APPL->APPLALIAS_TEXT, 1, 1, Call); + Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], APPL->APPLCALL, APPL->APPLALIAS_TEXT, 1, 1, Call, 0); } } @@ -1877,10 +1957,10 @@ VOID sendAlltoOneNeigbour(struct ROUTE * Route) if (Msg) { - if (Route->OldBPQ == 1) + if (Route->mSRIF == 1) sendTT *= 10; - Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], Dest->DEST_CALL, Dest->DEST_ALIAS, sendHops, sendTT, Call); + Msg->LENGTH += BuildRIF(&Msg->L3SRCE[Msg->LENGTH], Dest->DEST_CALL, Dest->DEST_ALIAS, sendHops, sendTT, Call, 0); if (Msg->LENGTH > 250 - 15) { @@ -1943,6 +2023,74 @@ VOID SendAllInfo() } } +int INP3NodeTimeout = 3600 *3; // 3 Hours + +void DecayINP3Routes() +{ + // Runs every 10 secs + + // Invalidate routes that haven't been refreshed for a while (if neighbour is sending periodic refresh) + + struct DEST_LIST * Dest = DESTS; + struct INP3_DEST_ROUTE_ENTRY * Entry; + time_t Now = time(NULL); + int i, n; + time_t xx; + + for (i=0; i < MAXDESTS; i++) + { + if (Dest->DEST_CALL == 0) + { + Dest++; + continue; + } + + for (n = 0; n < 3; n++) + { + Entry = &Dest->INP3ROUTE[n]; + + if (Entry->ROUT_NEIGHBOUR == 0) // Stop on first unused entry + break; + + xx = Now - Entry->LastRefreshed; + + if (Entry->ROUT_NEIGHBOUR->timeoutRoutes && Entry->LastRefreshed && (Entry->LastRefreshed + INP3NodeTimeout) < Now) + { + char Call1[10]; + char Call2[10]; + Call1[ConvFromAX25(Dest->DEST_CALL, Call1)] = 0; + Call2[ConvFromAX25(Entry->ROUT_NEIGHBOUR->NEIGHBOUR_CALL, Call2)] = 0; + + if (DEBUGINP3) Debugprintf("Timer Deleting INP3 Route %d to %s via %s", n + 1, Call1, Call2); + + if (n == 0) + { + // if removing best we need to tell others + + Entry->STT = 60000; // leave hops so we can check if we need to send + + if (Dest->DEST_ROUTE == 4) // we were using it + Dest->DEST_ROUTE = 0; + + } + else + { + // If we aren't removing the best, we don't need to tell anyone. + + if (n == 1) // 2nd + { + memcpy(&Dest->INP3ROUTE[1], &Dest->INP3ROUTE[2], sizeof(struct INP3_DEST_ROUTE_ENTRY)); + memset(&Dest->INP3ROUTE[2], 0, sizeof(struct INP3_DEST_ROUTE_ENTRY)); + } + else + memset(&Dest->INP3ROUTE[2], 0, sizeof(struct INP3_DEST_ROUTE_ENTRY)); + } + } + } + Dest++; + } +} + VOID INP3TIMER() { if (RTTMsg.ID[0] == 0) @@ -1980,6 +2128,7 @@ VOID INP3TIMER() SendRIPTimer(); SendAllInfo(); // Timer Driven refresh + DecayINP3Routes(); } else RIPTimerCount--; @@ -2040,6 +2189,7 @@ UCHAR * DisplayINP3RIF(UCHAR * ptr1, UCHAR * ptr2, int msglen) // Process optional fields + while (*ptr1 && msglen > 0) // Have an option { len = *ptr1; @@ -2092,3 +2242,370 @@ int inp3_tt2qual (int tt, int hops) return(qual); } + +/* + +5.2 XRouter Extensions + +The following identifiers are used in XRouter: + +Type 0x01: AMPRNet IP Routing Data +Value: Exactly 7 bytes total length (Option Length = 0x07). +Contains a 4-byte IPv4 address within the 44.0.0.0/8 amateur +network (in network byte order) followed by a 1-byte packed +hostmask prefix length (e.g., 0x18 for a /24). + +Type 0x10: Geographic Position +Value: Exactly 10 bytes total length. Contains two 32-bit signed +Big-Endian integers: Latitude followed by Longitude, expressed in +hundredths of a minute of arc. + +Type 0x12: Metadata Timestamp +Value: Exactly 6 bytes total length. Contains a 32-bit unsigned +integer tracking standard Unix epoch time. + +Type 0x13: TCP Service Port +Value: Exactly 4 bytes total length. A 16-bit unsigned integer +defining the active TCP port for user terminal access. Used in +conjunction with a Type 0x01 option. + +Type 0x14: Timezone Offset +Value: Exactly 4 bytes total length. A 16-bit signed integer +defining the local timezone offset relative to GMT, measured in +minutes (e.g., -60). + +Type 0x15: Maidenhead Locator +Value: A variable-length ASCII string representing the station +locator (e.g., IO83VK) with no null termination. + +Type 0x16: QTH (Location Description) +Value: A variable-length plain ASCII string describing the +station's physical location (e.g., Niagara Park) with no null +termination. + +Type 0x17: Software Version String +Value: A variable-length ASCII string representing the node +application's compile version (e.g., 501w) with no null +termination. + +5.3 Detailed Flags Specification (Option 0x11) + +Following the length byte (0x05) and type byte (0x11), this option +contains three sequential 1-byte fields: + ++------------+------------+---------+---------+---------+ +| len=0x05 | typ=0x11 | swtype | flags1 | flags_2 | ++------------+------------+---------+---------+---------+ +Figure 4: Structure of the Option 0x11 Payload + +5.3.1 Software Type (sw_type) + +A 1-byte integer identifying the node software: + +0 = Unknown, 1 = BPQ16 (DOS), 2 = XRouter16 (DOS), +3 = XServ16 (DOS), 4 = XRouter32 (Win GUI), 5 = XR32 (Win TUI), +6 = XS32 (Win TUI BBS), 7 = XRLin (Linux x86), +8 = XRouter (Raspberry Pi), 9 = BPQ32 (Windows), +10 = BPQ32 (Linux). + +5.3.2 Capability Flags 1 (flags_1) + +A 1-byte bitmask detailing supported network layer features: + +0x01 = INP3 Capable +0x02 = NetRom L3 routing enabled +0x04 = Capable of Netrom Record Route +0x08 = Capable of Netrom Control Message Protocol +0x10 = Capable of NetRomX (CREQX) +0x20 = Supports NDP (Netrom Datagram Protocol) +0x40 = Node is a GlobalNet router/host +0x80 = Supports IP over NetRom +5.3.3 Capability Flags 2 (flags_2) + +A 1-byte bitmask detailing hosted application services: + +0x01 = Has general purpose L7 command line +0x02 = Is/Has PMS (Mailbox) +0x04 = Is/Has XR Chat +0x08 = Is/Has BPQ/Roundtable chat +0x10 = Is/Has BBS +0x20 = Is/Has DX Cluster +0x40 = Is/Has RMS gateway +0x80 = Reserved (extension bit) + +G8PZT-1:XRLN64} Knoten: +Info for: KIDDER:G8PZT (HOST) [XRPi] FR=13203 RTT=0.17 Hop=1 XR {PEER} + Pos=52.4000N 2.2500W Loc=IO82VJ Qth=KIDDERMINSTER, UK + IP=44.136.16.50/32 TCP=23 v505G OFF + Supports: INP3 L3ROUT NRR NCMP L4X NDP + BBS XRCHAT RTCHAT + Updated: 02/07 13:40 Confirmed: 01/07 14:49 + +*/ + +UCHAR * SkipOptions(UCHAR * ptr1, int msglen) +{ + int len, opcode; + + // Skip options and return pointer to next entry + + while (*ptr1 && msglen > 0) + { + len = *ptr1; + opcode = *(ptr1+1); + + if (len < 2 || len > msglen) + return 0; // Duff RIF + + ptr1+=len; + msglen -=len; + } + + return ptr1; +} + +/* +// See if any XR options to add + + if (memcmp(Options, &noOptions, sizeof(noOptions)) != 0) + { + if (Dest->XROptions == 0) // None yet + Dest->XROptions = zalloc(sizeof(noOptions)); + + // Have options so copy across any new ones + + if (Options->IPADDR) + { + Dest->XROptions->IPADDR = Options->IPADDR; + Dest->XROptions->Mask = Options->Mask; // Always come togther + } + if (Options->Lat) + Dest->XROptions->Lat = Options->Lat; + + if (Options->Lon) + Dest->XROptions->Lon = Options->Lon; + + if (Options->Port) + Dest->XROptions->Port = Options->Port; + + if (Options->Time) + Dest->XROptions->Time = Options->Time; + + if (Options->TZOffset) + Dest->XROptions->TZOffset = Options->TZOffset; + + if (Options->LOC) + { + if (Dest->XROptions->LOC) + free(Dest->XROptions->LOC); + + Dest->XROptions->LOC = _strdup(Options->LOC); + } + + if (Options->QTH) + { + if (Dest->XROptions->QTH) + free(Dest->XROptions->QTH); + + Dest->XROptions->QTH = _strdup(Options->QTH); + } + + if (Options->Ver) + { + if (Dest->XROptions->Ver) + free(Dest->XROptions->Ver); + + Dest->XROptions->Ver = _strdup(Options->Ver); + } + + if (Options->SWType | Options->NetworkFlags | Options->ApplFlags) // All come together + { + Dest->XROptions->SWType = Options->SWType; + Dest->XROptions->NetworkFlags = Options->NetworkFlags; + Dest->XROptions->ApplFlags = Options->ApplFlags; + } + } +*/ + + + +void DecodeRIFOptions(struct DEST_LIST * Dest, UCHAR * ptr1) +{ + int len, opcode; + + // Options should be saved and sent out as received, including any unrecongnised ones + // Do we need to worry about getting different subsets of values at different times, + // so we need to combine new nodes with any existing ones?? + + // We treat alias separately as that is sent by all software + + unsigned char rawoptions[256]; // can't exceed packet size + int rawoptionslen = 0; + unsigned char * startoptions = ptr1; + int gotOptions = 0; + XROptions * Options = Dest->XROptions; + + + while (*ptr1) // Format already checked above + { + len = *ptr1; + opcode = *(ptr1+1); + + if (len < 2) + return; // Duff RIF + + if (opcode) + { + // Not alias so we need extended options field + + gotOptions = 1; + + if (Options == 0) + { + Options = Dest->XROptions = zalloc(sizeof(XROptions)); + } + } + + switch (opcode) + { + case 0: // Alias + + memset(Dest->DEST_ALIAS, ' ', 6); + + if (len > 1 && len < 9) + memcpy(Dest->DEST_ALIAS, ptr1+2, len-2); + break; + + case 1: // IP Address and Mask + + if (len == 7) + { + memcpy(&Options->IPADDR, ptr1+2, 4); + Options->Mask = (uint8_t)ptr1[6]; + } + break; + + case 0x10: // Geographic Position + + if (len == 10) + { + uint32_t w1; + int32_t w2; + + memcpy(&w1, ptr1+2, 4); + w2 = htonl(w1); + + Options->Lat = w2 / 6000.0; // 1/100th minute to degrees + + memcpy(&w1, ptr1+6, 4); + w2 = htonl(w1); + + Options->Lon = w2 / 6000.0; + break; + } + + + case 0x11: // Various flags + + if (len == 5) + { + Options->SWType = ptr1[2]; + Options->NetworkFlags = ptr1[3]; + Options->ApplFlags = ptr1[4]; + break; + } + + case 0x12: // Metadata Timestamp + + if (len == 6) + { + uint32_t w1; + + memcpy(&w1, ptr1+2, 4); + Options->Time = htonl(w1); + } + + break; + + case 0x13: // TCP Service Port + + if (len == 4) + { + uint16_t w1; + + memcpy(&w1, ptr1+2, 2); + Options->Port = htons(w1); + } + + case 0x14: // Timezone Offset + + if (len == 4) + { + uint16_t w1; + + memcpy(&w1, ptr1+2, 2); + Options->TZOffset = htons(w1); + } + + break; + + case 0x15: // Maidenhead Locator + + if (Options->LOC) + free (Options->LOC); + + Options->LOC = zalloc(len); + memcpy(Options->LOC, ptr1+2, len-2); + + break; + + case 0x16: // QTH (Location Description) + + if (Options->QTH) + free (Options->QTH); + + Options->QTH = zalloc(len); + memcpy(Options->QTH, ptr1+2, len-2); + + case 0x17: // Software Version String + + if (Options->Ver) + free (Options->Ver); + + Options->Ver = zalloc(len); + memcpy(Options->Ver, ptr1+2, len-2); + + } + + ptr1+=len; + } + + // ptr1 points to byte beyond end of options. Save the options string. Put length byte on front + + + if (gotOptions == 0) // Empty + return; + + if (Options) // Have other than alias + { + rawoptionslen = (ptr1 - startoptions) + 1; // include terminating null + + if (Options->Optionslist) + { + // see if changed (not much use if options include timestamp) + + if (Options->Optionslist[0] == rawoptionslen && memcmp(&Options->Optionslist[1], startoptions, rawoptionslen) == 0) + return; + + free(Options->Optionslist); + } + + Options->Optionslist = malloc(rawoptionslen + 1); + Options->Optionslist[0] = rawoptionslen; + memcpy(&Options->Optionslist[1], startoptions, rawoptionslen); + } + + return; + +} + diff --git a/BPQMail.c b/BPQMail.c index b1e361b..a535793 100644 --- a/BPQMail.c +++ b/BPQMail.c @@ -1163,6 +1163,8 @@ // Fix possible crash in SendBBSDataToPktMap // Remove Uncompressed Blocked forwarding (27) // Fix mail api returning garbage when deflate isn't requested (27) +// Fix PG command processing on 64 bit Linux (31) +// Limit L command output for new users (32) #include "bpqmail.h" diff --git a/BPQTermMDI.c b/BPQTermMDI.c index 9f9ba44..4e36e56 100644 --- a/BPQTermMDI.c +++ b/BPQTermMDI.c @@ -116,6 +116,7 @@ VOID __cdecl Debugprintf(const char * format, ...) va_start(arglist, format); Len = vsprintf_s(Mess, sizeof(Mess), format, arglist); + va_end(arglist); strcat(Mess, "\r\n"); OutputDebugString(Mess); return; diff --git a/Bpq32.c b/Bpq32.c index 3b5121f..0ce2215 100644 --- a/Bpq32.c +++ b/Bpq32.c @@ -1322,7 +1322,14 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses // Change INP3 to XR 'standard' (29) // Swap L4INDEX and L4ID in Packet Trace API (30) // More INP3 fixes (30) - +// Starting NCMP implementation +// Fix AGWAPI inbound connect for APPL Numbers above 1 (31) +// More INP3 changes (enforce RIF refresh at hourly intervals and time out nodes (31) +// Save, forward and display XR extended INP3 Options (31) +// Check packets from APRS-IS against Exclude list (32) +// Fix authorisation of Web Save Config File (32) +// Add missing calls to va_end() (32) +// Apply EXCLUDE to APRS and Digi (32) #define CKernel @@ -5829,6 +5836,7 @@ VOID __cdecl Debugprintf(const char * format, ...) va_start(arglist, format); vsprintf(Mess, format, arglist); + va_end(arglist); strcat(Mess, "\r\n"); OutputDebugString(Mess); diff --git a/Cmd.c b/Cmd.c index 36fc09d..c82404c 100644 --- a/Cmd.c +++ b/Cmd.c @@ -73,6 +73,7 @@ void SendVARANetromNodes(struct TNCINFO * TNC, MESSAGE *Buffer); VOID DoNetromConnect(TRANSPORTENTRY * Session, char * Bufferptr, struct DEST_LIST * Dest, BOOL Spy, int Service); VOID sendAlltoOneNeigbour(struct ROUTE * Route); VOID CMDSTREAMS(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct CMDX * CMD); +char * FormatIP(uint32_t Addr); extern VOID KISSTX(struct KISSINFO * KISS, PMESSAGE Buffer); @@ -263,8 +264,8 @@ char * __cdecl Cmdprintf(TRANSPORTENTRY * Session, char * Bufferptr, const char Paclen = 255; va_start(arglist, format); - MsgLen = vsprintf(Mess, format, arglist); + va_end(arglist); OldLen = (int)(Bufferptr - (char *)REPLYBUFFER->L2DATA); @@ -849,10 +850,10 @@ BOOL cATTACHTOBBS(TRANSPORTENTRY * Session, UINT Mask, int Paclen, int * AnySess ApplNum = 1; - while (APPLMASK && (APPLMASK & 1) == 0) + while (Mask && (Mask & 1) == 0) { ApplNum++; - APPLMASK >>= 1; + Mask >>= 1; } HOSTSESS->HOSTAPPLNUM = ApplNum; @@ -3292,6 +3293,17 @@ VOID LINKCMD(TRANSPORTENTRY * Session, char * Bufferptr, char * CmdTail, struct SendCommandReply(Session, REPLYBUFFER, (int)(Bufferptr - (char *)REPLYBUFFER)); } +const char SwVers[12][23] = { + "Unknown", "BPQ16 (DOS)", "XRouter16 (DOS)", "XServ16 (DOS)", + "XRouter32 (Win GUI)", + "XR32 (Win TUI)", + "XS32 (Win TUI BBS)", "XRLin (Linux x86)", + "XRouter (Raspberry Pi)", + "BPQ32 (Windows)", "BPQ32 (Linux)" +}; + + + char * DoOneNode(TRANSPORTENTRY * Session, char * Bufferptr, struct DEST_LIST * Dest) { char Normcall[10]; @@ -3300,6 +3312,8 @@ char * DoOneNode(TRANSPORTENTRY * Session, char * Bufferptr, struct DEST_LIST * struct INP3_DEST_ROUTE_ENTRY * Route; struct ROUTE * Neighbour; int i, Active, len; + time_t Now = time(NULL); + struct tm * TM; Alias[6] = 0; @@ -3308,15 +3322,67 @@ char * DoOneNode(TRANSPORTENTRY * Session, char * Bufferptr, struct DEST_LIST * Normcall[ConvFromAX25(Dest->DEST_CALL, Normcall)] = 0; - Bufferptr = Cmdprintf(Session, Bufferptr, "Routes to: %s:%s", Alias, Normcall); + if (Dest->XROptions) + { + XROptions * Options = Dest->XROptions; + + Bufferptr = Cmdprintf(Session, Bufferptr, "Nodes:\rInfo for: %s:%s [%s] ", Alias, Normcall, SwVers[Options->SWType]); + if (Options->Ver) + Bufferptr = Cmdprintf(Session, Bufferptr, "v%s ", Options->Ver); + + if (Dest->DEST_COUNT) + Bufferptr = Cmdprintf(Session, Bufferptr, " RTT=%4.2f FR=%d %c %.1d", + Dest->DEST_RTT /1000.0, Dest->DEST_COUNT, (Dest->DEST_STATE & 0x40)? 'B':' ', (Dest->DEST_STATE & 63)); - if (Dest->DEST_COUNT) - Bufferptr = Cmdprintf(Session, Bufferptr, " RTT=%4.2f FR=%d %c %.1d\r", - Dest->DEST_RTT /1000.0, Dest->DEST_COUNT, - (Dest->DEST_STATE & 0x40)? 'B':' ', (Dest->DEST_STATE & 63)); - else Bufferptr = Cmdprintf(Session, Bufferptr, "\r"); + + if (Options->Lat) + { + if (Options->Lat > 0) + Bufferptr = Cmdprintf(Session, Bufferptr, "Pos=%3.4fN ", Options->Lat); + else + Bufferptr = Cmdprintf(Session, Bufferptr, "Pos=%3.4fS ", -Options->Lat); + + if (Options->Lon > 0) + Bufferptr = Cmdprintf(Session, Bufferptr, "%3.4fE ", Options->Lon); + else + Bufferptr = Cmdprintf(Session, Bufferptr, "%3.4fW ", -Options->Lon); + } + + if (Options->LOC) + Bufferptr = Cmdprintf(Session, Bufferptr, "Loc=%s ", Options->LOC); + + if (Options->QTH) + Bufferptr = Cmdprintf(Session, Bufferptr, "Qth=%s", Options->QTH); + if (Options->IPADDR) + Bufferptr = Cmdprintf(Session, Bufferptr, "\rIP=%s/%d", FormatIP(Options->IPADDR), Options->Mask); + + Bufferptr = Cmdprintf(Session, Bufferptr, "\r\rRoutes:\r"); + + + +/* +G7TAJ-1:TANK2} Nodes: +Info for: XRLN64:G8PZT-1 (HOST) [XRLin] + Pos=50.1458N 5.1250W Loc=IO70KD Qth=LAMANVA + IP=44.135.49.90/32 v505i OFF + Supports: INP3 L3ROUT NRR NCMP L4X NDP + BBS XRCHAT + Updated: 09/07 06:07 +*/ + } + else + { + Bufferptr = Cmdprintf(Session, Bufferptr, "Routes to: %s:%s", Alias, Normcall); + + if (Dest->DEST_COUNT) + Bufferptr = Cmdprintf(Session, Bufferptr, " RTT=%4.2f FR=%d %c %.1d\r", + Dest->DEST_RTT /1000.0, Dest->DEST_COUNT, + (Dest->DEST_STATE & 0x40)? 'B':' ', (Dest->DEST_STATE & 63)); + else + Bufferptr = Cmdprintf(Session, Bufferptr, "\r"); + } NRRoute = &Dest->NRROUTE[0]; Active = Dest->DEST_ROUTE; @@ -3349,12 +3415,18 @@ char * DoOneNode(TRANSPORTENTRY * Session, char * Bufferptr, struct DEST_LIST * if (Neighbour) { double srtt = Route->STT/100.0; + TM = gmtime(&Route->LastRefreshed); + + +// TM->tm_yday, , TM->tm_sec, MH->MHFreq, LOC); + + len = ConvFromAX25(Neighbour->NEIGHBOUR_CALL, Normcall); Normcall[len] = 0; - Bufferptr = Cmdprintf(Session, Bufferptr, "%c %d %4.2fs %d %s\r", - (Active == i + 3)?'>':' ',Route->Hops, srtt, Neighbour->NEIGHBOUR_PORT, Normcall); + Bufferptr = Cmdprintf(Session, Bufferptr, "%c %d %4.2fs %d %s %02d:%02d\r", + (Active == i + 3)?'>':' ',Route->Hops, srtt, Neighbour->NEIGHBOUR_PORT, Normcall, TM->tm_hour, TM->tm_min); } Route++; } diff --git a/Debug/BuildLog.htm b/Debug/BuildLog.htm new file mode 100644 index 0000000..b4c2e48 Binary files /dev/null and b/Debug/BuildLog.htm differ diff --git a/Debug/NodeMapTest.exe.embed.manifest b/Debug/NodeMapTest.exe.embed.manifest new file mode 100644 index 0000000..4b15fbf --- /dev/null +++ b/Debug/NodeMapTest.exe.embed.manifest @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Debug/NodeMapTest.exe.embed.manifest.res b/Debug/NodeMapTest.exe.embed.manifest.res new file mode 100644 index 0000000..7b55d19 Binary files /dev/null and b/Debug/NodeMapTest.exe.embed.manifest.res differ diff --git a/Debug/NodeMapTest.exe.intermediate.manifest b/Debug/NodeMapTest.exe.intermediate.manifest new file mode 100644 index 0000000..b390755 --- /dev/null +++ b/Debug/NodeMapTest.exe.intermediate.manifest @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Debug/NodeMapTest.obj b/Debug/NodeMapTest.obj new file mode 100644 index 0000000..151037a Binary files /dev/null and b/Debug/NodeMapTest.obj differ diff --git a/Debug/mt.dep b/Debug/mt.dep new file mode 100644 index 0000000..18960d8 --- /dev/null +++ b/Debug/mt.dep @@ -0,0 +1 @@ +Manifest resource last updated at 13:39:54.21 on 22/06/2026 diff --git a/Debug/vc80.idb b/Debug/vc80.idb new file mode 100644 index 0000000..01da22c Binary files /dev/null and b/Debug/vc80.idb differ diff --git a/Debug/vc80.pdb b/Debug/vc80.pdb new file mode 100644 index 0000000..07052dd Binary files /dev/null and b/Debug/vc80.pdb differ diff --git a/Events.c b/Events.c index 5d8d1be..3abb9ba 100644 --- a/Events.c +++ b/Events.c @@ -752,7 +752,7 @@ void APIL2Trace(struct _MESSAGE * Message, char * Dirn) int NR; struct PORTCONTROL * PORT = GetPortTableEntryFromPortNum(Message->PORT); time_t Now = time(NULL); -#ifdef LINBPQ +#ifndef WIN32 struct timespec ts; #else FILETIME SystemTimeAsFileTime; @@ -782,7 +782,7 @@ void APIL2Trace(struct _MESSAGE * Message, char * Dirn) if ((Message->ORIGIN[6] & 1) == 0) // Digis - ignore for now return; -#ifdef LINBPQ +#ifndef WIN32 if (clock_gettime(CLOCK_REALTIME, &ts) == -1) NowMs = Now; diff --git a/HTTPcode.c b/HTTPcode.c index 2d4415c..d0e1417 100644 --- a/HTTPcode.c +++ b/HTTPcode.c @@ -480,7 +480,7 @@ VOID PollSession(struct HTTPConnectionInfo * Session) // Make sure line isn't too long // but beware of spaces expanded to   - count chars in line - if ((realLen) > 100) + if ((realLen) > 250) { strcpy(ptr2, "
\r\n"); @@ -701,7 +701,7 @@ void ProcessTermInput(SOCKET sock, char * MsgPtr, int MsgLen, char * Key) int State; struct HTTPConnectionInfo * Session = FindSession(Key); int Stream; - int maxlen = 1000; + int maxlen = 2000; if (Session == NULL) @@ -1818,8 +1818,10 @@ int InnerProcessHTTPMessage(struct ConnectionInfo * conn) "Content-Type: application/json\r\n" "Connection: close\r\n" "Access-Control-Allow-Origin: *\r\n" + "Cache-Control: no-cache\r\n" "%s\r\n", ReplyLen, Encoding); + sendandcheck(sock, Header, HeaderLen); sendandcheck(sock, Compressed, ReplyLen); @@ -2643,7 +2645,7 @@ doHeader: { // Save Config File - if (conn->LOCALAuth) + if (conn->LOCALAuth || COOKIE) SaveConfigFile(sock, MsgPtr, Key, LOCAL); else { diff --git a/HanksRT.c b/HanksRT.c index c828fd5..3645ff9 100644 --- a/HanksRT.c +++ b/HanksRT.c @@ -125,6 +125,10 @@ time_t RunningConnectScript = 0; struct HistoryRec * History = NULL; int HistoryCount = 0; +static FILE * LogHandle[4] = {NULL, NULL, NULL, NULL}; + +static time_t LastLogTime[4] = {0, 0, 0, 0}; + typedef int (WINAPI FAR *FARPROCX)(); extern FARPROCX pRunEventProgram; @@ -299,6 +303,7 @@ VOID __cdecl nprintf(ChatCIRCUIT * conn, const char * format, ...) va_start(arglist, format); vsnprintf(buff, sizeof(buff), format, arglist); + va_end(arglist); nputs(conn, buff); } @@ -332,8 +337,9 @@ int ChatQueueMsg(ChatCIRCUIT * conn, char * msg, int len) conn->u.link->lastMsgReceived = time(NULL); // UCHAR * OutputQueue; // Messages to user - // int OutputQueueLength; // Total Malloc'ed size. Also Put Pointer for next Message - // int OutputGetPointer; // Next byte to send. When Getpointer = Queue Length all is sent - free the buffer and start again. + // int OutputQueueSize; // Total Malloc'ed size + // int OutputQueueLength; // Bytes queued. Also Put Pointer for next Message + // int OutputGetPointer; // Next byte to send. When Getpointer = QueueLength all is sent - free the buffer and start again. // Create or extend buffer @@ -819,7 +825,7 @@ VOID ProcessChatLine(ChatCIRCUIT * conn, struct UserInfo * user, char* OrigBuffe while (ptr) { - nprintf(conn, ptr->Message); + nputs(conn, ptr->Message); ptr = ptr->next; } @@ -3290,6 +3296,7 @@ VOID ChatTimer() int i = 0; ChatCIRCUIT *c; + int n; #ifndef LINBPQ int len; @@ -3477,6 +3484,22 @@ VOID ChatTimer() node_keepalive(); } + // Flush logs + + for (n = 0; n < 4; n++) + { + if (LogHandle[n]) + { + time_t LT = time(NULL); + if ((LT - LastLogTime[n]) > 30) + { + LastLogTime[n] = LT; + fclose(LogHandle[n]); + LogHandle[n] = NULL; + } + } + } + FreeSemaphore(&ChatSemaphore); if (NeedINFO) @@ -4430,15 +4453,6 @@ VOID SendChatReport(SOCKET ChatReportSocket, char * buff, int txlen) #endif - -#ifndef WIN32 -#define INVALID_HANDLE_VALUE (void *)-1 -#endif - -static FILE * LogHandle[4] = {INVALID_HANDLE_VALUE, INVALID_HANDLE_VALUE, INVALID_HANDLE_VALUE, INVALID_HANDLE_VALUE}; - -static time_t LastLogTime[4] = {0, 0, 0, 0}; - static char FilesNames[4][100] = {"", "", "", ""}; static char * Logs[4] = {"BBS", "CHAT", "TCP", "DEBUG"}; @@ -4479,7 +4493,7 @@ void ChatWriteLogLine(ChatCIRCUIT * conn, int Flag, char * Msg, int MsgLen, int char CRLF[2] = {0x0d,0x0a}; struct tm * tm; char Stamp[20]; - time_t T; + time_t LT; #ifndef LINBPQ @@ -4516,12 +4530,12 @@ void ChatWriteLogLine(ChatCIRCUIT * conn, int Flag, char * Msg, int MsgLen, int if (Flags == LOG_CHAT && !LogCHAT) return; - if (LogHandle[Flags] == INVALID_HANDLE_VALUE) ChatOpenLogfile(Flags); + if (LogHandle[Flags] == NULL) ChatOpenLogfile(Flags); - if (LogHandle[Flags] == INVALID_HANDLE_VALUE) return; + if (LogHandle[Flags] == NULL) return; - T = time(NULL); - tm = gmtime(&T); + LT = time(NULL); + tm = gmtime(<); sprintf(Stamp,"%02d%02d%02d %02d:%02d:%02d %c", tm->tm_year-100, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, Flag); @@ -4544,8 +4558,14 @@ void ChatWriteLogLine(ChatCIRCUIT * conn, int Flag, char * Msg, int MsgLen, int else fwrite(CRLF, 1, 2, LogHandle[Flags]); - fclose(LogHandle[Flags]); - LogHandle[Flags] = INVALID_HANDLE_VALUE; + // Don't close/reopen logs every time + + if ((LT - LastLogTime[Flags]) > 30) + { + LastLogTime[Flags] = LT; + fclose(LogHandle[Flags]); + LogHandle[Flags] = NULL; + } } diff --git a/L2Code.c b/L2Code.c index c2953f4..48c93f6 100644 --- a/L2Code.c +++ b/L2Code.c @@ -283,6 +283,8 @@ VOID L2Routine(struct PORTCONTROL * PORT, PMESSAGE Buffer) } } + + BPQTRACE(Buffer, TRUE); // TRACE - RX frames to APRS if (PORT->PORTMHEARD) @@ -293,6 +295,14 @@ VOID L2Routine(struct PORTCONTROL * PORT, PMESSAGE Buffer) InOctets[PORT->PORTNUMBER] += Buffer->LENGTH - MSGHDDRLEN; + // Check Exclude List + + if (CheckExcludeList(Buffer->ORIGIN) == 0) + { + ReleaseBuffer(Buffer); + return; + } + // CHECK THAT ALL DIGIS HAVE BEEN ACTIONED, // AND ADJUST FOR DIGIPEATERS IF PRESENT diff --git a/L3Code.c b/L3Code.c index 2ca3d93..1d7cf67 100644 --- a/L3Code.c +++ b/L3Code.c @@ -1370,6 +1370,27 @@ VOID REMOVENODE(dest_list * DEST) } L4++; } + + if (DEST->XROptions) + { + XROptions * Options = DEST->XROptions; + + if (Options->LOC) + free(Options->LOC); + + if (Options->QTH) + free(Options->QTH); + + if (Options->Ver) + free(Options->Ver); + + if (Options->Optionslist) + free(Options->Optionslist); + + + free(DEST->XROptions); + } + memset(DEST, 0, sizeof(struct DEST_LIST)); NUMBEROFNODES--; diff --git a/L4Code.c b/L4Code.c index e146218..627f8b9 100644 --- a/L4Code.c +++ b/L4Code.c @@ -74,6 +74,7 @@ void IncomingL4ConnectionEvent(TRANSPORTENTRY * L4); void L4DisconnectEvent(TRANSPORTENTRY * L4, char * Direction, char * Reason); VOID TCPNETROMSend(struct ROUTE * Route, struct _L3MESSAGEBUFFER * Frame); void L4StatusSeport(TRANSPORTENTRY * L4); +void ProcessNCMPMsg(L3MESSAGEBUFFER * L3MSG); static UINT APPLMASK; @@ -2172,6 +2173,12 @@ VOID FRAMEFORUS(struct _LINKTABLE * LINK, L3MESSAGEBUFFER * L3MSG, int ApplMask, return; } + if (L3MSG->L4ID == 0x00 && L3MSG->L4INDEX == 0x0f) // Paula's NCMP + { + ProcessNCMPMsg(L3MSG); + return; + } + ReleaseBuffer(L3MSG); return; @@ -2820,3 +2827,46 @@ int CloseAllSessions() } return Closed; } + +// NCMP Code + +/* +|<--------------- NCMP Header -------------> +| -------------------------------------------------------------- +| L3hdr | Fam | Prot | Type | Code | 00 | (options) | (Payload) +|-------------------------------------------------------------- +Field Bytes Description------------------------------------------------------- +L3hdr 15 NET/ROM Layer 3 Header +Fam 1 Protocol Family = NET/ROM = 0x0f +Prot 1 Protocol = NCMP = 0x00 +Type 1 Type of NCMP packet (see below) +Code 1 Usage depends on "type". +Options var Additional fields present in some types only +Payload var Optional payload present in some types only + +The upper 4 bits of the TYPE are reserved for future expansion, and +are set to zero in this version. The lower 4 bits are the packet type +as follows: +Type Purpose +----------------------------------- +0 Probe Request +1 Probe Reply +2 Echo Request +3 Echo Reply +4 Routing Information Unicast +5 Destination Unreachable + +*/ + +void ProcessNCMPMsg(L3MESSAGEBUFFER * L3MSG) +{ + switch(L3MSG->L4TXNO & 15) + { + case 0: + break; + } + + ReleaseBuffer(L3MSG); + return; +} + diff --git a/MailTCP.c b/MailTCP.c index 37c7cf9..bd4874e 100644 --- a/MailTCP.c +++ b/MailTCP.c @@ -161,6 +161,7 @@ VOID __cdecl sockprintf(SocketConn * sockptr, const char * format, ...) va_start(arglist, format); vsprintf(buff, format, arglist); + va_end(arglist); SendSock(sockptr, buff); } diff --git a/NETROMTCP.c b/NETROMTCP.c index 47f5b57..109a272 100644 --- a/NETROMTCP.c +++ b/NETROMTCP.c @@ -66,8 +66,8 @@ extern SOCKET NodeAPISocket; struct NRTCPMsg { - short Length; - char Call[10]; + short Length; // Including header + char Call[10]; // of sending Node unsigned char PID; char Packet[1024]; }; diff --git a/NNTPRoutines.c b/NNTPRoutines.c index 1ceea42..87ba8f9 100644 --- a/NNTPRoutines.c +++ b/NNTPRoutines.c @@ -122,6 +122,7 @@ VOID __cdecl NNTPsockprintf(SocketConn * sockptr, const char * format, ...) va_start(arglist, format); vsprintf(buff, format, arglist); + va_end(arglist); NNTPSendSock(sockptr, buff); } diff --git a/NodeMapTest.c b/NodeMapTest.c index 7b0b735..23a80bb 100644 --- a/NodeMapTest.c +++ b/NodeMapTest.c @@ -965,7 +965,7 @@ int main(int argc, char * argv[]) restartTime = time(NULL) + 120; // Restart in 2 mins } - HostEnt2 = gethostbyname ("10.8.0.38"); + HostEnt2 = gethostbyname ("192.168.193.142"); if (HostEnt2) memcpy(&txaddr2.sin_addr.s_addr,HostEnt2->h_addr,4); @@ -1043,6 +1043,8 @@ int main(int argc, char * argv[]) continue; ret = sendto(sock, RXBUFFER, nLength, 0, (struct sockaddr *)&txaddr, sizeof(txaddr)); + +// ret = sendto(sock, RXBUFFER, nLength, 0, (struct sockaddr *)&txaddr2, sizeof(txaddr2)); if (ret == -1) perror("sendto 1"); @@ -1718,7 +1720,7 @@ void GenerateOutputFiles(time_t Now) if (Node->Lat != 0.0 && Node->Lon != 0.0 && Node->LastHeard == 0) Colour = 'B'; else - Colour ='0'; + continue; //Colour ='0'; } HeardString[0] = 0; diff --git a/PG/Keps.exe b/PG/Keps.exe new file mode 100644 index 0000000..5e2a219 Binary files /dev/null and b/PG/Keps.exe differ diff --git a/PG/Keps/Debug/BuildLog.htm b/PG/Keps/Debug/BuildLog.htm new file mode 100644 index 0000000..af7f8ab Binary files /dev/null and b/PG/Keps/Debug/BuildLog.htm differ diff --git a/PG/Keps/Debug/Keps.exe b/PG/Keps/Debug/Keps.exe new file mode 100644 index 0000000..cc539b0 Binary files /dev/null and b/PG/Keps/Debug/Keps.exe differ diff --git a/PG/Keps/Debug/Keps.exe.embed.manifest b/PG/Keps/Debug/Keps.exe.embed.manifest new file mode 100644 index 0000000..4b15fbf --- /dev/null +++ b/PG/Keps/Debug/Keps.exe.embed.manifest @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/PG/Keps/Debug/Keps.exe.embed.manifest.res b/PG/Keps/Debug/Keps.exe.embed.manifest.res new file mode 100644 index 0000000..7b55d19 Binary files /dev/null and b/PG/Keps/Debug/Keps.exe.embed.manifest.res differ diff --git a/PG/Keps/Debug/Keps.exe.intermediate.manifest b/PG/Keps/Debug/Keps.exe.intermediate.manifest new file mode 100644 index 0000000..b390755 --- /dev/null +++ b/PG/Keps/Debug/Keps.exe.intermediate.manifest @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/PG/Keps/Debug/Keps.ilk b/PG/Keps/Debug/Keps.ilk new file mode 100644 index 0000000..fa5aa29 Binary files /dev/null and b/PG/Keps/Debug/Keps.ilk differ diff --git a/PG/Keps/Debug/Keps.pdb b/PG/Keps/Debug/Keps.pdb new file mode 100644 index 0000000..7dc4c79 Binary files /dev/null and b/PG/Keps/Debug/Keps.pdb differ diff --git a/PG/Keps/Debug/keps.obj b/PG/Keps/Debug/keps.obj new file mode 100644 index 0000000..761d20a Binary files /dev/null and b/PG/Keps/Debug/keps.obj differ diff --git a/PG/Keps/Debug/mt.dep b/PG/Keps/Debug/mt.dep new file mode 100644 index 0000000..2e73cda --- /dev/null +++ b/PG/Keps/Debug/mt.dep @@ -0,0 +1 @@ +Manifest resource last updated at 16:03:43.43 on 18/06/2026 diff --git a/PG/Keps/Debug/vc80.idb b/PG/Keps/Debug/vc80.idb new file mode 100644 index 0000000..bfefffa Binary files /dev/null and b/PG/Keps/Debug/vc80.idb differ diff --git a/PG/Keps/Debug/vc80.pdb b/PG/Keps/Debug/vc80.pdb new file mode 100644 index 0000000..a4721dc Binary files /dev/null and b/PG/Keps/Debug/vc80.pdb differ diff --git a/PG/Keps/Keps.cpp b/PG/Keps/Keps.cpp new file mode 100644 index 0000000..5d78bdb --- /dev/null +++ b/PG/Keps/Keps.cpp @@ -0,0 +1,11 @@ +// Keps.cpp : Defines the entry point for the console application. +// + +#include "stdafx.h" + + +int _tmain(int argc, _TCHAR* argv[]) +{ + return 0; +} + diff --git a/PG/Keps/Keps.ncb b/PG/Keps/Keps.ncb new file mode 100644 index 0000000..83b0b5c Binary files /dev/null and b/PG/Keps/Keps.ncb differ diff --git a/PG/Keps/Keps.sln b/PG/Keps/Keps.sln new file mode 100644 index 0000000..274d457 --- /dev/null +++ b/PG/Keps/Keps.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual C++ Express 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Keps", "Keps.vcproj", "{A445DECF-B1C0-48A3-9227-E0A0C66EB0F5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A445DECF-B1C0-48A3-9227-E0A0C66EB0F5}.Debug|Win32.ActiveCfg = Debug|Win32 + {A445DECF-B1C0-48A3-9227-E0A0C66EB0F5}.Debug|Win32.Build.0 = Debug|Win32 + {A445DECF-B1C0-48A3-9227-E0A0C66EB0F5}.Release|Win32.ActiveCfg = Release|Win32 + {A445DECF-B1C0-48A3-9227-E0A0C66EB0F5}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/PG/Keps/Keps.suo b/PG/Keps/Keps.suo new file mode 100644 index 0000000..cb94351 Binary files /dev/null and b/PG/Keps/Keps.suo differ diff --git a/PG/Keps/Keps.vcproj b/PG/Keps/Keps.vcproj new file mode 100644 index 0000000..d2d2e9d --- /dev/null +++ b/PG/Keps/Keps.vcproj @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PG/Keps/ReadMe.txt b/PG/Keps/ReadMe.txt new file mode 100644 index 0000000..559aab5 --- /dev/null +++ b/PG/Keps/ReadMe.txt @@ -0,0 +1,33 @@ +======================================================================== + CONSOLE APPLICATION : Keps Project Overview +======================================================================== + +AppWizard has created this Keps application for you. + +This file contains a summary of what you will find in each of the files that +make up your Keps application. + + +Keps.vcproj + This is the main project file for VC++ projects generated using an Application Wizard. + It contains information about the version of Visual C++ that generated the file, and + information about the platforms, configurations, and project features selected with the + Application Wizard. + +Keps.cpp + This is the main application source file. + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named Keps.pch and a precompiled types file named StdAfx.obj. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" comments to indicate parts of the source code you +should add to or customize. + +///////////////////////////////////////////////////////////////////////////// diff --git a/PG/keps.c b/PG/keps.c new file mode 100644 index 0000000..0d3f05b --- /dev/null +++ b/PG/keps.c @@ -0,0 +1,493 @@ +/* + * SATPG.C + * + * Compile: + * gcc satpg.c -o satpg -lm + * + */ + +#include +#include +#include +#define _USE_MATH_DEFINES +#include +#include + +#define MAXSATS 256 +#define MAXNAME 64 + +#define KEPFILE "d:\keps.txt" + +typedef struct +{ + char name[MAXNAME]; + char l1[128]; + char l2[128]; + + double inc; + double mm; + +} SAT; + +SAT sats[MAXSATS]; +int satcount = 0; + +/* ------------------------------------------------ */ + +void trim(char *s) +{ + int l = strlen(s); + + while(l > 0 && + (s[l-1] == '\n' || s[l-1] == '\r')) + { + s[l-1] = 0; + l--; + } +} + +/* ------------------------------------------------ */ +void load_tles(void) +{ + FILE *fp; + char name[256]; + char l1[256]; + char l2[256]; + + int i; + int dup; + + fp = fopen(KEPFILE, "r"); + + if(!fp) + { + printf("Cannot open %s\n", KEPFILE); + exit(127); + return; + } + + while(fgets(name, sizeof(name), fp)) + { + trim(name); + + /* + * Skip blank lines + */ + + if(strlen(name) < 1) + continue; + + /* + * Ignore lines beginning with: + * 1 + * 2 + * # + */ + + if(name[0] == '1' || + name[0] == '2' || + name[0] == '#') + continue; + + /* + * Try reading TLE pair + */ + + if(!fgets(l1, sizeof(l1), fp)) + break; + + if(!fgets(l2, sizeof(l2), fp)) + break; + + trim(l1); + trim(l2); + + /* + * Validate TLE lines + */ + + if(strncmp(l1, "1 ", 2) != 0) + continue; + + if(strncmp(l2, "2 ", 2) != 0) + continue; + + /* + * Duplicate filter + */ + + dup = 0; + + for(i=0;i= MAXSATS) + break; + } + + fclose(fp); +} + +/* ------------------------------------------------ */ + +char *az_to_text(double az) +{ + if(az < 22.5) return "N"; + if(az < 67.5) return "NE"; + if(az < 112.5) return "E"; + if(az < 157.5) return "SE"; + if(az < 202.5) return "S"; + if(az < 247.5) return "SW"; + if(az < 292.5) return "W"; + if(az < 337.5) return "NW"; + + return "N"; +} + +#include + +#define DEG2RAD (M_PI / 180.0) +#define RAD2DEG (180.0 / M_PI) + +/* + * Observer location + * Mitcham UK example + */ + +#define OBS_LAT 51.40 +#define OBS_LON -0.16 + +/* + * Earth / GEO constants + */ + +#define EARTH_RADIUS 6378.137 +#define GEO_RADIUS 42164.0 + +/* + * Extract sub-satellite longitude + * + * For GEO satellites: + * longitude ≈ RAAN + Mean Anomaly + */ + +double get_geo_longitude(SAT *s) +{ + double raan; + double mean_anom; + double lon; + /* + * TLE line 2 fields: + * + * 2 NNNNN INC RAAN ECC ARGP MA MM + */ + + sscanf(s->l2, + "2 %*d %*lf %lf %*s %*lf %lf", + &raan, + &mean_anom); + + lon = raan + mean_anom; + + while(lon > 180.0) + lon -= 360.0; + + while(lon < -180.0) + lon += 360.0; + + return lon; +} + +/* + * Real GEO az/el calculation + */ + +void fake_track(SAT *s, + double *az, + double *el, + double *rng) +{ + double sat_lon = get_geo_longitude(s); + + double obs_lat = OBS_LAT * DEG2RAD; + double obs_lon = OBS_LON * DEG2RAD; + + double sat_lon_rad = sat_lon * DEG2RAD; + + /* + * GEO satellite position + */ + + double xs = GEO_RADIUS * cos(sat_lon_rad); + double ys = GEO_RADIUS * sin(sat_lon_rad); + double zs = 0.0; + + /* + * Observer position + */ + + double xo = EARTH_RADIUS * + cos(obs_lat) * + cos(obs_lon); + + double yo = EARTH_RADIUS * + cos(obs_lat) * + sin(obs_lon); + + double zo = EARTH_RADIUS * + sin(obs_lat); + + /* + * Vector observer -> satellite + */ + + double dx = xs - xo; + double dy = ys - yo; + double dz = zs - zo; + + *rng = sqrt(dx*dx + dy*dy + dz*dz); + + /* + * ENU conversion + */ + + double east = + -sin(obs_lon)*dx + + cos(obs_lon)*dy; + + double north = + -sin(obs_lat)*cos(obs_lon)*dx + -sin(obs_lat)*sin(obs_lon)*dy + +cos(obs_lat)*dz; + + double up = + cos(obs_lat)*cos(obs_lon)*dx + +cos(obs_lat)*sin(obs_lon)*dy + +sin(obs_lat)*dz; + + *az = atan2(east, north) * RAD2DEG; + + if(*az < 0) + *az += 360.0; + + *el = atan2(up, + sqrt(east*east + north*north)) + * RAD2DEG; +} + + + + +void draw_plot(double az, double el) +{ + char g[9][34]; + int r,c; + + int x,y; + + for(r=0;r<9;r++) + { + for(c=0;c<33;c++) + g[r][c] = ' '; + + g[r][33] = 0; + } + + strcpy(g[0], " N"); + strcpy(g[4], "W --------------+-------------- E"); + strcpy(g[8], " S"); + + double radius = (90.0 - el) / 90.0; + + double ang = (az - 90.0) * M_PI / 180.0; + + x = 16 + (int)(radius * 12 * cos(ang)); + y = 4 + (int)(radius * 4 * sin(ang)); + + if(x >=0 && x < 33 && y >=0 && y < 9) + g[y][x] = '*'; + + putchar('\r'); + putchar('\n'); + + for(r=0;r<9;r++) + printf("%s\r\n", g[r]); + + putchar('\r'); + putchar('\n'); +} + +/* ------------------------------------------------ */ + +void show_sat(SAT *s) +{ + double az,el,rng; + + fake_track(s, &az, &el, &rng); + + if(el > 0) + printf("%s GOOD\r\n", s->name); + else + printf("%s NOT VISIBLE\r\n", s->name); + + printf("AZ %.0f (%s)\r\n", + az, + az_to_text(az)); + + if(el > 0) + printf("EL %.0f deg\r\n", el); + else + printf("EL BELOW HORIZON\r\n"); + + printf("RNG %.0f km\r\n", rng); + + putchar('\r'); + putchar('\n'); + + + if(el > 0) + { + printf("Aim antenna: %s ", + az_to_text(az)); + + if(el < 15) + printf("low.\r\n"); + else if(el < 45) + printf("mid sky.\r\n"); + else + printf("high.\r\n"); + } + else + { + printf("Satellite below horizon.\r\n"); + } + + draw_plot(az, el); + + if(s->inc > 95 && s->inc < 100) + printf("Sun-synchronous polar LEO\r\n"); + + printf("%.2f orbits/day\r\n", s->mm); +} + +/* ------------------------------------------------ */ + +SAT *find_sat(char *s) +{ + int i; + + for(i=0;iFrom Orbital Analysis Office +New England Sci-Tech STEM Education Center +Natick MA May 11, 2026 +To all radio amateurs + + +These element sets describe the orbits of various satellites +in use by the amateur radio community. For details see: +www.amsat.org/keplerian-elements-formats/ + +A daily update of element sets is available at: +www.amsat.org/tle/daily-bulletin.txt +or without bulletin text: +www.amsat.org/tle/dailytle.txt + + +AO-07 +1 07530U 74089B 26131.02828537 -.00000034 00000-0 74901-4 0 9994 +2 07530 101.9918 143.8856 0012125 200.3561 181.7211 12.53697443355861 +UO-11 +1 14781U 84021B 26131.16982026 .00000814 00000-0 88631-4 0 9996 +2 14781 97.8036 97.1668 0006433 315.7966 44.2738 14.90694568251611 +AO-27 +1 22825U 93061C 26131.14983863 .00000053 00000-0 37296-4 0 9992 +2 22825 98.6892 198.5733 0007951 201.7057 158.3790 14.30931926701709 +FO-29 +1 24278U 96046B 26131.19510852 -.00000039 00000-0 -39487-5 0 9992 +2 24278 98.5281 345.1264 0349635 192.2765 166.9689 13.53272291468160 +GO-32 +1 25397U 98043D 26130.97598956 .00000047 00000-0 40585-4 0 9997 +2 25397 99.0063 122.7983 0001113 16.9991 343.1224 14.24421003446035 +ISS +1 25544U 98067A 26131.16675675 .00005444 00000-0 10622-3 0 9997 +2 25544 51.6310 123.3566 0007470 46.3627 313.7980 15.49181925566014 +NO-44 +1 26931U 01043C 26131.00137205 .00000080 00000-0 60839-4 0 9998 +2 26931 67.0514 340.4519 0006302 263.6567 96.3818 14.31941390285126 +SO-50 +1 27607U 02058C 26130.72927866 .00000748 00000-0 10595-3 0 9998 +2 27607 64.5524 244.8702 0075633 269.3097 89.9342 14.82966856258901 +CO-55 +1 27844U 03031E 26131.01616769 .00000204 00000-0 10731-3 0 9992 +2 27844 98.6748 140.0418 0008393 297.0013 63.0309 14.24312209186387 +RS-22 +1 27939U 03042A 26131.21083887 .00000216 00000-0 41663-4 0 9992 +2 27939 98.3476 314.5273 0011983 31.7180 78.9279 14.73399817210104 +CO-65 +1 32785U 08021C 26131.18755762 .00002730 00000-0 17633-3 0 9995 +2 32785 97.8261 111.8524 0009927 145.2461 214.9417 15.09096632979613 +CO-66 +1 32791U 08021J 26130.97235940 .00011027 00000-0 36525-3 0 9999 +2 32791 97.7530 127.1344 0005072 88.5832 271.5989 15.31474077981597 +RS-30 +1 32953U 08025A 26131.15903073 .00000054 00000-0 31835-3 0 9990 +2 32953 82.5069 18.4727 0020382 34.2439 325.9951 12.43178165815098 +SRMSAT +1 37841U 11058D 26131.13066574 .00000368 00000-0 55753-4 0 9999 +2 37841 19.9728 283.7690 0011716 156.0441 18.8473 14.11567394752571 +ZACUBE-1 +1 39417U 13066B 26131.14341808 .00003157 00000-0 24836-3 0 9994 +2 39417 97.8120 93.2797 0042131 17.8518 342.4174 15.00898646675179 +Delfi-N3xt +1 39428U 13066N 26131.02786888 .00004744 00000-0 41984-3 0 9990 +2 39428 97.8338 51.3844 0074392 331.6894 28.0292 14.94656030669079 +GOMX-1 +1 39430U 13066Q 26131.14073843 .00001400 00000-0 21676-3 0 9998 +2 39430 97.6512 333.9391 0128259 195.8918 163.8248 14.69313597664477 +LO-74 +1 39440U 13066AA 26131.14980934 .00002328 00000-0 21960-3 0 9993 +2 39440 97.8888 79.9863 0058762 148.6845 211.7896 14.93485032671463 +AO-73 +1 39444U 13066AE 26131.19361385 .00005682 00000-0 35839-3 0 9991 +2 39444 97.8258 101.8861 0035647 332.4449 27.4889 15.09004761674080 +DTUSAT-2 +1 40030U 14033W 26130.98092610 .00004624 00000-0 25480-3 0 9993 +2 40030 98.0872 126.3629 0008117 15.8774 344.2709 15.14529000647059 +LILACSAT-2 +1 40908U 15049K 26131.17016306 .00011634 00000-0 20748-3 0 9996 +2 40908 97.4702 166.6320 0007792 43.1441 317.0419 15.50216690590013 +Horyu-4 +1 41340U 16012D 26130.90637118 .00131902 00000-0 74753-3 0 9994 +2 41340 30.9896 348.4205 0005704 6.7696 353.3037 15.77528373564899 +Lapan A3 +1 41603U 16040E 26131.24557346 .00002464 00000-0 79828-4 0 9998 +2 41603 97.1491 128.6139 0011542 140.0792 220.1302 15.32870423549152 +CAS-2T +1 41847U 16066G 26131.18412439 .00000509 00000-0 81632-4 0 9996 +2 41847 98.3824 207.3390 0341016 241.7460 114.8921 14.44588827499451 +TechnoSat +1 42829U 17042E 26131.01233461 .00001411 00000-0 10409-3 0 9996 +2 42829 97.4239 290.1013 0016826 216.9132 143.0938 15.04724250481117 +AO-91 +1 43017U 17073E 26131.09060397 .00005996 00000-0 26415-3 0 9990 +2 43017 97.4765 359.0772 0154222 96.6340 265.2471 15.12032600459782 +S-Net D +1 43186U 18014G 26131.11497268 .00002740 00000-0 14474-3 0 9993 +2 43186 97.5389 36.1420 0009430 137.7075 222.4887 15.16318970453148 +S-Net B +1 43187U 18014H 26131.19169547 .00002761 00000-0 14591-3 0 9991 +2 43187 97.5394 36.2040 0010151 134.0553 226.1518 15.16289962453158 +S-Net A +1 43188U 18014J 26131.18002576 .00002596 00000-0 13728-3 0 9996 +2 43188 97.5404 36.3942 0010040 134.5870 225.6183 15.16325838453152 +S-Net C +1 43189U 18014K 26131.19537149 .00002851 00000-0 15054-3 0 9995 +2 43189 97.5421 36.4784 0011550 129.0934 231.1328 15.16281125451706 +Ten-Koh +1 43677U 18084G 26131.10435024 .00000760 00000-0 61802-4 0 9994 +2 43677 98.0772 321.9114 0008001 238.0924 121.9521 15.02773723410597 +PO-101 +1 43678U 18084H 26131.15579828 .00001902 00000-0 15692-3 0 9995 +2 43678 98.1100 325.7784 0012111 299.1757 60.8253 15.00266531410661 +QO-100 +1 43700U 18090A 26131.11564321 .00000155 00000-0 00000-0 0 9999 +2 43700 0.0033 75.2010 0001627 8.7258 212.4418 1.00273235 27300 +MinXSS-2 +1 43758U 18099A 26131.18881920 .00022285 00000-0 48164-3 0 9999 +2 43758 97.4545 206.4613 0007687 49.9798 310.2123 15.44489493408419 +AO-95 +1 43770U 18099N 26131.10130148 .00007590 00000-0 29846-3 0 9992 +2 43770 97.4408 191.5040 0010413 116.7346 243.4959 15.25898855407566 +SNUSat 2 +1 43782U 18099AA 26131.11021086 .00005455 00000-0 24677-3 0 9991 +2 43782 97.4089 185.0750 0011797 70.9847 289.2666 15.21262664407396 +SnugLite +1 43784U 18099AC 26131.11290757 .00007562 00000-0 29362-3 0 9993 +2 43784 97.3899 185.7766 0004280 76.8149 283.3567 15.26360439407668 +ITASat 1 +1 43786U 18099AE 26131.12685726 .00004158 00000-0 20392-3 0 9992 +2 43786 97.4060 183.3865 0014282 119.5348 240.7313 15.18571210407280 +EAGLET 1 +1 43790U 18099AJ 26131.07765206 .00002933 00000-0 17114-3 0 9990 +2 43790 97.4260 181.7317 0012814 112.1030 248.1562 15.12650734406726 +ESEO +1 43792U 18099AL 26131.06045373 .00001673 00000-0 12464-3 0 9990 +2 43792 97.3995 170.0352 0013322 99.6548 260.6184 15.04126416406220 +JO-97 +1 43803U 18099AX 26131.15127351 .00010391 00000-0 33361-3 0 9996 +2 43803 97.4154 193.8880 0006563 56.1584 304.0282 15.32471929407953 +Suomi 100 +1 43804U 18099AY 26131.13954280 .00007164 00000-0 26810-3 0 9999 +2 43804 97.4213 191.6912 0011151 58.7267 301.5063 15.27555792407760 +ISAT +1 43879U 18111D 26130.74947674 .00048674 00000-0 61630-3 0 9991 +2 43879 97.5895 63.2824 0008440 88.2362 271.9860 15.59311726405323 +UWE-4 +1 43880U 18111E 26131.03648958 .00020592 00000-0 45454-3 0 9994 +2 43880 97.5851 57.7861 0010721 97.9534 262.2930 15.43852796405049 +Sparrow +1 43881U 18111F 26131.08640255 .00076251 00000-0 75641-3 0 9996 +2 43881 97.6118 68.6977 0007664 110.2677 249.9406 15.65516907405556 +Prox-1 +1 44339U 19036A 26130.95960472 .00008466 00000-0 83345-3 0 9996 +2 44339 23.9966 2.7467 0006462 323.1483 36.8572 14.89731402367914 +Taurus 1 +1 44530U 19059C 26131.19338833 .00002738 00000-0 44797-3 0 9995 +2 44530 98.6391 293.7450 0009485 73.1672 287.0573 14.71688993353207 +TO-108 +1 44881U 19093C 26131.15656832 .00000724 00000-0 87928-4 0 9997 +2 44881 97.7533 204.2903 0012857 203.2455 156.8181 14.86457625345915 +RS-44 +1 44909U 19096E 26131.10347560 .00000010 00000-0 -10444-5 0 9990 +2 44909 82.5243 4.3509 0216605 230.9343 127.2311 12.79748087297601 +SALSAT +1 46495U 20068K 26130.98568909 .00005135 00000-0 18361-3 0 9996 +2 46495 97.8863 131.8035 0011580 76.8104 283.4426 15.29246502309673 +CSS (TIANHE-1) +1 48274U 21035A 26131.17664318 .00014757 00000-0 16684-3 0 9997 +2 48274 41.4670 187.1184 0004323 286.6334 73.4031 15.62137381287386 +CUTE +1 49263U 21088D 26131.19481488 .00135544 00000-0 78838-3 0 9998 +2 49263 97.4193 227.3703 0001335 277.9495 82.1620 15.78091657256694 +TeikyoSat 4 +1 49396U 21102B 26131.06353934 .00000998 00000-0 66173-4 0 9996 +2 49396 97.3700 161.9887 0013588 64.8246 295.4391 15.09373351247120 +Z-Sat +1 49399U 21102E 26131.15472941 .00002509 00000-0 12629-3 0 9995 +2 49399 97.3360 167.6038 0017235 22.6619 337.5373 15.17981670247828 +KOSEN 1 +1 49402U 21102H 26131.04088000 .00004594 00000-0 17937-3 0 9990 +2 49402 97.3222 173.9286 0012998 346.2844 13.8039 15.26320628248353 +HO-113 +1 50466U 21131B 26131.19252443 .00000212 00000-0 79252-4 0 9996 +2 50466 98.4951 223.7863 0003730 192.3468 167.7630 14.41321109229780 +SNUGLITE 2 +1 52899U 22065F 26131.13163480 .00000636 00000-0 12980-3 0 9995 +2 52899 98.2152 276.0399 0008471 134.2292 225.9607 14.64276471205573 +UmKA 1 (RS40S) +1 57172U 23091G 26131.17665898 .00003876 00000-0 18088-3 0 9992 +2 57172 97.5075 190.0238 0011429 244.8930 115.1119 15.20390618158386 +CubeBel-2 (EU11S) +1 57175U 23091K 26131.20005564 .00007318 00000-0 26808-3 0 9991 +2 57175 97.5073 194.1091 0008792 239.5277 120.5094 15.28283727158655 +RS-38S +1 57189U 23091Z 26131.19498866 .00010571 00000-0 31497-3 0 9990 +2 57189 97.5109 199.9714 0007487 190.9899 169.1182 15.34845194159012 +SONATE-2 +1 59112U 24043Q 26131.12679378 .00026625 00000-0 38211-3 0 9996 +2 59112 97.5494 279.3411 0006062 339.5693 20.5318 15.56091583122127 +GRBBeta +1 60237U 24128C 26130.91713484 .00002522 00000-0 18156-3 0 9999 +2 60237 61.9910 346.9978 0045504 126.9629 233.5644 15.06330418100655 +Curium One +1 60242U 24128H 26131.14068698 .00005464 00000-0 32270-3 0 9992 +2 60242 61.9799 336.9263 0045175 123.1924 237.3516 15.11910084100854 +ROBUSTA-3A +1 60243U 24128J 26131.15129132 .00004784 00000-0 29043-3 0 9993 +2 60243 61.9875 339.1574 0046325 120.7932 239.7735 15.11089418100824 +CatSat +1 60246U 24125J 26130.65834471 .00032801 00000-0 48984-3 0 9992 +2 60246 97.2134 342.7865 0021671 323.1152 36.8611 15.54702145101556 +HYPERVIEW-1G (RS66S) +1 61772U 24199AP 26131.18910102 .00070537 00000-0 64140-3 0 9993 +2 61772 97.2951 9.2799 0007750 68.0159 292.1925 15.67708392128865 +AO-123 +1 61781U 24199AY 26131.14701627 .00005061 00000-0 15024-3 0 9996 +2 61781 97.3054 0.1577 0015895 83.3073 276.9979 15.35126490128247 +JINJUSat 1B +1 63210U 25052A 26131.13283679 .00010563 00000-0 34056-3 0 9994 +2 63210 97.4039 27.8649 0002743 176.6079 183.5182 15.32348291 64426 +NUSHSAT 1 +1 63211U 25052B 26131.16717502 .00012102 00000-0 36395-3 0 9994 +2 63211 97.4020 28.3464 0002418 174.1836 185.9435 15.34531535 64469 +TEVEL2-4 +1 63213U 25052D 26131.19399235 .00011427 00000-0 35724-3 0 9992 +2 63213 97.3944 27.5551 0001369 179.2477 180.8768 15.33315562 64444 +TEVEL2-5 +1 63214U 25052E 26130.94950516 .00010812 00000-0 33989-3 0 9998 +2 63214 97.3942 27.2685 0001337 177.4534 182.6716 15.33154657 64402 +TEVEL2-6 +1 63215U 25052F 26130.69985694 .00010998 00000-0 34614-3 0 9997 +2 63215 97.3944 27.0038 0001361 185.8938 174.2288 15.33112431 64363 +TEVEL2-1 +1 63217U 25052H 26131.17351758 .00010799 00000-0 34505-3 0 9999 +2 63217 97.3915 27.1439 0000874 207.6246 152.4950 15.32634673 64429 +TEVEL2-3 +1 63218U 25052J 26131.16939257 .00010761 00000-0 34333-3 0 9993 +2 63218 97.3918 27.1573 0000842 209.9970 150.1224 15.32682225 64421 +TEVEL2-2 +1 63219U 25052K 26131.17400360 .00011085 00000-0 35402-3 0 9991 +2 63219 97.3917 27.1462 0000871 212.1904 147.9285 15.32641148 64423 +TEVEL2-9 +1 63237U 25052AD 26130.64737083 .00010342 00000-0 35029-3 0 9997 +2 63237 97.3979 26.0735 0004018 277.0962 82.9822 15.30756771 64289 +TEVEL2-7 +1 63238U 25052AE 26131.20450175 .00009633 00000-0 32908-3 0 9999 +2 63238 97.3983 26.5593 0004126 273.8598 86.2171 15.30500428 64360 +TEVEL2-8 +1 63239U 25052AF 26130.95081800 .00009476 00000-0 32399-3 0 9995 +2 63239 97.3982 26.2849 0004099 276.5700 83.5075 15.30477477 64321 +HYDRA-W +1 63490U 25052BL 26113.93882235 .05662091 24406-5 29537-2 0 9997 +2 63490 97.3690 18.2798 0008685 203.5899 156.4993 16.20186780 62336 +HADES-ICM (SO-125) +1 63492U 25052BN 26130.71186245 .00582006 13575-3 17880-2 0 9995 +2 63492 97.3752 34.6178 0008453 168.0198 192.1279 15.91770935 64874 +SPIRONE +1 66657U 25274H 26131.20400206 .00001421 00000-0 14060-3 0 9999 +2 66657 97.7477 61.0302 0013275 132.2234 228.0115 14.93390226 24701 +K-HERO +1 66660U 25274L 26130.75014592 .00001609 00000-0 15676-3 0 9993 +2 66660 97.7484 60.7163 0015020 138.3573 221.8794 14.93816999 24644 +SNUGLITE-III DURI +1 66661U 25274M 26130.80610814 .00001200 00000-0 11812-3 0 9994 +2 66661 97.7479 60.7906 0015607 139.4574 220.7812 14.93870292 24654 +SilverSat +1 66909U 98067XV 26113.44966717 .07226154 12288-4 11979-2 0 9998 +2 66909 51.6027 190.0749 0007952 333.4666 26.5949 16.32457272 22308 +SAKHACUBE-CHOLBON +1 67290U 25313AU 26130.68176839 .00006594 00000-0 27315-3 0 9993 +2 67290 97.3936 206.2042 0010846 124.8732 235.3527 15.24193958 20269 +RS95S (QMR-KWT-2) +1 67291U 25313AV 26131.15979301 .00009386 00000-0 37484-3 0 9992 +2 67291 97.3937 206.7831 0010564 123.0824 237.1430 15.25307641 20341 +Ten-Koh2 +1 68261U 25241B 26131.02320169 .00004301 00000-0 19201-3 0 9997 +2 68261 51.6530 136.4472 0006189 27.6825 332.4482 15.23411345 9246 +JACK-002 +1 68417U 26067B 26130.87978863 .00004513 00000-0 21937-3 0 9993 +2 68417 97.4540 89.9518 0003823 70.3588 289.8059 15.18925136 6282 +DISCO 2 +1 68431U 26067R 26131.15543764 .00004682 00000-0 23006-3 0 9995 +2 68431 97.4579 90.2163 0004201 108.4262 251.7429 15.18527090 6325 +HADES-SA (SpinnyONE) +1 68446U 26067AG 26130.85561726 .00010054 00000-0 49990-3 0 9995 +2 68446 97.4386 89.7549 0006654 183.6763 176.4423 15.17813078 6266 +PARUS-6U1 +1 68456U 26067AS 26130.86167129 .00003315 00000-0 17050-3 0 9990 +2 68456 97.4528 89.8177 0005599 173.6121 186.5185 15.17124485 6272 +SAL-E +1 68458U 26067AU 26131.12495887 .00004338 00000-0 22143-3 0 9992 +2 68458 97.4453 90.0397 0005556 181.6692 178.4524 15.17227047 6314 +FSI-SAT 2 +1 68792U 26088A 26131.16059718 .00003319 00000-0 22821-3 0 9990 +2 68792 97.5023 281.3688 0013603 230.4942 129.5084 15.06525503 2714 +OrigamiSat 2 +1 68795U 26088D 26131.14301078 .00002157 00000-0 14396-3 0 9997 +2 68795 97.5033 281.3946 0015254 201.8928 158.1650 15.07988141 2714 +ARICA 2 +1 68796U 26088E 26131.20807513 .00002756 00000-0 18220-3 0 9995 +2 68796 97.5018 281.4561 0015325 199.9200 160.1431 15.08113805 2720 +WASEDA-SAT-ZERO-II +1 68797U 26088F 26131.14104507 .00003803 00000-0 24928-3 0 9998 +2 68797 97.5017 281.3920 0015280 199.8384 160.2253 15.08201180 2716 +MANGARO-II-Piscus +1 68798U 26088G 26131.13703227 .00002346 00000-0 15388-3 0 9993 +2 68798 97.5024 281.3998 0018610 203.9200 156.1166 15.08499209 2712 +IO-86 +1 40931U 25360.30710720 .00000000 00000-0 12800-3 0 00 +2 40931 6.0006 332.5373 0012733 338.8432 8.1437 14.79075515 01 +LILIUM-4 +1 71922C 26067AC 26089.50133053 -.00014632 00000+0 -74472-3 0 04 +2 71922 97.4497 49.1617 0004341 5.9603 355.7042 15.16896692 16 + +/EX +SB KEPS @ WW < CX2SA $ORB26121.1 +2Line Orbital Elements 26121.AMSAT +R:260511/0338Z 4228@GB7BWR.#45.GBR.EURO LinBPQ6.0.25 +R:260511/0319Z 9146@GB7BEX.#38.GBR.EURO LinBPQ6.0.25 +R:260511/0258Z 53957@EI2GYB.DGL.IRL.EURO LinBPQ6.0.25 +R:260508/0137Z 25437@CT1EBQ.CTLX.PRT.EU LinBPQ6.0.25 +R:260508/0039Z 1768@K4WOF.FL.USA.NOAM LinBPQ6.0.24 +R:260508/0029Z 49569@KD4WLE.#SFL.FL.USA.NOAM LinBPQ6.0.23 +R:260508/0029Z 30999@N2MH4.#SENC.NC.USA.NOAM LinBPQ6.0.24 +R:260508/0028Z 4114@N3HYM.#FRDK.MD.USA.NOAM BPQ6.0.25 +R:260508/0024Z @:CX2SA.SAL.URY.SOAM #:64816 [Salto] FBB7.00e $:ORB26121.1 + +From: CX2SA@CX2SA.SAL.URY.SOAM +To : KEPS@AMSAT + + +QST de W1STR + +AMSAT Orbital Elements for Amateur Satellites in TLE Format +>From Orbital Analysis Office +New England Sci-Tech STEM Education Center +Natick MA May 01, 2026 +To all radio amateurs + + +These element sets describe the orbits of various satellites +in use by the amateur radio community. For details see: +www.amsat.org/keplerian-elements-formats/ + +A daily update of element sets is available at: +www.amsat.org/tle/daily-bulletin.txt +or without bulletin text: +www.amsat.org/tle/dailytle.txt + + +AO-07 +1 07530U 74089B 26120.59626755 -.00000031 00000-0 96085-4 0 9996 +2 07530 101.9926 133.3432 0011994 220.6153 258.4322 12.53697390354550 +UO-11 +1 14781U 84021B 26120.63125062 .00001359 00000-0 14431-3 0 9996 +2 14781 97.8024 86.7520 0007351 353.7891 6.3235 14.90668042250043 +AO-27 +1 22825U 93061C 26120.59124487 .00000109 00000-0 58602-4 0 9994 +2 22825 98.6901 188.0163 0007443 235.3832 124.6649 14.30928987700195 +FO-29 +1 24278U 96046B 26120.47426956 .00000013 00000-0 50669-4 0 9996 +2 24278 98.5296 335.8670 0349180 220.1294 137.3578 13.53271984466712 +GO-32 +1 25397U 98043D 26120.43948020 .00000063 00000-0 47326-4 0 9996 +2 25397 99.0062 111.9975 0001611 35.8621 324.2665 14.24418789444537 +ISS +1 25544U 98067A 26120.52250176 .00006189 00000-0 12023-3 0 9994 +2 25544 51.6315 176.0292 0007158 7.8188 352.2911 15.49033593564362 +NO-44 +1 26931U 01043C 26120.38474986 .00000155 00000-0 88631-4 0 9990 +2 26931 67.0526 7.9102 0006454 264.0053 96.0313 14.31937124283603 +SO-50 +1 27607U 02058C 26120.61380811 .00001265 00000-0 16633-3 0 9992 +2 27607 64.5517 276.1629 0075618 271.1171 88.1272 14.82940590257400 +CO-55 +1 27844U 03031E 26120.61928520 .00000312 00000-0 15395-3 0 9998 +2 27844 98.6753 129.7745 0008876 330.4565 29.6111 14.24305462184908 +RS-22 +1 27939U 03042A 26120.61250030 .00000739 00000-0 12220-3 0 9996 +2 27939 98.3465 303.6310 0012451 62.4503 25.9615 14.73379983208547 +CO-65 +1 32785U 08021C 26120.57822720 .00004835 00000-0 30988-3 0 9991 +2 32785 97.8249 101.0318 0008844 179.6083 180.5154 15.08992068978015 +CO-66 +1 32791U 08021J 26120.45175439 .00020092 00000-0 67012-3 0 9994 +2 32791 97.7523 116.1352 0005105 108.3124 251.8672 15.31103491979987 +RS-30 +1 32953U 08025A 26120.53591584 .00000028 00000-0 12623-3 0 9995 +2 32953 82.5081 25.0777 0020601 56.2206 304.0833 12.43177720813777 +SRMSAT +1 37841U 11058D 26120.64063082 .00000431 00000-0 90343-4 0 9999 +2 37841 19.9736 347.2598 0011744 41.3226 351.6382 14.11564464751099 +ZACUBE-1 +1 39417U 13066B 26120.40955899 .00005584 00000-0 43585-3 0 9990 +2 39417 97.8125 82.4893 0043675 53.2749 307.2473 15.00793807673560 +Delfi-N3xt +1 39428U 13066N 26120.51689157 .00009440 00000-0 83129-3 0 9998 +2 39428 97.8353 40.8915 0075595 6.9012 353.3230 14.94487301667503 +GOMX-1 +1 39430U 13066Q 26120.51682591 .00001486 00000-0 23032-3 0 9995 +2 39430 97.6519 323.9831 0127688 230.2625 128.7276 14.69275071662918 +LO-74 +1 39440U 13066AA 26120.42970364 .00002755 00000-0 25964-3 0 9990 +2 39440 97.8881 69.2303 0057709 184.2052 175.8690 14.93419487669867 +AO-73 +1 39444U 13066AE 26120.45083755 .00009895 00000-0 62276-3 0 9995 +2 39444 97.8252 90.9324 0037047 9.4409 350.7507 15.08828815672461 +DTUSAT-2 +1 40030U 14033W 26120.47559618 .00007927 00000-0 43552-3 0 9991 +2 40030 98.0858 115.2001 0009109 47.4202 312.7795 15.14375567645468 +LILACSAT-2 +1 40908U 15049K 26120.58300029 .00017927 00000-0 32241-3 0 9999 +2 40908 97.4716 155.6566 0008657 73.9776 286.2428 15.49864518588370 +Horyu-4 +1 41340U 16012D 26120.52098681 .00145472 00000-0 94490-3 0 9994 +2 41340 30.9895 62.4942 0006347 279.9281 80.0658 15.74401799563258 +Lapan A3 +1 41603U 16040E 26120.60475993 .00003919 00000-0 12595-3 0 9996 +2 41603 97.1486 118.3273 0010337 175.3397 184.7944 15.32791975547524 +CAS-2T +1 41847U 16066G 26120.44803345 .00000652 00000-0 10193-3 0 9995 +2 41847 98.3830 196.7230 0340924 274.4340 81.7982 14.44572896497905 +TechnoSat +1 42829U 17042E 26120.50527841 .00003377 00000-0 24373-3 0 9994 +2 42829 97.4236 280.0028 0016074 254.9274 105.0174 15.04665469479531 +AO-91 +1 43017U 17073E 26120.56760982 .00009642 00000-0 42505-3 0 9997 +2 43017 97.4776 348.7762 0154191 132.5723 228.8640 15.11842589458199 +S-Net D +1 43186U 18014G 26120.62208442 .00005397 00000-0 28254-3 0 9993 +2 43186 97.5403 25.7182 0008374 171.0906 189.0477 15.16218583451559 +S-Net B +1 43187U 18014H 26120.30262479 .00005079 00000-0 26629-3 0 9990 +2 43187 97.5408 25.3861 0009103 168.5071 191.6371 15.16186010451506 +S-Net A +1 43188U 18014J 26120.62119372 .00005622 00000-0 29407-3 0 9990 +2 43188 97.5417 25.9026 0009011 168.1712 191.9734 15.16225280451556 +S-Net C +1 43189U 18014K 26120.30623640 .00004941 00000-0 25913-3 0 9995 +2 43189 97.5435 25.6569 0010559 163.4871 196.6708 15.16177368450059 +Ten-Koh +1 43677U 18084G 26120.51726923 .00002211 00000-0 17038-3 0 9992 +2 43677 98.0790 310.8788 0007393 279.4851 80.5537 15.02737140409006 +PO-101 +1 43678U 18084H 26120.61768073 .00002281 00000-0 18741-3 0 9995 +2 43678 98.1069 314.7988 0012905 334.2272 25.8306 15.00213077409084 +QO-100 +1 43700U 18090A 26120.49191795 .00000147 00000-0 00000-0 0 9990 +2 43700 0.0137 266.9736 0001700 165.7205 348.6817 1.00277015 27199 +MinXSS-2 +1 43758U 18099A 26120.17251933 .00037732 00000-0 83193-3 0 9995 +2 43758 97.4564 195.1661 0008699 86.6211 273.6032 15.43781740406710 +AO-95 +1 43770U 18099N 26120.14912640 .00011872 00000-0 46841-3 0 9991 +2 43770 97.4423 180.6034 0009975 149.6725 210.5092 15.25656511405890 +SNUSat 2 +1 43782U 18099AA 26120.58539330 .00008411 00000-0 38053-3 0 9994 +2 43782 97.4102 174.7178 0012112 102.8902 257.3688 15.21092225405796 +SnugLite +1 43784U 18099AC 26120.62301173 .00012502 00000-0 48672-3 0 9997 +2 43784 97.3910 175.3995 0004544 100.4524 259.7227 15.26124840406062 +ITASat 1 +1 43786U 18099AE 26120.58347617 .00006702 00000-0 32799-3 0 9995 +2 43786 97.4069 173.0576 0013689 152.7861 207.4093 15.18431286405688 +EAGLET 1 +1 43790U 18099AJ 26120.55936735 .00004708 00000-0 27311-3 0 9990 +2 43790 97.4273 171.4926 0012265 144.7087 215.4959 15.12566969405132 +ESEO +1 43792U 18099AL 26120.61579705 .00001029 00000-0 78379-4 0 9993 +2 43792 97.4011 160.0364 0013386 130.1813 230.0587 15.04094766404653 +JO-97 +1 43803U 18099AX 26120.44163872 .00018306 00000-0 59148-3 0 9999 +2 43803 97.4165 183.1590 0007243 87.0718 273.1353 15.32125843406318 +Suomi 100 +1 43804U 18099AY 26120.13373230 .00012858 00000-0 48218-3 0 9999 +2 43804 97.4227 180.7383 0011754 92.7798 267.4787 15.27309788406081 +ISAT +1 43879U 18111D 26120.34894173 .00079102 00000-0 10536-2 0 9999 +2 43879 97.5909 52.1910 0008783 107.0035 253.2183 15.57836101403707 +UWE-4 +1 43880U 18111E 26120.27520350 .00033104 00000-0 74416-3 0 9996 +2 43880 97.5865 46.5727 0010273 127.1071 233.1116 15.43217639403384 +Sparrow +1 43881U 18111F 26120.59753454 .00099918 00000-0 10698-2 0 9991 +2 43881 97.6130 57.3785 0007214 124.0858 236.1086 15.63499996403913 +Prox-1 +1 44339U 19036A 26120.10770695 .00015990 00000-0 16095-2 0 9995 +2 44339 23.9953 75.1193 0006557 194.7556 165.2752 14.89453634366293 +Taurus 1 +1 44530U 19059C 26120.51868634 .00006853 00000-0 11100-2 0 9999 +2 44530 98.6370 282.4197 0009795 103.7836 256.4460 14.71565351351635 +TO-108 +1 44881U 19093C 26120.52066606 .00000444 00000-0 56246-4 0 9998 +2 44881 97.7552 193.9138 0012137 241.5791 118.4202 14.86439991344338 +RS-44 +1 44909U 19096E 26120.62724622 .00000020 00000-0 41717-4 0 9999 +2 44909 82.5258 11.3107 0216386 255.5417 102.1587 12.79747949296264 +SALSAT +1 46495U 20068K 26120.45042489 .00008489 00000-0 30299-3 0 9996 +2 46495 97.8854 120.6367 0011665 107.7663 252.4849 15.29083608308068 +CSS (TIANHE-1) +1 48274U 21035A 26120.31498218 .00029313 00000-0 31348-3 0 9993 +2 48274 41.4672 253.4465 0006644 301.0493 58.9694 15.63205886285684 +CUTE +1 49263U 21088D 26120.53091714 .00069674 00000-0 46542-3 0 9990 +2 49263 97.4199 215.9528 0000987 140.2514 219.8823 15.75129279255012 +TeikyoSat 4 +1 49396U 21102B 26120.58887221 .00001607 00000-0 10437-3 0 9991 +2 49396 97.3707 151.9191 0013791 96.7285 263.5514 15.09333694245540 +Z-Sat +1 49399U 21102E 26120.60743559 .00003184 00000-0 15971-3 0 9992 +2 49399 97.3371 157.3769 0018284 57.0424 303.2565 15.17894011246226 +KOSEN 1 +1 49402U 21102H 26120.35427331 .00007974 00000-0 31043-3 0 9995 +2 49402 97.3231 163.4537 0014218 24.4601 335.7309 15.26167390246729 +HO-113 +1 50466U 21131B 26120.64050645 .00000611 00000-0 20260-3 0 9991 +2 50466 98.4957 213.2950 0003091 229.5193 130.5727 14.41311187228267 +SNUGLITE 2 +1 52899U 22065F 26120.40315336 .00001130 00000-0 22348-3 0 9991 +2 52899 98.2133 265.3385 0007852 164.8498 195.2941 14.64255007204006 +UmKA 1 (RS40S) +1 57172U 23091G 26120.58016625 .00006350 00000-0 29519-3 0 9994 +2 57172 97.5088 179.4714 0011251 287.0872 72.9131 15.20274303156774 +CubeBel-2 (EU11S) +1 57175U 23091K 26120.52691763 .00013004 00000-0 47745-3 0 9998 +2 57175 97.5087 183.3529 0008427 283.7278 76.3023 15.28041078157024 +RS-38S +1 57189U 23091Z 26120.63236377 .00016695 00000-0 50090-3 0 9997 +2 57189 97.5120 189.2157 0006493 229.9986 130.0687 15.34517994157394 +SONATE-2 +1 59112U 24043Q 26120.38537620 .00040443 00000-0 59507-3 0 9990 +2 59112 97.5479 267.9964 0006534 23.0616 337.0930 15.55323705120453 +GRBBeta +1 60237U 24128C 26120.16300868 .00004275 00000-0 29747-3 0 9998 +2 60237 61.9921 24.7077 0046692 124.5499 236.0014 15.06246315 99036 +Curium One +1 60242U 24128H 26120.29369250 .00008622 00000-0 50299-3 0 9994 +2 60242 61.9807 15.3042 0046210 121.0787 239.4856 15.11735121 99216 +ROBUSTA-3A +1 60243U 24128J 26120.43079215 .00008504 00000-0 50698-3 0 9992 +2 60243 61.9886 17.0301 0047317 118.5531 242.0339 15.10923460 99207 +CatSat +1 60246U 24125J 26120.61478375 .00050071 00000-0 77163-3 0 9994 +2 60246 97.2135 332.6735 0023070 2.7620 357.3757 15.53715587 99995 +HYPERVIEW-1G (RS66S) +1 61772U 24199AP 26120.58751286 .00086956 00000-0 84989-3 0 9996 +2 61772 97.2978 358.2776 0009065 96.0705 264.1588 15.65839180127204 +AO-123 +1 61781U 24199AY 26120.58680085 .00008300 00000-0 24609-3 0 9994 +2 61781 97.3069 349.6955 0015733 116.8757 243.4097 15.34966487126623 +JINJUSat 1B +1 63210U 25052A 26120.22642149 .00017291 00000-0 56137-3 0 9992 +2 63210 97.4060 16.9607 0001350 231.0785 129.0337 15.32008456 62753 +NUSHSAT 1 +1 63211U 25052B 26120.60214753 .00021160 00000-0 64215-3 0 9997 +2 63211 97.4041 17.7521 0001015 230.4217 129.6936 15.34123011 62846 +TEVEL2-4 +1 63213U 25052D 26120.62070811 .00018444 00000-0 58131-3 0 9997 +2 63213 97.3962 16.9829 0000347 316.1175 44.0040 15.32945027 62824 +TEVEL2-5 +1 63214U 25052E 26120.44039566 .00019688 00000-0 62327-3 0 9993 +2 63214 97.3960 16.7632 0000428 311.7824 48.3381 15.32791045 62795 +TEVEL2-6 +1 63215U 25052F 26120.64742009 .00019145 00000-0 60679-3 0 9995 +2 63215 97.3962 16.9554 0000497 308.8887 51.2311 15.32759360 62829 +TEVEL2-1 +1 63217U 25052H 26120.46497484 .00019231 00000-0 61874-3 0 9995 +2 63217 97.3936 16.4513 0001070 345.5359 14.5852 15.32275390 62785 +TEVEL2-3 +1 63218U 25052J 26120.65708406 .00018565 00000-0 59650-3 0 9994 +2 63218 97.3940 16.6597 0001080 343.6471 16.4736 15.32327642 62814 +TEVEL2-2 +1 63219U 25052K 26120.66141397 .00018724 00000-0 60232-3 0 9991 +2 63219 97.3937 16.6490 0001079 344.9311 15.1898 15.32287401 62811 +TEVEL2-9 +1 63237U 25052AD 26120.44881295 .00017886 00000-0 60935-3 0 9993 +2 63237 97.4000 15.9099 0004769 328.4859 31.6096 15.30434540 62722 +TEVEL2-7 +1 63238U 25052AE 26120.21958078 .00016618 00000-0 57106-3 0 9991 +2 63238 97.4003 15.6165 0004923 329.3629 30.7323 15.30168799 62682 +TEVEL2-8 +1 63239U 25052AF 26120.61966130 .00016204 00000-0 55704-3 0 9997 +2 63239 97.3999 15.9936 0004839 329.1455 30.9500 15.30162602 62749 +HYDRA-W +1 63490U 25052BL 26113.93882235 .05662091 24406-5 29537-2 0 9997 +2 63490 97.3690 18.2798 0008685 203.5899 156.4993 16.20186780 62336 +HADES-ICM (SO-125) +1 63492U 25052BN 26120.17329350 .00491395 00000-0 25041-2 0 9994 +2 63492 97.3820 23.2455 0004471 153.3500 206.7998 15.80099034 63200 +SPIRONE +1 66657U 25274H 26120.34934002 .00002844 00000-0 27630-3 0 9995 +2 66657 97.7475 50.3354 0012444 165.8106 194.3466 14.93345709 23084 +K-HERO +1 66660U 25274L 26120.36747734 .00002099 00000-0 20302-3 0 9996 +2 66660 97.7485 50.4787 0014087 171.0409 189.1065 14.93779785 23093 +SNUGLITE-III DURI +1 66661U 25274M 26120.35685624 .00002143 00000-0 20688-3 0 9992 +2 66661 97.7479 50.4870 0014695 172.7075 187.4361 14.93838391 23091 +SilverSat +1 66909U 98067XV 26113.44966717 .07226154 12288-4 11979-2 0 9998 +2 66909 51.6027 190.0749 0007952 333.4666 26.5949 16.32457272 22308 +SAKHACUBE-CHOLBON +1 67290U 25313AU 26120.43968107 .00010040 00000-0 41674-3 0 9997 +2 67290 97.3951 196.1010 0010296 156.8142 203.3562 15.23992200 18703 +RS95S (QMR-KWT-2) +1 67291U 25313AV 26120.20320033 .00015023 00000-0 60321-3 0 9999 +2 67291 97.3951 195.9575 0010147 156.6625 203.5076 15.25010223 18672 +Ten-Koh2 +1 68261U 25241B 26120.39561297 .00006717 00000-0 29306-3 0 9994 +2 68261 51.6489 187.0004 0005788 350.6255 9.4613 15.23280865 7620 +JACK-002 +1 68417U 26067B 26120.60240878 .00006891 00000-0 33446-3 0 9990 +2 68417 97.4536 79.8143 0004160 88.1169 272.0541 15.18786870 4723 +DISCO 2 +1 68431U 26067R 26120.61171038 .00009311 00000-0 45617-3 0 9991 +2 68431 97.4573 79.8175 0003643 127.1484 233.0084 15.18362870 4723 +HADES-SA (SpinnyONE) +1 68446U 26067AG 26120.57008563 .00020045 00000-0 10023-2 0 9993 +2 68446 97.4381 79.6489 0005169 226.6246 133.4558 15.17460741 4700 +PARUS-6U1 +1 68456U 26067AS 26120.57217281 .00006302 00000-0 32207-3 0 9992 +2 68456 97.4522 79.6979 0004404 212.8364 147.2597 15.17010219 4719 +SAL-E +1 68458U 26067AU 26120.57221831 .00008539 00000-0 43438-3 0 9992 +2 68458 97.4447 79.6698 0004323 225.0140 135.0744 15.17068978 4717 +FSI-SAT 2 +1 68792U 26088A 26115.68414791 .00000849 00000-0 61705-4 0 9995 +2 68792 97.4990 266.2992 0012809 287.5176 72.4651 15.06389719 389 +OrigamiSat 2 +1 68795U 26088D 26113.82356135 .00001590 00000-0 10758-3 0 9994 +2 68795 97.5008 264.4888 0014430 266.4157 93.5420 15.07861282 103 +ARICA 2 +1 68796U 26088E 26113.82352201 .00001593 00000-0 10752-3 0 9992 +2 68796 97.4989 264.4863 0014541 264.6248 95.3321 15.07951070 103 +WASEDA-SAT-ZERO-II +1 68797U 26088F 26113.82350997 .00001596 00000-0 10767-3 0 9992 +2 68797 97.5012 264.4822 0014814 262.4592 97.4954 15.07975758 102 +MANGARO-II-Piscus +1 68798U 26088G 26113.82334568 .00001591 00000-0 10611-3 0 9992 +2 68798 97.4999 264.4888 0017891 266.9056 93.0125 15.08353756 101 +IO-86 +1 40931U 25360.30710720 .00000000 00000-0 12800-3 0 00 +2 40931 6.0006 332.5373 0012733 338.8432 8.1437 14.79075515 01 +LILIUM-4 +1 71922C 26067AC 26089.50133053 -.00014632 00000+0 -74472-3 0 04 +2 71922 97.4497 49.1617 0004341 5.9603 355.7042 15.16896692 16 + + +/EX +SB KEPS @ AMSAT < CX2SA $ORB26135.1 +2Line Orbital Elements 26135.AMSAT +R:260522/0052Z 4549@GB7BWR.#45.GBR.EURO LinBPQ6.0.25 +R:260522/0035Z 9490@GB7BEX.#38.GBR.EURO LinBPQ6.0.25 +R:260522/0030Z 54405@EI2GYB.DGL.IRL.EURO LinBPQ6.0.25 +R:260522/0026Z 43865@PY2BIL.SP.BRA.SOAM LinBPQ6.0.25 +R:260522/0025Z @:PI8ZTM.#ZH1.NLD.EURO #:54808 [Den Haag] $:ORB26135.1 +R:260522/0024Z @:CX2SA.SAL.URY.SOAM #:65323 [Salto] FBB7.00e $:ORB26135.1 + +From: CX2SA@CX2SA.SAL.URY.SOAM +To : KEPS@AMSAT + + +QST de W1STR + +AMSAT Orbital Elements for Amateur Satellites in TLE Format +>From Orbital Analysis Office +New England Sci-Tech STEM Education Center +Natick MA May 15, 2026 +To all radio amateurs + + +These element sets describe the orbits of various satellites +in use by the amateur radio community. For details see: +www.amsat.org/keplerian-elements-formats/ + +A daily update of element sets is available at: +www.amsat.org/tle/daily-bulletin.txt +or without bulletin text: +www.amsat.org/tle/dailytle.txt + + +AO-07 +1 07530U 74089B 26133.98839295 -.00000029 00000-0 11198-3 0 9996 +2 07530 101.9916 146.8769 0012162 194.6235 221.6905 12.53697521356232 +UO-11 +1 14781U 84021B 26133.45203940 .00000849 00000-0 92245-4 0 9995 +2 14781 97.8037 99.4225 0006305 306.6451 53.4187 14.90698287251951 +AO-27 +1 22825U 93061C 26134.15658796 .00000052 00000-0 36628-4 0 9997 +2 22825 98.6891 201.5796 0008118 192.5267 167.5715 14.30932491702133 +FO-29 +1 24278U 96046B 26134.30046802 -.00000004 00000-0 30803-4 0 9990 +2 24278 98.5276 347.8080 0349782 184.2162 175.6010 13.53272399468584 +GO-32 +1 25397U 98043D 26133.50474968 .00000028 00000-0 32496-4 0 9996 +2 25397 99.0065 125.3907 0000980 12.1123 348.0079 14.24421378446394 +ISS +1 25544U 98067A 26134.19858747 .00005122 00000-0 10032-3 0 9994 +2 25544 51.6312 108.3512 0007536 56.9254 303.2457 15.49211692566485 +NO-44 +1 26931U 01043C 26133.93490749 .00000059 00000-0 52955-4 0 9993 +2 26931 67.0511 332.8642 0006272 263.6520 96.3868 14.31942229285543 +SO-50 +1 27607U 02058C 26134.23594171 .00000640 00000-0 93285-4 0 9996 +2 27607 64.5522 234.0223 0075638 268.6719 90.5721 14.82972548259428 +CO-55 +1 27844U 03031E 26134.31787272 .00000206 00000-0 10816-3 0 9992 +2 27844 98.6747 143.3023 0008318 286.1175 73.9088 14.24313873186853 +RS-22 +1 27939U 03042A 26134.33663374 .00000002 00000-0 86089-5 0 9998 +2 27939 98.3472 317.7414 0011794 22.4638 98.2678 14.73402987210568 +CO-65 +1 32785U 08021C 26134.23763764 .00003466 00000-0 22257-3 0 9990 +2 32785 97.8259 114.9634 0010094 136.5210 223.6816 15.09113918980077 +CO-66 +1 32791U 08021J 26133.97786064 .00012151 00000-0 40134-3 0 9990 +2 32791 97.7520 130.2774 0004981 82.4291 277.7515 15.31540490982056 +RS-30 +1 32953U 08025A 26134.29767731 .00000034 00000-0 17279-3 0 9991 +2 32953 82.5074 16.5212 0020288 27.6935 332.5221 12.43177971815485 +SRMSAT +1 37841U 11058D 26134.09968181 .00000362 00000-0 52346-4 0 9991 +2 37841 19.9722 265.7987 0011653 188.7625 346.2641 14.11567924752990 +ZACUBE-1 +1 39417U 13066B 26134.14345633 .00003059 00000-0 24077-3 0 9995 +2 39417 97.8119 96.2956 0041717 7.6658 352.5194 15.00915790675622 +Delfi-N3xt +1 39428U 13066N 26134.30818915 .00004810 00000-0 42554-3 0 9999 +2 39428 97.8346 54.6598 0073953 320.6626 38.9235 14.94684418669565 +GOMX-1 +1 39430U 13066Q 26134.27339645 .00001039 00000-0 16277-3 0 9999 +2 39430 97.6514 336.8752 0128534 185.7789 174.1943 14.69319713664936 +LO-74 +1 39440U 13066AA 26134.29875776 .00001615 00000-0 15402-3 0 9991 +2 39440 97.8892 83.1463 0058903 138.5094 222.0619 14.93496311671934 +AO-73 +1 39444U 13066AE 26134.24384963 .00004978 00000-0 31443-3 0 9991 +2 39444 97.8260 104.9971 0035212 321.9795 37.8948 15.09034476674542 +DTUSAT-2 +1 40030U 14033W 26134.21824912 .00004516 00000-0 24883-3 0 9997 +2 40030 98.0863 129.8030 0007782 4.8197 355.3107 15.14554811647544 +LILACSAT-2 +1 40908U 15049K 26134.26846532 .00012366 00000-0 21992-3 0 9996 +2 40908 97.4693 169.8442 0007493 33.2688 326.9033 15.50284138590498 +Horyu-4 +1 41340U 16012D 26133.68948449 .00132750 00000-0 72995-3 0 9992 +2 41340 30.9895 328.5167 0005336 30.7718 329.3251 15.78201025565331 +Lapan A3 +1 41603U 16040E 26134.31370172 .00002365 00000-0 76693-4 0 9996 +2 41603 97.1485 131.5800 0011807 130.3018 229.9259 15.32884089549623 +CAS-2T +1 41847U 16066G 26134.23181294 .00000570 00000-0 90011-4 0 9996 +2 41847 98.3825 210.3525 0341118 232.4686 124.5057 14.44592529499896 +TechnoSat +1 42829U 17042E 26134.00479889 .00001804 00000-0 13188-3 0 9997 +2 42829 97.4240 292.9770 0017106 206.8425 153.1918 15.04734717481562 +AO-91 +1 43017U 17073E 26133.14210923 .00005670 00000-0 24989-3 0 9993 +2 43017 97.4759 1.0860 0154122 89.6523 272.2366 15.12056379460097 +S-Net D +1 43186U 18014G 26134.28253071 .00003444 00000-0 18094-3 0 9990 +2 43186 97.5393 39.2895 0009663 128.1975 232.0130 15.16337653453624 +S-Net B +1 43187U 18014H 26134.29332240 .00003280 00000-0 17260-3 0 9990 +2 43187 97.5399 39.2857 0010383 124.5559 235.6655 15.16307702453621 +S-Net A +1 43188U 18014J 26134.28157859 .00003445 00000-0 18093-3 0 9999 +2 43188 97.5408 39.4765 0010272 125.2685 234.9510 15.16344520453629 +S-Net C +1 43189U 18014K 26134.23102415 .00003190 00000-0 16798-3 0 9990 +2 43189 97.5426 39.4957 0011761 119.8182 240.4222 15.16298311452164 +Ten-Koh +1 43677U 18084G 26134.10066264 .00000667 00000-0 54802-4 0 9991 +2 43677 98.0761 325.0332 0008350 227.6253 132.4264 15.02778496411042 +PO-101 +1 43678U 18084H 26134.29049394 .00001658 00000-0 13746-3 0 9999 +2 43678 98.1106 329.0456 0011918 288.1786 71.8138 15.00277600411130 +QO-100 +1 43700U 18090A 26134.25271515 .00000158 00000-0 00000-0 0 9990 +2 43700 0.0139 274.4063 0001542 173.6669 260.7626 1.00274771 27338 +MinXSS-2 +1 43758U 18099A 26134.16897497 .00024708 00000-0 53149-3 0 9997 +2 43758 97.4553 209.5181 0007363 39.8460 320.3328 15.44611401408872 +AO-95 +1 43770U 18099N 26134.11781633 .00008247 00000-0 32363-3 0 9995 +2 43770 97.4409 194.5063 0010477 107.6536 252.5847 15.25940468408022 +SNUSat 2 +1 43782U 18099AA 26134.13592128 .00005327 00000-0 24086-3 0 9998 +2 43782 97.4087 188.0526 0011635 61.7034 298.5374 15.21292362407853 +SnugLite +1 43784U 18099AC 26134.12851138 .00007239 00000-0 28086-3 0 9996 +2 43784 97.3899 188.7598 0004133 70.1415 290.0268 15.26401246408121 +ITASat 1 +1 43786U 18099AE 26134.09204254 .00004905 00000-0 23980-3 0 9990 +2 43786 97.4058 186.2914 0014368 110.4835 249.7944 15.18595661407735 +EAGLET 1 +1 43790U 18099AJ 26134.12058776 .00002334 00000-0 13688-3 0 9993 +2 43790 97.4260 184.6939 0012892 102.7823 257.4849 15.12665712407183 +ESEO +1 43792U 18099AL 26134.05410037 .00001637 00000-0 12207-3 0 9990 +2 43792 97.3998 172.9013 0013404 90.5694 269.7068 15.04136573406676 +JO-97 +1 43803U 18099AX 26134.15484223 .00010782 00000-0 34544-3 0 9991 +2 43803 97.4156 196.8973 0006276 47.2093 312.9676 15.32531303408418 +Suomi 100 +1 43804U 18099AY 26134.15278514 .00007203 00000-0 26925-3 0 9994 +2 43804 97.4216 194.6902 0010903 49.1800 311.0383 15.27596799408221 +ISAT +1 43879U 18111D 26134.27860950 .00056210 00000-0 70169-3 0 9996 +2 43879 97.5900 67.0511 0008131 79.9769 280.2404 15.59657906405870 +UWE-4 +1 43880U 18111E 26134.27711341 .00021932 00000-0 48184-3 0 9992 +2 43880 97.5862 61.1649 0010663 88.7366 271.5103 15.43979830405549 +Sparrow +1 43881U 18111F 26134.28189242 .00083407 00000-0 81206-3 0 9990 +2 43881 97.6124 72.1523 0007667 104.6129 255.5981 15.65962548406055 +Prox-1 +1 44339U 19036A 26133.90675889 .00008940 00000-0 88071-3 0 9997 +2 44339 23.9965 343.0870 0006559 357.6910 2.3558 14.89775846368357 +Taurus 1 +1 44530U 19059C 26134.32086882 .00002167 00000-0 35626-3 0 9994 +2 44530 98.6384 297.0637 0009370 64.5135 295.7038 14.71710768353662 +TO-108 +1 44881U 19093C 26134.25307692 .00000011 00000-0 73020-5 0 9996 +2 44881 97.7540 207.3118 0013076 192.4072 167.6824 14.86460090346378 +RS-44 +1 44909U 19096E 26134.15254353 .00000027 00000-0 69631-4 0 9993 +2 44909 82.5239 2.3248 0216682 223.7721 134.6028 12.79748134297991 +SALSAT +1 46495U 20068K 26133.99559253 .00005344 00000-0 19079-3 0 9991 +2 46495 97.8855 134.9940 0011457 67.8052 292.4401 15.29276426310132 +CSS (TIANHE-1) +1 48274U 21035A 26133.47815923 .00012315 00000-0 13972-3 0 9997 +2 48274 41.4670 173.0841 0004122 296.9881 63.0537 15.62173368287749 +CUTE +1 49263U 21088D 26134.23778351 .00131280 00000-0 73961-3 0 9999 +2 49263 97.4194 230.6379 0001701 276.2054 83.9019 15.78818867257176 +TeikyoSat 4 +1 49396U 21102B 26134.04679020 .00001172 00000-0 77045-4 0 9999 +2 49396 97.3697 164.8564 0013457 55.7579 304.4923 15.09380746247579 +Z-Sat +1 49399U 21102E 26134.31882510 .00002516 00000-0 12662-3 0 9998 +2 49399 97.3357 170.6723 0016941 11.9378 348.2254 15.17994705248309 +KOSEN 1 +1 49402U 21102H 26134.05657551 .00005025 00000-0 19577-3 0 9999 +2 49402 97.3217 176.8844 0012668 335.0334 25.0290 15.26347695248811 +HO-113 +1 50466U 21131B 26134.31646506 .00000130 00000-0 53898-4 0 9997 +2 50466 98.4958 226.8927 0003949 182.5581 177.5588 14.41322913230238 +SNUGLITE 2 +1 52899U 22065F 26134.27498682 .00000614 00000-0 12551-3 0 9998 +2 52899 98.2156 279.1757 0008599 125.6699 234.5305 14.64280683206038 +UmKA 1 (RS40S) +1 57172U 23091G 26134.26992365 .00003795 00000-0 17706-3 0 9993 +2 57172 97.5075 193.1041 0011627 232.9896 127.0276 15.20412499158851 +CubeBel-2 (EU11S) +1 57175U 23091K 26134.27733789 .00007675 00000-0 28065-3 0 9991 +2 57175 97.5074 197.2104 0009036 227.1006 132.9476 15.28326108159125 +RS-38S +1 57189U 23091Z 26134.25911095 .00011170 00000-0 33198-3 0 9990 +2 57189 97.5111 203.0920 0007787 180.5665 179.5571 15.34905076159484 +SONATE-2 +1 59112U 24043Q 26133.37741957 .00025296 00000-0 36180-3 0 9994 +2 59112 97.5493 281.7198 0005913 330.7378 29.3544 15.56195234122476 +GRBBeta +1 60237U 24128C 26133.90430372 .00002765 00000-0 19753-3 0 9996 +2 60237 61.9905 336.5219 0045211 127.6054 232.9156 15.06346661101106 +Curium One +1 60242U 24128H 26134.24908623 .00005651 00000-0 33316-3 0 9997 +2 60242 61.9790 325.9266 0044666 124.0363 236.4986 15.11941919101322 +ROBUSTA-3A +1 60243U 24128J 26134.12903920 .00005248 00000-0 31713-3 0 9991 +2 60243 61.9867 328.6362 0045854 121.4904 239.0684 15.11118441101271 +CatSat +1 60246U 24125J 26134.19807845 .00037481 00000-0 55474-3 0 9991 +2 60246 97.2123 346.3542 0021333 309.0135 50.9220 15.54930068102107 +HYPERVIEW-1G (RS66S) +1 61772U 24199AP 26134.25255325 .00077649 00000-0 69426-3 0 9996 +2 61772 97.2949 12.4640 0007234 59.6934 300.5042 15.68105068129347 +AO-123 +1 61781U 24199AY 26134.27579381 .00005429 00000-0 16085-3 0 9999 +2 61781 97.3050 3.2580 0015805 73.3731 286.9247 15.35157471128727 +JINJUSat 1B +1 63210U 25052A 26134.20195039 .00010748 00000-0 34582-3 0 9996 +2 63210 97.4049 30.9349 0003120 167.0393 193.0929 15.32407586 64891 +NUSHSAT 1 +1 63211U 25052B 26134.23191203 .00013241 00000-0 39701-3 0 9998 +2 63211 97.4027 31.4212 0002801 165.0419 195.0907 15.34604895 64932 +TEVEL2-4 +1 63213U 25052D 26133.21703508 .00010651 00000-0 33272-3 0 9993 +2 63213 97.3947 29.5787 0001655 172.7980 187.3286 15.33358313 64757 +TEVEL2-5 +1 63214U 25052E 26134.27805638 .00012159 00000-0 38099-3 0 9995 +2 63214 97.3949 30.5973 0001748 170.1471 189.9805 15.33225860 64912 +TEVEL2-6 +1 63215U 25052F 26134.22429804 .00011655 00000-0 36578-3 0 9998 +2 63215 97.3950 30.5284 0001820 174.0630 186.0634 15.33187265 64904 +TEVEL2-1 +1 63217U 25052H 26134.24205557 .00011401 00000-0 36339-3 0 9993 +2 63217 97.3923 30.2093 0001265 189.7444 170.3773 15.32696559 64898 +TEVEL2-3 +1 63218U 25052J 26134.23783428 .00011527 00000-0 36683-3 0 9992 +2 63218 97.3926 30.2230 0001233 191.3858 168.7356 15.32745490 64895 +TEVEL2-2 +1 63219U 25052K 26134.24252871 .00011801 00000-0 37595-3 0 9995 +2 63219 97.3924 30.2115 0001231 193.1651 166.9559 15.32703860 64895 +TEVEL2-9 +1 63237U 25052AD 26134.24260618 .00010629 00000-0 35918-3 0 9997 +2 63237 97.3986 29.6576 0004079 257.4982 102.5802 15.30825002 64832 +TEVEL2-7 +1 63238U 25052AE 26134.27731913 .00010189 00000-0 34729-3 0 9992 +2 63238 97.3988 29.6220 0004148 257.6092 102.4684 15.30557285 64834 +TEVEL2-8 +1 63239U 25052AF 26134.21981734 .00010041 00000-0 34249-3 0 9999 +2 63239 97.3988 29.5426 0004130 259.1655 100.9121 15.30538178 64823 +HYDRA-W +1 63490U 25052BL 26113.93882235 .05662091 24406-5 29537-2 0 9997 +2 63490 97.3690 18.2798 0008685 203.5899 156.4993 16.20186780 62336 +HADES-ICM (SO-125) +1 63492U 25052BN 26134.22731092 .00894338 36510-3 21295-2 0 9994 +2 63492 97.3786 38.4565 0009731 172.8007 187.3411 15.96627123 65437 +SPIRONE +1 66657U 25274H 26134.28614331 .00001661 00000-0 16335-3 0 9999 +2 66657 97.7480 64.0672 0013470 122.8851 237.3666 14.93400298 25161 +K-HERO +1 66660U 25274L 26134.30029229 .00001265 00000-0 12437-3 0 9991 +2 66660 97.7488 64.2171 0015251 127.2445 233.0169 14.93827014 25177 +SNUGLITE-III DURI +1 66661U 25274M 26133.35141050 .00001359 00000-0 13299-3 0 9994 +2 66661 97.7483 63.3007 0015802 131.5001 228.7578 14.93877191 25030 +SilverSat +1 66909U 98067XV 26113.44966717 .07226154 12288-4 11979-2 0 9998 +2 66909 51.6027 190.0749 0007952 333.4666 26.5949 16.32457272 22308 +SAKHACUBE-CHOLBON +1 67290U 25313AU 26134.16120560 .00006484 00000-0 26831-3 0 9990 +2 67290 97.3944 209.6371 0010962 114.2650 245.9734 15.24234273 20792 +RS95S (QMR-KWT-2) +1 67291U 25313AV 26134.17747033 .00008964 00000-0 35761-3 0 9999 +2 67291 97.3943 209.7651 0010639 113.9992 246.2361 15.25356671 20800 +Ten-Koh2 +1 68261U 25241B 26134.17196803 .00004641 00000-0 20593-3 0 9995 +2 68261 51.6540 121.4680 0006314 37.7598 322.3822 15.23440018 9729 +JACK-002 +1 68417U 26067B 26134.10778649 .00004521 00000-0 21958-3 0 9995 +2 68417 97.4544 93.1367 0003691 64.8169 295.3448 15.18950457 6773 +DISCO 2 +1 68431U 26067R 26133.39586232 .00004607 00000-0 22628-3 0 9996 +2 68431 97.4580 92.4264 0004328 104.5015 255.6699 15.18547839 6668 +HADES-SA (SpinnyONE) +1 68446U 26067AG 26132.83338234 .00011232 00000-0 55731-3 0 9990 +2 68446 97.4387 91.6989 0006910 177.1746 182.9529 15.17853429 6567 +PARUS-6U1 +1 68456U 26067AS 26133.43395027 .00003618 00000-0 18567-3 0 9996 +2 68456 97.4530 92.3479 0005913 164.9165 195.2246 15.17141812 6661 +SAL-E +1 68458U 26067AU 26133.43325588 .00004975 00000-0 25328-3 0 9993 +2 68458 97.4457 92.3084 0005845 173.7308 186.4000 15.17248037 6661 +FSI-SAT 2 +1 68792U 26088A 26133.95021350 .00002906 00000-0 20030-3 0 9991 +2 68792 97.5027 284.0858 0013677 219.6814 140.3414 15.06542473 3135 +OrigamiSat 2 +1 68795U 26088D 26134.06264150 .00001721 00000-0 11566-3 0 9992 +2 68795 97.5031 284.2449 0015520 191.7012 168.3858 15.07998810 3155 +ARICA 2 +1 68796U 26088E 26134.32650801 .00002463 00000-0 16318-3 0 9998 +2 68796 97.5015 284.5004 0015609 189.1844 170.9101 15.08128984 3192 +WASEDA-SAT-ZERO-II +1 68797U 26088F 26134.32563710 .00003549 00000-0 23269-3 0 9990 +2 68797 97.5013 284.5015 0015607 189.0364 171.0586 15.08222475 3196 +MANGARO-II-Piscus +1 68798U 26088G 26134.12200801 .00002137 00000-0 14050-3 0 9998 +2 68798 97.5020 284.3159 0018894 193.6770 166.3949 15.08511423 3166 +IO-86 +1 40931U 25360.30710720 .00000000 00000-0 12800-3 0 00 +2 40931 6.0006 332.5373 0012733 338.8432 8.1437 14.79075515 01 +LILIUM-4 +1 71922C 26067AC 26089.50133053 -.00014632 00000+0 -74472-3 0 04 +2 71922 97.4497 49.1617 0004341 5.9603 355.7042 15.16896692 16 +/EX +SB KEPS @ AMSAT < CX2SA $ORB26142.1 +2Line Orbital Elements 26142.AMSAT +R:260529/0106Z 4782@GB7BWR.#45.GBR.EURO LinBPQ6.0.25 +R:260529/0046Z 9734@GB7BEX.#38.GBR.EURO LinBPQ6.0.25 +R:260529/0023Z @:GB7CIP.#32.GBR.EURO #:60974 [Caterham Surrey GBR] $:ORB26142.1 +R:260529/0023Z @:CX2SA.SAL.URY.SOAM #:73 [Salto] FBB7.00e $:ORB26142.1 + +From: CX2SA@CX2SA.SAL.URY.SOAM +To : KEPS@AMSAT + + +QST de W1STR + +AMSAT Orbital Elements for Amateur Satellites in TLE Format +>From Orbital Analysis Office +New England Sci-Tech STEM Education Center +Natick MA May 22, 2026 +To all radio amateurs + + +These element sets describe the orbits of various satellites +in use by the amateur radio community. For details see: +www.amsat.org/keplerian-elements-formats/ + +A daily update of element sets is available at: +www.amsat.org/tle/daily-bulletin.txt +or without bulletin text: +www.amsat.org/tle/dailytle.txt + + +AO-07 +1 07530U 74089B 26141.89152713 -.00000052 00000-0 -34210-4 0 9996 +2 07530 101.9910 154.8634 0012275 179.5275 251.0103 12.53697583357222 +UO-11 +1 14781U 84021B 26141.84250610 .00000862 00000-0 93497-4 0 9998 +2 14781 97.8043 107.7160 0006032 272.5141 87.5386 14.90711392253205 +AO-27 +1 22825U 93061C 26141.70841809 .00000058 00000-0 38881-4 0 9994 +2 22825 98.6889 209.1299 0008588 170.4927 189.6419 14.30934102703218 +FO-29 +1 24278U 96046B 26141.54630569 .00000000 00000-0 34558-4 0 9999 +2 24278 98.5266 354.0642 0350132 165.4220 195.7337 13.53272944469564 +GO-32 +1 25397U 98043D 26141.86370265 .00000023 00000-0 30169-4 0 9999 +2 25397 99.0063 133.9598 0000518 348.9287 11.1880 14.24422513447583 +ISS +1 25544U 98067A 26141.81013264 .00006598 00000-0 12646-3 0 9999 +2 25544 51.6330 70.6788 0007525 83.9033 276.2813 15.49301514567663 +NO-44 +1 26931U 01043C 26141.75766036 .00000073 00000-0 58109-4 0 9990 +2 26931 67.0507 312.6302 0006208 263.6699 96.3696 14.31944512286663 +SO-50 +1 27607U 02058C 26141.45153604 .00000579 00000-0 86191-4 0 9999 +2 27607 64.5520 211.7006 0075614 267.3643 91.8806 14.82983376260491 +CO-55 +1 27844U 03031E 26141.48326484 .00000173 00000-0 93673-4 0 9998 +2 27844 98.6743 150.3782 0008295 262.0752 97.9485 14.24317125187871 +RS-22 +1 27939U 03042A 26141.87761664 .00000548 00000-0 92749-4 0 9990 +2 27939 98.3469 325.4944 0011251 359.2209 137.0326 14.73413921211676 +CO-65 +1 32785U 08021C 26141.86265625 .00003248 00000-0 20851-3 0 9996 +2 32785 97.8271 122.7423 0010717 113.7944 246.4409 15.09165957981226 +CO-66 +1 32791U 08021J 26141.88297742 .00013533 00000-0 44391-3 0 9993 +2 32791 97.7528 138.5465 0004568 66.6536 293.5185 15.31736775983265 +RS-30 +1 32953U 08025A 26141.78213934 -.00000018 00000-0 -20207-3 0 9993 +2 32953 82.5057 11.8666 0019992 11.9172 348.2377 12.43178180816419 +SRMSAT +1 37841U 11058D 26141.58428440 .00000353 00000-0 47856-4 0 9992 +2 37841 19.9710 220.4956 0011598 271.8763 219.5780 14.11569257754052 +ZACUBE-1 +1 39417U 13066B 26141.87673122 .00003291 00000-0 25856-3 0 9994 +2 39417 97.8118 104.0711 0040705 341.0100 18.9603 15.00961986676785 +Delfi-N3xt +1 39428U 13066N 26141.73888310 .00004497 00000-0 39801-3 0 9992 +2 39428 97.8348 62.0799 0073127 295.6932 63.6749 14.94757646670670 +GOMX-1 +1 39430U 13066Q 26141.83256690 .00001545 00000-0 23766-3 0 9990 +2 39430 97.6495 343.9577 0129155 161.5031 199.0936 14.69341216666045 +LO-74 +1 39440U 13066AA 26141.80253712 .00002832 00000-0 26539-3 0 9991 +2 39440 97.8896 90.6771 0059474 114.1782 246.5670 14.93527149673058 +AO-73 +1 39444U 13066AE 26141.86919839 .00005987 00000-0 37656-3 0 9996 +2 39444 97.8267 112.7754 0034817 294.6838 65.0766 15.09108611675690 +DTUSAT-2 +1 40030U 14033W 26140.95697010 .00004456 00000-0 24518-3 0 9990 +2 40030 98.0869 136.9651 0007072 341.0623 19.0343 15.14617068648563 +LILACSAT-2 +1 40908U 15049K 26141.81995208 .00013073 00000-0 23086-3 0 9992 +2 40908 97.4676 177.6742 0006586 7.0571 353.0772 15.50476276591668 +Horyu-4 +1 41340U 16012D 26141.39941902 .00152227 00000-0 75460-3 0 9997 +2 41340 30.9883 273.2630 0004037 95.4050 264.7068 15.80437185566557 +Lapan A3 +1 41603U 16040E 26141.88598591 .00002428 00000-0 78581-4 0 9991 +2 41603 97.1490 138.9011 0012205 107.0499 253.2082 15.32918160550782 +CAS-2T +1 41847U 16066G 26141.78179894 .00000702 00000-0 10806-3 0 9997 +2 41847 98.3826 217.8178 0341518 209.5069 148.6462 14.44603131500989 +TechnoSat +1 42829U 17042E 26141.38610641 .00002891 00000-0 20850-3 0 9990 +2 42829 97.4262 300.0717 0017801 181.5124 178.6051 15.04771569482674 +AO-91 +1 43017U 17073E 26141.54623661 .00006694 00000-0 29382-3 0 9992 +2 43017 97.4738 9.3125 0153649 60.9980 300.6551 15.12173908461362 +S-Net D +1 43186U 18014G 26141.67333441 .00003457 00000-0 18134-3 0 9990 +2 43186 97.5379 46.6323 0010015 106.7482 253.4851 15.16385485454741 +S-Net B +1 43187U 18014H 26141.61828139 .00003519 00000-0 18463-3 0 9992 +2 43187 97.5386 46.5632 0010719 103.2638 256.9791 15.16355227454739 +S-Net A +1 43188U 18014J 26141.73833551 .00003474 00000-0 18216-3 0 9996 +2 43188 97.5396 46.8859 0010611 103.6735 256.5680 15.16393215454752 +S-Net C +1 43189U 18014K 26141.68800722 .00003442 00000-0 18066-3 0 9993 +2 43189 97.5413 46.9069 0012057 97.7770 262.4832 15.16346650453299 +Ten-Koh +1 43677U 18084G 26141.49153061 .00001539 00000-0 11988-3 0 9999 +2 43677 98.0751 332.7324 0009135 203.4589 156.6219 15.02795007412151 +PO-101 +1 43678U 18084H 26141.82700002 .00002360 00000-0 19327-3 0 9998 +2 43678 98.1118 336.9011 0011627 261.1148 98.8758 15.00309933412264 +QO-100 +1 43700U 18090A 26141.73891693 .00000136 00000-0 00000+0 0 9991 +2 43700 0.0119 347.9404 0001349 100.4780 82.7575 1.00271059 27418 +MinXSS-2 +1 43758U 18099A 26141.74775839 .00023125 00000-0 49168-3 0 9992 +2 43758 97.4540 217.2957 0006547 11.5602 348.5796 15.44974995410046 +AO-95 +1 43770U 18099N 26141.59313666 .00007731 00000-0 30248-3 0 9999 +2 43770 97.4396 201.9481 0010395 85.8622 274.3805 15.26058773409168 +SNUSat 2 +1 43782U 18099AA 26141.56836654 .00005832 00000-0 26281-3 0 9998 +2 43782 97.4073 195.3675 0010967 38.4282 321.7733 15.21375889408986 +SnugLite +1 43784U 18099AC 26141.60157704 .00007547 00000-0 29165-3 0 9996 +2 43784 97.3882 196.1536 0003612 53.2641 306.8929 15.26520754409264 +ITASat 1 +1 43786U 18099AE 26141.73538553 .00004558 00000-0 22259-3 0 9993 +2 43786 97.4045 193.7797 0014358 86.9902 273.2975 15.18667175408898 +EAGLET 1 +1 43790U 18099AJ 26141.13245321 .00002627 00000-0 15344-3 0 9992 +2 43790 97.4247 191.5196 0012850 81.8339 278.4349 15.12703873408240 +ESEO +1 43792U 18099AL 26141.10572414 .00001059 00000-0 80377-4 0 9994 +2 43792 97.4000 179.6526 0013701 69.9510 290.3190 15.04156075407734 +JO-97 +1 43803U 18099AX 26141.72848380 .00011251 00000-0 35840-3 0 9992 +2 43803 97.4140 204.4876 0005467 22.6895 337.4587 15.32706710409574 +Suomi 100 +1 43804U 18099AY 26141.81647368 .00008719 00000-0 32407-3 0 9997 +2 43804 97.4200 202.3189 0010122 23.9931 336.1778 15.27729140409399 +ISAT +1 43879U 18111D 26141.78319963 .00057382 00000-0 69351-3 0 9995 +2 43879 97.5897 75.0721 0007053 65.3868 294.8123 15.60515348407043 +UWE-4 +1 43880U 18111E 26141.72946507 .00021785 00000-0 47342-3 0 9995 +2 43880 97.5858 68.9379 0010233 68.3750 291.8587 15.44310525406692 +Sparrow +1 43881U 18111F 26141.81929056 .00086100 00000-0 79727-3 0 9990 +2 43881 97.6126 80.3102 0007210 94.7597 265.4487 15.67209694407233 +Prox-1 +1 44339U 19036A 26141.54213877 .00009146 00000-0 89870-3 0 9998 +2 44339 23.9960 292.1475 0006798 81.8956 278.2314 14.89902593369499 +Taurus 1 +1 44530U 19059C 26141.86741959 .00003500 00000-0 56900-3 0 9994 +2 44530 98.6406 305.0718 0008930 42.8814 317.3085 14.71769982354779 +TO-108 +1 44881U 19093C 26141.85969586 -.00000232 00000-0 -20224-4 0 9990 +2 44881 97.7532 214.7332 0013733 167.3742 192.7820 14.86466872347509 +RS-44 +1 44909U 19096E 26141.57978244 .00000020 00000-0 37434-4 0 9998 +2 44909 82.5229 357.3892 0216970 206.3471 152.6467 12.79748401298947 +SALSAT +1 46495U 20068K 26141.45465465 .00005535 00000-0 19705-3 0 9990 +2 46495 97.8859 142.9019 0010937 45.0571 315.1553 15.29356447311277 +CSS (TIANHE-1) +1 48274U 21035A 26141.86139679 .00009577 00000-0 11571-3 0 9995 +2 48274 41.4679 122.0798 0007426 275.1763 84.8228 15.60726635289054 +CUTE +1 49263U 21088D 26141.77701957 .00104987 00000-0 55473-3 0 9996 +2 49263 97.4176 238.7459 0002517 261.7104 98.3878 15.80314088258369 +TeikyoSat 4 +1 49396U 21102B 26141.07393993 .00001072 00000-0 70775-4 0 9994 +2 49396 97.3690 171.6111 0012889 33.7440 326.4607 15.09398905248634 +Z-Sat +1 49399U 21102E 26141.83340809 .00002899 00000-0 14527-3 0 9999 +2 49399 97.3339 177.9580 0016065 345.5214 14.5557 15.18038034249442 +KOSEN 1 +1 49402U 21102H 26141.85779153 .00005354 00000-0 20798-3 0 9990 +2 49402 97.3205 184.5316 0012043 304.3232 55.6867 15.26424129250002 +HO-113 +1 50466U 21131B 26141.88332479 .00000115 00000-0 49326-4 0 9992 +2 50466 98.4966 234.4170 0004419 160.9363 199.1992 14.41328020231328 +SNUGLITE 2 +1 52899U 22065F 26141.85999623 .00000631 00000-0 12885-3 0 9990 +2 52899 98.2171 286.7433 0008793 105.1519 255.0657 14.64290315207144 +UmKA 1 (RS40S) +1 57172U 23091G 26141.83835531 .00004599 00000-0 21342-3 0 9999 +2 57172 97.5061 200.6414 0012270 204.4014 155.6641 15.20472652160005 +CubeBel-2 (EU11S) +1 57175U 23091K 26141.87192961 .00008857 00000-0 32211-3 0 9997 +2 57175 97.5060 204.8660 0009734 198.6703 161.4181 15.28450630160280 +RS-38S +1 57189U 23091Z 26141.82106138 .00012237 00000-0 36136-3 0 9995 +2 57189 97.5098 210.7952 0008418 156.3405 203.8227 15.35078461160642 +SONATE-2 +1 59112U 24043Q 26141.86405082 .00026703 00000-0 37559-3 0 9998 +2 59112 97.5516 290.6923 0005753 293.3199 66.7449 15.56638828123790 +GRBBeta +1 60237U 24128C 26141.80354678 .00003354 00000-0 23629-3 0 9990 +2 60237 61.9903 308.8177 0044286 129.2550 231.2486 15.06394080102296 +Curium One +1 60242U 24128H 26141.85443346 .00006924 00000-0 40435-3 0 9992 +2 60242 61.9792 299.0105 0043832 125.6330 234.8861 15.12038990102470 +ROBUSTA-3A +1 60243U 24128J 26141.87088968 .00006530 00000-0 39048-3 0 9991 +2 60243 61.9870 301.2784 0045146 122.9128 237.6322 15.11209692102440 +CatSat +1 60246U 24125J 26141.53317328 .00035477 00000-0 51485-3 0 9990 +2 60246 97.2111 353.7482 0021099 279.4556 80.4314 15.55483221103248 +HYPERVIEW-1G (RS66S) +1 61772U 24199AP 26141.84364228 .00082311 00000-0 70146-3 0 9995 +2 61772 97.2925 20.3602 0005651 37.2681 322.8973 15.69279437130535 +AO-123 +1 61781U 24199AY 26141.83672274 .00005885 00000-0 17373-3 0 9991 +2 61781 97.3031 10.7481 0015304 49.0240 311.2325 15.35242025129885 +JINJUSat 1B +1 63210U 25052A 26141.64564802 .00010985 00000-0 35152-3 0 9997 +2 63210 97.4028 38.3793 0004023 146.4632 213.6865 15.32573634 66037 +NUSHSAT 1 +1 63211U 25052B 26141.73005961 .00013995 00000-0 41664-3 0 9993 +2 63211 97.4003 38.9429 0003768 145.3109 214.8381 15.34814142 66080 +TEVEL2-4 +1 63213U 25052D 26141.70008453 .00012425 00000-0 38506-3 0 9999 +2 63213 97.3928 38.0639 0002747 152.6877 207.4511 15.33570225 66050 +TEVEL2-5 +1 63214U 25052E 26141.65247975 .00012280 00000-0 38252-3 0 9995 +2 63214 97.3927 37.9715 0002665 152.7100 207.4282 15.33409785 66048 +TEVEL2-6 +1 63215U 25052F 26141.59890998 .00012324 00000-0 38436-3 0 9991 +2 63215 97.3928 37.9026 0002776 153.8216 206.3167 15.33369876 66033 +TEVEL2-1 +1 63217U 25052H 26141.42319646 .00011240 00000-0 35637-3 0 9997 +2 63217 97.3904 37.3820 0002251 164.9944 195.1365 15.32869635 65990 +TEVEL2-3 +1 63218U 25052J 26141.22291692 .00011634 00000-0 36824-3 0 9992 +2 63218 97.3903 37.2007 0002198 167.5509 192.5788 15.32914108 65965 +TEVEL2-2 +1 63219U 25052K 26141.42364117 .00011935 00000-0 37813-3 0 9991 +2 63219 97.3905 37.3842 0002173 166.3510 193.7791 15.32876877 65998 +TEVEL2-9 +1 63237U 25052AD 26141.69399681 .00010037 00000-0 33761-3 0 9994 +2 63237 97.3962 37.0853 0004554 220.1881 139.9024 15.30988116 65972 +TEVEL2-7 +1 63238U 25052AE 26141.66464890 .00010491 00000-0 35574-3 0 9995 +2 63238 97.3967 36.9830 0004687 220.4803 139.6090 15.30715220 65968 +TEVEL2-8 +1 63239U 25052AF 26140.95351763 .00010564 00000-0 35857-3 0 9996 +2 63239 97.3969 36.2522 0004539 224.9979 135.0895 15.30681443 65851 +HYDRA-W +1 63490U 25052BL 26113.93882235 .05662091 24406-5 29537-2 0 9997 +2 63490 97.3690 18.2798 0008685 203.5899 156.4993 16.20186780 62336 +HADES-ICM (SO-125) +1 63492U 25052BN 26141.26653903 .06532167 24596-5 20834-2 0 9996 +2 63492 97.3646 46.2798 0012082 212.8267 147.2275 16.26141053 66568 +SPIRONE +1 66657U 25274H 26141.79040404 .00001052 00000-0 10537-3 0 9999 +2 66657 97.7480 71.4620 0013729 100.5421 259.7346 14.93419495 26285 +K-HERO +1 66660U 25274L 26141.80242635 .00001206 00000-0 11874-3 0 9991 +2 66660 97.7487 71.6153 0015561 104.7426 255.5519 14.93842995 26298 +SNUGLITE-III DURI +1 66661U 25274M 26141.79101138 .00000814 00000-0 81764-4 0 9992 +2 66661 97.7484 71.6237 0016141 105.7130 254.5871 14.93895840 26294 +SilverSat +1 66909U 98067XV 26113.44966717 .07226154 12288-4 11979-2 0 9998 +2 66909 51.6027 190.0749 0007952 333.4666 26.5949 16.32457272 22308 +SAKHACUBE-CHOLBON +1 67290U 25313AU 26141.84186571 .00007108 00000-0 29292-3 0 9995 +2 67290 97.3934 217.2158 0010944 91.5192 268.7299 15.24338989 21965 +RS95S (QMR-KWT-2) +1 67291U 25313AV 26141.85237523 .00010095 00000-0 40054-3 0 9999 +2 67291 97.3934 217.3513 0010543 91.2168 269.0277 15.25506329 21974 +Ten-Koh2 +1 68261U 25241B 26141.12527701 .00004925 00000-0 21723-3 0 9994 +2 68261 51.6590 88.3906 0006535 60.8298 299.3333 15.23508494 10786 +JACK-002 +1 68417U 26067B 26141.81522266 .00004908 00000-0 23765-3 0 9990 +2 68417 97.4556 100.7423 0003163 50.4395 309.7119 15.19019063 7945 +DISCO 2 +1 68431U 26067R 26141.10534248 .00003864 00000-0 19000-3 0 9998 +2 68431 97.4593 100.0329 0004419 89.6647 270.5094 15.18609810 7838 +HADES-SA (SpinnyONE) +1 68446U 26067AG 26140.67798287 .00011372 00000-0 56129-3 0 9996 +2 68446 97.4403 99.4112 0008038 151.4172 208.7504 15.18027540 7751 +PARUS-6U1 +1 68456U 26067AS 26141.87608873 .00003921 00000-0 20057-3 0 9993 +2 68456 97.4542 100.6536 0006757 140.1256 220.0474 15.17203197 7942 +SAL-E +1 68458U 26067AU 26141.87474542 .00005282 00000-0 26802-3 0 9995 +2 68458 97.4468 100.6069 0006783 147.4956 212.6697 15.17331417 7949 +FSI-SAT 2 +1 68792U 26088A 26141.38906227 .00002320 00000-0 16051-3 0 9990 +2 68792 97.5040 291.3318 0014293 193.2995 166.7857 15.06579140 4252 +OrigamiSat 2 +1 68795U 26088D 26141.82610571 .00003064 00000-0 20247-3 0 9994 +2 68795 97.5052 291.8243 0016239 165.9427 194.2256 15.08035037 4329 +ARICA 2 +1 68796U 26088E 26141.35945580 .00003487 00000-0 22903-3 0 9994 +2 68796 97.5034 291.3665 0016243 165.9205 194.2479 15.08169624 4251 +WASEDA-SAT-ZERO-II +1 68797U 26088F 26141.82250461 .00004979 00000-0 32419-3 0 9994 +2 68797 97.5038 291.8216 0016237 164.2395 195.9342 15.08287059 4326 +MANGARO-II-Piscus +1 68798U 26088G 26141.81648167 .00003064 00000-0 19936-3 0 9991 +2 68798 97.5044 291.8334 0019636 167.4894 192.6826 15.08555862 4321 +IO-86 +1 40931U 25360.30710720 .00000000 00000-0 12800-3 0 00 +2 40931 6.0006 332.5373 0012733 338.8432 8.1437 14.79075515 01 +LILIUM-4 +1 71922C 26067AC 26089.50133053 -.00014632 00000+0 -74472-3 0 04 +2 71922 97.4497 49.1617 0004341 5.9603 355.7042 15.16896692 16 +/EX +SB KEPS @ AMSAT < CX2SA $ORB26149.1 +2Line Orbital Elements 26149.AMSAT +R:260529/0106Z 4783@GB7BWR.#45.GBR.EURO LinBPQ6.0.25 +R:260529/0052Z 9735@GB7BEX.#38.GBR.EURO LinBPQ6.0.25 +R:260529/0023Z @:GB7CIP.#32.GBR.EURO #:60975 [Caterham Surrey GBR] $:ORB26149.1 +R:260529/0023Z @:CX2SA.SAL.URY.SOAM #:74 [Salto] FBB7.00e $:ORB26149.1 + +From: CX2SA@CX2SA.SAL.URY.SOAM +To : KEPS@AMSAT + + +QST de W1STR + +AMSAT Orbital Elements for Amateur Satellites in TLE Format +>From Orbital Analysis Office +New England Sci-Tech STEM Education Center +Natick MA May 29, 2026 +To all radio amateurs + + +These element sets describe the orbits of various satellites +in use by the amateur radio community. For details see: +www.amsat.org/keplerian-elements-formats/ + +A daily update of element sets is available at: +www.amsat.org/tle/daily-bulletin.txt +or without bulletin text: +www.amsat.org/tle/dailytle.txt + + +AO-07 +1 07530U 74089B 26148.68365646 -.00000025 00000-0 13174-3 0 9995 +2 07530 101.9904 161.7267 0012369 166.6777 305.8931 12.53697774358075 +UO-11 +1 14781U 84021B 26148.82330466 .00001297 00000-0 13772-3 0 9991 +2 14781 97.8046 114.6166 0006142 243.2950 116.7639 14.90729732254244 +AO-27 +1 22825U 93061C 26148.77076877 .00000123 00000-0 63944-4 0 9994 +2 22825 98.6886 216.1905 0008965 150.9812 209.1870 14.30936282704224 +FO-29 +1 24278U 96046B 26148.57030653 -.00000005 00000-0 28278-4 0 9995 +2 24278 98.5259 0.1280 0350429 147.2181 215.1239 13.53273393470510 +GO-32 +1 25397U 98043D 26148.53681058 .00000081 00000-0 55113-4 0 9995 +2 25397 99.0064 140.8007 0000236 298.0925 62.0229 14.24424102448531 +ISS +1 25544U 98067A 26148.77610718 .00012346 00000-0 22817-3 0 9997 +2 25544 51.6335 36.1959 0007359 108.4856 251.6933 15.49449908568746 +NO-44 +1 26931U 01043C 26148.81209367 .00000169 00000-0 93778-4 0 9990 +2 26931 67.0511 294.3837 0006149 263.8462 96.1940 14.31947852287673 +SO-50 +1 27607U 02058C 26148.53219867 .00001100 00000-0 14688-3 0 9991 +2 27607 64.5510 189.7958 0075580 266.0702 93.1761 14.82999121261541 +CO-55 +1 27844U 03031E 26148.01640198 .00000320 00000-0 15756-3 0 9994 +2 27844 98.6738 156.8292 0008429 240.4784 119.5555 14.24321573188801 +RS-22 +1 27939U 03042A 26148.86682975 .00001040 00000-0 16855-3 0 9994 +2 27939 98.3468 332.6813 0010777 336.6026 130.4585 14.73427763212706 +CO-65 +1 32785U 08021C 26148.89066185 .00007421 00000-0 46976-3 0 9999 +2 32785 97.8263 129.9120 0010674 94.1173 266.1275 15.09240418982281 +CO-66 +1 32791U 08021J 26148.54585692 .00023250 00000-0 75397-3 0 9994 +2 32791 97.7513 145.5173 0003780 53.4425 306.7163 15.31983522984289 +RS-30 +1 32953U 08025A 26148.78373154 -.00000054 00000-0 -45884-3 0 9999 +2 32953 82.5060 7.5120 0019700 356.9226 3.1729 12.43177991817282 +SRMSAT +1 37841U 11058D 26148.42092105 .00000400 00000-0 73149-4 0 9994 +2 37841 19.9700 179.1124 0011731 347.7094 40.3515 14.11570911755020 +ZACUBE-1 +1 39417U 13066B 26148.87642683 .00005972 00000-0 46440-3 0 9999 +2 39417 97.8103 111.1083 0040101 316.2311 43.5736 15.01029548677836 +Delfi-N3xt +1 39428U 13066N 26148.76757691 .00007990 00000-0 70069-3 0 9991 +2 39428 97.8344 69.0996 0073199 271.6037 87.6800 14.94844521671721 +GOMX-1 +1 39430U 13066Q 26148.84680012 .00003215 00000-0 48530-3 0 9999 +2 39430 97.6495 350.5304 0129712 139.1167 221.9857 14.69373058667077 +LO-74 +1 39440U 13066AA 26148.83709315 .00004620 00000-0 42866-3 0 9994 +2 39440 97.8895 97.7376 0059393 91.4996 269.3028 14.93584719674103 +AO-73 +1 39444U 13066AE 26148.43326745 .00008280 00000-0 51776-3 0 9992 +2 39444 97.8263 119.4718 0034371 271.1115 88.6176 15.09206063676689 +DTUSAT-2 +1 40030U 14033W 26148.22384446 .00008619 00000-0 46890-3 0 9996 +2 40030 98.0859 144.6884 0006395 311.5464 48.5217 15.14718184649668 +LILACSAT-2 +1 40908U 15049K 26148.85412546 .00022151 00000-0 38618-3 0 9996 +2 40908 97.4669 184.9687 0005796 338.1119 21.9884 15.50727940592750 +Horyu-4 +1 41340U 16012D 26148.34021308 .00240730 00000-0 10388-2 0 9992 +2 41340 30.9866 223.3388 0002740 145.1105 214.9733 15.83201679567655 +Lapan A3 +1 41603U 16040E 26148.87057921 .00004216 00000-0 13447-3 0 9990 +2 41603 97.1481 145.6537 0012231 86.1537 274.1104 15.32966610551858 +CAS-2T +1 41847U 16066G 26148.77764153 .00001733 00000-0 25161-3 0 9996 +2 41847 98.3824 224.7347 0341901 188.2677 171.2793 14.44624693501993 +TechnoSat +1 42829U 17042E 26148.70069044 .00004191 00000-0 29983-3 0 9999 +2 42829 97.4267 307.1053 0018546 155.3709 204.8408 15.04824864483772 +AO-91 +1 43017U 17073E 26148.56006240 .00012922 00000-0 56294-3 0 9992 +2 43017 97.4742 16.1803 0152762 37.0143 324.1509 15.12320639462424 +S-Net D +1 43186U 18014G 26148.66793147 .00006686 00000-0 34659-3 0 9996 +2 43186 97.5387 53.5818 0010111 87.0654 273.1736 15.16459202455803 +S-Net B +1 43187U 18014H 26148.67900475 .00006998 00000-0 36286-3 0 9996 +2 43187 97.5391 53.5788 0010681 83.1149 277.1299 15.16428966455804 +S-Net A +1 43188U 18014J 26148.66691087 .00006680 00000-0 34619-3 0 9998 +2 43188 97.5403 53.7719 0010628 83.8253 276.4190 15.16466597455803 +S-Net C +1 43189U 18014K 26148.68277963 .00007111 00000-0 36860-3 0 9994 +2 43189 97.5418 53.8593 0011927 77.4704 282.7862 15.16420368454355 +Ten-Koh +1 43677U 18084G 26148.74909503 .00003648 00000-0 27699-3 0 9993 +2 43677 98.0760 340.2933 0009591 179.6897 180.4334 15.02836920413247 +PO-101 +1 43678U 18084H 26148.82979715 .00003523 00000-0 28557-3 0 9991 +2 43678 98.1141 344.2034 0011678 235.9932 124.0181 15.00347986413312 +QO-100 +1 43700U 18090A 26148.51188272 .00000154 00000-0 00000+0 0 9996 +2 43700 0.0155 298.2229 0001907 160.0872 357.8371 1.00274787 27483 +MinXSS-2 +1 43758U 18099A 26148.67697507 .00042524 00000-0 88596-3 0 9998 +2 43758 97.4547 224.4097 0006137 341.9445 18.1584 15.45450503411117 +AO-95 +1 43770U 18099N 26148.41212235 .00014430 00000-0 55904-3 0 9997 +2 43770 97.4401 208.7367 0009949 65.0064 295.2206 15.26219774410200 +SNUSat 2 +1 43782U 18099AA 26148.67148074 .00010482 00000-0 46802-3 0 9997 +2 43782 97.4076 202.3582 0010258 14.4388 345.7139 15.21497847410066 +SnugLite +1 43784U 18099AC 26148.68068441 .00015114 00000-0 57784-3 0 9997 +2 43784 97.3887 203.1578 0002910 33.4447 326.6975 15.26690104410347 +ITASat 1 +1 43786U 18099AE 26148.65354541 .00008478 00000-0 40994-3 0 9995 +2 43786 97.4043 200.5573 0014008 65.5105 294.7588 15.18767796409940 +EAGLET 1 +1 43790U 18099AJ 26148.40868609 .00005424 00000-0 31233-3 0 9992 +2 43790 97.4248 198.6021 0012501 59.6601 300.5864 15.12764837409342 +ESEO +1 43792U 18099AL 26148.55639080 .00001516 00000-0 11324-3 0 9996 +2 43792 97.3987 186.7856 0013479 47.4437 312.7925 15.04179490408858 +JO-97 +1 43803U 18099AX 26148.45249796 .00021394 00000-0 67363-3 0 9999 +2 43803 97.4144 211.2270 0004799 356.8750 3.2461 15.32936130410607 +Suomi 100 +1 43804U 18099AY 26148.69347025 .00015570 00000-0 57304-3 0 9993 +2 43804 97.4202 209.1644 0009384 358.7874 1.3340 15.27907126410441 +ISAT +1 43879U 18111D 26148.77033215 .00099392 00000-0 11437-2 0 9992 +2 43879 97.5897 82.5500 0005278 54.4708 305.7041 15.61655786408134 +UWE-4 +1 43880U 18111E 26148.53214294 .00041738 00000-0 88982-3 0 9997 +2 43880 97.5861 76.0364 0009322 49.7202 310.4860 15.44751526407741 +Sparrow +1 43881U 18111F 26148.77566278 .00140372 00000-0 12093-2 0 9999 +2 43881 97.6129 87.8561 0006122 91.5091 268.6871 15.68825146408322 +Prox-1 +1 44339U 19036A 26148.57398135 .00017006 00000-0 16864-2 0 9995 +2 44339 23.9951 245.2202 0006156 159.0032 201.0721 14.90088160370548 +Taurus 1 +1 44530U 19059C 26148.86974652 .00009760 00000-0 15662-2 0 9992 +2 44530 98.6396 312.5048 0008388 21.7580 338.3980 14.71859694355801 +TO-108 +1 44881U 19093C 26148.86042750 .00000286 00000-0 38372-4 0 9993 +2 44881 97.7538 221.5637 0014282 145.3370 214.8780 14.86479729348543 +RS-44 +1 44909U 19096E 26148.61613539 .00000037 00000-0 10244-3 0 9990 +2 44909 82.5224 352.7128 0217275 189.8719 169.8081 12.79748512299847 +SALSAT +1 46495U 20068K 26148.52069951 .00009688 00000-0 34141-3 0 9999 +2 46495 97.8848 150.3933 0010184 22.3559 337.8122 15.29469861312359 +CSS (TIANHE-1) +1 48274U 21035A 26148.77594543 .00021900 00000-0 26673-3 0 9990 +2 48274 41.4691 80.0564 0010822 299.1255 60.8500 15.59924596290130 +CUTE +1 49263U 21088D 26148.79840676 .00368502 00000-0 15907-2 0 9999 +2 49263 97.4180 246.3233 0004727 262.7661 97.3071 15.84008468259476 +TeikyoSat 4 +1 49396U 21102B 26148.63132855 .00002398 00000-0 15353-3 0 9993 +2 49396 97.3682 178.8750 0012174 8.8859 351.2583 15.09428445249775 +Z-Sat +1 49399U 21102E 26148.88634389 .00005721 00000-0 28299-3 0 9998 +2 49399 97.3342 184.7954 0015306 319.5392 40.4703 15.18099327250515 +KOSEN 1 +1 49402U 21102H 26148.67528051 .00009321 00000-0 35879-3 0 9990 +2 49402 97.3202 191.2142 0011881 276.6683 83.3203 15.26525652251041 +HO-113 +1 50466U 21131B 26148.82536716 .00000634 00000-0 20949-3 0 9998 +2 50466 98.4969 241.3208 0004823 143.2126 216.9395 14.41336393232328 +SNUGLITE 2 +1 52899U 22065F 26148.35161759 .00001144 00000-0 22588-3 0 9994 +2 52899 98.2176 293.2207 0008783 87.7163 272.5045 14.64304338208091 +UmKA 1 (RS40S) +1 57172U 23091G 26148.81414992 .00007663 00000-0 35239-3 0 9993 +2 57172 97.5065 207.5880 0012940 179.9643 180.1595 15.20560608161067 +CubeBel-2 (EU11S) +1 57175U 23091K 26148.81116044 .00016305 00000-0 58680-3 0 9991 +2 57175 97.5066 211.8613 0010370 175.2112 184.9228 15.28627391161345 +RS-38S +1 57189U 23091Z 26148.79540465 .00022191 00000-0 64748-3 0 9993 +2 57189 97.5106 217.9009 0008742 135.2065 224.9886 15.35319597161714 +SONATE-2 +1 59112U 24043Q 26148.67707366 .00043489 00000-0 59844-3 0 9995 +2 59112 97.5509 297.9020 0006022 265.6576 94.3991 15.57131288124857 +GRBBeta +1 60237U 24128C 26148.77319951 .00006129 00000-0 41875-3 0 9994 +2 60237 61.9905 284.3720 0043256 130.6766 229.8099 15.06464472103344 +Curium One +1 60242U 24128H 26148.79791903 .00011939 00000-0 68509-3 0 9991 +2 60242 61.9791 274.4322 0042578 126.8997 233.6012 15.12176846103520 +ROBUSTA-3A +1 60243U 24128J 26148.68586595 .00012229 00000-0 71683-3 0 9999 +2 60243 61.9868 277.1927 0043922 124.4610 236.0647 15.11344265103473 +CatSat +1 60246U 24125J 26148.67236620 .00065667 00000-0 92216-3 0 9998 +2 60246 97.2108 0.9523 0021270 250.7778 109.1176 15.56236887104353 +HYPERVIEW-1G (RS66S) +1 61772U 24199AP 26148.85483175 .00138195 00000-0 10991-2 0 9999 +2 61772 97.2921 27.6674 0003687 10.2238 349.9099 15.70790228131635 +AO-123 +1 61781U 24199AY 26148.81059139 .00009970 00000-0 29163-3 0 9994 +2 61781 97.3031 17.6583 0014548 25.6249 334.5713 15.35355248130953 +JINJUSat 1B +1 63210U 25052A 26148.69668487 .00020242 00000-0 64015-3 0 9990 +2 63210 97.4034 45.4333 0004665 131.9188 228.2452 15.32808610 67119 +NUSHSAT 1 +1 63211U 25052B 26148.70550888 .00026274 00000-0 77167-3 0 9991 +2 63211 97.4011 45.9434 0004495 130.8260 229.3374 15.35104999 67153 +TEVEL2-4 +1 63213U 25052D 26148.68124973 .00023968 00000-0 73335-3 0 9992 +2 63213 97.3938 45.0491 0003528 140.3779 219.7722 15.33831159 67123 +TEVEL2-5 +1 63214U 25052E 26148.69962565 .00023580 00000-0 72521-3 0 9997 +2 63214 97.3928 45.0208 0003471 140.3980 219.7517 15.33670851 67122 +TEVEL2-6 +1 63215U 25052F 26148.64624072 .00023559 00000-0 72551-3 0 9990 +2 63215 97.3933 44.9521 0003570 139.8705 220.2801 15.33629270 67114 +TEVEL2-1 +1 63217U 25052H 26148.66865836 .00022715 00000-0 71086-3 0 9994 +2 63217 97.3909 44.6216 0003165 150.6260 209.5161 15.33125593 67101 +TEVEL2-3 +1 63218U 25052J 26148.66397624 .00023680 00000-0 73967-3 0 9992 +2 63218 97.3912 44.6365 0003202 151.4818 208.6600 15.33176175 67101 +TEVEL2-2 +1 63219U 25052K 26148.66907352 .00022982 00000-0 71899-3 0 9994 +2 63219 97.3907 44.6240 0003131 150.8682 209.2735 15.33132523 67106 +TEVEL2-9 +1 63237U 25052AD 26148.68699082 .00020217 00000-0 67173-3 0 9993 +2 63237 97.3970 44.0585 0005423 191.1044 169.0079 15.31217216 67046 +TEVEL2-7 +1 63238U 25052AE 26148.65890152 .00020539 00000-0 68825-3 0 9994 +2 63238 97.3974 43.9544 0005553 192.3174 167.7932 15.30937887 67039 +TEVEL2-8 +1 63239U 25052AF 26148.66694315 .00020842 00000-0 69869-3 0 9995 +2 63239 97.3975 43.9402 0005569 192.5059 167.6045 15.30922045 67039 +SPIRONE +1 66657U 25274H 26148.75853310 .00003185 00000-0 30779-3 0 9999 +2 66657 97.7484 78.3288 0013900 80.3676 279.9113 14.93453945 27323 +K-HERO +1 66660U 25274L 26148.76857758 .00002432 00000-0 23371-3 0 9998 +2 66660 97.7491 78.4855 0015654 83.7336 276.5666 14.93875998 27337 +SNUGLITE-III DURI +1 66661U 25274M 26148.75693051 .00002556 00000-0 24503-3 0 9997 +2 66661 97.7488 78.4940 0016261 84.8421 275.4655 14.93925849 27338 +SAKHACUBE-CHOLBON +1 67290U 25313AU 26148.66858785 .00013001 00000-0 53080-3 0 9996 +2 67290 97.3943 223.9520 0010528 70.6399 289.5976 15.24480882 23007 +RS95S (QMR-KWT-2) +1 67291U 25313AV 26148.67375939 .00018440 00000-0 72421-3 0 9995 +2 67291 97.3942 224.0945 0010122 70.1259 290.1069 15.25706480 23018 +Ten-Koh2 +1 68261U 25241B 26148.47171900 .00009225 00000-0 39303-3 0 9996 +2 68261 51.6638 53.4412 0006592 83.8236 276.3493 15.23628586 11906 +JACK-002 +1 68417U 26067B 26148.86353296 .00008552 00000-0 41038-3 0 9999 +2 68417 97.4553 107.6980 0002512 39.0818 321.0597 15.19116562 9015 +DISCO 2 +1 68431U 26067R 26148.81438544 .00010749 00000-0 52041-3 0 9997 +2 68431 97.4589 107.6397 0004230 76.7993 283.3713 15.18736327 9008 +HADES-SA (SpinnyONE) +1 68446U 26067AG 26148.45558498 .00022066 00000-0 10761-2 0 9991 +2 68446 97.4395 107.0599 0008859 130.8185 229.3819 15.18292837 8934 +PARUS-6U1 +1 68456U 26067AS 26148.86691810 .00006822 00000-0 34553-3 0 9991 +2 68456 97.4539 107.5323 0007297 121.3380 238.8569 15.17283855 9007 +SAL-E +1 68458U 26067AU 26148.66709854 .00009547 00000-0 47993-3 0 9998 +2 68458 97.4466 107.2851 0007446 128.4198 231.7705 15.17436598 8975 +FSI-SAT 2 +1 68792U 26088A 26148.36277436 .00006323 00000-0 42937-3 0 9997 +2 68792 97.5038 298.1253 0014845 170.5781 189.5728 15.06643966 5301 +OrigamiSat 2 +1 68795U 26088D 26147.93040222 .00003942 00000-0 25836-3 0 9996 +2 68795 97.5091 297.7874 0016567 145.3253 214.9059 15.08166526 5241 +ARICA 2 +1 68796U 26088E 26148.85656116 .00005383 00000-0 35052-3 0 9996 +2 68796 97.5031 298.6883 0016816 141.1790 219.0650 15.08239362 5380 +WASEDA-SAT-ZERO-II +1 68797U 26088F 26148.85459716 .00007882 00000-0 50925-3 0 9996 +2 68797 97.5028 298.6905 0016700 141.1913 219.0518 15.08378637 5383 +MANGARO-II-Piscus +1 68798U 26088G 26148.84740205 .00005232 00000-0 33690-3 0 9999 +2 68798 97.5036 298.7042 0020094 144.5869 215.6698 15.08612429 5385 +IO-86 +1 40931U 25360.30710720 .00000000 00000-0 12800-3 0 00 +2 40931 6.0006 332.5373 0012733 338.8432 8.1437 14.79075515 01 +LILIUM-4 +1 71922C 26067AC 26089.50133053 -.00014632 00000+0 -74472-3 0 04 +2 71922 97.4497 49.1617 0004341 5.9603 355.7042 15.16896692 16 +/EX +SB KEPS @ AMSAT < CX2SA $ORB26156.1 +2Line Orbital Elements 26156.AMSAT +R:260612/0151Z 5215@GB7BWR.#45.GBR.EURO LinBPQ6.0.25 +R:260612/0119Z 10175@GB7BEX.#38.GBR.EURO LinBPQ6.0.25 +R:260612/0110Z 55206@EI2GYB.DGL.IRL.EURO LinBPQ6.0.25 +R:260612/0026Z 45022@PY2BIL.SP.BRA.SOAM LinBPQ6.0.25 +R:260612/0025Z @:PI8ZTM.#ZH1.NLD.EURO #:55606 [Den Haag] $:ORB26156.1 +R:260612/0024Z @:CX2SA.SAL.URY.SOAM #:600 [Salto] FBB7.00e $:ORB26156.1 + +From: CX2SA@CX2SA.SAL.URY.SOAM +To : KEPS@AMSAT + + +QST de W1STR + +AMSAT Orbital Elements for Amateur Satellites in TLE Format +>From Orbital Analysis Office +New England Sci-Tech STEM Education Center +Natick MA June 05, 2026 +To all radio amateurs + + +These element sets describe the orbits of various satellites +in use by the amateur radio community. For details see: +www.amsat.org/keplerian-elements-formats/ + +A daily update of element sets is available at: +www.amsat.org/tle/daily-bulletin.txt +or without bulletin text: +www.amsat.org/tle/dailytle.txt + + +AO-07 +1 07530U 74089B 26155.29739884 -.00000046 00000-0 32849-5 0 9994 +2 07530 101.9902 168.4095 0012424 154.1272 275.7064 12.53697884358906 +UO-11 +1 14781U 84021B 26155.73688471 .00001488 00000-0 15713-3 0 9990 +2 14781 97.8050 121.4515 0006538 216.3990 143.6784 14.90752353255276 +AO-27 +1 22825U 93061C 26155.13386559 .00000145 00000-0 72223-4 0 9997 +2 22825 98.6882 222.5517 0009250 133.7828 226.4121 14.30938744705131 +FO-29 +1 24278U 96046B 26155.07670467 -.00000029 00000-0 38850-5 0 9995 +2 24278 98.5251 5.7442 0350656 130.3680 232.8639 13.53273623471395 +GO-32 +1 25397U 98043D 26154.57772251 .00000069 00000-0 49972-4 0 9994 +2 25397 99.0064 146.9934 0000319 213.6137 146.5021 14.24425649449397 +ISS +1 25544U 98067A 26155.74133726 .00008168 00000-0 15298-3 0 9993 +2 25544 51.6329 1.7083 0007031 132.5880 227.5702 15.49603626569822 +NO-44 +1 26931U 01043C 26154.60928777 .00000163 00000-0 91734-4 0 9991 +2 26931 67.0512 279.3895 0006115 263.9670 96.0735 14.31950876288500 +SO-50 +1 27607U 02058C 26154.26409835 .00001126 00000-0 14986-3 0 9993 +2 27607 64.5505 172.0623 0075520 265.0164 94.2317 14.83015002262395 +CO-55 +1 27844U 03031E 26154.54951729 .00000336 00000-0 16425-3 0 9995 +2 27844 98.6736 163.2800 0008691 219.4250 140.6297 14.24327019189733 +RS-22 +1 27939U 03042A 26155.86215742 .00000987 00000-0 16033-3 0 9993 +2 27939 98.3466 339.8730 0010362 313.4523 157.2500 14.73444993213738 +CO-65 +1 32785U 08021C 26155.71935219 .00005395 00000-0 34197-3 0 9991 +2 32785 97.8272 136.8804 0010637 75.2124 285.0282 15.09326445983310 +CO-66 +1 32791U 08021J 26154.55442507 .00020146 00000-0 64842-3 0 9993 +2 32791 97.7515 151.8069 0002991 42.0128 318.1342 15.32257900985206 +RS-30 +1 32953U 08025A 26155.86579933 .00000003 00000-0 -50526-4 0 9992 +2 32953 82.5044 3.1063 0019385 341.4331 18.6039 12.43178729818160 +SRMSAT +1 37841U 11058D 26155.28992140 .00000393 00000-0 69540-4 0 9995 +2 37841 19.9702 137.5332 0011914 62.8275 26.7062 14.11572942755997 +ZACUBE-1 +1 39417U 13066B 26154.94254392 .00004510 00000-0 35148-3 0 9990 +2 39417 97.8107 117.2078 0039904 294.5657 65.1411 15.01095965678748 +Delfi-N3xt +1 39428U 13066N 26155.66193727 .00007558 00000-0 66179-3 0 9999 +2 39428 97.8344 75.9859 0072712 247.8716 111.4775 14.94953338672752 +GOMX-1 +1 39430U 13066Q 26155.79272571 .00002314 00000-0 35095-3 0 9999 +2 39430 97.6487 357.0374 0130016 116.8977 244.5586 14.69410700668096 +LO-74 +1 39440U 13066AA 26154.33051700 .00005093 00000-0 47123-3 0 9990 +2 39440 97.8904 103.2522 0059453 73.9566 286.8190 14.93641817674922 +AO-73 +1 39444U 13066AE 26155.59353272 .00008112 00000-0 50553-3 0 9998 +2 39444 97.8278 126.7780 0034647 245.3456 114.4162 15.09331350677763 +DTUSAT-2 +1 40030U 14033W 26155.22591472 .00007774 00000-0 42187-3 0 9999 +2 40030 98.0864 152.1319 0006144 280.7902 79.2636 15.14842658650726 +LILACSAT-2 +1 40908U 15049K 26155.88698627 .00020496 00000-0 35383-3 0 9999 +2 40908 97.4655 192.2640 0005377 304.9654 55.1092 15.51024001593846 +Horyu-4 +1 41340U 16012D 26152.43486084 .00260233 00000-0 10081-2 0 9993 +2 41340 30.9850 193.7734 0002293 171.6706 188.3991 15.85409012568303 +Lapan A3 +1 41603U 16040E 26155.85491032 .00003928 00000-0 12525-3 0 9996 +2 41603 97.1488 152.4070 0012007 65.0358 295.2131 15.33024305552921 +CAS-2T +1 41847U 16066G 26155.63484800 .00001982 00000-0 28545-3 0 9992 +2 41847 98.3817 231.5141 0342302 167.4688 193.5290 14.44651724502984 +TechnoSat +1 42829U 17042E 26155.74901354 .00003302 00000-0 23673-3 0 9993 +2 42829 97.4275 313.8827 0018977 132.9648 227.3174 15.04880149484831 +AO-91 +1 43017U 17073E 26155.17612321 .00011345 00000-0 49455-3 0 9999 +2 43017 97.4712 22.6585 0151546 14.2510 346.2924 15.12484658463423 +S-Net D +1 43186U 18014G 26155.66212135 .00006020 00000-0 31164-3 0 9997 +2 43186 97.5370 60.5316 0009887 67.6528 292.5751 15.16549973456862 +S-Net B +1 43187U 18014H 26155.67333097 .00006432 00000-0 33300-3 0 9991 +2 43187 97.5376 60.5288 0010426 63.4642 296.7659 15.16520086456866 +S-Net A +1 43188U 18014J 26155.66106520 .00005895 00000-0 30517-3 0 9999 +2 43188 97.5386 60.7233 0010391 63.8079 296.4221 15.16557400456861 +S-Net C +1 43189U 18014K 26155.67714317 .00006393 00000-0 33099-3 0 9992 +2 43189 97.5402 60.8120 0011555 56.9894 303.2448 15.16511330455418 +Ten-Koh +1 43677U 18084G 26155.07429095 .00003243 00000-0 24650-3 0 9995 +2 43677 98.0775 346.8839 0010121 157.1972 202.9703 15.02883262414192 +PO-101 +1 43678U 18084H 26155.83239527 .00003226 00000-0 26166-3 0 9994 +2 43678 98.1154 351.5061 0011792 211.4547 148.5971 15.00391997414360 +QO-100 +1 43700U 18090A 26155.74019446 .00000156 00000-0 00000+0 0 9997 +2 43700 0.0177 0.9674 0001949 105.4242 79.0501 1.00272777 27552 +MinXSS-2 +1 43758U 18099A 26155.66838664 .00035252 00000-0 72088-3 0 9995 +2 43758 97.4538 231.5943 0006038 309.7758 50.2959 15.46039247412196 +AO-95 +1 43770U 18099N 26154.64024448 .00013080 00000-0 50433-3 0 9998 +2 43770 97.4392 214.9391 0009397 44.7441 315.4554 15.26406805411154 +SNUSat 2 +1 43782U 18099AA 26155.64240016 .00009596 00000-0 42708-3 0 9996 +2 43782 97.4061 209.2201 0009512 348.7388 11.3634 15.21642813411127 +SnugLite +1 43784U 18099AC 26155.10350941 .00013539 00000-0 51508-3 0 9998 +2 43784 97.3871 209.5144 0002220 11.0960 349.0328 15.26879137411320 +ITASat 1 +1 43786U 18099AE 26155.63704000 .00008140 00000-0 39246-3 0 9994 +2 43786 97.4030 207.4001 0013392 43.0227 317.2052 15.18890618411006 +EAGLET 1 +1 43790U 18099AJ 26155.35384480 .00005478 00000-0 31483-3 0 9990 +2 43790 97.4233 205.3626 0011918 37.5450 322.6611 15.12838404410395 +ESEO +1 43792U 18099AL 26155.67432023 .00001308 00000-0 98217-4 0 9991 +2 43792 97.3961 193.5989 0012511 23.3849 336.7944 15.04201533409929 +JO-97 +1 43803U 18099AX 26155.63215683 .00018538 00000-0 57877-3 0 9990 +2 43803 97.4135 218.4269 0004292 324.7580 35.3378 15.33239560411706 +Suomi 100 +1 43804U 18099AY 26155.63499492 .00013743 00000-0 50298-3 0 9996 +2 43804 97.4190 216.0775 0008768 331.5428 28.5331 15.28124804411502 +ISAT +1 43879U 18111D 26155.43138794 .00095893 00000-0 10486-2 0 9996 +2 43879 97.5898 89.6933 0003290 47.8179 312.3358 15.62995150409176 +UWE-4 +1 43880U 18111E 26154.36119365 .00034900 00000-0 73362-3 0 9997 +2 43880 97.5860 82.1246 0008243 33.3192 326.8573 15.45215882408648 +Sparrow +1 43881U 18111F 26155.59610858 .00151593 00000-0 11997-2 0 9990 +2 43881 97.6128 95.2751 0005059 99.0146 261.1689 15.70860609409396 +Prox-1 +1 44339U 19036A 26153.39522389 .00013271 00000-0 13054-2 0 9999 +2 44339 23.9937 213.0381 0005645 216.2369 143.7749 14.90241213371266 +Taurus 1 +1 44530U 19059C 26155.80361750 .00006517 00000-0 10468-2 0 9999 +2 44530 98.6410 319.8652 0008196 358.9323 1.1863 14.71959265356829 +TO-108 +1 44881U 19093C 26155.86108184 .00000338 00000-0 44129-4 0 9990 +2 44881 97.7533 228.3934 0014691 123.5586 236.7035 14.86496517349589 +RS-44 +1 44909U 19096E 26155.02704110 .00000001 00000-0 -44333-4 0 9998 +2 44909 82.5219 348.4520 0217591 174.8762 185.4640 12.79748573300667 +SALSAT +1 46495U 20068K 26154.99736177 .00008555 00000-0 30076-3 0 9993 +2 46495 97.8850 157.2614 0009364 359.9507 0.1729 15.29597840313346 +CSS (TIANHE-1) +1 48274U 21035A 26155.68961053 .00024475 00000-0 29392-3 0 9993 +2 48274 41.4693 38.0294 0009579 342.1781 17.8720 15.60257338291216 +CUTE +1 49263U 21088D 26155.23260345 .00391134 58145-4 13985-2 0 9993 +2 49263 97.4162 253.3120 0006992 259.2007 100.8478 15.88777469260493 +TeikyoSat 4 +1 49396U 21102B 26155.65820756 .00001857 00000-0 11967-3 0 9993 +2 49396 97.3670 185.6288 0011415 344.5234 15.5644 15.09462831250832 +Z-Sat +1 49399U 21102E 26155.80713624 .00003285 00000-0 16366-3 0 9993 +2 49399 97.3329 191.5059 0014871 293.4135 66.5535 15.18166518251568 +KOSEN 1 +1 49402U 21102H 26155.68886447 .00007530 00000-0 28928-3 0 9992 +2 49402 97.3189 198.0899 0012103 248.4486 111.5463 15.26654226252116 +HO-113 +1 50466U 21131B 26155.83678505 .00000562 00000-0 18718-3 0 9991 +2 50466 98.4978 248.2934 0005055 125.0726 235.0938 14.41345974233334 +SNUGLITE 2 +1 52899U 22065F 26153.81818698 .00001149 00000-0 22678-3 0 9997 +2 52899 98.2186 298.6759 0008699 72.9663 287.2492 14.64318814208891 +UmKA 1 (RS40S) +1 57172U 23091G 26155.72365924 .00007244 00000-0 33222-3 0 9996 +2 57172 97.5051 214.4699 0013525 157.1943 202.9895 15.20667787162117 +CubeBel-2 (EU11S) +1 57175U 23091K 26155.22582525 .00014019 00000-0 50188-3 0 9990 +2 57175 97.5053 218.3297 0010812 154.4980 205.6795 15.28829416162325 +RS-38S +1 57189U 23091Z 26155.11681252 .00018692 00000-0 54136-3 0 9998 +2 57189 97.5093 224.3441 0008752 116.2926 243.9218 15.35589021162685 +SONATE-2 +1 59112U 24043Q 26154.97364330 .00039146 00000-0 52779-3 0 9990 +2 59112 97.5529 304.5700 0006326 241.9322 118.1294 15.57700323125834 +GRBBeta +1 60237U 24128C 26155.74246985 .00004952 00000-0 34080-3 0 9997 +2 60237 61.9904 259.9266 0042354 132.1755 228.2947 15.06546882104396 +Curium One +1 60242U 24128H 26155.74067412 .00009406 00000-0 54094-3 0 9995 +2 60242 61.9788 249.8530 0041552 128.1960 232.2890 15.12335101104575 +ROBUSTA-3A +1 60243U 24128J 26154.83857688 .00009406 00000-0 55287-3 0 9992 +2 60243 61.9869 255.4438 0043220 125.2822 235.2328 15.11490826104401 +CatSat +1 60246U 24125J 26154.65070750 .00056678 00000-0 77347-3 0 9993 +2 60246 97.2095 6.9905 0021582 228.0597 131.8820 15.57035250105284 +HYPERVIEW-1G (RS66S) +1 61772U 24199AP 26155.73086128 .00115729 00000-0 85499-3 0 9995 +2 61772 97.2892 34.8492 0002185 319.5385 40.5716 15.72624267132711 +AO-123 +1 61781U 24199AY 26155.26251198 .00008936 00000-0 26072-3 0 9997 +2 61781 97.3011 24.0505 0013741 3.1440 356.9888 15.35480458131948 +JINJUSat 1B +1 63210U 25052A 26155.68116339 .00018500 00000-0 58015-3 0 9998 +2 63210 97.4021 52.4231 0005273 119.5972 240.5796 15.33094184 68189 +NUSHSAT 1 +1 63211U 25052B 26155.67938850 .00023227 00000-0 67502-3 0 9991 +2 63211 97.3992 52.9449 0005054 119.3104 240.8645 15.35459375 68224 +TEVEL2-4 +1 63213U 25052D 26153.24759932 .00019833 00000-0 60334-3 0 9990 +2 63213 97.3927 49.6197 0004091 133.0862 227.0724 15.34050425 67823 +TEVEL2-5 +1 63214U 25052E 26155.68011441 .00020387 00000-0 62137-3 0 9996 +2 63214 97.3911 52.0060 0004070 127.8276 232.3335 15.33985737 68191 +TEVEL2-6 +1 63215U 25052F 26154.64839894 .00020133 00000-0 61519-3 0 9994 +2 63215 97.3918 50.9581 0004181 130.1242 230.0368 15.33906822 68039 +TEVEL2-1 +1 63217U 25052H 26153.69393788 .00019888 00000-0 61840-3 0 9999 +2 63217 97.3886 49.6443 0003899 141.0246 219.1278 15.33355434 67873 +TEVEL2-3 +1 63218U 25052J 26154.21113612 .00019661 00000-0 61001-3 0 9993 +2 63218 97.3892 50.1814 0003877 141.5958 218.5561 15.33427572 67951 +TEVEL2-2 +1 63219U 25052K 26154.60793555 .00020300 00000-0 63028-3 0 9990 +2 63219 97.3889 50.5598 0003813 141.3409 218.8107 15.33398099 68018 +TEVEL2-9 +1 63237U 25052AD 26155.67873848 .00017126 00000-0 56461-3 0 9997 +2 63237 97.3945 51.0324 0006594 167.3372 192.8036 15.31497239 68117 +TEVEL2-7 +1 63238U 25052AE 26154.60632626 .00017541 00000-0 58397-3 0 9998 +2 63238 97.3955 49.8841 0006418 171.2563 188.8791 15.31176236 67943 +TEVEL2-8 +1 63239U 25052AF 26154.94119385 .00017135 00000-0 57066-3 0 9999 +2 63239 97.3952 50.1954 0006473 170.8239 189.3121 15.31169698 67999 +SPIRONE +1 66657U 25274H 26155.05647992 .00002114 00000-0 20596-3 0 9994 +2 66657 97.7483 84.5358 0013495 61.9371 298.3212 14.93487417 28265 +K-HERO +1 66660U 25274L 26154.32797628 .00002230 00000-0 21467-3 0 9996 +2 66660 97.7488 83.9690 0015391 67.4158 292.8689 14.93903672 28169 +SNUGLITE-III DURI +1 66661U 25274M 26155.58872358 .00001878 00000-0 18134-3 0 9994 +2 66661 97.7484 85.2328 0015973 64.2020 296.0846 14.93956633 28355 +SAKHACUBE-CHOLBON +1 67290U 25313AU 26154.18192812 .00010577 00000-0 43076-3 0 9991 +2 67290 97.3924 229.3926 0010172 52.3667 307.8492 15.24621972 23842 +RS95S (QMR-KWT-2) +1 67291U 25313AV 26155.16619895 .00016254 00000-0 63454-3 0 9996 +2 67291 97.3930 230.5150 0009516 48.8222 311.3836 15.25939873 24004 +Ten-Koh2 +1 68261U 25241B 26153.84997429 .00006883 00000-0 29609-3 0 9990 +2 68261 51.6660 27.8529 0006535 101.1658 259.0055 15.23719437 12723 +JACK-002 +1 68417U 26067B 26155.12092779 .00007221 00000-0 34601-3 0 9992 +2 68417 97.4567 113.8754 0001764 27.3197 332.8130 15.19221851 9961 +DISCO 2 +1 68431U 26067R 26155.73210874 .00008768 00000-0 42354-3 0 9994 +2 68431 97.4600 114.4682 0003870 65.1833 294.9803 15.18875510 10052 +HADES-SA (SpinnyONE) +1 68446U 26067AG 26153.33220636 .00018852 00000-0 91402-3 0 9994 +2 68446 97.4412 111.8588 0009424 119.3546 240.8630 15.18523368 9674 +PARUS-6U1 +1 68456U 26067AS 26155.13190689 .00005685 00000-0 28781-3 0 9999 +2 68456 97.4553 113.6985 0007643 105.1613 255.0466 15.17371761 9954 +SAL-E +1 68458U 26067AU 26155.12919632 .00008056 00000-0 40412-3 0 9997 +2 68458 97.4479 113.6404 0007870 112.3057 247.9012 15.17561784 9956 +FSI-SAT 2 +1 68792U 26088A 26153.34376270 .00004963 00000-0 33735-3 0 9991 +2 68792 97.5061 302.9786 0015366 152.9612 207.2419 15.06706036 6054 +OrigamiSat 2 +1 68795U 26088D 26154.03393240 .00004950 00000-0 32153-3 0 9996 +2 68795 97.5061 303.7468 0016403 126.4469 233.8274 15.08375608 6167 +ARICA 2 +1 68796U 26088E 26155.02644113 .00005617 00000-0 36479-3 0 9991 +2 68796 97.5055 304.7138 0016935 121.8076 238.4804 15.08313250 6311 +WASEDA-SAT-ZERO-II +1 68797U 26088F 26152.37045560 .00007830 00000-0 50514-3 0 9993 +2 68797 97.5037 302.1246 0016669 130.5005 229.7679 15.08438851 5910 +MANGARO-II-Piscus +1 68798U 26088G 26153.29130287 .00005214 00000-0 33523-3 0 9992 +2 68798 97.5055 303.0466 0020297 130.0536 230.2477 15.08665251 6056 +IO-86 +1 40931U 25360.30710720 .00000000 00000-0 12800-3 0 00 +2 40931 6.0006 332.5373 0012733 338.8432 8.1437 14.79075515 01 +LILIUM-4 +1 71922C 26067AC 26089.50133053 -.00014632 00000+0 -74472-3 0 04 +2 71922 97.4497 49.1617 0004341 5.9603 355.7042 15.16896692 16 +/EX +SB KEPS @ AMSAT < CX2SA $ORB26163.1 +2Line Orbital Elements 26163.AMSAT +R:260612/0151Z 5216@GB7BWR.#45.GBR.EURO LinBPQ6.0.25 +R:260612/0119Z 10176@GB7BEX.#38.GBR.EURO LinBPQ6.0.25 +R:260612/0110Z 55207@EI2GYB.DGL.IRL.EURO LinBPQ6.0.25 +R:260612/0027Z 45023@PY2BIL.SP.BRA.SOAM LinBPQ6.0.25 +R:260612/0025Z @:PI8ZTM.#ZH1.NLD.EURO #:55607 [Den Haag] $:ORB26163.1 +R:260612/0024Z @:CX2SA.SAL.URY.SOAM #:601 [Salto] FBB7.00e $:ORB26163.1 + +From: CX2SA@CX2SA.SAL.URY.SOAM +To : KEPS@AMSAT + + +QST de W1STR + +AMSAT Orbital Elements for Amateur Satellites in TLE Format +>From Orbital Analysis Office +New England Sci-Tech STEM Education Center +Natick MA June 12, 2026 +To all radio amateurs + + +These element sets describe the orbits of various satellites +in use by the amateur radio community. For details see: +www.amsat.org/keplerian-elements-formats/ + +A daily update of element sets is available at: +www.amsat.org/tle/daily-bulletin.txt +or without bulletin text: +www.amsat.org/tle/dailytle.txt + + +AO-07 +1 07530U 74089B 26162.65147906 -.00000028 00000-0 11383-3 0 9998 +2 07530 101.9901 175.8403 0012513 140.4231 346.6371 12.53697989359829 +UO-11 +1 14781U 84021B 26162.71749374 .00001229 00000-0 13072-3 0 9995 +2 14781 97.8055 128.3534 0007126 190.9158 169.1907 14.90769946256317 +LO-19 +1 20442U 90005G 26162.53069412 .00000105 00000-0 54261-4 0 9991 +2 20442 98.8852 184.1803 0010820 218.5501 141.4911 14.34121495901580 +AO-27 +1 22825U 93061C 26162.68565860 .00000075 00000-0 45342-4 0 9993 +2 22825 98.6880 230.1011 0009459 113.9652 246.2522 14.30940798706216 +FO-29 +1 24278U 96046B 26162.54420303 .00000014 00000-0 46335-4 0 9996 +2 24278 98.5245 12.1894 0350827 111.0367 252.8667 13.53273928472403 +GO-32 +1 25397U 98043D 26162.58543429 .00000048 00000-0 41012-4 0 9991 +2 25397 99.0065 155.2028 0000734 176.4907 183.6276 14.24427354450534 +ISS +1 25544U 98067A 26162.83551936 .00007284 00000-0 13937-3 0 9994 +2 25544 51.6334 326.5798 0004934 175.2433 184.8603 15.49179015570924 +NO-44 +1 26931U 01043C 26162.64152601 .00000072 00000-0 57659-4 0 9996 +2 26931 67.0509 258.6152 0006100 264.4327 95.6080 14.31954152289657 +SO-50 +1 27607U 02058C 26162.55839360 .00000916 00000-0 12536-3 0 9999 +2 27607 64.5506 146.4007 0075403 263.5157 95.7360 14.83034770263626 +CO-55 +1 27844U 03031E 26162.55782411 .00000255 00000-0 12921-3 0 9992 +2 27844 98.6735 171.1873 0009139 194.6488 165.4428 14.24332340190876 +RS-22 +1 27939U 03042A 26162.85688567 .00001166 00000-0 18781-3 0 9991 +2 27939 98.3473 347.0658 0010045 288.8379 182.7006 14.73459418214764 +CO-65 +1 32785U 08021C 26162.87915317 .00004765 00000-0 30197-3 0 9999 +2 32785 97.8271 144.1871 0010285 55.0183 305.2009 15.09404107984398 +CO-66 +1 32791U 08021J 26162.25964503 .00015274 00000-0 48820-3 0 9998 +2 32791 97.7517 159.8749 0001967 23.1856 336.9473 15.32546772986382 +RS-30 +1 32953U 08025A 26162.86738984 -.00000003 00000-0 -93499-4 0 9990 +2 32953 82.5050 358.7505 0019066 325.8599 34.1253 12.43178812819036 +SRMSAT +1 37841U 11058D 26162.51581192 .00000355 00000-0 48954-4 0 9994 +2 37841 19.9715 93.7945 0011909 141.4141 27.1536 14.11574372757019 +ZACUBE-1 +1 39417U 13066B 26162.80818086 .00003114 00000-0 24384-3 0 9999 +2 39417 97.8084 125.1158 0040240 266.5236 93.1385 15.01156095679920 +Delfi-N3xt +1 39428U 13066N 26162.68974664 .00004026 00000-0 35436-3 0 9995 +2 39428 97.8343 83.0068 0073188 224.2839 135.2512 14.95029108673806 +GOMX-1 +1 39430U 13066Q 26162.80655015 .00002336 00000-0 35370-3 0 9997 +2 39430 97.6494 3.6098 0130200 94.6175 266.9916 14.69441735669121 +LO-74 +1 39440U 13066AA 26162.77121377 .00003584 00000-0 33291-3 0 9999 +2 39440 97.8899 111.7263 0058871 46.5267 314.0826 14.93717789676180 +AO-73 +1 39444U 13066AE 26162.55441071 .00005554 00000-0 34659-3 0 9993 +2 39444 97.8262 133.8824 0035145 220.5848 139.2760 15.09420112678819 +DTUSAT-2 +1 40030U 14033W 26162.55772759 .00006319 00000-0 34274-3 0 9994 +2 40030 98.0858 159.9274 0006276 248.7752 111.2808 15.14945636651838 +LILACSAT-2 +1 40908U 15049K 26162.85412267 .00016370 00000-0 28065-3 0 9993 +2 40908 97.4658 199.4931 0005266 270.7018 89.3630 15.51269609594924 +Horyu-4 +1 41340U 16012D 26161.10844880 .00337518 00000-0 10043-2 0 9998 +2 41340 30.9844 130.8123 0003461 226.4757 133.5616 15.90526809569681 +Lapan A3 +1 41603U 16040E 26162.90427465 .00003154 00000-0 10090-3 0 9995 +2 41603 97.1484 159.2235 0011468 43.2034 317.0107 15.33071180554004 +CAS-2T +1 41847U 16066G 26162.69969390 .00001523 00000-0 22073-3 0 9999 +2 41847 98.3821 238.4986 0342615 146.0770 216.2856 14.44676189504002 +TechnoSat +1 42829U 17042E 26162.39817513 .00003079 00000-0 22080-3 0 9997 +2 42829 97.4263 320.2771 0018777 112.5016 247.8201 15.04918472485839 +AO-91 +1 43017U 17073E 26162.58534500 .00008698 00000-0 38005-3 0 9990 +2 43017 97.4718 29.9151 0150450 348.6412 11.1435 15.12626564464549 +S-Net D +1 43186U 18014G 26162.72191544 .00004416 00000-0 22915-3 0 9993 +2 43186 97.5371 67.5470 0009451 46.9082 313.2940 15.16621821457936 +S-Net B +1 43187U 18014H 26162.73326255 .00004765 00000-0 24717-3 0 9993 +2 43187 97.5378 67.5446 0009958 42.2656 317.9343 15.16592344457930 +S-Net A +1 43188U 18014J 26162.72082205 .00004327 00000-0 22453-3 0 9996 +2 43188 97.5388 67.7398 0009847 43.1427 317.0576 15.16629419457936 +S-Net C +1 43189U 18014K 26162.67113179 .00004973 00000-0 25777-3 0 9995 +2 43189 97.5404 67.7643 0011029 35.4781 324.7183 15.16583570456475 +Ten-Koh +1 43677U 18084G 26162.53115580 .00002116 00000-0 16240-3 0 9999 +2 43677 98.0781 354.6565 0010975 131.3558 228.8611 15.02920830415316 +PO-101 +1 43678U 18084H 26162.83481030 .00002667 00000-0 21701-3 0 9998 +2 43678 98.1180 358.8112 0012215 187.4845 172.6197 15.00428066415413 +QO-100 +1 43700U 18090A 26162.62828442 .00000161 00000-0 00000+0 0 9992 +2 43700 0.0167 320.3790 0001431 157.1033 34.4948 1.00269967 27622 +MinXSS-2 +1 43758U 18099A 26162.72209756 .00031185 00000-0 62752-3 0 9992 +2 43758 97.4547 238.8477 0006295 277.9918 82.0617 15.46533045413287 +AO-95 +1 43770U 18099N 26162.11310128 .00010727 00000-0 41211-3 0 9991 +2 43770 97.4393 222.3819 0008614 20.0469 340.1107 15.26583130412293 +SNUSat 2 +1 43782U 18099AA 26162.61273932 .00007491 00000-0 33310-3 0 9995 +2 43782 97.4071 216.0820 0008897 321.3467 38.7132 15.21755815412181 +SnugLite +1 43784U 18099AC 26162.11537671 .00010460 00000-0 39674-3 0 9994 +2 43784 97.3877 216.4553 0001521 337.6782 22.4390 15.27045448412399 +ITASat 1 +1 43786U 18099AE 26162.68590565 .00006612 00000-0 31860-3 0 9992 +2 43786 97.4034 214.3073 0012715 19.6048 340.5673 15.18988570412075 +EAGLET 1 +1 43790U 18099AJ 26162.62940266 .00003955 00000-0 22801-3 0 9990 +2 43790 97.4235 212.4449 0011224 13.4989 346.6540 15.12897029411496 +ESEO +1 43792U 18099AL 26162.65911051 .00001966 00000-0 14545-3 0 9991 +2 43792 97.3966 200.2837 0011896 358.5401 1.5789 15.04225493410976 +JO-97 +1 43803U 18099AX 26162.41903211 .00013576 00000-0 42176-3 0 9998 +2 43803 97.4135 225.2337 0004121 290.5933 69.4867 15.33467542412740 +Suomi 100 +1 43804U 18099AY 26162.70662642 .00011026 00000-0 40226-3 0 9993 +2 43804 97.4194 223.1205 0008408 302.3070 57.7355 15.28290236412585 +ISAT +1 43879U 18111D 26162.79070485 .00088429 00000-0 91873-3 0 9992 +2 43879 97.5882 97.5998 0001251 59.2219 300.9163 15.64337273410329 +UWE-4 +1 43880U 18111E 26162.77811529 .00033079 00000-0 68244-3 0 9991 +2 43880 97.5852 90.9210 0006520 5.5235 354.6084 15.45791225409942 +Sparrow +1 43881U 18111F 26162.08988774 .00138135 00000-0 10146-2 0 9999 +2 43881 97.6115 102.3584 0004611 103.2888 256.8889 15.72684748410418 +Prox-1 +1 44339U 19036A 26162.63473251 .00012207 00000-0 11914-2 0 9990 +2 44339 23.9924 151.3410 0005369 331.4108 28.6097 14.90479846372648 +Taurus 1 +1 44530U 19059C 26162.80502664 .00005025 00000-0 80794-3 0 9991 +2 44530 98.6408 327.2998 0007654 335.2748 24.8090 14.72040742357859 +TO-108 +1 44881U 19093C 26162.86166634 .00000118 00000-0 19364-4 0 9991 +2 44881 97.7532 235.2236 0014977 102.4587 257.8305 14.86508603350625 +RS-44 +1 44909U 19096E 26162.61066808 .00000028 00000-0 60927-4 0 9991 +2 44909 82.5217 343.4113 0217927 157.1662 203.9312 12.79748751301632 +SALSAT +1 46495U 20068K 26162.58556220 .00006923 00000-0 24314-3 0 9991 +2 46495 97.8849 165.3093 0008526 331.4069 28.6701 15.29719030314503 +CSS (TIANHE-1) +1 48274U 21035A 26162.53781053 .00016554 00000-0 19807-3 0 9994 +2 48274 41.4693 356.3768 0008209 31.5834 328.5496 15.60566891292282 +CUTE +1 49263U 21088D 26162.21741475 .00170126 12795-4 53187-3 0 9993 +2 49263 97.4171 260.9418 0007805 241.5311 118.5177 15.91463951261601 +TeikyoSat 4 +1 49396U 21102B 26162.61866576 .00001857 00000-0 11958-3 0 9997 +2 49396 97.3672 192.3186 0010836 318.3974 41.6430 15.09489641251889 +Z-Sat +1 49399U 21102E 26162.85947080 .00002630 00000-0 13147-3 0 9998 +2 49399 97.3332 198.3438 0014802 265.7820 94.1723 15.18221160252635 +KOSEN 1 +1 49402U 21102H 26162.63638323 .00006530 00000-0 25045-3 0 9999 +2 49402 97.3194 204.9014 0012634 221.0806 138.9483 15.26758585253175 +HO-113 +1 50466U 21131B 26162.84816355 .00000475 00000-0 16045-3 0 9991 +2 50466 98.4973 255.2667 0005293 108.7025 251.4738 14.41352794234344 +SNUGLITE 2 +1 52899U 22065F 26162.63292372 .00000834 00000-0 16702-3 0 9993 +2 52899 98.2195 307.4736 0008329 48.8269 311.3650 14.64337670210180 +UmKA 1 (RS40S) +1 57172U 23091G 26162.69853169 .00005909 00000-0 27090-3 0 9995 +2 57172 97.5058 221.4167 0014017 134.8199 225.4178 15.20754474163175 +CubeBel-2 (EU11S) +1 57175U 23091K 26162.81772562 .00011356 00000-0 40481-3 0 9991 +2 57175 97.5060 225.9868 0011185 130.9539 229.2671 15.29019879163482 +RS-38S +1 57189U 23091Z 26162.80543860 .00015937 00000-0 45823-3 0 9996 +2 57189 97.5099 232.1829 0008561 93.8965 266.3257 15.35853733163866 +SONATE-2 +1 59112U 24043Q 26162.68083809 .00036244 00000-0 47794-3 0 9993 +2 59112 97.5519 312.7414 0006785 214.2461 145.8357 15.58306667127037 +GRBBeta +1 60237U 24128C 26162.57868025 .00003203 00000-0 22564-3 0 9993 +2 60237 61.9897 235.9431 0041389 133.4300 227.0250 15.06603237105429 +Curium One +1 60242U 24128H 26162.55059273 .00006356 00000-0 36934-3 0 9992 +2 60242 61.9783 225.7373 0040666 129.3155 231.1557 15.12441491105605 +ROBUSTA-3A +1 60243U 24128J 26162.51224362 .00006273 00000-0 37269-3 0 9992 +2 60243 61.9859 228.3117 0041955 127.1025 233.3917 15.11611105105568 +CatSat +1 60246U 24125J 26162.55312640 .00057615 00000-0 75817-3 0 9990 +2 60246 97.2095 14.9841 0022213 199.2504 160.7915 15.57988127106514 +HYPERVIEW-1G (RS66S) +1 61772U 24199AP 26162.85331163 .00120653 00000-0 82449-3 0 9992 +2 61772 97.2894 42.3086 0002612 249.1519 110.9466 15.74440956133839 +AO-123 +1 61781U 24199AY 26162.88690534 .00006895 00000-0 20107-3 0 9999 +2 61781 97.3015 31.6060 0012833 334.9444 25.1175 15.35599579133112 +JINJUSat 1B +1 63210U 25052A 26162.66446414 .00016024 00000-0 49924-3 0 9992 +2 63210 97.4020 59.4127 0005433 103.0743 257.1106 15.33330613 69259 +NUSHSAT 1 +1 63211U 25052B 26162.65180502 .00019890 00000-0 57318-3 0 9995 +2 63211 97.3997 59.9468 0005183 104.6380 255.5439 15.35755437 69293 +TEVEL2-4 +1 63213U 25052D 26162.70463612 .00017902 00000-0 53861-3 0 9990 +2 63213 97.3917 59.0886 0004732 113.7416 246.4323 15.34420215 69273 +TEVEL2-5 +1 63214U 25052E 26162.65930424 .00017637 00000-0 53362-3 0 9996 +2 63214 97.3921 58.9918 0004616 115.2111 244.9611 15.34247244 69264 +TEVEL2-6 +1 63215U 25052F 26162.67150742 .00017453 00000-0 52870-3 0 9995 +2 63215 97.3921 58.9890 0004506 114.2026 245.9689 15.34210437 69266 +TEVEL2-1 +1 63217U 25052H 26162.69862928 .00016389 00000-0 50495-3 0 9993 +2 63217 97.3892 58.6467 0004481 124.0183 236.1485 15.33685523 69253 +TEVEL2-3 +1 63218U 25052J 26162.69346801 .00016740 00000-0 51483-3 0 9990 +2 63218 97.3895 58.6628 0004465 124.0241 236.1426 15.33739822 69250 +TEVEL2-2 +1 63219U 25052K 26162.63372872 .00016607 00000-0 51153-3 0 9998 +2 63219 97.3892 58.5842 0004438 124.7997 235.3663 15.33691849 69249 +TEVEL2-9 +1 63237U 25052AD 26162.66933140 .00015595 00000-0 51070-3 0 9995 +2 63237 97.3955 58.0067 0007180 145.2035 214.9678 15.31729289 69181 +TEVEL2-7 +1 63238U 25052AE 26162.64384617 .00015266 00000-0 50453-3 0 9992 +2 63238 97.3956 57.8996 0007384 146.6025 213.5683 15.31438085 69172 +TEVEL2-8 +1 63239U 25052AF 26162.65204074 .00015443 00000-0 51057-3 0 9990 +2 63239 97.3954 57.8849 0007385 147.5513 212.6184 15.31421974 69176 +SPIRONE +1 66657U 25274H 26162.69424747 .00002371 00000-0 23018-3 0 9990 +2 66657 97.7482 92.0640 0013186 39.3964 320.8212 14.93524701 29402 +K-HERO +1 66660U 25274L 26162.70037605 .00001907 00000-0 18412-3 0 9995 +2 66660 97.7491 92.2272 0015174 42.4511 317.7880 14.93943998 29411 +SNUGLITE-III DURI +1 66661U 25274M 26162.35342095 .00001834 00000-0 17716-3 0 9994 +2 66661 97.7488 91.9052 0015727 43.9860 316.2609 14.93981607 29363 +SAKHACUBE-CHOLBON +1 67290U 25313AU 26162.71359684 .00008400 00000-0 34113-3 0 9995 +2 67290 97.3936 237.8168 0009403 24.6626 335.5060 15.24792040 25148 +RS95S (QMR-KWT-2) +1 67291U 25313AV 26162.70682690 .00012644 00000-0 49145-3 0 9997 +2 67291 97.3938 237.9744 0008769 23.1674 336.9958 15.26151310 25156 +Ten-Koh2 +1 68261U 25241B 26161.72007287 .00005667 00000-0 24553-3 0 9992 +2 68261 51.6686 350.4048 0006326 123.3884 236.7700 15.23827135 13924 +JACK-002 +1 68417U 26067B 26162.62928412 .00006536 00000-0 31259-3 0 9991 +2 68417 97.4561 121.2887 0000844 15.6757 344.4503 15.19326237 11101 +DISCO 2 +1 68431U 26067R 26162.84688025 .00007458 00000-0 35960-3 0 9991 +2 68431 97.4592 121.4922 0003298 52.2838 307.8695 15.18991676 11138 +HADES-SA (SpinnyONE) +1 68446U 26067AG 26162.62235870 .00017480 00000-0 83941-3 0 9997 +2 68446 97.4395 121.0022 0009569 96.0146 264.2179 15.18872260 11081 +PARUS-6U1 +1 68456U 26067AS 26162.38569289 .00004479 00000-0 22698-3 0 9991 +2 68456 97.4543 120.8384 0007638 86.8057 273.4050 15.17454121 11056 +SAL-E +1 68458U 26067AU 26162.38200311 .00005894 00000-0 29572-3 0 9991 +2 68458 97.4466 120.7745 0007993 93.8966 266.3182 15.17671197 11054 +FSI-SAT 2 +1 68792U 26088A 26162.37552808 .00003914 00000-0 26635-3 0 9993 +2 68792 97.5046 311.7813 0015567 125.1417 235.1272 15.06783507 7410 +OrigamiSat 2 +1 68795U 26088D 26162.12657880 .00002823 00000-0 18400-3 0 9994 +2 68795 97.5007 311.6580 0016405 100.0294 260.2787 15.08593796 7384 +ARICA 2 +1 68796U 26088E 26162.65547728 .00003522 00000-0 22986-3 0 9993 +2 68796 97.5045 312.1677 0017187 97.6089 262.7092 15.08382175 7463 +WASEDA-SAT-ZERO-II +1 68797U 26088F 26162.65195126 .00005254 00000-0 33909-3 0 9996 +2 68797 97.5044 312.1717 0016925 97.5686 262.7465 15.08578017 7465 +MANGARO-II-Piscus +1 68798U 26088G 26162.37767603 .00003385 00000-0 21864-3 0 9991 +2 68798 97.5053 311.9302 0020461 101.0235 259.3297 15.08739077 7420 +IO-86 +1 40931U 25360.30710720 .00000000 00000-0 12800-3 0 00 +2 40931 6.0006 332.5373 0012733 338.8432 8.1437 14.79075515 01 +LILIUM-4 +1 71922C 26067AC 26089.50133053 -.00014632 00000+0 -74472-3 0 04 +2 71922 97.4497 49.1617 0004341 5.9603 355.7042 15.16896692 16 +/EX diff --git a/Versions.h b/Versions.h index 1115329..f1cfa66 100644 --- a/Versions.h +++ b/Versions.h @@ -10,15 +10,15 @@ #endif -#define KVers 6,0,25,30 -#define KVerstring "6.0.25.30\0" +#define KVers 6,0,25,32 +#define KVerstring "6.0.25.32\0" #ifdef CKernel #define Vers KVers #define Verstring KVerstring -#define Datestring "April 2026" +#define Datestring "July 2026" #define VerComments "G8BPQ Packet Switch (C Version)" KVerstring #define VerCopyright "Copyright © 2001-2026 John Wiseman G8BPQ\0" #define VerDesc "BPQ32 Switch\0" diff --git a/asmstrucs.h b/asmstrucs.h index 5e7fb29..4c26ec5 100644 --- a/asmstrucs.h +++ b/asmstrucs.h @@ -237,7 +237,9 @@ typedef struct ROUTE int ConnectionAttempts; int Status; // - int OldBPQ; // Set if other end is BPQ sending RIF in mS + int mSRIF; // Set if other end is BPQ sending RIF in mS (Ver < 2) + int senderaddsRTT; // Set if link RTT added before sending (Ver = 1) + int timeoutRoutes; // Set if other end always sends timed RIF updates (Hourly) int LastRTT; // Last Value Reported int RTT; // Current int SRTT; // Smoothed RTT @@ -481,21 +483,45 @@ typedef struct _APPLCALLS // We treat the Routes as an array of 6. First 3 are NODES routes, next 3 are INP3 Routes. This works, but maybe is not ideal -typedef struct NR_DEST_ROUTE_ENTRY +struct NR_DEST_ROUTE_ENTRY { struct ROUTE * ROUT_NEIGHBOUR; // POINTER TO NEXT NODE IN PATH - UCHAR ROUT_QUALITY; // QUALITY - UCHAR ROUT_OBSCOUNT; - UCHAR ROUT_LOCKED; -} *PNR_DEST_ROUTE_ENTRY; + time_t padding; // + uint8_t ROUT_QUALITY; // QUALITY + uint8_t ROUT_OBSCOUNT; + uint8_t ROUT_LOCKED; +}; -typedef struct INP3_DEST_ROUTE_ENTRY +struct INP3_DEST_ROUTE_ENTRY { struct ROUTE * ROUT_NEIGHBOUR; // POINTER TO NEXT NODE IN PATH - USHORT STT; // Current time to dest from here (was called RTT but is one way not round trip. + time_t LastRefreshed; + uint16_t STT; // Current time to dest from here (was called RTT but is one way not round trip. // Is actually a smoothed value as is calculated from smoothed link times) - UCHAR Hops; -} *PDEST_ROUTE_ENTRY; + uint8_t Hops; +}; + +// Extended XR options for XROUTER + +typedef struct +{ + uint32_t IPADDR; + uint8_t Mask; + double Lat; + double Lon; + time_t Time; + uint16_t Port; + int16_t TZOffset; + char * LOC; + char * QTH; + char * Ver; + uint8_t SWType; + uint8_t NetworkFlags; + uint8_t ApplFlags; + uint8_t * Optionslist; // raw options as last received for relay +} XROptions; + + typedef struct DEST_LIST { @@ -520,6 +546,7 @@ typedef struct DEST_LIST int DEST_RTT; // SMOOTHED ROUND TRIP TIMER int DEST_COUNT; // FRAMES SENT USHORT LastTT; // Last INP3 Value sent. This is our value, which we now send + XROptions * XROptions; } dest_list; diff --git a/bpqchat.c b/bpqchat.c index 3fc9ab2..c12b5ab 100644 --- a/bpqchat.c +++ b/bpqchat.c @@ -70,12 +70,16 @@ // Allow /History to be shortened to /Hi (45) // Fix extra r charater in Chat Config Web Page -//.25 +//.24 // Increase size of status display buffers (7) // Allow sending BEL (CTRL/G) (79) // Fix sending BEL (CTRL/G) (81) +// .25 + +// Only flush logs every 30 secs (25.31) + #include "BPQChat.h" #include "Dbghelp.h" diff --git a/bpqmail.h b/bpqmail.h index 941d24a..ea7e73b 100644 --- a/bpqmail.h +++ b/bpqmail.h @@ -883,7 +883,6 @@ struct MSESSION int Index; // Line in Display }; -VOID __cdecl nprintf(CIRCUIT * conn, const char * format, ...); char * strlop(char * buf, char delim); int rt_cmd(CIRCUIT *circuit, char * Buffer); CIRCUIT *circuit_new(CIRCUIT *circuit, int flags); diff --git a/cMain.c b/cMain.c index fee87e5..b7f1b59 100644 --- a/cMain.c +++ b/cMain.c @@ -900,7 +900,8 @@ BOOL Start() MONTOFILEFLAG = cfg->C_MONTOFILE; - RIFInterval = cfg->C_RIFInterval; + if (cfg->C_RIFInterval) + RIFInterval = cfg->C_RIFInterval; if (cfg->C_OnlyVer2point0) SUPPORT2point2 = 0; diff --git a/config.c b/config.c index 57fe125..640ce10 100644 --- a/config.c +++ b/config.c @@ -192,6 +192,8 @@ VOID Consoleprintf(const char * format, ...) va_start(arglist, format); vsprintf(Mess, format, arglist); + va_end(arglist); + strcat(Mess, "\n"); WritetoConsoleLocal(Mess); diff --git a/mailapi.c b/mailapi.c index d8e6ed2..902e193 100644 --- a/mailapi.c +++ b/mailapi.c @@ -971,6 +971,10 @@ void SendBBSDataToPktMapThread(void * Param) // Get Routing MsgBytes = ReadMessageFile(Msg->number); + + if (MsgBytes == NULL) + continue; + RLines = malloc(Msg->length * 2); // Very unlikely to need so much but better safe.. strcpy(RLines, "[]");