AltOS

AltOS is the name of Keith's firmware "operating system" for Altus Metrum products.

In addition to the firmware for hardware products like TeleMetrum, TeleMini, and TeleDongle, the AltOS source tree also includes AltosUI, which provides for flight monitoring, post-flight analysis, device configuration and firmware updating. AltosUI runs on Linux, Mac OS X and Windows. It's written in Java and offers the same functionality and interface on all three platforms. A small platform-specific library communicates with the USB interface on the Altus Metrum devices.

There are also Linux-specific tools that provide lower level access to the devices which are useful for developing firmware for the devices.

We maintain a list of launch site GPS coordinates. If your favorite launch site isn't included, please let us know!

Available Versions

There is a single manual for most Altus Metrum products, which is available in html and pdf formats.

We also have an AltOS internals document for programmers in html and pdf formats, and a document describing the AltOS over the radio protocol in html and pdf formats.

If you're running Windows 8, you should take a look at Installing AltosUI on Windows 8 which will help you install the operating system drivers needed to communicate with the USB hardware.


Version 1.2.1 is a minor release. It adds support for TeleBT and the AltosDroid application, provides several new features in AltosUI and fixes some bugs in the AltOS firmware.

AltOS Firmware Changes

  • Add support for TeleBT
  • In TeleMini recovery mode (when booted with the outer two debug pins connected together), the radio parameters are also set back to defaults (434.550MHz, N0CALL, factory radio cal).
  • Add support for reflashing the SkyTraq GPS chips. This requires special host-side code which currently only exists for Linux.
  • Correct Kalman filter model error covariance matrix. The values used previously assumed continuous measurements instead of discrete measurements.
  • Fix some bugs in the USB driver for TeleMetrum and TeleDongle that affected Windows users.
  • Adjusted the automatic gain control parameters that affect receive performance for TeleDongle. Field tests indicate that this may improve receive performance somewhat.

AltosUI Changes

  • Handle missing GPS lock in 'Descent' tab. Previously, if the GPS position of the pad was unknown, an exception would be raised, breaking the Descent tab contents.
  • Improve the graph, adding tool-tips to show values near the cursor and making the displayed set of values configurable, adding all of the flight data as options while leaving the default settings alone so that the graph starts by showing height, speed and acceleration.
  • Make the initial position of the AltosUI top level window configurable. Along with this change, the other windows will pop up at 'sensible' places now, instead of on top of one another.
  • Add callsign to Monitor idle window and connecting dialogs. This makes it clear which callsign is being used so that the operator will be aware that it must match the flight computer value or no communication will work.
  • When downloading flight data, display the block number so that the user has some sense of progress. Unfortunately, we don't know how many blocks will need to be downloaded, but at least it isn't just sitting there doing nothing for a long time.
  • Add GPS data and a map to the graph window. This lets you see a complete summary of the flight without needing to 'replay' the whole thing.


Version 1.1.1 is a bug-fix release. It fixes a couple of bugs in AltosUI and one firmware bug that affects TeleMetrum version 1.0 boards. Thanks to Bob Brown for help diagnosing the Google Earth file export issue, and for suggesting the addition of the Ground Distance value in the Descent tab.

AltOS Firmware Changes

  • TeleMetrum v1.0 boards use the AT45DB081D flash memory part to store flight data, which is different from later TeleMetrum boards. The AltOS v1.1 driver for this chip couldn't erase memory, leaving it impossible to delete flight data or update configuration values. This bug doesn't affect newer TeleMetrum boards, and it doesn't affect the safety of rockets flying version 1.1 firmware.

AltosUI Changes

  • Creating a Google Earth file (KML) from on-board flight data (EEPROM) would generate an empty file. The code responsible for reading the EEPROM file wasn't ever setting the GPS valid bits, and so the KML export code thought there was no GPS data in the file.
  • The “Landed” tab was displaying all values in metric units, even when AltosUI was configured to display imperial units. Somehow I just missed this tab when doing the units stuff.
  • The “Descent” tab displays the range to the rocket, which is a combination of the over-the-ground distance to the rockets current latitude/longitude and the height of the rocket. As such, it's useful for knowing how far away the rocket is, but difficult to use when estimating where the rocket might eventually land. A new “Ground Distance” field has been added which displays the distance to a spot right underneath the rocket.
  • Sensor data wasn't being displayed for TeleMini flight computers in Monitor Idle mode, including things like battery voltage. The code that picked which kinds of data to fetch from the flight computer was missing a check for TeleMini when deciding whether to fetch the analog sensor data.


