Skip to content

Scheduling Details

Overview

Jetpack operates on a repeating basic schedule.

The Jetpack schedule is:

  • Get GPS lock (which also tells you the time)
  • At start minute:
    • Transmit Regular Message
  • At +2 min:
    • Transmit Basic Telemetry Message
  • [Repeat]

This is a repeating 10-minute window, with 5 time slots of 2 minutes apiece.

You can visualize this schedule as follows:

Mode Start minute
(Slot 1)
+ 2 min
(Slot 2)
+ 4 min
(Slot 3)
+ 6 min
(Slot 4)
+ 8 min
(Slot 5)
Default Regular Basic Telemetry

With Copilot Control, this schedule of tasks can be substantially modified and enhanced by you.

Custom Messages

You can send your own Custom Messages in any slot.

JavaScript controls this.

You can send a Custom Message in any combination of the indicated slots.

Mode Start minute
(Slot 1)
+ 2 min
(Slot 2)
+ 4 min
(Slot 3)
+ 6 min
(Slot 4)
+ 8 min
(Slot 5)
Default Regular Basic Telemetry
Copilot Regular
-or-
Custom Message
Basic Telemetry
-or-
Custom Message


Custom Message


Custom Message


Custom Message

Custom Actions

You can perform Custom Actions in any slot by using JavaScript to control the tracker hardware and IO.

This can be communicating with sensors via I2C, controlling devices via GPIO, and so on.

JavaScript controls this.

Custom Actions have no impact on Custom Messages or Default behavior.

Mode Start minute
(Slot 1)
+ 2 min
(Slot 2)
+ 4 min
(Slot 3)
+ 6 min
(Slot 4)
+ 8 min
(Slot 5)
Copilot Custom Action Custom Action Custom Action Custom Action Custom Action

Deciding What Happens

Jetpack lets you decide what happens in a given slot. You can:

  • Do nothing
  • Run JavaScript for a Custom Message
  • Run JavaScript for a Custom Action
  • Run JavaScript for both

Depending what you want to do, your control may be subject to requirements and affect the behavior of the tracker in more nuanced ways.

Requirements

Jetpack knows you want to send a Custom Message when your JavaScript uses the Message API.

Jetpack knows you need a GPS lock to run when your JavaScript uses GPS API.

These requirements are explored more fully below in Full Description of Slot Behavior.

GPS Coasting (GPS No-Lock Scenario)

Jetpack can schedule activity at the right time even without a GPS time lock

Jetpack's default behavior is to wait for a GPS lock before sending any messages.

With Copilot Control, you can specify Custom Messages to be sent without a GPS lock, and Custom Actions to be taken without a GPS lock.

Why a GPS Lock is Required Anyway

The reason a GPS lock is required for default behavior is because of two reasons:

  • Each of the two default messages require the GPS for their data content
  • The GPS tells us the exact time, allowing precise synchronization with the start of the 10-minute window

Coasting

Coasting is the act of Jetpack using its internal clock to synchronize to each 10-minute window without a new GPS time lock.

Jetpack knows the time of day at all times, provided it ever got the GPS time ever once since it powered on.

It can do this by using its internal clock to keep track of the time that has passed since the last-known GPS time lock.

The internal clock drifts, but not by much.

The drift should be minimal and appropriate to work with provided even semi-periodic GPS time locks.

Notably, the longer the time since the last GPS lock, the more the internal clock will be off.

The precise rate of drift will depend on many factors, but include temperature and physical manufacturing conditions.

What if Jetpack gets a GPS lock picks up mid-way through a 10 minute slot

It will wait for the next 10-minute window to make use of the GPS.

Slot action in the window the lock was acquired in will be treated as having no GPS lock.

This ensures that each slot in a 10-minute window has access to the exact same (fresh) GPS data, and that GPS data isn't used in other 10-minute windows.

When would you want GPS No-Lock activity?

Maybe you're taking sensor readings that have nothing to do with the GPS.

Send your Custom Message. The receiving stations mark the data with the time of reception.

Full Description of Slot Behavior

Jetpack's handling of a given slot depends on a number of factors.

These include:

  • Whether there is a GPS lock
  • Whether the slot JavaScript uses GPS
  • Whether the slot JavaScript wants to send a Custom Message

