Sunday, 20 December 2009

An ARINC 661 tutorial: architecture

Well I promised a second part in my first introductory blog to ARINC 661. That's it.
The following image is a a rough diagram on how ARINC 661 works at design time and at runtime:

  • The ARINC 661 Server (also called ARINC 661 Kernel), which is a part of the Cockpit Display System (CDS) is initialized with a set a ARINC 661 Definition Files. Remember that they are the equivalent of XUL or HTML Files, which means that the code of the Server is completely generic, and that any set of DFs can be used to start the Server. Hence the Server GUI code is not hard coded.

  • At runtime, the System Applications (called user Applications or UA in the standard) are able to communicate to the Server to change widget parameters that were created at initialization. From the other side, the Server send to the User Application user events on widgets (such as clicks on buttons, change of text fields, etc...)

The format of a Definition File is completely defined in the standard. The "base format" is binary based (for the computer savvy, with Big-Endian ordering, to be sure that it's the same in any architecture). But the standard also defines an XML format.

The low-level network communication is not defined by the standard (allowing to use any relevant network transport protocol, such as ARINC 429, AFDX, or even simpler protocols such as UDP or TCP. But the content of the messages send from/to the Server or the User Application are also formally defined by the standard.

This architecture allows for very cool things, which are new for avionics systems: It is possible to define a Cockpit GUI completely on standard PC hardware and OS, and even to test it (at least on the CDS side), and then deploy the GUI definition (the Definition Files) on the real avionics system without any change.


jeanmatthieu.d said...


How do you develop a such GUI ? And how do you test it on a PC ?

Thx for all,


mithrandir said...


I have developed a fairly complete Java ARINC 661 Server, which can work on any platform that support a JVM. It's not so hard to provide such an implementation for the standard, as it's widget library is very close to what we can see today on the PC world.

I (and my employer) are currently looking on the modalities of providing the Server as an Open-source project.

There exist two COTS tools which support editing ARINC 661 Definition Files and running them as a Server, but they still are very expensive at the moment.

jeanmatthieu.d said...

Thx for your help !
Don't hesitate to notify me when you do something on this subject :)

George P. said...
This comment has been removed by the author.
George P. said...


Thank you for the tutorials! I hope my question below is not "very" off topic.
I suppose it would not be serious limitations to build an aircraft monitoring application on a ground station (e.g. a PC computer, using telemetry data from the aircraft) based on an adapted UA (generating parameter commands to a CDS application - on the same PC computer).

My intention is to mix some HMI controls from the a/c (in “real” time) with customized own controls boxes, time diagrams, flight path on a geographical map, using other telemetred a/c parameters (e.g. temperatures) which are normally not presented in the a/c displays.

That customized controls should be build as 661 widgets, which I hope is possible. Naturally, the DF should be derived from the a/c DF, probably downsized, providing additional descriptions for the monitored parameters.

Thank for any comment!

I also suppose that this design would be quite as fast in update the monitor (e.g. at least 1 Hz) as any other similar designs (MATLAB, C).

herve said...

@George P.: That would not be a problem at all. I have tested ARINC 661 graphic-intensive displays which were capable of 25 Hz framerate. And the ARINC 661 CDS was a Java app. Also designing Maps in ARINC 661, and mixing them with the other widgets, is rather easy.

olivier said...

Hi, thanks for these quite interesting articles.

I'm currently looking for tool to create DF files and an engine to treat DF files.

My understanding is that no open source soft exists yet about this A661 topic.

In a first approach I was considering to analyse how Gecko engine is dealing with XUL and adapt it with DF syntax.
Do you think it's a good approach ?
Which Wysiwyg tool which create XUL file could be interesting to work with ?

mithrandir said...

@olivier: In fact I developed an ARINC 661 Server in Java some time ago, at the beginning in my spare time at home. My company is currently looking on providing the Server as an Open-source project. I think it should happen soon now (but we never know, in these cases, because companies are often very cautious about providing code as Open Source.

However, as for your XUL idea, I think it would be possible, at least for the construction part of the DFs. I will soon post another article about how ARINC 661 Servers deal with UAs incoming messages. Maybe it would be possible for this too. I promise to post this soon ;)