Version 1.1 is a minor release. It provides a few new features in AltosUI and the AltOS firmware and fixes bugs.

AltOS Firmware Changes

  • Add apogee-lockout value. Overrides the apogee detection logic to prevent incorrect apogee charge firing.
  • Fix a bug where the data reported in telemetry packets was from 320ms ago.
  • Force the radio frequency to 434.550MHz when the debug clock pin is connected to ground at boot time. This provides a way to talk to a TeleMini which is configured to some unknown frequency.
  • Provide RSSI values for Monitor Idle mode. This makes it easy to check radio range without needing to go to flight mode.
  • Fix a bug which caused the old received telemetry packets to be retransmitted over the USB link when the radio was turned off and back on.

AltosUI Changes

  • Fix a bug that caused GPS ready to happen too quickly. The software was using every telemetry packet to signal new GPS data, which caused GPS ready to be signalled after 10 packets instead of 10 GPS updates.
  • Fix Google Earth data export to work with recent versions. The google earth file loading code got a lot pickier, requiring some minor white space changes in the export code.
  • Make the look-n-feel configurable, providing a choice from the available options.
  • Add an 'Age' element to mark how long since a telemetry packet has been received. Useful to quickly gauge whether communications with the rocket are still active.
  • Add 'Configure Ground Station' dialog to set the radio frequency used by a particular TeleDongle without having to go through the flight monitor UI.
  • Add configuration for the new apogee-lockout value. A menu provides a list of reasonable values, or the value can be set by hand.
  • Re-compute time spent in each state for the flight graph; this figures out the actual boost and landing times instead of using the conservative values provide by the flight electronics. This improves the accuracy of the boost acceleration and main descent rate computations.
  • Make AltosUI run on Mac OS Lion. The default Java heap space was dramatically reduced for this release causing much of the UI to fail randomly. This most often affected the satellite mapping download and displays.
  • Change how data are displayed in the 'table' tab of the flight monitoring window. This eliminates entries duplicated from the header and adds both current altitude and pad altitude, which are useful in 'Monitor Idle' mode.
  • Add Imperial units mode to present data in feet instead of meters.


Version 1.0.3 is a minor release adding support for TeleMetrum v1.2 boards

AltOS Firmware Changes

  • TeleMetrum version 1.2 is functionally identical to version 1.1, the only change required in the firmware was to adjust the product name reported over the USB link.


Version 1.0.2 is a bugfix release, addressing a minor issue found in version 1.0.1

AltOS Firmware Changes

  • On TeleMetrum, wait to enable the radio link for remote command operations until the device enters either idle or invalid mode. Ticket #26.
  • On TeleMini, delay during reboot for one second to give the TeleDongle time to leave radio link mode. Otherwise, the TeleDongle would send another radio link packet out while the TeleMini was rebooting, sending TeleMini right back to idle mode. Ticket #27.


Version 1.0.1 is a major release, adding support for the TeleMini device and lots of new AltosUI features

AltOS Firmware Changes

  • Add TeleMini v1.0 support. Firmware images for TeleMini are included in AltOS releases.
  • Change telemetry to be encoded in multiple 32-byte packets. This enables support for TeleMini and other devices without requiring further updates to the TeleDongle firmware.
  • Support operation of TeleMetrum with the antenna pointing aft. Previous firmware versions required the antenna to be pointing upwards, now there is a configuration option allowing the antenna to point aft, to aid installation in some airframes.
  • Ability to disable telemetry. For airframes where an antenna just isn't possible, or where radio transmissions might cause trouble with other electronics, there's a configuration option to disable all telemetry. Note that the board will still enable the radio link in idle mode.
  • Arbitrary frequency selection. The radios in Altus Metrum devices can be programmed to a wide range of frequencies, so instead of limiting devices to 10 pre-selected 'channels', the new firmware allows the user to choose any frequency in the 70cm band. Note that the RF matching circuit on the boards is tuned for around 435MHz, so frequencies far from that may reduce the available range.
  • Kalman-filter based flight-tracking. The model based sensor fusion approach of a Kalman filter means that AltOS now computes apogee much more accurately than before, generally within a fraction of a second. In addition, this approach allows the baro-only TeleMini device to correctly identify Mach transitions, avoiding the error-prone selection of a Mach delay.

