Repositories: tinyos, deputy-tinyos, nesc, APT Repository.

Package versioning

The TinyOS packages are built from the TMI TinyOS repository. The package version number is of the form tosver-tmiver, where tosver is the official TinyOS release version on which the code is based, and tmiver is the version of the modifications applied by TMI. Released APT package versions are associated with tags in the source code repository. Consider the latest package version, 2.1.1-4.5, for which these tags exist in the repository:

  • debian/2.1.1-4.5-2tmi is the tag of the 'debianized' code from which the APT packages version 2.1.1-4.5-2tmi were built.

  • release/2.1.1-4.5 is the tag of the TinyOS code of which debian/2.1.1-4.5-2tmi is a superset, the latter containing the debian packaging files.

  • tinyos/2.1.1 is the official upstream release on which release/2.1.1-4.5 is based, the difference being the TMI enhancements.

  • patchset/2.1.1-4.5 is the head of a string of commits from the tinyos/2.1.1 tag that represent a clean patch series that applies the TMI enhancements to the official upstream release.

Multiple source trees

Often it is impractical to maintain older applications by porting them forward to the latest TinyOS version. The TMI approach allows multiple TinyOS trees to be installed simultaneously, thereby allowing different applications to be compiled against different TinyOS versions.

The official TinyOS installs the source tree at /opt/tinyos-2.x. The TMI version installs source trees at /opt/tinyos/VER. For example, the latest TMI tree is installed at /opt/tinyos/2.1.1-4.5. TMI also maintains in its repository the last few official source trees. At least one must be installed, and the developer may install others as needed. When installing or upgrading TMI TinyOS packages via APT, the latest TMI tree package is automatically installed. Source the script /opt/tinyos/ to set the tree you wish to use. This script also updates your shell rc file (if running bash, ksh or csh) so that your tree selection is persistent across logins.

For our development, however, we tend to use a local git checkout of our enhanced TinyOS tree locally instead. This allows for easy development within the TinyOS source in a convenient manner. The script in the TMI tinyos package also supports this capability.

This is the currently available trees as of this writing. You can use the command shown below to at any time view the available source trees.

$ apt-cache search tinyos-source
tinyos-source - TinyOS source meta package
tinyos-source-2.0.1 - TinyOS source code tree, upstream release
tinyos-source- - TinyOS source code tree, upstream release
tinyos-source-2.1.0 - TinyOS source code tree, upstream release
tinyos-source-2.1.0-3 - TinyOS source code tree
tinyos-source-2.1.0-4 - TinyOS source code tree
tinyos-source-2.1.0-4.1 - TinyOS source code tree
tinyos-source-2.1.0-4.2 - TinyOS source code tree
tinyos-source-2.1.1-4.3 - TinyOS source code tree
tinyos-source-2.1.1-4.4 - TinyOS source code tree
tinyos-source-2.1.1-4.5 - TinyOS source code tree

TMI quit providing pristine packages after 2.1.0. Using any TinyOS source tree not provided by TMI packages is easy. Simply source the /opt/tinyos/ script with an argument of the directory containing the source tree.

Installing TinyOS

To install TinyOS, perform the steps shown for the APT Repository, then type:

sudo apt-get install tinyos

By default, the latest TinyOS source tree, with TMI enhancements, and the TMI MSP430 toolchain are installed. At this point, additional tinyos source trees may be installed as required. For example, to install the official upstream source version 2.1.0 without TMI enhancements:

sudo apt-get install tinyos-source-2.1.0

You may also install the MSP430 compiler for TinyOS by typing:

sudo apt-get install tinyos-msp430

tinyos-msp430 is a virtual package that conveniently pulls in the msp430 toolchain already present in standard Ubuntu repositories. TMI is doing no TinyOS work with Atmel AVR parts, so we are no longer maintaining the tinyos-avr virtual pacakge in our repository.