Containers and Jaguar
Jaguar is Toit's development tool. It dynamically installs and runs program (as containers) on devices.
Prerequisites
We assume that you have read the container introduction.
Listing containers
When Jaguar is flashed onto a device (with jag flash
) it automatically
adds a service version of Jaguar as container to the device. All other
programs that are executed or installed with Jaguar are installed
dynamically.
After flashing Jaguar onto a device, you can list the installed containers:
By default this should list a single container called jaguar
.
Installing containers
You can install additional containers with the jag container install
:
Note that Jaguar automatically compiles the given program (hello.toit
)
into a snapshot before installing it.
Containers that are installed this way are automatically started after installation and at boot time.
Uninstalling containers
You can uninstall containers with jag container uninstall
:
Disabling Jaguar
Sometimes it can be useful or necessary to disable Jaguar when running a specific container.
This can be done by installing the container with the -D jag.disabled
flag:
At the next boot this gives the container 10 seconds to run before Jaguar
is started. If 10 seconds is not enough, you can specify a different
timeout with -D jag.timeout=<duration>
, where <duration>
is a
duration string like 10s
or 1m
.
Example:
Use cases
The primary use case for disabling Jaguar is to run a container that needs full access to the WiFi module. For example, a container that implements a WiFi access point. The provision package falls into this category.
Disabling Jaguar can also be used to limit battery usage. For example,
a program could sample a sensor at regular intervals and immediately go
to deep-sleep without giving Jaguar a chance to
run and start the WiFi. Only if a certain condition is met (like a
button is pressed), it could avoid the call to deep-sleep
and
instead let Jaguar run.
We don't recommend keeping Jaguar active in production devices, since it gives the user full access to the device. Instead, we recommend to use Artemis instead.