AltosUI Changes

  • Wait for altimeter when using packet mode. Instead of quicly timing out when trying to initialize a packet mode configuration connection, AltosUI now waits indefinitely for the remote device to appear, providing a cancel button should the user get bored. This is necessary as the TeleMini can only be placed in "Idle" mode if AltosUI is polling it.
  • Add main/apogee voltage graphs to the data plot. This provides a visual indication if the igniters fail before being fired.
  • Scan for altimeter devices by watching the defined telemetry frequencies. This avoids the problem of remembering what frequency a device was configured to use, which is especially important with TeleMini which does not include a USB connection.
  • Monitor altimeter state in "Idle" mode. This provides much of the information presented in the "Pad" dialog from the Monitor Flight command, monitoring the igniters, battery and GPS status withing requiring the flight computer to be armed and ready for flight.
  • Pre-load map images from home. For those launch sites which don't provide free Wi-Fi, this allows you to download the necessary satellite images given the location of the launch site. A list of known launch sites is maintained at altusmetrum.org which AltosUI downloads to populate a menu; if you've got a launch site not on that list, please send the name of it, latitude and longitude along with a link to the web site of the controlling club to the altusmetrum mailing list.
  • Flight statistics are now displayed in the Graph data window. These include max height/speed/accel, average descent rates and a few other bits of information. The Graph Data window can now be reached from the 'Landed' tab in the Monitor Flight window so you can immediately see the results of a flight.


Version 0.9.2 is an AltosUI bug-fix release, with no firmware changes.

  • Fix plotting problems due to missing file in the Mac OS install image.
  • Always read whole eeprom blocks, mark empty records invalid, display parsing errors to user.
  • Add software version to Configure AltosUI dialog


Version 0.9 adds a few new firmware features and accompanying AltosUI changes, along with new hardware support.

  • Support for TeleMetrum v1.1 hardware. Sources for the flash memory part used in v1.0 dried up, so v1.1 uses a different part which required a new driver and support for explicit flight log erasing.
  • Multiple flight log support. This stores more than one flight log in the on-board flash memory. It also requires the user to explicitly erase flights so that you won't lose flight logs just because you fly the same board twice in one day.
  • Telemetry support for devices with serial number >= 256. Previous versions used a telemetry packet format that provided only 8 bits for the device serial number. This change requires that both ends of the telemetry link be running the 0.9 firmware or they will not communicate.


Version 0.8 offers a major upgrade in the AltosUI interface. Significant new features include:

  • Post-flight graphing tool. This lets you explore the behaviour of your rocket after flight with a scroll-able and zoom-able chart showing the altitude, speed and acceleration of the airframe along with events recorded by the flight computer. You can export graphs to PNG files, or print them directly.
  • Real-time moving map which overlays the in-progress flight on satellite imagery fetched from Google Maps. This lets you see in pictures where your rocket has landed, allowing you to plan recovery activities more accurately.
  • Wireless recovery system testing. Prep your rocket for flight and test fire the deployment charges to make sure things work as expected. All without threading wires through holes in your airframe.
  • Optimized flight status displays. Each flight state now has it's own custom 'tab' in the flight monitoring window so you can focus on the most important details. Pre-flight, the system shows a set of red/green status indicators for battery voltage, apogee/main igniter continutity and GPS reception. Wait until they're all green and your rocket is ready for flight. There are also tabs for ascent, descent and landing along with the original tabular view of the data.
  • Monitor multiple flights simultaneously. If you have more than one TeleDongle, you can monitor a flight with each one on the same computer.
  • Automatic flight monitoring at startup. Plug TeleDongle into the machine before starting AltosUI and it will automatically connect to it and prepare to monitor a flight.
  • Exports Google Earth flight tracks. Using the Keyhole Markup Language (.kml) file format, this provides a 3D view of your rocket flight through the Google Earth program.