This section attempts to explain the interrelationship between these factors and what Jetpack will ultimately do.

This table represents scenarios where slot JavaScript exists.

JavaScript has to exist or only the default behavior occurs.

So, this table describes what happens when slot JavaScript exists.

If slot JavaScript doesn't parse or execute properly, the default behavior occurs.

Tracker has GPS Lock? JS Uses GPS? JS Sends Message? JS Will Run? Message Sent?
No No No Yes None
No No Yes Yes Custom
No Yes No No None
No Yes Yes No None
Yes No No Yes Default (if any)
Yes No Yes Yes Custom
Yes Yes No Yes Default (if any)
Yes Yes Yes Yes Custom

Copilot Control Slot Notes

This table shows which Copilot Control operations make most sense within each slot.

Copilot Control Slot 1 Slot 2 Slot 3 Slot 4 Slot 5
Custom Message ⚠️ ⚠️
Custom Action / Sensors

Slot 1

Custom Message

A Custom Message would replace the Regular Message.

You don't want to do this unless you really really really know what you're doing.

Custom Actions and/or sensor operations have no conflict.

Slot 2

Custom Message

A Custom Message would replace Basic Telemetry.

At the moment, Basic Telemetry provides much of the default telemetry provided by Jetpack.

Overriding sending this is fine, but you'll lose that Basic Telemetry (perhaps replaced by your own).

There's no way to optionally override this message, eg sometimes send Basic Telemetry and other times Custom Message (for now).

Custom Actions and/or sensor operations have no conflict.

Slot 3

Custom Messages have no conflict.

Custom Actions and/or sensor operations have no conflict.

Slot 4

Custom Messages have no conflict.

Custom Actions and/or sensor operations have no conflict.

Slot 5

Custom Message

A Custom Message is complex, see more below regarding timing and sequences.

Custom Actions and/or sensor operations have no conflict.

Technical Details

Specific Timing Sequence

In any given 2-minute slot, the sequence of activities Jetpack goes through looks like this:

Here we look at Slot 2, which starts with a 1m50s transmission:

Slot Schedule

Notice when the JavaScript (for Slot 3) is run.

The JavaScript for Slot 3 is actually run during Slot 2's time (in advance of Slot 3).

That is, in the period of Slot 2, after transmission, there is time to execute the JavaScript in advance of needing the resulting data for transmission in Slot 3.

Next 10-Min Window GPS Lock and Slot 5

Jetpack has a number of priorities to balance:

  • Get a good GPS lock for the next 10-minute window
  • Warmup transmitter to reduce drift
  • Use minimal power

These are not always all fully possible in every situation. They can come to a head in Slot 5 in some cases.

A few factors:

  • The GPS is turned off when not actively searching for a GPS lock
    • To save power
    • Also because the GPS can't get a lock when the Transmitter is active (interference)
  • The GPS should lock quickly, but doesn't always
    • Therefore it's beneficial to start looking for a lock as early as possible
    • This can sometimes take 1 minute or more (sometimes much more)
  • The transmitter wants to get "warmed up" by turning on 30 seconds beforehand
    • This reduces frequency drift and improves reception

When Jetpack has no more messages to send in a given 10-minute window, it wants to start getting a GPS lock again so it has the maximum amount of time to lock before the start of the next 10 minute window.

Here is a visualization of the conflicting priorities Jetpack faces when there is a message to be sent in Slot 5. (This assumes a 1-minute GPS lock time window wish, but in fact Jetpack wants as much as it can get).

Slot 5 Conflict

There is no single right answer to how to resolve these conflicts.

An experimental approach is to actually cut the WSPR transmission early in Slot 5 and letting receiving stations correct the missing bits using error correction within the WSPR protocol.

That looks like this:

Slot 5 Conflict Resolution

In this diagram, we see, in time for the next slot:

  • Transmission cut early
  • A GPS lock attempt
  • JavaScript run when GPS lock
  • Warmup

It may not go this way.

This may result in inferior reception, or no reception, of early-cut transmissions.

There are no guarantees about timings of a GPS lock.

As a result, it is not for certain that the lock will be acquired by the start of Slot 1.

In fact, it is known to, at times, take longer than 1 minute to get a GPS lock.

See the Full Description of Slot Behavior for full implications.