Source Code

The latest source, which may include unreleased work in progress, is always available from git.gag.com in the project fw/altos.

We've gathered a few notes on buidling AltOS.

Future Plans

Bug reports, feature requests, and planning for AltOS releases happens on the Altus Metrum Trac Site.

A number of features are implemented or in process in the sources available in our publicly visible repository that are not part of the current stable release.

  • Motor characterization. Because TeleMetrum contains a high-resolution, high-frequency accelerometer, it is possible to take the data from that and compute an accurate thrust curve for the motor.

  • Comprehensive PDF and/or HTML -based flight report. Construct a complete report of the flight suitable for publication on the web that includes graphs of the flight and details about motor performance etc.

  • Publish flight data to the Altus Metrum web site. This will allow you to share your flight data with others, and let you download flights published by others.

There are any number of additions that could be made to this list; feel free to send along ideas that you’ve got. Of course, all of this software is licensed under the GNU General Public License, so you can get the source and hack on it in the comfort of your own home.

Platform Specific Notes

Linux

If you use Debian, you can simply install the 'altos' package from any Debian mirror, like so:

    apt-get update
    apt-get install altos

If you use Ubuntu, pre-built packages are available from this PPA maintained by Steve Conklin and friends.

If you use some other distribution of Linux, then a Linux package of our second-generation Java bits that should run on any distribution with a modern Java version is also available. Unlike the Debian pacakge, which depends on various libraries already part of the Debian distribution, this package includes a "fat" jar file with all of the Java libraries that aren't part of the basic Java runtime environment included, so it should "just work" on any system with Java 6. Development and testing is done with OpenJDK 6, but current downloads from java.com should be fine too.

If you'd rather build from source, our source tree includes documentation on how to build packages for various Linux systems such as Arch Linux, and the debian/ directory contains all the control files for building the Debian packages on other architectures or derivatives such as Ubuntu.

Bdale has also created a theme for GDM that he uses on his primary notebook, and the Simple Login Manager that he uses on all of his other machines and which is ideally suited for machines dedicated to AltOS ground station use. It includes a photo of a drag-race between nearly-identical rockets built by Keith and Bdale, that was the first time either of us gave TeleMetrum complete control of a rocket flight without some other backup! See the themes/ directory in the source tree (the themes are included in the Debian package).

Mac

A Mac OS X package that is compatible with versions 10.5 "Leopard" and later. The Mac operating system includes Java, and all Altus Metrum products show up as simple USB serial ports, so this should just work with no additional drivers or other dependency issues. Older versions of the Mac operating system, and even newer versions for PowerPC-based machines, come with Java version 5 or older, which is too old for use with Altus Metrum software. We know of no way to update the Java version other than upgrading to a newer operating system (for Intel based macs) or purchasing new hardware (for PowerPC based macs).

If you have trouble installing on a Mac, and are getting errors about the package being corrupt, you may not be configured to allow installation of software from arbitrary sources. One customer running 10.8.1 reported that he was able to work around this by going to "System Preferences", "Security & Privacy", "General", and then clicking the "Anywhere" radio button where it askes "Allow applications downloaded from:".

Windows

Our Windows package is known to work on at least some flavors of XP, Vista, and Windows 7 Enterprise. If you don't already have Java installed, download and install a current Java 6 version from java.com first. Then download our installer and run it. Windows already has the required USB serial device driver, and our package should do the right things to bind it to our devices, but if you get a complaint about the device being unrecognized, try pointing to the copy of the telemetrum.inf file included in the package directory manually.

Note that on some Windows 7 systems, it may be necessary to install AltOS using 'compatibility mode'. You can set this mode by changing the properties of the installer .exe.

License

The firmware and associated software are licensed GPL version 2