<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.flightgear.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tuxklok</id>
	<title>FlightGear wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.flightgear.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tuxklok"/>
	<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/Special:Contributions/Tuxklok"/>
	<updated>2026-04-15T11:06:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Generic_protocol&amp;diff=39877</id>
		<title>Generic protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Generic_protocol&amp;diff=39877"/>
		<updated>2012-01-31T03:26:04Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ''generic'' communication protocol for FlightGear provides a powerful way of adding a simple ASCII based or binary input/output protocol, just by defining an XML encoded configuration file and placing it in the [[$FG ROOT]]/Protocol/ directory.&lt;br /&gt;
&lt;br /&gt;
== XML File Layout ==&lt;br /&gt;
&lt;br /&gt;
A protocol file can contain either or both of '''&amp;lt;input&amp;gt;''' and '''&amp;lt;output&amp;gt;''' definition blocks. Which one is used depends on how the protocol is called. The following example would only use the &amp;lt;output&amp;gt; definitions block.&lt;br /&gt;
 --generic=file,out,1,/tmp/data.xml,myproto&lt;br /&gt;
&lt;br /&gt;
If you're using a serial port under Windows, you must use a special escape sequence for COM port numbers higher than COM9.  &lt;br /&gt;
&lt;br /&gt;
Ex: --generic=\\.\COM10,out,1,/tmp/data.xml,myproto&lt;br /&gt;
&lt;br /&gt;
More detail can be found in this Microsoft KB article: http://msdn.microsoft.com/en-us/library/aa363858%28v=vs.85%29.aspx&lt;br /&gt;
&lt;br /&gt;
Overview of the XML file&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
    &amp;lt;generic&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;output&amp;gt;&lt;br /&gt;
            &amp;lt;binary_mode&amp;gt;false&amp;lt;/binary_mode&amp;gt;&lt;br /&gt;
            &amp;lt;line_separator&amp;gt;&amp;lt;/line_separator&amp;gt;&lt;br /&gt;
            &amp;lt;var_separator&amp;gt;&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
            &amp;lt;preamble&amp;gt;&amp;lt;/preamble&amp;gt;&lt;br /&gt;
            &amp;lt;postamble&amp;gt;&amp;lt;/postamble&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
            &amp;lt;chunk&amp;gt;&lt;br /&gt;
                ... first chunk spec ...&lt;br /&gt;
            &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
            &amp;lt;chunk&amp;gt;&lt;br /&gt;
                ... another chunk etc. ...&lt;br /&gt;
            &amp;lt;/chunk&amp;gt;&lt;br /&gt;
        &amp;lt;/output&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;input&amp;gt;&lt;br /&gt;
            &amp;lt;line_separator&amp;gt;&amp;lt;/line_separator&amp;gt;&lt;br /&gt;
            &amp;lt;var_separator&amp;gt;&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
            &amp;lt;chunk&amp;gt;&lt;br /&gt;
                ... chunk spec ...&lt;br /&gt;
            &amp;lt;/chunk&amp;gt;&lt;br /&gt;
        &amp;lt;/input&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;/generic&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Input/Output Parameters ==&lt;br /&gt;
&lt;br /&gt;
Both '''&amp;lt;input&amp;gt;''' and '''&amp;lt;input&amp;gt;''' blocks can contain information about the data mode (ascii/binary) and about separators between fields and data sets, as well as a list of '''&amp;lt;chunk&amp;gt;'''s. Each '''&amp;lt;chunk&amp;gt;''' defines a property that should be written (and how), or a variable and which property it should be written to.&lt;br /&gt;
&lt;br /&gt;
==== ASCII protocol parameters ====&lt;br /&gt;
&lt;br /&gt;
Output only:&lt;br /&gt;
 &amp;lt;preamble&amp;gt;        STRING  default: &amp;quot;&amp;quot;    file header put on top of the file&lt;br /&gt;
 &amp;lt;postamble&amp;gt;       STRING  default: &amp;quot;&amp;quot;    file footer put at the end of the file&lt;br /&gt;
&lt;br /&gt;
Input &amp;amp; Output:&lt;br /&gt;
 &amp;lt;binary_mode&amp;gt;	    BOOL    default: false (= ASCII mode)&lt;br /&gt;
 &amp;lt;var_separator&amp;gt;   STRING  default: &amp;quot;&amp;quot;    field separator&lt;br /&gt;
 &amp;lt;line_separator&amp;gt;  STRING  default: &amp;quot;&amp;quot;    separator between data sets&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;var_separator&amp;gt;''' is put between every two output properties&lt;br /&gt;
* '''&amp;lt;line_separator&amp;gt;''' is put at the end of each data set. &lt;br /&gt;
Both can contain arbitrary strings or one of the following keywords:&lt;br /&gt;
&lt;br /&gt;
  Name             Character&lt;br /&gt;
 ------------------------------&lt;br /&gt;
  newline          '\n'&lt;br /&gt;
  tab              '\t'&lt;br /&gt;
  formfeed         '\f'&lt;br /&gt;
  carriagereturn   '\r'&lt;br /&gt;
  verticaltab      '\v'&lt;br /&gt;
&lt;br /&gt;
Typical use could be:&lt;br /&gt;
 &amp;lt;var_separator&amp;gt;tab&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
 &amp;lt;line_separator&amp;gt;newline&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
 &amp;lt;var_separator&amp;gt;\t&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
 &amp;lt;line_separator&amp;gt;\r\n&amp;lt;/line_separator&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Binary protocol parameters ====&lt;br /&gt;
&lt;br /&gt;
To enable binary mode, simply include a '''&amp;lt;binary_mode&amp;gt;true&amp;lt;/binary_mode&amp;gt;''' tag in your XML file. The format of the binary output is tightly packed, with 1 byte for bool, 4 bytes for int, and 8 bytes for double. At this time, strings are not supported. A configurable footer at the end of each &amp;quot;line&amp;quot; or packet of binary output can be added using the '''&amp;lt;binary_footer&amp;gt;''' tag. Options include the length of the packet, a magic number to simplify decoding. Examples:&lt;br /&gt;
  &amp;lt;binary_footer&amp;gt;magic,0x12345678&amp;lt;/binary_footer&amp;gt;&lt;br /&gt;
  &amp;lt;binary_footer&amp;gt;length&amp;lt;/binary_footer&amp;gt;&lt;br /&gt;
  &amp;lt;binary_footer&amp;gt;none&amp;lt;/binary_footer&amp;gt;                 &amp;lt;!-- default --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Variable Parameters - &amp;lt;chunk&amp;gt; spec ==&lt;br /&gt;
&lt;br /&gt;
Both &amp;lt;input&amp;gt; and &amp;lt;output&amp;gt; block can contain a list of &amp;lt;chunk&amp;gt; specs, each of which describes the properties of on variable to write/read.&lt;br /&gt;
===== &amp;lt;name&amp;gt; =====&lt;br /&gt;
For ease of use and not tranferred (like a notes tag)&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;node&amp;gt; =====&lt;br /&gt;
The [[Property Tree|property tree]] node which provides the data&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;type&amp;gt; =====&lt;br /&gt;
The value type which is needed for formatting, one of string, float, bool, int (default: int). Its recommended that this tag is present otherwise spurious results can occur.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;format&amp;gt; =====&lt;br /&gt;
ASCII protocol only, not used or needed in binary mode. Defines the actual piece of text which should be sent. it can include &amp;quot;printf&amp;quot; style formatting options like:&lt;br /&gt;
            &amp;lt;type&amp;gt;&lt;br /&gt;
    %s      string&lt;br /&gt;
    %d      integer (default)&lt;br /&gt;
    %f      float&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;factor&amp;gt; =====&lt;br /&gt;
An optional multiplication factor which can be used for unit conversion, for example, radians to degrees.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;offset&amp;gt; =====&lt;br /&gt;
An optional offset which can be used for unit conversion, for example, degrees Celcius to degrees Fahrenheit.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;format&amp;gt; ====&lt;br /&gt;
Chunks can also consist of a single constant &amp;lt;format&amp;gt;, like in:&lt;br /&gt;
 &amp;lt;format&amp;gt;Data Section&amp;lt;/format&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
==== Example 1 ====&lt;br /&gt;
Writes log of this form:&lt;br /&gt;
 V=16&lt;br /&gt;
 H=3.590505&lt;br /&gt;
 P=3.59&lt;br /&gt;
 V=12&lt;br /&gt;
 H=3.589020&lt;br /&gt;
 P=3.59&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt; &lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;generic&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;output&amp;gt;&lt;br /&gt;
      &amp;lt;line_separator&amp;gt;newline&amp;lt;/line_separator&amp;gt;&lt;br /&gt;
      &amp;lt;var_separator&amp;gt;newline&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
      &amp;lt;binary_mode&amp;gt;false&amp;lt;/binary_mode&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;speed&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;V=%d&amp;lt;/format&amp;gt;&lt;br /&gt;
        &amp;lt;node&amp;gt;/velocities/airspeed-kt&amp;lt;/node&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;heading (rad)&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;H=%.6f&amp;lt;/format&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;float&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;node&amp;gt;/orientation/heading-deg&amp;lt;/node&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.0174532925199433&amp;lt;/factor&amp;gt;  &amp;lt;!-- degrees to radians --&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;pitch angle (deg)&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;P=%03.2f&amp;lt;/format&amp;gt;&lt;br /&gt;
        &amp;lt;node&amp;gt;/orientation/pitch-deg&amp;lt;/node&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
   &amp;lt;/output&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/generic&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Writing data in XML format====&lt;br /&gt;
Assuming the file is called [[$FG ROOT]]/Protocol/xmltest.xml, then it could be used as &lt;br /&gt;
 fgfs --generic=file,out,1,/tmp/data.xml,xmltest&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
  &amp;lt;generic&amp;gt;&lt;br /&gt;
    &amp;lt;output&amp;gt;&lt;br /&gt;
      &amp;lt;binary_mode&amp;gt;false&amp;lt;/binary_mode&amp;gt;&lt;br /&gt;
      &amp;lt;var_separator&amp;gt;\n&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
      &amp;lt;line_separator&amp;gt;\n&amp;lt;/line_separator&amp;gt;&lt;br /&gt;
      &amp;lt;preamble&amp;gt;&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;amp;gt;\n\n&amp;amp;lt;data&amp;amp;gt;\n&amp;lt;/preamble&amp;gt;&lt;br /&gt;
      &amp;lt;postamble&amp;gt;&amp;amp;lt;/data&amp;amp;gt;\n&amp;lt;/postamble&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;\t&amp;amp;lt;set&amp;amp;gt;&amp;lt;/format&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;node&amp;gt;/position/altitude-ft&amp;lt;/node&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;float&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;\t\t&amp;amp;lt;altitude-ft&amp;amp;gt;%.8f&amp;amp;lt;/altitude-ft&amp;amp;gt;&amp;lt;/format&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;node&amp;gt;/velocities/airspeed-kt&amp;lt;/node&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;float&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;\t\t&amp;amp;lt;airspeed-kt&amp;amp;gt;%.8f&amp;amp;lt;/airspeed-kt&amp;amp;gt;&amp;lt;/format&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;\t&amp;amp;lt;/set&amp;amp;gt;&amp;lt;/format&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
    &amp;lt;/output&amp;gt;&lt;br /&gt;
 &amp;lt;/generic&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Analyzing the resulting binary packet format ==&lt;br /&gt;
A utility called ''generic-protocol-analyse'' can be found under FlightGear/utils/xmlgrep which can be used to analyze the resulting data packet for the binary protocol. The output would be something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bintest.xml&lt;br /&gt;
Generic binary output protocol packet description:&lt;br /&gt;
&lt;br /&gt;
 pos | size |  type  | factor     | description&lt;br /&gt;
-----|------|--------|------------|------------------------&lt;br /&gt;
   0 |    4 |    int |            | indicated speed (kt)&lt;br /&gt;
   4 |    4 |  float |            | pitch att (deg)&lt;br /&gt;
   8 |    4 |  float |            | magnetic heading (deg)&lt;br /&gt;
  12 |    4 |    int |            | outside air temperarure (degF)&lt;br /&gt;
  16 |    1 |   bool |            | autocoord&lt;br /&gt;
&lt;br /&gt;
total package size: 17 bytes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* https://gitorious.org/fg/fgdata/blobs/master/Docs/README.protocol&lt;br /&gt;
* https://gitorious.org/fg/fgdata/blobs/master/Docs/README.IO&lt;br /&gt;
[[Category:XML]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Generic_protocol&amp;diff=39876</id>
		<title>Generic protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Generic_protocol&amp;diff=39876"/>
		<updated>2012-01-31T03:24:21Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ''generic'' communication protocol for FlightGear provides a powerful way of adding a simple ASCII based or binary input/output protocol, just by defining an XML encoded configuration file and placing it in the [[$FG ROOT]]/Protocol/ directory.&lt;br /&gt;
&lt;br /&gt;
== XML File Layout ==&lt;br /&gt;
&lt;br /&gt;
A protocol file can contain either or both of '''&amp;lt;input&amp;gt;''' and '''&amp;lt;output&amp;gt;''' definition blocks. Which one is used depends on how the protocol is called. The following example would only use the &amp;lt;output&amp;gt; definitions block.&lt;br /&gt;
 --generic=file,out,1,/tmp/data.xml,myproto&lt;br /&gt;
&lt;br /&gt;
If you're using a serial port under Windows, you must use a special escape sequence for COM port numbers higher than COM9.  &lt;br /&gt;
&lt;br /&gt;
Ex: --generic=\\.\COM10,out,1,/tmp/data.xml,myproto&lt;br /&gt;
&lt;br /&gt;
More detail can be found in this Microsoft KB article: http://msdn.microsoft.com/en-us/library/aa363858%28v=vs.85%29.aspx&lt;br /&gt;
&lt;br /&gt;
Overview of the XML file&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
    &amp;lt;generic&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;output&amp;gt;&lt;br /&gt;
            &amp;lt;binary_mode&amp;gt;false&amp;lt;/binary_mode&amp;gt;&lt;br /&gt;
            &amp;lt;line_separator&amp;gt;&amp;lt;/line_separator&amp;gt;&lt;br /&gt;
            &amp;lt;var_separator&amp;gt;&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
            &amp;lt;preamble&amp;gt;&amp;lt;/preamble&amp;gt;&lt;br /&gt;
            &amp;lt;postamble&amp;gt;&amp;lt;/postamble&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
            &amp;lt;chunk&amp;gt;&lt;br /&gt;
                ... first chunk spec ...&lt;br /&gt;
            &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
            &amp;lt;chunk&amp;gt;&lt;br /&gt;
                ... another chunk etc. ...&lt;br /&gt;
            &amp;lt;/chunk&amp;gt;&lt;br /&gt;
        &amp;lt;/output&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;input&amp;gt;&lt;br /&gt;
            &amp;lt;line_separator&amp;gt;&amp;lt;/line_separator&amp;gt;&lt;br /&gt;
            &amp;lt;var_separator&amp;gt;&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
            &amp;lt;chunk&amp;gt;&lt;br /&gt;
                ... chunk spec ...&lt;br /&gt;
            &amp;lt;/chunk&amp;gt;&lt;br /&gt;
        &amp;lt;/input&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;/generic&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Input/Output Parameters ==&lt;br /&gt;
&lt;br /&gt;
Both '''&amp;lt;input&amp;gt;''' and '''&amp;lt;input&amp;gt;''' blocks can contain information about the data mode (ascii/binary) and about separators between fields and data sets, as well as a list of '''&amp;lt;chunk&amp;gt;'''s. Each '''&amp;lt;chunk&amp;gt;''' defines a property that should be written (and how), or a variable and which property it should be written to.&lt;br /&gt;
&lt;br /&gt;
==== ASCII protocol parameters ====&lt;br /&gt;
&lt;br /&gt;
Output only:&lt;br /&gt;
 &amp;lt;preamble&amp;gt;        STRING  default: &amp;quot;&amp;quot;    file header put on top of the file&lt;br /&gt;
 &amp;lt;postamble&amp;gt;       STRING  default: &amp;quot;&amp;quot;    file footer put at the end of the file&lt;br /&gt;
&lt;br /&gt;
Input &amp;amp; Output:&lt;br /&gt;
 &amp;lt;binary_mode&amp;gt;	    BOOL    default: false (= ASCII mode)&lt;br /&gt;
 &amp;lt;var_separator&amp;gt;   STRING  default: &amp;quot;&amp;quot;    field separator&lt;br /&gt;
 &amp;lt;line_separator&amp;gt;  STRING  default: &amp;quot;&amp;quot;    separator between data sets&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;var_separator&amp;gt;''' is put between every two output properties&lt;br /&gt;
* '''&amp;lt;line_separator&amp;gt;''' is put at the end of each data set. &lt;br /&gt;
Both can contain arbitrary strings or one of the following keywords:&lt;br /&gt;
&lt;br /&gt;
  Name             Character&lt;br /&gt;
 ------------------------------&lt;br /&gt;
  newline          '\n'&lt;br /&gt;
  tab              '\t'&lt;br /&gt;
  formfeed         '\f'&lt;br /&gt;
  carriagereturn   '\r'&lt;br /&gt;
  verticaltab      '\v'&lt;br /&gt;
&lt;br /&gt;
Typical use could be:&lt;br /&gt;
 &amp;lt;var_separator&amp;gt;tab&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
 &amp;lt;line_separator&amp;gt;newline&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
 &amp;lt;var_separator&amp;gt;\t&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
 &amp;lt;line_separator&amp;gt;\r\n&amp;lt;/line_separator&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Binary protocol parameters ====&lt;br /&gt;
&lt;br /&gt;
To enable binary mode, simply include a '''&amp;lt;binary_mode&amp;gt;true&amp;lt;/binary_mode&amp;gt;''' tag in your XML file. The format of the binary output is tightly packed, with 1 byte for bool, 4 bytes for int, and 8 bytes for double. At this time, strings are not supported. A configurable footer at the end of each &amp;quot;line&amp;quot; or packet of binary output can be added using the '''&amp;lt;binary_footer&amp;gt;''' tag. Options include the length of the packet, a magic number to simplify decoding. Examples:&lt;br /&gt;
  &amp;lt;binary_footer&amp;gt;magic,0x12345678&amp;lt;/binary_footer&amp;gt;&lt;br /&gt;
  &amp;lt;binary_footer&amp;gt;length&amp;lt;/binary_footer&amp;gt;&lt;br /&gt;
  &amp;lt;binary_footer&amp;gt;none&amp;lt;/binary_footer&amp;gt;                 &amp;lt;!-- default --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Variable Parameters - &amp;lt;chunk&amp;gt; spec ==&lt;br /&gt;
&lt;br /&gt;
Both &amp;lt;input&amp;gt; and &amp;lt;output&amp;gt; block can contain a list of &amp;lt;chunk&amp;gt; specs, each of which describes the properties of on variable to write/read.&lt;br /&gt;
===== &amp;lt;name&amp;gt; =====&lt;br /&gt;
For ease of use and not tranferred (like a notes tag)&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;node&amp;gt; =====&lt;br /&gt;
The [[Property Tree|property tree]] node which provides the data&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;type&amp;gt; =====&lt;br /&gt;
The value type which is needed for formatting, one of string, float, bool, int (default: int). Its recommended that this tag is present otherwise spurious results can occur.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;format&amp;gt; =====&lt;br /&gt;
ASCII protocol only, not used or needed in binary mode. Defines the actual piece of text which should be sent. it can include &amp;quot;printf&amp;quot; style formatting options like:&lt;br /&gt;
            &amp;lt;type&amp;gt;&lt;br /&gt;
    %s      string&lt;br /&gt;
    %d      integer (default)&lt;br /&gt;
    %f      float&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;factor&amp;gt; =====&lt;br /&gt;
An optional multiplication factor which can be used for unit conversion, for example, radians to degrees.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;offset&amp;gt; =====&lt;br /&gt;
An optional offset which can be used for unit conversion, for example, degrees Celcius to degrees Fahrenheit.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;format&amp;gt; ====&lt;br /&gt;
Chunks can also consist of a single constant &amp;lt;format&amp;gt;, like in:&lt;br /&gt;
 &amp;lt;format&amp;gt;Data Section&amp;lt;/format&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
==== Example 1 ====&lt;br /&gt;
Writes log of this form:&lt;br /&gt;
 V=16&lt;br /&gt;
 H=3.590505&lt;br /&gt;
 P=3.59&lt;br /&gt;
 V=12&lt;br /&gt;
 H=3.589020&lt;br /&gt;
 P=3.59&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt; &lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;generic&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;output&amp;gt;&lt;br /&gt;
      &amp;lt;line_separator&amp;gt;newline&amp;lt;/line_separator&amp;gt;&lt;br /&gt;
      &amp;lt;var_separator&amp;gt;newline&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
      &amp;lt;binary_mode&amp;gt;false&amp;lt;/binary_mode&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;speed&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;V=%d&amp;lt;/format&amp;gt;&lt;br /&gt;
        &amp;lt;node&amp;gt;/velocities/airspeed-kt&amp;lt;/node&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;heading (rad)&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;H=%.6f&amp;lt;/format&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;float&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;node&amp;gt;/orientation/heading-deg&amp;lt;/node&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.0174532925199433&amp;lt;/factor&amp;gt;  &amp;lt;!-- degrees to radians --&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;pitch angle (deg)&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;P=%03.2f&amp;lt;/format&amp;gt;&lt;br /&gt;
        &amp;lt;node&amp;gt;/orientation/pitch-deg&amp;lt;/node&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
   &amp;lt;/output&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/generic&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Writing data in XML format====&lt;br /&gt;
Assuming the file is called [[$FG ROOT]]/Protocol/xmltest.xml, then it could be used as &lt;br /&gt;
 fgfs --generic=file,out,1,/tmp/data.xml,xmltest&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
  &amp;lt;generic&amp;gt;&lt;br /&gt;
    &amp;lt;output&amp;gt;&lt;br /&gt;
      &amp;lt;binary_mode&amp;gt;false&amp;lt;/binary_mode&amp;gt;&lt;br /&gt;
      &amp;lt;var_separator&amp;gt;\n&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
      &amp;lt;line_separator&amp;gt;\n&amp;lt;/line_separator&amp;gt;&lt;br /&gt;
      &amp;lt;preamble&amp;gt;&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;amp;gt;\n\n&amp;amp;lt;data&amp;amp;gt;\n&amp;lt;/preamble&amp;gt;&lt;br /&gt;
      &amp;lt;postamble&amp;gt;&amp;amp;lt;/data&amp;amp;gt;\n&amp;lt;/postamble&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;\t&amp;amp;lt;set&amp;amp;gt;&amp;lt;/format&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;node&amp;gt;/position/altitude-ft&amp;lt;/node&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;float&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;\t\t&amp;amp;lt;altitude-ft&amp;amp;gt;%.8f&amp;amp;lt;/altitude-ft&amp;amp;gt;&amp;lt;/format&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;node&amp;gt;/velocities/airspeed-kt&amp;lt;/node&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;float&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;\t\t&amp;amp;lt;airspeed-kt&amp;amp;gt;%.8f&amp;amp;lt;/airspeed-kt&amp;amp;gt;&amp;lt;/format&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;\t&amp;amp;lt;/set&amp;amp;gt;&amp;lt;/format&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
    &amp;lt;/output&amp;gt;&lt;br /&gt;
 &amp;lt;/generic&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Analyzing the resulting binary packet format ==&lt;br /&gt;
A utility called ''generic-protocol-analyse'' can be found under FlightGear/utils/xmlgrep which can be used to analyze the resulting data packet for the binary protocol. The output would be something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bintest.xml&lt;br /&gt;
Generic binary output protocol packet description:&lt;br /&gt;
&lt;br /&gt;
 pos | size |  type  | factor     | description&lt;br /&gt;
-----|------|--------|------------|------------------------&lt;br /&gt;
   0 |    4 |    int |            | indicated speed (kt)&lt;br /&gt;
   4 |    4 |  float |            | pitch att (deg)&lt;br /&gt;
   8 |    4 |  float |            | magnetic heading (deg)&lt;br /&gt;
  12 |    4 |    int |            | outside air temperarure (degF)&lt;br /&gt;
  16 |    1 |   bool |            | autocoord&lt;br /&gt;
&lt;br /&gt;
total package size: 17 bytes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Sourced from [https://gitorious.org/fg/fgdata/blobs/master/Docs/README.protocol Docs/README.protocol].&lt;br /&gt;
&lt;br /&gt;
[[Category:XML]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Generic_protocol&amp;diff=39875</id>
		<title>Generic protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Generic_protocol&amp;diff=39875"/>
		<updated>2012-01-31T03:23:00Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ''generic'' communication protocol for FlightGear provides a powerful way of adding a simple ASCII based or binary input/output protocol, just by defining an XML encoded configuration file and placing it in the [[$FG ROOT]]/Protocol/ directory.&lt;br /&gt;
&lt;br /&gt;
== XML File Layout ==&lt;br /&gt;
&lt;br /&gt;
A protocol file can contain either or both of '''&amp;lt;input&amp;gt;''' and '''&amp;lt;output&amp;gt;''' definition blocks. Which one is used depends on how the protocol is called. The following example would only use the &amp;lt;output&amp;gt; definitions block.&lt;br /&gt;
 --generic=file,out,1,/tmp/data.xml,myproto&lt;br /&gt;
&lt;br /&gt;
If you're using a serial port under Windows, you must use a special escape sequence for COM port numbers higher than COM9.  &lt;br /&gt;
&lt;br /&gt;
Ex: --generic=\\.\COM10,out,1,/tmp/data.xml,myproto&lt;br /&gt;
&lt;br /&gt;
More detail can be found in this Microsoft KB article: http://msdn.microsoft.com/en-us/library/aa363858%28v=vs.85%29.aspx&lt;br /&gt;
&lt;br /&gt;
Overview of the XML file&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
    &amp;lt;generic&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;output&amp;gt;&lt;br /&gt;
            &amp;lt;binary_mode&amp;gt;false&amp;lt;/binary_mode&amp;gt;&lt;br /&gt;
            &amp;lt;line_separator&amp;gt;&amp;lt;/line_separator&amp;gt;&lt;br /&gt;
            &amp;lt;var_separator&amp;gt;&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
            &amp;lt;preamble&amp;gt;&amp;lt;/preamble&amp;gt;&lt;br /&gt;
            &amp;lt;postamble&amp;gt;&amp;lt;/postamble&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
            &amp;lt;chunk&amp;gt;&lt;br /&gt;
                ... first chunk spec ...&lt;br /&gt;
            &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
            &amp;lt;chunk&amp;gt;&lt;br /&gt;
                ... another chunk etc. ...&lt;br /&gt;
            &amp;lt;/chunk&amp;gt;&lt;br /&gt;
        &amp;lt;/output&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;input&amp;gt;&lt;br /&gt;
            &amp;lt;line_separator&amp;gt;&amp;lt;/line_separator&amp;gt;&lt;br /&gt;
            &amp;lt;var_separator&amp;gt;&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
            &amp;lt;chunk&amp;gt;&lt;br /&gt;
                ... chunk spec ...&lt;br /&gt;
            &amp;lt;/chunk&amp;gt;&lt;br /&gt;
        &amp;lt;/input&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;/generic&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Input/Output Parameters ==&lt;br /&gt;
&lt;br /&gt;
Both '''&amp;lt;input&amp;gt;''' and '''&amp;lt;input&amp;gt;''' blocks can contain information about the data mode (ascii/binary) and about separators between fields and data sets, as well as a list of '''&amp;lt;chunk&amp;gt;'''s. Each '''&amp;lt;chunk&amp;gt;''' defines a property that should be written (and how), or a variable and which property it should be written to.&lt;br /&gt;
&lt;br /&gt;
==== ASCII protocol parameters ====&lt;br /&gt;
&lt;br /&gt;
Output only:&lt;br /&gt;
 &amp;lt;preamble&amp;gt;        STRING  default: &amp;quot;&amp;quot;    file header put on top of the file&lt;br /&gt;
 &amp;lt;postamble&amp;gt;       STRING  default: &amp;quot;&amp;quot;    file footer put at the end of the file&lt;br /&gt;
&lt;br /&gt;
Input &amp;amp; Output:&lt;br /&gt;
 &amp;lt;binary_mode&amp;gt;	    BOOL    default: false (= ASCII mode)&lt;br /&gt;
 &amp;lt;var_separator&amp;gt;   STRING  default: &amp;quot;&amp;quot;    field separator&lt;br /&gt;
 &amp;lt;line_separator&amp;gt;  STRING  default: &amp;quot;&amp;quot;    separator between data sets&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;var_separator&amp;gt;''' is put between every two output properties&lt;br /&gt;
* '''&amp;lt;line_separator&amp;gt;''' is put at the end of each data set. &lt;br /&gt;
Both can contain arbitrary strings or one of the following keywords:&lt;br /&gt;
&lt;br /&gt;
  Name             Character&lt;br /&gt;
 ------------------------------&lt;br /&gt;
  newline          '\n'&lt;br /&gt;
  tab              '\t'&lt;br /&gt;
  formfeed         '\f'&lt;br /&gt;
  carriagereturn   '\r'&lt;br /&gt;
  verticaltab      '\v'&lt;br /&gt;
&lt;br /&gt;
Typical use could be:&lt;br /&gt;
 &amp;lt;var_separator&amp;gt;tab&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
 &amp;lt;line_separator&amp;gt;newline&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
 &amp;lt;var_separator&amp;gt;\t&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
 &amp;lt;line_separator&amp;gt;\r\n&amp;lt;/line_separator&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Binary protocol parameters ====&lt;br /&gt;
&lt;br /&gt;
To enable binary mode, simply include a '''&amp;lt;binary_mode&amp;gt;true&amp;lt;/binary_mode&amp;gt;''' tag in your XML file. The format of the binary output is tightly packed, with 1 byte for bool, 4 bytes for int, and 8 bytes for double. At this time, strings are not supported. A configurable footer at the end of each &amp;quot;line&amp;quot; or packet of binary output can be added using the '''&amp;lt;binary_footer&amp;gt;''' tag. Options include the length of the packet, a magic number to simplify decoding. Examples:&lt;br /&gt;
  &amp;lt;binary_footer&amp;gt;magic,0x12345678&amp;lt;/binary_footer&amp;gt;&lt;br /&gt;
  &amp;lt;binary_footer&amp;gt;length&amp;lt;/binary_footer&amp;gt;&lt;br /&gt;
  &amp;lt;binary_footer&amp;gt;none&amp;lt;/binary_footer&amp;gt;                 &amp;lt;!-- default --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Variable Parameters - &amp;lt;chunk&amp;gt; spec ==&lt;br /&gt;
&lt;br /&gt;
Both &amp;lt;input&amp;gt; and &amp;lt;output&amp;gt; block can contain a list of &amp;lt;chunk&amp;gt; specs, each of which describes the properties of on variable to write/read.&lt;br /&gt;
===== &amp;lt;name&amp;gt; =====&lt;br /&gt;
For ease of use and not tranferred (like a notes tag)&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;node&amp;gt; =====&lt;br /&gt;
The [[Property Tree|property tree]] node which provides the data&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;type&amp;gt; =====&lt;br /&gt;
The value type which is needed for formatting, one of string, float, bool, int (default: int). Its recommended that this tag is present otherwise spurious results can occur.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;format&amp;gt; =====&lt;br /&gt;
ASCII protocol only, not used or needed in binary mode. Defines the actual piece of text which should be sent. it can include &amp;quot;printf&amp;quot; style formatting options like:&lt;br /&gt;
            &amp;lt;type&amp;gt;&lt;br /&gt;
    %s      string&lt;br /&gt;
    %d      integer (default)&lt;br /&gt;
    %f      float&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;factor&amp;gt; =====&lt;br /&gt;
An optional multiplication factor which can be used for unit conversion, for example, radians to degrees.&lt;br /&gt;
&lt;br /&gt;
===== &amp;lt;offset&amp;gt; =====&lt;br /&gt;
An optional offset which can be used for unit conversion, for example, degrees Celcius to degrees Fahrenheit.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;format&amp;gt; ====&lt;br /&gt;
Chunks can also consist of a single constant &amp;lt;format&amp;gt;, like in:&lt;br /&gt;
 &amp;lt;format&amp;gt;Data Section&amp;lt;/format&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
==== Example 1 ====&lt;br /&gt;
Writes log of this form:&lt;br /&gt;
 V=16&lt;br /&gt;
 H=3.590505&lt;br /&gt;
 P=3.59&lt;br /&gt;
 V=12&lt;br /&gt;
 H=3.589020&lt;br /&gt;
 P=3.59&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt; &lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;generic&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;output&amp;gt;&lt;br /&gt;
      &amp;lt;line_separator&amp;gt;newline&amp;lt;/line_separator&amp;gt;&lt;br /&gt;
      &amp;lt;var_separator&amp;gt;newline&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
      &amp;lt;binary_mode&amp;gt;false&amp;lt;/binary_mode&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;speed&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;V=%d&amp;lt;/format&amp;gt;&lt;br /&gt;
        &amp;lt;node&amp;gt;/velocities/airspeed-kt&amp;lt;/node&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;heading (rad)&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;H=%.6f&amp;lt;/format&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;float&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;node&amp;gt;/orientation/heading-deg&amp;lt;/node&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.0174532925199433&amp;lt;/factor&amp;gt;  &amp;lt;!-- degrees to radians --&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;pitch angle (deg)&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;P=%03.2f&amp;lt;/format&amp;gt;&lt;br /&gt;
        &amp;lt;node&amp;gt;/orientation/pitch-deg&amp;lt;/node&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
   &amp;lt;/output&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/generic&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Writing data in XML format====&lt;br /&gt;
Assuming the file is called [[$FG ROOT]]/Protocol/xmltest.xml, then it could be used as &lt;br /&gt;
 fgfs --generic=file,out,1,/tmp/data.xml,xmltest&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
  &amp;lt;generic&amp;gt;&lt;br /&gt;
    &amp;lt;output&amp;gt;&lt;br /&gt;
      &amp;lt;binary_mode&amp;gt;false&amp;lt;/binary_mode&amp;gt;&lt;br /&gt;
      &amp;lt;var_separator&amp;gt;\n&amp;lt;/var_separator&amp;gt;&lt;br /&gt;
      &amp;lt;line_separator&amp;gt;\n&amp;lt;/line_separator&amp;gt;&lt;br /&gt;
      &amp;lt;preamble&amp;gt;&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;amp;gt;\n\n&amp;amp;lt;data&amp;amp;gt;\n&amp;lt;/preamble&amp;gt;&lt;br /&gt;
      &amp;lt;postamble&amp;gt;&amp;amp;lt;/data&amp;amp;gt;\n&amp;lt;/postamble&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;\t&amp;amp;lt;set&amp;amp;gt;&amp;lt;/format&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;node&amp;gt;/position/altitude-ft&amp;lt;/node&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;float&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;\t\t&amp;amp;lt;altitude-ft&amp;amp;gt;%.8f&amp;amp;lt;/altitude-ft&amp;amp;gt;&amp;lt;/format&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;node&amp;gt;/velocities/airspeed-kt&amp;lt;/node&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;float&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;\t\t&amp;amp;lt;airspeed-kt&amp;amp;gt;%.8f&amp;amp;lt;/airspeed-kt&amp;amp;gt;&amp;lt;/format&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;chunk&amp;gt;&lt;br /&gt;
        &amp;lt;format&amp;gt;\t&amp;amp;lt;/set&amp;amp;gt;&amp;lt;/format&amp;gt;&lt;br /&gt;
      &amp;lt;/chunk&amp;gt;&lt;br /&gt;
    &amp;lt;/output&amp;gt;&lt;br /&gt;
 &amp;lt;/generic&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Analyzing the resulting binary packet format ==&lt;br /&gt;
A utility called ''generic-protocol-analyse'' can be found under FlightGear/utils/xmlgrep which can be used to analyze the resulting data packet for the binary protocol. The output would be something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bintest.xml&lt;br /&gt;
Generic binary output protocol packet description:&lt;br /&gt;
&lt;br /&gt;
 pos | size |  type  | factor     | description&lt;br /&gt;
-----|------|--------|------------|------------------------&lt;br /&gt;
   0 |    4 |    int |            | indicated speed (kt)&lt;br /&gt;
   4 |    4 |  float |            | pitch att (deg)&lt;br /&gt;
   8 |    4 |  float |            | magnetic heading (deg)&lt;br /&gt;
  12 |    4 |    int |            | outside air temperarure (degF)&lt;br /&gt;
  16 |    1 |   bool |            | autocoord&lt;br /&gt;
&lt;br /&gt;
total package size: 17 bytes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* More detailed information can be found in the [https://gitorious.org/fg/fgdata/blobs/master/Docs/README.protocol Docs/README.protocol] file.&lt;br /&gt;
&lt;br /&gt;
[[Category:XML]]&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=FlightGear_videos&amp;diff=26334</id>
		<title>FlightGear videos</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=FlightGear_videos&amp;diff=26334"/>
		<updated>2010-12-03T00:06:52Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: /* Tutorials */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Feel free to add your (own) videos.&lt;br /&gt;
&lt;br /&gt;
'''A collection of all [[FlightGear]] related videos on YouTube can be seen at [http://www.youtube.com/view_play_list?p=3B31CCD15245D0AA this location].'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Addons==&lt;br /&gt;
* [http://nl.youtube.com/watch?v=fyjHLV-SGhg FlightGear AirRace Narita addon]&lt;br /&gt;
&lt;br /&gt;
==Aircraft==&lt;br /&gt;
* [http://www.youtube.com/watch?v=ph3EivF0F70 Collection of WWII warbirds]&lt;br /&gt;
&lt;br /&gt;
===[[Airbus A380]]===&lt;br /&gt;
* [http://www.youtube.com/watch?v=7yLZVddbXVo Landing at EHAM]&lt;br /&gt;
&lt;br /&gt;
===[[Boeing 737-300]]===&lt;br /&gt;
* [http://www.youtube.com/watch?v=Pl9NFvPZuLU&amp;amp;feature=PlayList&amp;amp;p=3B31CCD15245D0AA&amp;amp;index=11 SBGR-SBGL Flight]&lt;br /&gt;
* [http://www.youtube.com/watch?v=d2wwkeGrvD4  New Boeing 737-300 testflight]&lt;br /&gt;
===[[Boeing 747-400]]===&lt;br /&gt;
* [http://nl.youtube.com/watch?v=mb8VdBh-IE4&amp;amp;feature=channel Landing at TNCM]&lt;br /&gt;
* [http://www.youtube.com/watch?v=VogfMnI0j3s A flight from TNCM to EHAM]&lt;br /&gt;
&lt;br /&gt;
===[[British Aerospace Harrier]] (VSTOL)===&lt;br /&gt;
* [http://www.youtube.com/watch?v=IrmCFIBymcc Hovering KSFO]&lt;br /&gt;
* [http://www.youtube.com/watch?v=zg_Pbcfhx98 Vertical Take-Off and Landing (VSTOL)]&lt;br /&gt;
&lt;br /&gt;
===[[F5E Tiger II]]===&lt;br /&gt;
* [http://www.youtube.com/watch?v=lYhVJEw7Ae8 Prestes F5E Tiger II Original Model]&lt;br /&gt;
* [http://www.youtube.com/watch?v=E1PeLQL840s Prestes F5E Tiger II Update]&lt;br /&gt;
* [http://www.youtube.com/watch?v=E1PeLQL840s F5E Tiger II Sonic Boom Fly-by with shock wave effect]&lt;br /&gt;
&lt;br /&gt;
===[[Fairchild A-10|Fairchild A-10 Thunderbolt II]]===&lt;br /&gt;
* [http://www.youtube.com/watch?v=SCViR6oOQ6A Bombing Run]&lt;br /&gt;
&lt;br /&gt;
===[[Grumman A-6E]]===&lt;br /&gt;
* [http://www.youtube.com/watch?v=4BoN4u4anrU Carrier Landing]&lt;br /&gt;
&lt;br /&gt;
===[[Grumman G-21 Goose]]===&lt;br /&gt;
* [http://www.youtube.com/watch?v=BBGsRGovWhQ Flying Buckaroo's Goose]&lt;br /&gt;
&lt;br /&gt;
==Helicopters==&lt;br /&gt;
* [http://www.youtube.com/watch?v=j7aHqDkCzCw Who needs a helipad? (Eurocopter BO105)]&lt;br /&gt;
* [http://www.youtube.com/watch?v=AM-JfdNzmlM Eurocopter EC135]&lt;br /&gt;
* [http://www.youtube.com/watch?v=e_oy111Wm9I Boeing CH-47 Chinook]&lt;br /&gt;
&lt;br /&gt;
==Development==&lt;br /&gt;
* [http://nl.youtube.com/watch?v=xkkIMdqAuC0 FlightGear new trees]&lt;br /&gt;
* [http://www.youtube.com/watch?v=k4oMOFnD6bw New clouds]&lt;br /&gt;
* [http://www.youtube.com/watch?v=EKELqBGVsqw Dynamic water effect]&lt;br /&gt;
* [http://www.youtube.com/watch?v=PYwlfZSHJpo Early morning red sky effect]&lt;br /&gt;
* [http://www.youtube.com/watch?v=GPtd6Np3u8Q Urban effect]&lt;br /&gt;
==Simulators==&lt;br /&gt;
* [http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg15935.html A FlightGear-driven Flight &amp;amp; Navigation Procedures Trainer (FNPT)]&lt;br /&gt;
* [http://nl.youtube.com/watch?v=Y1-siAMojSM FlightGear Virtual Cockpit build]&lt;br /&gt;
&lt;br /&gt;
== UAV related ==&lt;br /&gt;
* http://baron.flightgear.org/~curt/tmp/20080710.AVI&lt;br /&gt;
&lt;br /&gt;
==Tutorials==&lt;br /&gt;
* [http://nl.youtube.com/watch?v=hf6j3uzlTEc How to takeoff in FlightGear]&lt;br /&gt;
* [http://www.youtube.com/watch?v=kS4cqa9CDVY 787 Startup]&lt;br /&gt;
* [http://www.youtube.com/watch?v=ELlUgEnLKYo Concorde Tutorial part 1]&lt;br /&gt;
* [http://www.youtube.com/watch?v=pauMD9yOpFM Concorde Tutorial part 2]&lt;br /&gt;
* [http://www.youtube.com/watch?v=wNzKZXQBdgo IFR Cross Country Flight Tutorial Part 1]&lt;br /&gt;
* [http://www.youtube.com/watch?v=m8WnxI0251k IFR Cross Country Flight Tutorial Part 2]&lt;br /&gt;
* [http://www.youtube.com/watch?v=_4R_bSNA7Rk IFR Cross Country Flight Tutorial Part 3]&lt;br /&gt;
* [http://www.youtube.com/watch?v=nj4Z3GP23os IFR Cross Country Flight Tutorial Part 4]&lt;br /&gt;
* [http://www.youtube.com/watch?v=zhwDmv-gLiA Tips and Tricks: Overlaying Instrument Numbers]&lt;br /&gt;
* [http://www.youtube.com/watch?v=ttMwpp-4N0w Tips and Tricks: Target-tracking]&lt;br /&gt;
* [http://www.youtube.com/watch?v=74-UOoKjjAE Tips and Tricks: Adjusting Current View and configuring]&lt;br /&gt;
* [http://www.youtube.com/watch?v=RnD2-IRcqGY Tips and Tricks: Changing Multiplayer Chat Entry]&lt;br /&gt;
* Tu154B: Part One - &amp;quot;The Cockpit&amp;quot; [http://vimeo.com/10248774 vimeo] [http://www.youtube.com/watch?v=eJqPhHqykRc youtube]&lt;br /&gt;
* Tu154B: Part Two - &amp;quot;Starting the Engines&amp;quot; [http://vimeo.com/10296079 vimeo] [http://www.youtube.com/watch?v=JHDfY65k_9I youtube]&lt;br /&gt;
* Tu154B: Part Three - &amp;quot;Preparing for Flight&amp;quot; [http://vimeo.com/10538255 vimeo] [http://www.youtube.com/watch?v=WUixO_7tEVU youtube]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:List]]&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=25566</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=25566"/>
		<updated>2010-11-29T20:17:50Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://dl.dropbox.com/u/15218376/FGFS/Protocol/fgcom_com2.xml fgcom_com2.xml]&lt;br /&gt;
* The nasal script file - [http://dl.dropbox.com/u/15218376/FGFS/Nasal/fgcom.nas fgcom.nas] &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''(Script updated on Nov. 29, 2010. Please see the Nasal Script section below for updated functionality and installation/update instructions.)''&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocol'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in the flightgear property tree under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script will display these properties at the upper right of your screen.&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both(if enabled), and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both(must be enabled first).&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both(if enabled).&lt;br /&gt;
*'''fgcom.enable_transmit_both(BOOL)''' - Enables or disables ability to select both radios for transmitting. ''BOOL'' should be '''1''' to enable, '''0''' to disable. [1]&lt;br /&gt;
*'''fgcom.toggle_property_display()''' - By default fgcom related properties will be displayed on the screen. This toggles visibility on/off. [2]&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''(Any other methods or attributes of the FGComRadio object should be considered private and not be used or modified.)''&lt;br /&gt;
&lt;br /&gt;
''[1] Transmitting on both radios simultaneously is disabled by default and should only be used for testing purposes.''&lt;br /&gt;
&lt;br /&gt;
''[2] You may change the position and/or color of the property display by changing the PROPERTY_DISPLAY_* variables at top of script.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;Place this file in '''''FG_HOME/Nasal''''', creating the directory if needed.&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;On Linux the path is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal'''''&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;On Windows XP the path is '''''C:\Documents And Settings\&amp;lt;username&amp;gt;\Application Data\flightgear.org\Nasal'''''&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;On Windows Vista the path is '''''C:\Users\&amp;lt;username&amp;gt;\appdata\roaming\flightgear.org\Nasal'''''&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;On Mac I do not know, possibly the same as Linux? (feel free to contact if you know)&amp;lt;/s&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''The windows paths are what I was told by Windows users, I cannot confirm them personally''&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you had followed earlier versions of this guide and placed '''fgcom.nas''' into '''FG_HOME/Nasal''' as per the old instructions above, you should delete this file now and then follow new instructions below.''&lt;br /&gt;
&lt;br /&gt;
'''To install the script simply download and place directly into your ''FG_ROOT/Nasal'' directory.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_com2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binding button 6 to toggle visibility of the property display.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Toggle visibility of fgcom property display&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;  &lt;br /&gt;
            &amp;lt;unix&amp;gt;6&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;6&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.toggle_property_display();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing between comm1 and comm2. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''Please remember that the ptt property on screen will only change when the fgcom.radio.ptt method is used.''&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_com2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui or run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default). You can then skip to the Second FGCom Instance''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
====Trouble Shooting====&lt;br /&gt;
&lt;br /&gt;
=====Errors From The Script Or Script Not Working Properly=====&lt;br /&gt;
:* Make sure that you have put the script in FG_HOME/Nasal and '''''not''''' FG_ROOT/Nasal. (It matters!)&lt;br /&gt;
:* Make sure you are calling the '''''fgcom.radio''''' object correctly...check the Api section.&lt;br /&gt;
&lt;br /&gt;
=====Nothing Echoed Back When Transmitting On Frequency 910=====&lt;br /&gt;
:* Check that your audio is turned up, mic plugged in, unmuted, etc.&lt;br /&gt;
:* Check that you have selected the correct comm radio.&lt;br /&gt;
:* Check that your binding is using '''''fgcom.radio.ptt(BOOL)''''', and not the default ptt.&lt;br /&gt;
:* Check that your appropriate fgcom instance is receiving frequency and ptt events.&lt;br /&gt;
:* Check that you have configured the flightgear protocol and fgcom properly.&lt;br /&gt;
&lt;br /&gt;
=====FGCom Fails To Open Capture Device Or Device Busy Errors=====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''This section is Linux specific''&lt;br /&gt;
&lt;br /&gt;
======If Using The Modern [http://kcat.strangesoft.net/openal.html OpenAL Soft] OpenAL Implementation.======&lt;br /&gt;
Adjust your ~/.alsoftrc to use software mixing for playback and/or capture.&lt;br /&gt;
 drivers = alsa&lt;br /&gt;
 [alsa]&lt;br /&gt;
 device = default&lt;br /&gt;
 capture = plug:dsnoop&lt;br /&gt;
&lt;br /&gt;
======If Using The Old Loki OpenAL Implementation======&lt;br /&gt;
Adjust your ~/.openalrc to use software mixing for playback and/or capture&lt;br /&gt;
 (define devices '(alsa))&lt;br /&gt;
 (define alsa-out-device &amp;quot;default&amp;quot;)&lt;br /&gt;
 (define alsa-in-device &amp;quot;plug:dsnoop&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Using multiple instances of fgcom, while useful in some situations, potentially doubles the amount of bandwidth used. To avoid excessive bandwidth usage and strain on the fgcom server, you should only start the second radio when you actually need it. Using this setup you can use just one instance of fgcom for normal use, and start/stop the other one (without restarting flightgear) dynamically when needed. Talking on both radios at the same time is not very realistic, wasteful of bandwidth, and generally a '''''bad''''' idea. For these reasons it is disabled by default, you should only enable and use this feature for testing purposes.&lt;br /&gt;
&lt;br /&gt;
Please be kind to our '''''one and only''''' fgcom server and use multiple fgcom radios sparingly, and only when actually needed.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=25565</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=25565"/>
		<updated>2010-11-29T20:16:55Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://dl.dropbox.com/u/15218376/FGFS/Protocol/fgcom_com2.xml fgcom_com2.xml]&lt;br /&gt;
* The nasal script file - [http://dl.dropbox.com/u/15218376/FGFS/Nasal/fgcom.nas fgcom.nas] &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''(Script updated on Nov. 29, 2010. Please see the Nasal Script section below for updated functionality and installation/update instructions.)''&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocol'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in the flightgear property tree under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script will display these properties at the upper right of your screen.&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both(if enabled), and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both(must be enabled first).&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both(if enabled).&lt;br /&gt;
*'''fgcom.enable_transmit_both(BOOL)''' - Enables or disables ability to select both radios for transmitting. ''BOOL'' should be '''1''' to enable, '''0''' to disable. [1]&lt;br /&gt;
*'''fgcom.toggle_property_display()''' - By default fgcom related properties will be displayed on the screen. This toggles visibility on/off. [2]&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''(Any other methods or attributes of the FGComRadio object should be considered private and not be used or modified.)''&lt;br /&gt;
&lt;br /&gt;
''[1] Transmitting on both radios simultaneously is disabled by default and should only be used for testing purposes.''&lt;br /&gt;
&lt;br /&gt;
''[2] You may change the position and/or color of the property display by changing the PROPERTY_DISPLAY_* variables at top of script.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;Place this file in '''''FG_HOME/Nasal''''', creating the directory if needed.&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;On Linux the path is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal'''''&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;On Windows XP the path is '''''C:\Documents And Settings\&amp;lt;username&amp;gt;\Application Data\flightgear.org\Nasal'''''&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;On Windows Vista the path is '''''C:\Users\&amp;lt;username&amp;gt;\appdata\roaming\flightgear.org\Nasal'''''&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;On Mac I do not know, possibly the same as Linux? (feel free to contact if you know)&amp;lt;/s&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''The windows paths are what I was told by Windows users, I cannot confirm them personally''&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you had followed earlier versions of this guide and placed '''fgcom.nas''' into '''FG_HOME/Nasal''' as per the old instructions above, you should delete this file now and then follow new instructions below.''&lt;br /&gt;
&lt;br /&gt;
'''Simply download and place the ''fgcom.nas'' script directly into your ''FG_ROOT/Nasal'' directory.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_com2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binding button 6 to toggle visibility of the property display.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Toggle visibility of fgcom property display&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;  &lt;br /&gt;
            &amp;lt;unix&amp;gt;6&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;6&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.toggle_property_display();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing between comm1 and comm2. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''Please remember that the ptt property on screen will only change when the fgcom.radio.ptt method is used.''&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_com2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui or run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default). You can then skip to the Second FGCom Instance''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
====Trouble Shooting====&lt;br /&gt;
&lt;br /&gt;
=====Errors From The Script Or Script Not Working Properly=====&lt;br /&gt;
:* Make sure that you have put the script in FG_HOME/Nasal and '''''not''''' FG_ROOT/Nasal. (It matters!)&lt;br /&gt;
:* Make sure you are calling the '''''fgcom.radio''''' object correctly...check the Api section.&lt;br /&gt;
&lt;br /&gt;
=====Nothing Echoed Back When Transmitting On Frequency 910=====&lt;br /&gt;
:* Check that your audio is turned up, mic plugged in, unmuted, etc.&lt;br /&gt;
:* Check that you have selected the correct comm radio.&lt;br /&gt;
:* Check that your binding is using '''''fgcom.radio.ptt(BOOL)''''', and not the default ptt.&lt;br /&gt;
:* Check that your appropriate fgcom instance is receiving frequency and ptt events.&lt;br /&gt;
:* Check that you have configured the flightgear protocol and fgcom properly.&lt;br /&gt;
&lt;br /&gt;
=====FGCom Fails To Open Capture Device Or Device Busy Errors=====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''This section is Linux specific''&lt;br /&gt;
&lt;br /&gt;
======If Using The Modern [http://kcat.strangesoft.net/openal.html OpenAL Soft] OpenAL Implementation.======&lt;br /&gt;
Adjust your ~/.alsoftrc to use software mixing for playback and/or capture.&lt;br /&gt;
 drivers = alsa&lt;br /&gt;
 [alsa]&lt;br /&gt;
 device = default&lt;br /&gt;
 capture = plug:dsnoop&lt;br /&gt;
&lt;br /&gt;
======If Using The Old Loki OpenAL Implementation======&lt;br /&gt;
Adjust your ~/.openalrc to use software mixing for playback and/or capture&lt;br /&gt;
 (define devices '(alsa))&lt;br /&gt;
 (define alsa-out-device &amp;quot;default&amp;quot;)&lt;br /&gt;
 (define alsa-in-device &amp;quot;plug:dsnoop&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Using multiple instances of fgcom, while useful in some situations, potentially doubles the amount of bandwidth used. To avoid excessive bandwidth usage and strain on the fgcom server, you should only start the second radio when you actually need it. Using this setup you can use just one instance of fgcom for normal use, and start/stop the other one (without restarting flightgear) dynamically when needed. Talking on both radios at the same time is not very realistic, wasteful of bandwidth, and generally a '''''bad''''' idea. For these reasons it is disabled by default, you should only enable and use this feature for testing purposes.&lt;br /&gt;
&lt;br /&gt;
Please be kind to our '''''one and only''''' fgcom server and use multiple fgcom radios sparingly, and only when actually needed.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=25564</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=25564"/>
		<updated>2010-11-29T20:15:52Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://dl.dropbox.com/u/15218376/FGFS/Protocol/fgcom_com2.xml fgcom_com2.xml]&lt;br /&gt;
* The nasal script file - [http://dl.dropbox.com/u/15218376/FGFS/Nasal/fgcom.nas fgcom.nas] &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''(Script updated on Nov. 29, 2010. Please see the Nasal Script section below for updated functionality and installation/update instructions.)''&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocol'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in the flightgear property tree under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script will display these properties at the upper right of your screen.&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both(if enabled), and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both(must be enabled first).&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both(if enabled).&lt;br /&gt;
*'''fgcom.enable_transmit_both(BOOL)''' - Enables or disables ability to select both radios for transmitting. ''BOOL'' should be '''1''' to enable, '''0''' to disable. [1]&lt;br /&gt;
*'''fgcom.toggle_property_display()''' - By default fgcom related properties will be displayed on the screen. This toggles visibility on/off. [2]&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''(Any other methods or attributes of the FGComRadio object should be considered private and not be used or modified.)''&lt;br /&gt;
&lt;br /&gt;
''[1] Transmitting on both radios simultaneously is disabled by default and should only be used for testing purposes.''&lt;br /&gt;
&lt;br /&gt;
''[2] You may change the position and/or color of the property display by changing the PROPERTY_DISPLAY_* variables at top of script.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;Place this file in '''''FG_HOME/Nasal''''', creating the directory if needed.&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;On Linux the path is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal'''''&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;On Windows XP the path is '''''C:\Documents And Settings\&amp;lt;username&amp;gt;\Application Data\flightgear.org\Nasal'''''&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;On Windows Vista the path is '''''C:\Users\&amp;lt;username&amp;gt;\appdata\roaming\flightgear.org\Nasal'''''&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;On Mac I do not know, possibly the same as Linux? (feel free to contact if you know)&amp;lt;/s&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''The windows paths are what I was told by Windows users, I cannot confirm them personally''&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you had followed earlier versions of this guide and placed '''fgcom.nas''' into '''FG_HOME/Nasal''' as per the old instructions above, you should delete this file now and then follow new instructions below.''&lt;br /&gt;
&lt;br /&gt;
'''Download and place the ''fgcom.nas'' script directly into your ''FG_ROOT/Nasal'' directory.'''&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_com2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binding button 6 to toggle visibility of the property display.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Toggle visibility of fgcom property display&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;  &lt;br /&gt;
            &amp;lt;unix&amp;gt;6&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;6&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.toggle_property_display();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing between comm1 and comm2. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''Please remember that the ptt property on screen will only change when the fgcom.radio.ptt method is used.''&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_com2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui or run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default). You can then skip to the Second FGCom Instance''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
====Trouble Shooting====&lt;br /&gt;
&lt;br /&gt;
=====Errors From The Script Or Script Not Working Properly=====&lt;br /&gt;
:* Make sure that you have put the script in FG_HOME/Nasal and '''''not''''' FG_ROOT/Nasal. (It matters!)&lt;br /&gt;
:* Make sure you are calling the '''''fgcom.radio''''' object correctly...check the Api section.&lt;br /&gt;
&lt;br /&gt;
=====Nothing Echoed Back When Transmitting On Frequency 910=====&lt;br /&gt;
:* Check that your audio is turned up, mic plugged in, unmuted, etc.&lt;br /&gt;
:* Check that you have selected the correct comm radio.&lt;br /&gt;
:* Check that your binding is using '''''fgcom.radio.ptt(BOOL)''''', and not the default ptt.&lt;br /&gt;
:* Check that your appropriate fgcom instance is receiving frequency and ptt events.&lt;br /&gt;
:* Check that you have configured the flightgear protocol and fgcom properly.&lt;br /&gt;
&lt;br /&gt;
=====FGCom Fails To Open Capture Device Or Device Busy Errors=====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''This section is Linux specific''&lt;br /&gt;
&lt;br /&gt;
======If Using The Modern [http://kcat.strangesoft.net/openal.html OpenAL Soft] OpenAL Implementation.======&lt;br /&gt;
Adjust your ~/.alsoftrc to use software mixing for playback and/or capture.&lt;br /&gt;
 drivers = alsa&lt;br /&gt;
 [alsa]&lt;br /&gt;
 device = default&lt;br /&gt;
 capture = plug:dsnoop&lt;br /&gt;
&lt;br /&gt;
======If Using The Old Loki OpenAL Implementation======&lt;br /&gt;
Adjust your ~/.openalrc to use software mixing for playback and/or capture&lt;br /&gt;
 (define devices '(alsa))&lt;br /&gt;
 (define alsa-out-device &amp;quot;default&amp;quot;)&lt;br /&gt;
 (define alsa-in-device &amp;quot;plug:dsnoop&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Using multiple instances of fgcom, while useful in some situations, potentially doubles the amount of bandwidth used. To avoid excessive bandwidth usage and strain on the fgcom server, you should only start the second radio when you actually need it. Using this setup you can use just one instance of fgcom for normal use, and start/stop the other one (without restarting flightgear) dynamically when needed. Talking on both radios at the same time is not very realistic, wasteful of bandwidth, and generally a '''''bad''''' idea. For these reasons it is disabled by default, you should only enable and use this feature for testing purposes.&lt;br /&gt;
&lt;br /&gt;
Please be kind to our '''''one and only''''' fgcom server and use multiple fgcom radios sparingly, and only when actually needed.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=25563</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=25563"/>
		<updated>2010-11-29T20:04:45Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://dl.dropbox.com/u/15218376/FGFS/Protocol/fgcom_com2.xml fgcom_com2.xml]&lt;br /&gt;
* The nasal script file - [http://dl.dropbox.com/u/15218376/FGFS/Nasal/fgcom.nas fgcom.nas] &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''(Script updated on Nov. 29, 2010. Please see the Nasal Script section below for updated functionality and installation/update instructions.)''&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocol'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in the flightgear property tree under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script will display these properties at the upper right of your screen.&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both(if enabled), and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both(must be enabled first).&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both(if enabled).&lt;br /&gt;
*'''fgcom.enable_transmit_both(BOOL)''' - Enables or disables ability to select both radios for transmitting. ''BOOL'' should be '''1''' to enable, '''0''' to disable. [1]&lt;br /&gt;
*'''fgcom.toggle_property_display()''' - By default fgcom related properties will be displayed on the screen. This toggles visibility on/off. [2]&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''(Any other methods or attributes of the FGComRadio object should be considered private and not be used or modified.)''&lt;br /&gt;
&lt;br /&gt;
''[1] Transmitting on both radios simultaneously is disabled by default and should only be used for testing purposes.''&lt;br /&gt;
&lt;br /&gt;
''[2] You may change the position and/or color of the property display by changing the PROPERTY_DISPLAY_* variables at top of script.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;Place this file in '''''FG_HOME/Nasal''''', creating the directory if needed.&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;On Linux the path is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal'''''&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;On Windows XP the path is '''''C:\Documents And Settings\&amp;lt;username&amp;gt;\Application Data\flightgear.org\Nasal'''''&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;On Windows Vista the path is '''''C:\Users\&amp;lt;username&amp;gt;\appdata\roaming\flightgear.org\Nasal'''''&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;On Mac I do not know, possibly the same as Linux? (feel free to contact if you know)&amp;lt;/s&amp;gt;&lt;br /&gt;
&amp;lt;s&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''The windows paths are what I was told by Windows users, I cannot confirm them personally''&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''The script should now be placed directly inside the FG_ROOT/Nasal directory. If you previously placed fgcom.nas in FG_HOME/Nasal as per the old instructions above you should remove that file.'''''&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_com2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binding button 6 to toggle visibility of the property display.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Toggle visibility of fgcom property display&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;  &lt;br /&gt;
            &amp;lt;unix&amp;gt;6&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;6&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.toggle_property_display();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing between comm1 and comm2. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''Please remember that the ptt property on screen will only change when the fgcom.radio.ptt method is used.''&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_com2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui or run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default). You can then skip to the Second FGCom Instance''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
====Trouble Shooting====&lt;br /&gt;
&lt;br /&gt;
=====Errors From The Script Or Script Not Working Properly=====&lt;br /&gt;
:* Make sure that you have put the script in FG_HOME/Nasal and '''''not''''' FG_ROOT/Nasal. (It matters!)&lt;br /&gt;
:* Make sure you are calling the '''''fgcom.radio''''' object correctly...check the Api section.&lt;br /&gt;
&lt;br /&gt;
=====Nothing Echoed Back When Transmitting On Frequency 910=====&lt;br /&gt;
:* Check that your audio is turned up, mic plugged in, unmuted, etc.&lt;br /&gt;
:* Check that you have selected the correct comm radio.&lt;br /&gt;
:* Check that your binding is using '''''fgcom.radio.ptt(BOOL)''''', and not the default ptt.&lt;br /&gt;
:* Check that your appropriate fgcom instance is receiving frequency and ptt events.&lt;br /&gt;
:* Check that you have configured the flightgear protocol and fgcom properly.&lt;br /&gt;
&lt;br /&gt;
=====FGCom Fails To Open Capture Device Or Device Busy Errors=====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''This section is Linux specific''&lt;br /&gt;
&lt;br /&gt;
======If Using The Modern [http://kcat.strangesoft.net/openal.html OpenAL Soft] OpenAL Implementation.======&lt;br /&gt;
Adjust your ~/.alsoftrc to use software mixing for playback and/or capture.&lt;br /&gt;
 drivers = alsa&lt;br /&gt;
 [alsa]&lt;br /&gt;
 device = default&lt;br /&gt;
 capture = plug:dsnoop&lt;br /&gt;
&lt;br /&gt;
======If Using The Old Loki OpenAL Implementation======&lt;br /&gt;
Adjust your ~/.openalrc to use software mixing for playback and/or capture&lt;br /&gt;
 (define devices '(alsa))&lt;br /&gt;
 (define alsa-out-device &amp;quot;default&amp;quot;)&lt;br /&gt;
 (define alsa-in-device &amp;quot;plug:dsnoop&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Using multiple instances of fgcom, while useful in some situations, potentially doubles the amount of bandwidth used. To avoid excessive bandwidth usage and strain on the fgcom server, you should only start the second radio when you actually need it. Using this setup you can use just one instance of fgcom for normal use, and start/stop the other one (without restarting flightgear) dynamically when needed. Talking on both radios at the same time is not very realistic, wasteful of bandwidth, and generally a '''''bad''''' idea. For these reasons it is disabled by default, you should only enable and use this feature for testing purposes.&lt;br /&gt;
&lt;br /&gt;
Please be kind to our '''''one and only''''' fgcom server and use multiple fgcom radios sparingly, and only when actually needed.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16217</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16217"/>
		<updated>2009-10-09T05:34:53Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://www.mediafire.com/?menhzqon0yz fgcom_com2.xml]&lt;br /&gt;
* The nasal script file - [http://www.mediafire.com/?e2anoztqmgb fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocol'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both(if enabled), and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both(must be enabled first).&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both(if enabled).&lt;br /&gt;
*'''fgcom.enable_transmit_both(BOOL)''' - Enables or disables ability to select both radios for transmitting. ''BOOL'' should be '''1''' to enable, '''0''' to disable. (disabled by default)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal''''', creating the directory if needed.&lt;br /&gt;
* On Linux the path is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal'''''&lt;br /&gt;
* On Windows XP the path is '''''C:\Documents And Settings\&amp;lt;username&amp;gt;\Application Data\flightgear.org\Nasal'''''&lt;br /&gt;
* On Windows Vista the path is '''''C:\Users\&amp;lt;username&amp;gt;\appdata\roaming\flightgear.org\Nasal'''''&lt;br /&gt;
* On Mac I do not know, possibly the same as Linux? (feel free to contact if you know)&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''The windows paths are what I was told by Windows users, I cannot confirm them personally''&lt;br /&gt;
&lt;br /&gt;
It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_com2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing between comm1 and comm2. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''Please remember that the ptt property on screen will only change when the fgcom.radio.ptt method is used.''&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_com2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui or run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default). You can then skip to the Second FGCom Instance''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
====Trouble Shooting====&lt;br /&gt;
&lt;br /&gt;
=====Errors From The Script Or Script Not Working Properly=====&lt;br /&gt;
:* Make sure that you have put the script in FG_HOME/Nasal and '''''not''''' FG_ROOT/Nasal. (It matters!)&lt;br /&gt;
:* Make sure you are calling the '''''fgcom.radio''''' object correctly...check the Api section.&lt;br /&gt;
&lt;br /&gt;
=====Nothing Echoed Back When Transmitting On Frequency 910=====&lt;br /&gt;
:* Check that your audio is turned up, mic plugged in, unmuted, etc.&lt;br /&gt;
:* Check that you have selected the correct comm radio.&lt;br /&gt;
:* Check that your binding is using '''''fgcom.radio.ptt(BOOL)''''', and not the default ptt.&lt;br /&gt;
:* Check that your appropriate fgcom instance is receiving frequency and ptt events.&lt;br /&gt;
:* Check that you have configured the flightgear protocol and fgcom properly.&lt;br /&gt;
&lt;br /&gt;
=====FGCom Fails To Open Capture Device Or Device Busy Errors=====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''This section is Linux specific''&lt;br /&gt;
&lt;br /&gt;
======If Using The Modern [http://kcat.strangesoft.net/openal.html OpenAL Soft] OpenAL Implementation.======&lt;br /&gt;
Adjust your ~/.alsoftrc to use software mixing for playback and/or capture.&lt;br /&gt;
 drivers = alsa&lt;br /&gt;
 [alsa]&lt;br /&gt;
 device = default&lt;br /&gt;
 capture = plug:dsnoop&lt;br /&gt;
&lt;br /&gt;
======If Using The Old Loki OpenAL Implementation======&lt;br /&gt;
Adjust your ~/.openalrc to use software mixing for playback and/or capture&lt;br /&gt;
 (define devices '(alsa))&lt;br /&gt;
 (define alsa-out-device &amp;quot;default&amp;quot;)&lt;br /&gt;
 (define alsa-in-device &amp;quot;plug:dsnoop&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Using multiple instances of fgcom, while useful in some situations, potentially doubles the amount of bandwidth used. To avoid excessive bandwidth usage and strain on the fgcom server, you should only start the second radio when you actually need it. Using this setup you can use just one instance of fgcom for normal use, and start/stop the other one (without restarting flightgear) dynamically when needed. Talking on both radios at the same time is not very realistic, wasteful of bandwidth, and generally a '''''bad''''' idea. For these reasons it is disabled by default, you should only enable and use this feature for testing purposes.&lt;br /&gt;
&lt;br /&gt;
Please be kind to our '''''one and only''''' fgcom server and use multiple fgcom radios sparingly, and only when actually needed.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16211</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16211"/>
		<updated>2009-10-08T21:07:40Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://www.mediafire.com/?menhzqon0yz fgcom_com2.xml]&lt;br /&gt;
* The nasal script file - [http://www.mediafire.com/?e2anoztqmgb fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocol'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both(if enabled), and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both(must be enabled first).&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both(if enabled).&lt;br /&gt;
*'''fgcom.enable_transmit_both(BOOL)''' - Enables or disables ability to select both radios for transmitting. ''BOOL'' should be '''1''' to enable, '''0''' to disable. (disabled by default)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_com2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing between comm1 and comm2. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''Please remember that the ptt property on screen will only change when the fgcom.radio.ptt method is used.''&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_com2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui or run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default). You can then skip to the Second FGCom Instance''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
====Trouble Shooting====&lt;br /&gt;
&lt;br /&gt;
=====Errors From The Script Or Script Not Working Properly=====&lt;br /&gt;
:* Make sure that you have put the script in FG_HOME/Nasal and '''''not''''' FG_ROOT/Nasal. (It matters!)&lt;br /&gt;
:* Make sure you are calling the '''''fgcom.radio''''' object correctly...check the Api section.&lt;br /&gt;
&lt;br /&gt;
=====Nothing Echoed Back When Transmitting On Frequency 910=====&lt;br /&gt;
:* Check that your audio is turned up, mic plugged in, unmuted, etc.&lt;br /&gt;
:* Check that you have selected the correct comm radio.&lt;br /&gt;
:* Check that your binding is using '''''fgcom.radio.ptt(BOOL)''''', and not the default ptt.&lt;br /&gt;
:* Check that your appropriate fgcom instance is receiving frequency and ptt events.&lt;br /&gt;
:* Check that you have configured the flightgear protocol and fgcom properly.&lt;br /&gt;
&lt;br /&gt;
=====FGCom Fails To Open Capture Device Or Device Busy Errors=====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''This section is Linux specific''&lt;br /&gt;
&lt;br /&gt;
======If Using The Modern [http://kcat.strangesoft.net/openal.html OpenAL Soft] OpenAL Implementation.======&lt;br /&gt;
Adjust your ~/.alsoftrc to use software mixing for playback and/or capture.&lt;br /&gt;
 drivers = alsa&lt;br /&gt;
 [alsa]&lt;br /&gt;
 device = default&lt;br /&gt;
 capture = plug:dsnoop&lt;br /&gt;
&lt;br /&gt;
======If Using The Old Loki OpenAL Implementation======&lt;br /&gt;
Adjust your ~/.openalrc to use software mixing for playback and/or capture&lt;br /&gt;
 (define devices '(alsa))&lt;br /&gt;
 (define alsa-out-device &amp;quot;default&amp;quot;)&lt;br /&gt;
 (define alsa-in-device &amp;quot;plug:dsnoop&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Using multiple instances of fgcom, while useful in some situations, potentially doubles the amount of bandwidth used. To avoid excessive bandwidth usage and strain on the fgcom server, you should only start the second radio when you actually need it. Using this setup you can use just one instance of fgcom for normal use, and start/stop the other one (without restarting flightgear) dynamically when needed. Talking on both radios at the same time is not very realistic, wasteful of bandwidth, and generally a '''''bad''''' idea. For these reasons it is disabled by default, you should only enable and use this feature for testing purposes.&lt;br /&gt;
&lt;br /&gt;
Please be kind to our '''''one and only''''' fgcom server and use multiple fgcom radios sparingly, and only when actually needed.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16210</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16210"/>
		<updated>2009-10-08T20:49:02Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://www.mediafire.com/?menhzqon0yz fgcom_com2.xml]&lt;br /&gt;
* The nasal script file - [http://www.mediafire.com/?e2anoztqmgb fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocol'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_com2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing from comm1-&amp;gt;comm2-&amp;gt;both-&amp;gt;comm1. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''Please note that the ptt property on screen will only change when using the fgcom.radio.ptt method''&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_com2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui or run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default). You can then skip to the Second FGCom Instance''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
====Trouble Shooting====&lt;br /&gt;
&lt;br /&gt;
=====Errors From The Script Or Script Not Working Properly=====&lt;br /&gt;
:* Make sure that you have put the script in FG_HOME/Nasal and '''''not''''' FG_ROOT/Nasal. (It matters!)&lt;br /&gt;
:* Make sure you are calling the '''''fgcom.radio''''' object correctly...check the Api section.&lt;br /&gt;
&lt;br /&gt;
=====Nothing Echoed Back When Transmitting On Frequency 910=====&lt;br /&gt;
:* Check that your audio is turned up, mic plugged in, unmuted, etc.&lt;br /&gt;
:* Check that you have selected the correct comm radio.&lt;br /&gt;
:* Check that your binding is using '''''fgcom.radio.ptt(BOOL)''''', and not the default ptt.&lt;br /&gt;
:* Check that your appropriate fgcom instance is receiving frequency and ptt events.&lt;br /&gt;
:* Check that you have configured the flightgear protocol and fgcom properly.&lt;br /&gt;
&lt;br /&gt;
=====FGCom Fails To Open Capture Device Or Device Busy Errors=====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''This section is Linux specific''&lt;br /&gt;
&lt;br /&gt;
======If Using The Modern [http://kcat.strangesoft.net/openal.html OpenAL Soft] OpenAL Implementation.======&lt;br /&gt;
Adjust your ~/.alsoftrc to use software mixing for playback and/or capture.&lt;br /&gt;
 drivers = alsa&lt;br /&gt;
 [alsa]&lt;br /&gt;
 device = default&lt;br /&gt;
 capture = plug:dsnoop&lt;br /&gt;
&lt;br /&gt;
======If Using The Old Loki OpenAL Implementation======&lt;br /&gt;
Adjust your ~/.openalrc to use software mixing for playback and/or capture&lt;br /&gt;
 (define devices '(alsa))&lt;br /&gt;
 (define alsa-out-device &amp;quot;default&amp;quot;)&lt;br /&gt;
 (define alsa-in-device &amp;quot;plug:dsnoop&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Using multiple instances of fgcom, while useful in some situations, potentially doubles the amount of bandwidth used. To avoid excessive bandwidth usage and strain on the fgcom server, you should only start the second radio when you actually need it. Using this setup you can use just one instance of fgcom for normal use, and start/stop the other one (without restarting flightgear) dynamically when needed. Please be kind to our '''''only''''' fgcom server and use this sparingly, and only when actually needed.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16209</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16209"/>
		<updated>2009-10-08T20:35:48Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://www.mediafire.com/?menhzqon0yz fgcom_com2.xml]&lt;br /&gt;
* The nasal script file - [http://www.mediafire.com/?5dqogmze0yf fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocol'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_com2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing from comm1-&amp;gt;comm2-&amp;gt;both-&amp;gt;comm1. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''Please note that the ptt property on screen will only change when using the fgcom.radio.ptt method''&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_com2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui or run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default). You can then skip to the Second FGCom Instance''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
====Trouble Shooting====&lt;br /&gt;
&lt;br /&gt;
=====Errors From The Script Or Script Not Working Properly=====&lt;br /&gt;
:* Make sure that you have put the script in FG_HOME/Nasal and '''''not''''' FG_ROOT/Nasal. (It matters!)&lt;br /&gt;
:* Make sure you are calling the '''''fgcom.radio''''' object correctly...check the Api section.&lt;br /&gt;
&lt;br /&gt;
=====Nothing Echoed Back When Transmitting On Frequency 910=====&lt;br /&gt;
:* Check that your audio is turned up, mic plugged in, unmuted, etc.&lt;br /&gt;
:* Check that you have selected the correct comm radio.&lt;br /&gt;
:* Check that your binding is using '''''fgcom.radio.ptt(BOOL)''''', and not the default ptt.&lt;br /&gt;
:* Check that your appropriate fgcom instance is receiving frequency and ptt events.&lt;br /&gt;
:* Check that you have configured the flightgear protocol and fgcom properly.&lt;br /&gt;
&lt;br /&gt;
=====FGCom Fails To Open Capture Device Or Device Busy Errors=====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''This section is Linux specific''&lt;br /&gt;
&lt;br /&gt;
======If Using The Modern [http://kcat.strangesoft.net/openal.html OpenAL Soft] OpenAL Implementation.======&lt;br /&gt;
Adjust your ~/.alsoftrc to use software mixing for playback and/or capture.&lt;br /&gt;
 drivers = alsa&lt;br /&gt;
 [alsa]&lt;br /&gt;
 device = default&lt;br /&gt;
 capture = plug:dsnoop&lt;br /&gt;
&lt;br /&gt;
======If Using The Old Loki OpenAL Implementation======&lt;br /&gt;
Adjust your ~/.openalrc to use software mixing for playback and/or capture&lt;br /&gt;
 (define devices '(alsa))&lt;br /&gt;
 (define alsa-out-device &amp;quot;default&amp;quot;)&lt;br /&gt;
 (define alsa-in-device &amp;quot;plug:dsnoop&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Using multiple instances of fgcom, while useful in some situations, potentially doubles the amount of bandwidth used. To avoid excessive bandwidth usage and strain on the fgcom server, you should only start the second radio when you actually need it. Using this setup you can use just one instance of fgcom for normal use, and start/stop the other one (without restarting flightgear) dynamically when needed. Please be kind to our '''''only''''' fgcom server and use this sparingly, and only when actually needed.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16208</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16208"/>
		<updated>2009-10-08T20:35:10Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://www.mediafire.com/?menhzqon0yz fgcom_com2.xml]&lt;br /&gt;
* The nasal script file - [http://www.mediafire.com/?5dqogmze0yf fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocol'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing from comm1-&amp;gt;comm2-&amp;gt;both-&amp;gt;comm1. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''Please note that the ptt property on screen will only change when using the fgcom.radio.ptt method''&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_com2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui or run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default). You can then skip to the Second FGCom Instance''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
====Trouble Shooting====&lt;br /&gt;
&lt;br /&gt;
=====Errors From The Script Or Script Not Working Properly=====&lt;br /&gt;
:* Make sure that you have put the script in FG_HOME/Nasal and '''''not''''' FG_ROOT/Nasal. (It matters!)&lt;br /&gt;
:* Make sure you are calling the '''''fgcom.radio''''' object correctly...check the Api section.&lt;br /&gt;
&lt;br /&gt;
=====Nothing Echoed Back When Transmitting On Frequency 910=====&lt;br /&gt;
:* Check that your audio is turned up, mic plugged in, unmuted, etc.&lt;br /&gt;
:* Check that you have selected the correct comm radio.&lt;br /&gt;
:* Check that your binding is using '''''fgcom.radio.ptt(BOOL)''''', and not the default ptt.&lt;br /&gt;
:* Check that your appropriate fgcom instance is receiving frequency and ptt events.&lt;br /&gt;
:* Check that you have configured the flightgear protocol and fgcom properly.&lt;br /&gt;
&lt;br /&gt;
=====FGCom Fails To Open Capture Device Or Device Busy Errors=====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''This section is Linux specific''&lt;br /&gt;
&lt;br /&gt;
======If Using The Modern [http://kcat.strangesoft.net/openal.html OpenAL Soft] OpenAL Implementation.======&lt;br /&gt;
Adjust your ~/.alsoftrc to use software mixing for playback and/or capture.&lt;br /&gt;
 drivers = alsa&lt;br /&gt;
 [alsa]&lt;br /&gt;
 device = default&lt;br /&gt;
 capture = plug:dsnoop&lt;br /&gt;
&lt;br /&gt;
======If Using The Old Loki OpenAL Implementation======&lt;br /&gt;
Adjust your ~/.openalrc to use software mixing for playback and/or capture&lt;br /&gt;
 (define devices '(alsa))&lt;br /&gt;
 (define alsa-out-device &amp;quot;default&amp;quot;)&lt;br /&gt;
 (define alsa-in-device &amp;quot;plug:dsnoop&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Using multiple instances of fgcom, while useful in some situations, potentially doubles the amount of bandwidth used. To avoid excessive bandwidth usage and strain on the fgcom server, you should only start the second radio when you actually need it. Using this setup you can use just one instance of fgcom for normal use, and start/stop the other one (without restarting flightgear) dynamically when needed. Please be kind to our '''''only''''' fgcom server and use this sparingly, and only when actually needed.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16205</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16205"/>
		<updated>2009-10-08T19:19:36Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://www.mediafire.com/?menhzqon0yz fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://www.mediafire.com/?5dqogmze0yf fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocol'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing from comm1-&amp;gt;comm2-&amp;gt;both-&amp;gt;comm1. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''Please note that the ptt property on screen will only change when using the fgcom.radio.ptt method''&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_comm2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui or run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default). You can then skip to the Second FGCom Instance''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
====Trouble Shooting====&lt;br /&gt;
&lt;br /&gt;
=====Errors From The Script Or Script Not Working Properly=====&lt;br /&gt;
:* Make sure that you have put the script in FG_HOME/Nasal and '''''not''''' FG_ROOT/Nasal. (It matters!)&lt;br /&gt;
:* Make sure you are calling the '''''fgcom.radio''''' object correctly...check the Api section.&lt;br /&gt;
&lt;br /&gt;
=====Nothing Echoed Back When Transmitting On Frequency 910=====&lt;br /&gt;
:* Check that your audio is turned up, mic plugged in, unmuted, etc.&lt;br /&gt;
:* Check that you have selected the correct comm radio.&lt;br /&gt;
:* Check that your binding is using '''''fgcom.radio.ptt(BOOL)''''', and not the default ptt.&lt;br /&gt;
:* Check that your appropriate fgcom instance is receiving frequency and ptt events.&lt;br /&gt;
:* Check that you have configured the flightgear protocol and fgcom properly.&lt;br /&gt;
&lt;br /&gt;
=====FGCom Fails To Open Capture Device Or Device Busy Errors=====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''This section is Linux specific''&lt;br /&gt;
&lt;br /&gt;
======If Using The Modern [http://kcat.strangesoft.net/openal.html OpenAL Soft] OpenAL Implementation.======&lt;br /&gt;
Adjust your ~/.alsoftrc to use software mixing for playback and/or capture.&lt;br /&gt;
 drivers = alsa&lt;br /&gt;
 [alsa]&lt;br /&gt;
 device = default&lt;br /&gt;
 capture = plug:dsnoop&lt;br /&gt;
&lt;br /&gt;
======If Using The Old Loki OpenAL Implementation======&lt;br /&gt;
Adjust your ~/.openalrc to use software mixing for playback and/or capture&lt;br /&gt;
 (define devices '(alsa))&lt;br /&gt;
 (define alsa-out-device &amp;quot;default&amp;quot;)&lt;br /&gt;
 (define alsa-in-device &amp;quot;plug:dsnoop&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Using multiple instances of fgcom, while useful in some situations, potentially doubles the amount of bandwidth used. To avoid excessive bandwidth usage and strain on the fgcom server, you should only start the second radio when you actually need it. Using this setup you can use just one instance of fgcom for normal use, and start/stop the other one (without restarting flightgear) dynamically when needed. Please be kind to our '''''only''''' fgcom server and use this sparingly, and only when actually needed.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16200</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16200"/>
		<updated>2009-10-08T03:45:03Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://www.mediafire.com/?menhzqon0yz fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://www.mediafire.com/?5dqogmze0yf fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocol'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing from comm1-&amp;gt;comm2-&amp;gt;both-&amp;gt;comm1. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_comm2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui or run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default). You can then skip to the Second FGCom Instance''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
====Trouble Shooting====&lt;br /&gt;
&lt;br /&gt;
=====Errors From The Script Or Script Not Working Properly=====&lt;br /&gt;
:* Make sure that you have put the script in FG_HOME/Nasal and '''''not''''' FG_ROOT/Nasal. (It matters!)&lt;br /&gt;
:* Make sure you are calling the '''''fgcom.radio''''' object correctly...check the Api section.&lt;br /&gt;
&lt;br /&gt;
=====Nothing Echoed Back When Transmitting On Frequency 910=====&lt;br /&gt;
:* Check that your audio is turned up, mic plugged in, unmuted, etc.&lt;br /&gt;
:* Check that you have selected the correct comm radio.&lt;br /&gt;
:* Check that your binding is using '''''fgcom.radio.ptt(BOOL)''''', and not the default ptt.&lt;br /&gt;
:* Check that your appropriate fgcom instance is receiving frequency and ptt events.&lt;br /&gt;
:* Check that you have configured the flightgear protocol and fgcom properly.&lt;br /&gt;
&lt;br /&gt;
=====FGCom Fails To Open Capture Device Or Device Busy Errors=====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''This section is Linux specific''&lt;br /&gt;
&lt;br /&gt;
======If Using The Modern [http://kcat.strangesoft.net/openal.html OpenAL Soft] OpenAL Implementation.======&lt;br /&gt;
Adjust your ~/.alsoftrc to use software mixing for playback and/or capture.&lt;br /&gt;
 drivers = alsa&lt;br /&gt;
 [alsa]&lt;br /&gt;
 device = default&lt;br /&gt;
 capture = plug:dsnoop&lt;br /&gt;
&lt;br /&gt;
======If Using The Old Loki OpenAL Implementation======&lt;br /&gt;
Adjust your ~/.openalrc to use software mixing for playback and/or capture&lt;br /&gt;
 (define devices '(alsa))&lt;br /&gt;
 (define alsa-out-device &amp;quot;default&amp;quot;)&lt;br /&gt;
 (define alsa-in-device &amp;quot;plug:dsnoop&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Using multiple instances of fgcom, while useful in some situations, potentially doubles the amount of bandwidth used. To avoid excessive bandwidth usage and strain on the fgcom server, you should only start the second radio when you actually need it. Using this setup you can use just one instance of fgcom for normal use, and start/stop the other one (without restarting flightgear) dynamically when needed. Please be kind to our '''''only''''' fgcom server and use this sparingly, and only when actually needed.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16199</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16199"/>
		<updated>2009-10-08T03:43:48Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://www.mediafire.com/?menhzqon0yz fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://www.mediafire.com/?5dqogmze0yf fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocol'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing from comm1-&amp;gt;comm2-&amp;gt;both-&amp;gt;comm1. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_comm2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui or run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default).''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
====Trouble Shooting====&lt;br /&gt;
&lt;br /&gt;
=====Errors From The Script Or Script Not Working Properly=====&lt;br /&gt;
:* Make sure that you have put the script in FG_HOME/Nasal and '''''not''''' FG_ROOT/Nasal. (It matters!)&lt;br /&gt;
:* Make sure you are calling the '''''fgcom.radio''''' object correctly...check the Api section.&lt;br /&gt;
&lt;br /&gt;
=====Nothing Echoed Back When Transmitting On Frequency 910=====&lt;br /&gt;
:* Check that your audio is turned up, mic plugged in, unmuted, etc.&lt;br /&gt;
:* Check that you have selected the correct comm radio.&lt;br /&gt;
:* Check that your binding is using '''''fgcom.radio.ptt(BOOL)''''', and not the default ptt.&lt;br /&gt;
:* Check that your appropriate fgcom instance is receiving frequency and ptt events.&lt;br /&gt;
:* Check that you have configured the flightgear protocol and fgcom properly.&lt;br /&gt;
&lt;br /&gt;
=====FGCom Fails To Open Capture Device Or Device Busy Errors=====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''This section is Linux specific''&lt;br /&gt;
&lt;br /&gt;
======If Using The Modern [http://kcat.strangesoft.net/openal.html OpenAL Soft] OpenAL Implementation.======&lt;br /&gt;
Adjust your ~/.alsoftrc to use software mixing for playback and/or capture.&lt;br /&gt;
 drivers = alsa&lt;br /&gt;
 [alsa]&lt;br /&gt;
 device = default&lt;br /&gt;
 capture = plug:dsnoop&lt;br /&gt;
&lt;br /&gt;
======If Using The Old Loki OpenAL Implementation======&lt;br /&gt;
Adjust your ~/.openalrc to use software mixing for playback and/or capture&lt;br /&gt;
 (define devices '(alsa))&lt;br /&gt;
 (define alsa-out-device &amp;quot;default&amp;quot;)&lt;br /&gt;
 (define alsa-in-device &amp;quot;plug:dsnoop&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Using multiple instances of fgcom, while useful in some situations, potentially doubles the amount of bandwidth used. To avoid excessive bandwidth usage and strain on the fgcom server, you should only start the second radio when you actually need it. Using this setup you can use just one instance of fgcom for normal use, and start/stop the other one (without restarting flightgear) dynamically when needed. Please be kind to our '''''only''''' fgcom server and use this sparingly, and only when actually needed.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16191</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16191"/>
		<updated>2009-10-07T22:28:58Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://www.mediafire.com/?menhzqon0yz fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://www.mediafire.com/?5dqogmze0yf fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocol'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing from comm1-&amp;gt;comm2-&amp;gt;both-&amp;gt;comm1. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_comm2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui for run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is was not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default).''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
====Trouble Shooting====&lt;br /&gt;
&lt;br /&gt;
=====Errors From The Script Or Script Not Working Properly=====&lt;br /&gt;
:* Make sure that you have put the script in FG_HOME/Nasal and '''''not''''' FG_ROOT/Nasal. (It matters!)&lt;br /&gt;
:* Make sure you are calling the '''''fgcom.radio''''' object correctly...check the Api section.&lt;br /&gt;
&lt;br /&gt;
=====Nothing Echoed Back When Transmitting On Frequency 910=====&lt;br /&gt;
:* Check that your audio is turned up, mic plugged in, unmuted, etc.&lt;br /&gt;
:* Check that you have selected the correct comm radio.&lt;br /&gt;
:* Check that your binding is using '''''fgcom.radio.ptt(BOOL)''''', and not the default ptt.&lt;br /&gt;
:* Check that your appropriate fgcom instance is receiving frequency and ptt events.&lt;br /&gt;
:* Check that you have configured the flightgear protocol and fgcom properly.&lt;br /&gt;
&lt;br /&gt;
=====FGCom Fails To Open Capture Device Or Device Busy Errors=====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''This section is Linux specific''&lt;br /&gt;
&lt;br /&gt;
======If Using The Modern [http://kcat.strangesoft.net/openal.html OpenAL Soft] OpenAL Implementation.======&lt;br /&gt;
Adjust your ~/.alsoftrc to use software mixing for playback and/or capture.&lt;br /&gt;
 drivers = alsa&lt;br /&gt;
 [alsa]&lt;br /&gt;
 device = default&lt;br /&gt;
 capture = plug:dsnoop&lt;br /&gt;
&lt;br /&gt;
======If Using The Old Loki OpenAL Implementation======&lt;br /&gt;
Adjust your ~/.openalrc to use software mixing for playback and/or capture&lt;br /&gt;
 (define devices '(alsa))&lt;br /&gt;
 (define alsa-out-device &amp;quot;default&amp;quot;)&lt;br /&gt;
 (define alsa-in-device &amp;quot;plug:dsnoop&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Using multiple instances of fgcom, while useful in some situations, potentially doubles the amount of bandwidth used. To avoid excessive bandwidth usage and strain on the fgcom server, you should only start the second radio when you actually need it. Using this setup you can use just one instance of fgcom for normal use, and start/stop the other one (without restarting flightgear) dynamically when needed. Please be kind to our '''''only''''' fgcom server and use this sparingly, and only when actually needed.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16184</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16184"/>
		<updated>2009-10-07T22:19:21Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://www.mediafire.com/?menhzqon0yz fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://www.mediafire.com/?5dqogmze0yf fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocol'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing from comm1-&amp;gt;comm2-&amp;gt;both-&amp;gt;comm1. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_comm2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui for run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is was not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default).''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
====Trouble Shooting====&lt;br /&gt;
&lt;br /&gt;
=====Errors From The Script Or Script Not Working Properly=====&lt;br /&gt;
:* Make sure that you have put the script in FG_HOME/Nasal and '''''not''''' FG_ROOT/Nasal. (It matters!)&lt;br /&gt;
:* Make sure you are calling the '''''fgcom.radio''''' object correctly...check the Api section.&lt;br /&gt;
&lt;br /&gt;
=====Nothing Echoed Back When Transmitting On Frequency 910=====&lt;br /&gt;
:* Check that your audio is turned up, mic plugged in, unmuted, etc.&lt;br /&gt;
:* Check that you have selected the correct comm radio.&lt;br /&gt;
:* Check that your binding is using '''''fgcom.radio.ptt(BOOL)''''', and not the default ptt.&lt;br /&gt;
:* Check that your appropriate fgcom instance is receiving frequency and ptt events.&lt;br /&gt;
:* Check that you have configured the flightgear protocol and fgcom properly.&lt;br /&gt;
&lt;br /&gt;
=====FGCom Fails To Open Capture Device Or Device Busy Errors=====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''This section is Linux specific''&lt;br /&gt;
&lt;br /&gt;
======If Using The Modern [http://kcat.strangesoft.net/openal.html OpenAL Soft] OpenAL Implementation.======&lt;br /&gt;
Adjust your ~/.alsoftrc to use software mixing for playback and/or capture.&lt;br /&gt;
 drivers = alsa&lt;br /&gt;
 [alsa]&lt;br /&gt;
 device = default&lt;br /&gt;
 capture = plug:dsnoop&lt;br /&gt;
&lt;br /&gt;
======If Using The Old Loki OpenAL Implementation======&lt;br /&gt;
Adjust your ~/.openalrc to use software mixing for playback and/or capture&lt;br /&gt;
 (define devices '(alsa))&lt;br /&gt;
 (define alsa-out-device &amp;quot;default&amp;quot;)&lt;br /&gt;
 (define alsa-in-device &amp;quot;plug:dsnoop&amp;quot;)&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16178</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16178"/>
		<updated>2009-10-07T22:00:09Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocols'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing from comm1-&amp;gt;comm2-&amp;gt;both-&amp;gt;comm1. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_comm2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui for run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is was not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default).''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
====Trouble Shooting====&lt;br /&gt;
&lt;br /&gt;
=====Errors From The Script Or Script Not Working Properly=====&lt;br /&gt;
:* Make sure that you have put the script in FG_HOME/Nasal and '''''not''''' FG_ROOT/Nasal. (It matters!)&lt;br /&gt;
:* Make sure you are calling the '''''fgcom.radio''''' object correctly...check the Api section.&lt;br /&gt;
&lt;br /&gt;
=====Nothing Echoed Back When Transmitting On Frequency 910=====&lt;br /&gt;
:* Check that your audio is turned up, mic plugged in, unmuted, etc.&lt;br /&gt;
:* Check that you have selected the correct comm radio.&lt;br /&gt;
:* Check that your binding is using '''''fgcom.radio.ptt(BOOL)''''', and not the default ptt.&lt;br /&gt;
:* Check that your appropriate fgcom instance is receiving frequency and ptt events.&lt;br /&gt;
:* Check that you have configured the flightgear protocol and fgcom properly.&lt;br /&gt;
&lt;br /&gt;
=====FGCom Fails To Open Capture Device Or Device Busy Errors=====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''This section is Linux specific''&lt;br /&gt;
&lt;br /&gt;
======If Using The Modern [http://kcat.strangesoft.net/openal.html OpenAL Soft] OpenAL Implementation.======&lt;br /&gt;
Adjust your ~/.alsoftrc to use software mixing for playback and/or capture.&lt;br /&gt;
 drivers = alsa&lt;br /&gt;
 [alsa]&lt;br /&gt;
 device = default&lt;br /&gt;
 capture = plug:dsnoop&lt;br /&gt;
&lt;br /&gt;
======If Using The Old Loki OpenAL Implementation======&lt;br /&gt;
Adjust your ~/.openalrc to use software mixing for playback and/or capture&lt;br /&gt;
 (define devices '(alsa))&lt;br /&gt;
 (define alsa-out-device &amp;quot;default&amp;quot;)&lt;br /&gt;
 (define alsa-in-device &amp;quot;plug:dsnoop&amp;quot;)&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16176</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16176"/>
		<updated>2009-10-07T21:58:46Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocols'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing from comm1-&amp;gt;comm2-&amp;gt;both-&amp;gt;comm1. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_comm2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui for run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is was not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default).''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
====Trouble Shooting====&lt;br /&gt;
&lt;br /&gt;
=====Errors From The Script Or Script Not Working Properly=====&lt;br /&gt;
:* Make sure that you have put the script in FG_HOME/Nasal and '''''not''''' FG_ROOT/Nasal. (It matters!)&lt;br /&gt;
:* Make sure you are calling the '''''fgcom.radio''''' object correctly...check the Api section.&lt;br /&gt;
&lt;br /&gt;
=====Nothing Echoed Back When Transmitting On Frequency 910=====&lt;br /&gt;
:* Check that your audio is turned up, mic plugged in, unmuted, etc.&lt;br /&gt;
:* Check that you have selected the correct comm radio.&lt;br /&gt;
:* Check that your binding is using '''''fgcom.radio.ptt(BOOL)''''', and not the default ptt.&lt;br /&gt;
:* Check that your appropriate fgcom instance is receiving frequency and ptt events.&lt;br /&gt;
:* Check that you have configured the flightgear protocol and fgcom properly.&lt;br /&gt;
&lt;br /&gt;
=====FGCom fails to open capture device or device busy errors=====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''This section is Linux specific''&lt;br /&gt;
&lt;br /&gt;
======If using the modern [http://kcat.strangesoft.net/openal.html OpenAL Soft] OpenAL implentation.======&lt;br /&gt;
Adjust your ~/.alsoftrc to use software mixing for playback and/or capture.&lt;br /&gt;
 drivers = alsa&lt;br /&gt;
 [alsa]&lt;br /&gt;
 device = default&lt;br /&gt;
 capture = plug:dsnoop&lt;br /&gt;
&lt;br /&gt;
======If using the old Loki OpenAL implementation======&lt;br /&gt;
Adjust your ~/.openalrc to use software mixing for playback and/or capture&lt;br /&gt;
 (define devices '(alsa))&lt;br /&gt;
 (define alsa-out-device &amp;quot;default&amp;quot;)&lt;br /&gt;
 (define alsa-in-device &amp;quot;plug:dsnoop&amp;quot;)&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16175</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16175"/>
		<updated>2009-10-07T21:57:47Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocols'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing from comm1-&amp;gt;comm2-&amp;gt;both-&amp;gt;comm1. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_comm2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui for run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is was not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default).''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
====Trouble Shooting====&lt;br /&gt;
&lt;br /&gt;
=====Errors From The Script Or Script Not Working Properly=====&lt;br /&gt;
:* Make sure that you have put the script in FG_HOME/Nasal and '''''not''''' FG_ROOT/Nasal. (It matters!)&lt;br /&gt;
:* Make sure you are calling the '''''fgcom.radio''''' object correctly...check the Api section.&lt;br /&gt;
&lt;br /&gt;
=====Nothing Echoed Back When Transmitting On Frequency 910=====&lt;br /&gt;
:* Check that your audio is turned up, mic plugged in, unmuted, etc.&lt;br /&gt;
:* Check that you have selected the correct comm radio.&lt;br /&gt;
:* Check that your binding is using '''''fgcom.radio.ptt(BOOL)''''', and not the default ptt.&lt;br /&gt;
:* Check that your appropriate fgcom instance is receiving frequency and ptt events.&lt;br /&gt;
:* Check that you have configured the flightgear protocol and fgcom properly.&lt;br /&gt;
&lt;br /&gt;
=====FGCom fails to open capture device or device busy errors=====&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''This section is Linux specific''&lt;br /&gt;
&lt;br /&gt;
======If using the modern [http://kcat.strangesoft.net/openal.html OpenAL Soft] OpenAL implentation.======&lt;br /&gt;
Adjust your ~/.alsoftrc to use software mixing for playback and/or capture.&lt;br /&gt;
 drivers = alsa&lt;br /&gt;
 [alsa]&lt;br /&gt;
 device = default&lt;br /&gt;
 capture = plug:dsnoop&lt;br /&gt;
&lt;br /&gt;
======If using the old Loki OpenAL implementation======&lt;br /&gt;
Adjust your ~/.openalrc to use software mixing for playback and/or capture&lt;br /&gt;
 (define devices '(alsa))&lt;br /&gt;
 (define alsa-out-device &amp;quot;default&amp;quot;)&lt;br /&gt;
 (define alsa-in-device &amp;quot;plug:dsnoop&amp;quot;)&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16168</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16168"/>
		<updated>2009-10-07T19:31:08Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocols'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing from comm1-&amp;gt;comm2-&amp;gt;both-&amp;gt;comm1. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_comm2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui for run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is was not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default).''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Set comm1 frequency to 910, then using your bindings created earlier make sure comm1 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Set comm2 frequency to 910, then using your bindings created earlier make sure comm2 is selected and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16167</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16167"/>
		<updated>2009-10-07T19:27:52Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocols'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing from comm1-&amp;gt;comm2-&amp;gt;both-&amp;gt;comm1. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_comm2&lt;br /&gt;
&lt;br /&gt;
=====Starting FGCom=====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui for run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is was not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
======First FGCom Instance======&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default).''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Using your binding created earlier, make sure comm1 is selected, set comm1 frequency to 910 and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
======Second FGCom Instance======&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Using your binding created earlier, make sure comm2 is selected, set comm2 frequency to 910, and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16166</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16166"/>
		<updated>2009-10-07T19:27:01Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocols'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing from comm1-&amp;gt;comm2-&amp;gt;both-&amp;gt;comm1. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_comm2&lt;br /&gt;
&lt;br /&gt;
====Starting FGCom====&lt;br /&gt;
To have two comm radios, we will need to run two instances of fgcom. For the first instance you can use fgcomgui for run fgcom from the command line. For the second instance I recommend using the command line, as fgcomgui is was not really intended to be run multiple times.&lt;br /&gt;
&lt;br /&gt;
=====First FGCom Instance=====&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''If you wish to use fgcomgui as your first instance instead, go ahead and start it now, making sure port is set to 16661(the default).''&lt;br /&gt;
&lt;br /&gt;
Starting first instance of fgcom from the command line, using default settings.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk&lt;br /&gt;
&lt;br /&gt;
Using your binding created earlier, make sure comm1 is selected, set comm1 frequency to 910 and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;br /&gt;
&lt;br /&gt;
=====Second FGCom Instance=====&lt;br /&gt;
Ok, with first instance working, let's start the second one. Notice that we set port to 16662 this time.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgcom -Sfgcom.flightgear.org.uk -p16662&lt;br /&gt;
&lt;br /&gt;
Using your binding created earlier, make sure comm2 is selected, set comm2 frequency to 910, and press your ptt key/button. You should hear everything echoed back to you. If you have any problems refer to the Trouble Shooting section for possible solutions and try again.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16163</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16163"/>
		<updated>2009-10-07T16:41:48Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocols'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing from comm1-&amp;gt;comm2-&amp;gt;both-&amp;gt;comm1. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_comm2&lt;br /&gt;
&lt;br /&gt;
====Starting FGCom====&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16162</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16162"/>
		<updated>2009-10-07T16:30:43Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocols'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again(in fgrun), refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;br /&gt;
Ok, so you have placed the files in the appropriate places, added the generic protocol definition to fgrun(if you use it), added keyboard/joystick bindings, and now your ready to try it all out. &lt;br /&gt;
&lt;br /&gt;
=====Starting FlightGear=====&lt;br /&gt;
First we will go ahead and launch flightgear using your preferred method below. If all is well you should see no errors, and will see the '''''fgcom.radio''''' properties at the top left of your flightgear window. Pressing the button you've bound to switching radios, you should see the ''active_radio'' property changing from comm1-&amp;gt;comm2-&amp;gt;both-&amp;gt;comm1. Pressing the button you've bound to ptt, you should see the ''ptt'' property switching between 0 to 1. If it's all working, congrats, you can now move on to the Starting FGCom section. If you had any problems or errors, please refer to the Trouble Shooting section for possible solutions. Resolve any problems before moving on.&lt;br /&gt;
&lt;br /&gt;
======FGRun======&lt;br /&gt;
Just go ahead and start flightgear. Making sure you set up the second protocol definition first of course.&lt;br /&gt;
&lt;br /&gt;
======Command Line======&lt;br /&gt;
Starting flightgear, using the ufo and specifying the fgcom protocols. Notice the different port and protocol name for the second.&lt;br /&gt;
 jacob@dualbuntu:~ $ fgfs --aircraft=ufo --generic=socket,out,10,localhost,16661,udp,fgcom --generic=socket,out,10,localhost,16662,udp,fgcom_comm2&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Tuxklok&amp;diff=16151</id>
		<title>Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Tuxklok&amp;diff=16151"/>
		<updated>2009-10-07T06:53:39Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: moved Tuxklok to User:Tuxklok:&amp;amp;#32;oops&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[User:Tuxklok]]&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16150</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16150"/>
		<updated>2009-10-07T06:53:39Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: moved Tuxklok to User:Tuxklok:&amp;amp;#32;oops&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocols'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again, refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16149</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16149"/>
		<updated>2009-10-07T06:41:47Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Have Use Of An Optional Second Comm Radio==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocols'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again, refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switching between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16142</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16142"/>
		<updated>2009-10-07T00:33:41Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Add Functionality For Both Comm Radios==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocols'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again, refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switchin between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bringing It All Together====&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16141</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16141"/>
		<updated>2009-10-07T00:19:49Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Add Functionality For Both Comm Radios==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
=====Protocol File=====&lt;br /&gt;
This is a slightly modified version of the normal fgcom protocol file. It is used to get the second instance of fgcom to use comm2 frequency and ptt.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_ROOT/Protocols'''''.&lt;br /&gt;
&lt;br /&gt;
=====Nasal Script=====&lt;br /&gt;
The script file defines and creates an instance of an FGComRadio object. This object is used to select radio(s) and transmit on the right one, it is available to other nasal script as '''''fgcom.radio'''''&lt;br /&gt;
&lt;br /&gt;
======Api====== &lt;br /&gt;
*'''fgcom.radio.ptt(BOOL)''' - Enable/disable push to talk on the currently selected radio(s). ''BOOL'' should be '''1''' to start transmitting, '''0''' to stop.&lt;br /&gt;
*'''fgcom.radio.next_radio()''' - Switch to the next radio for transmitting. This cycles through comm1, comm2, both, and back to comm1.&lt;br /&gt;
*'''fgcom.radio.select_radio(INT)''' - Select a specific radio for transmitting. ''INT'' should be '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
*'''fgcom.radio.selected_radio()''' - Returns the currently selected radio for transmitting. '''0''' for comm1, '''1''' for comm2, or '''2''' for both.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; ''all other methods or attributes are for internal use only and should not be used or modified''&lt;br /&gt;
&lt;br /&gt;
The script also exposes some properties which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should be considered read only, changing them will not affect anything. By default the script displays these properties at the upper left of your screen. If you do not want this, remove or comment the appropriate lines in the script...last 4 lines...read the comments.&lt;br /&gt;
&lt;br /&gt;
Place this file in '''''FG_HOME/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal''''', create if needed. I'm sorry but I do not know the path used on Windows or Mac. It is '''important''' that you '''do not''' put this file in '''''FG_ROOT/Nasal'''''!.&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again, refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switchin between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.next_radio();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16140</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16140"/>
		<updated>2009-10-06T23:04:39Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Add Functionality For Both Comm Radios==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
Place the protocol file in '''''$fg-root/Protocols''''' with the other protocols.&lt;br /&gt;
&lt;br /&gt;
Place the script file in '''''$fg-home/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal'''''(create it if needed). I do not know the path used on Windows or Mac at the moment. It is important that you '''do not''' put it in '''''$fg-root/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
The script file creates an instance of an FGComRadio object, available to other scripts as '''''fgcom.radio'''''. There are two interesting methods in the object, '''''fgcom.radio.ptt(BOOL)''''' to enable/disable push to talk, and '''''fgcom.radio.switch_radios()''''' used to switch between comm1, comm2, or both for transmitting. There is one interesting attribute in the object '''''fgcom.radio.current_radio''''', which will be either 0, 1, or 2 depending on which comm radio(s) is selected. This, and all other attributes of the object are '''READ ONLY''', do not modify them. The object also exposes some which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should also be considered read only, changing them will not affect anything.&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again, refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switchin between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.switch_radios();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16139</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16139"/>
		<updated>2009-10-06T22:51:04Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Add Functionality For Both Comm Radios==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Keep the second radio optional, but easily added at runtime when needed.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
Place the protocol file in '''''$fg-root/Protocols''''' with the other protocols.&lt;br /&gt;
&lt;br /&gt;
Place the script file in '''''$fg-home/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal'''''. Do '''not''' put it in '''''$fg-root/Nasal'''''!  &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;''create the directory if needed''&lt;br /&gt;
&lt;br /&gt;
The script file creates an instance of an FGComRadio object, available to other scripts as '''''fgcom.radio'''''. There are two interesting methods in the object, '''''fgcom.radio.ptt(BOOL)''''' to enable/disable push to talk, and '''''fgcom.radio.switch_radios()''''' used to switch between comm1, comm2, or both for transmitting. There is one interesting attribute in the object '''''fgcom.radio.current_radio''''', which will be either 0, 1, or 2 depending on which comm radio(s) is selected. This, and all other attributes of the object are '''READ ONLY''', do not modify them. The object also exposes some which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should also be considered read only, changing them will not affect anything.&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again, refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switchin between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.switch_radios();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16138</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16138"/>
		<updated>2009-10-06T22:49:06Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Add Functionality For Both Comm Radios==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily.&lt;br /&gt;
# Be able to run only one radio normally, but easily start the second radio when wanted.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
Place the protocol file in '''''$fg-root/Protocols''''' with the other protocols.&lt;br /&gt;
&lt;br /&gt;
Place the script file in '''''$fg-home/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal'''''. Do '''not''' put it in '''''$fg-root/Nasal'''''!  &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;''create the directory if needed''&lt;br /&gt;
&lt;br /&gt;
The script file creates an instance of an FGComRadio object, available to other scripts as '''''fgcom.radio'''''. There are two interesting methods in the object, '''''fgcom.radio.ptt(BOOL)''''' to enable/disable push to talk, and '''''fgcom.radio.switch_radios()''''' used to switch between comm1, comm2, or both for transmitting. There is one interesting attribute in the object '''''fgcom.radio.current_radio''''', which will be either 0, 1, or 2 depending on which comm radio(s) is selected. This, and all other attributes of the object are '''READ ONLY''', do not modify them. The object also exposes some which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should also be considered read only, changing them will not affect anything.&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again, refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML Docs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switchin between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.switch_radios();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16137</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16137"/>
		<updated>2009-10-06T22:32:13Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuring FGCOM and FlightGear To Add Functionality For Both Comm Radios==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily, avoiding the cumbersome SHIFT+SPACE switching that fgcom uses.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
Place the protocol file in '''''$fg-root/Protocols''''' with the other protocols.&lt;br /&gt;
&lt;br /&gt;
Place the script file in '''''$fg-home/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal'''''. Do '''not''' put it in '''''$fg-root/Nasal'''''!  &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;''create the directory if needed''&lt;br /&gt;
&lt;br /&gt;
The script file creates an instance of an FGComRadio object, available to other scripts as '''''fgcom.radio'''''. There are two interesting methods in the object, '''''fgcom.radio.ptt(BOOL)''''' to enable/disable push to talk, and '''''fgcom.radio.switch_radios()''''' used to switch between comm1, comm2, or both for transmitting. There is one interesting attribute in the object '''''fgcom.radio.current_radio''''', which will be either 0, 1, or 2 depending on which comm radio(s) is selected. This, and all other attributes of the object are '''READ ONLY''', do not modify them. The object also exposes some which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should also be considered read only, changing them will not affect anything.&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again, refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML ocs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switchin between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.switch_radios();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16136</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16136"/>
		<updated>2009-10-06T22:21:27Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Making fgcom behave more like a real radio==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily, avoiding the cumbersome SHIFT+SPACE switching that fgcom uses.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
Place the protocol file in '''''$fg-root/Protocols''''' with the other protocols.&lt;br /&gt;
&lt;br /&gt;
Place the script file in '''''$fg-home/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal'''''. Do '''not''' put it in '''''$fg-root/Nasal'''''!  &amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;''create the directory if needed''&lt;br /&gt;
&lt;br /&gt;
The script file creates an instance of an FGComRadio object, available to other scripts as '''''fgcom.radio'''''. There are two interesting methods in the object, '''''fgcom.radio.ptt(BOOL)''''' to enable/disable push to talk, and '''''fgcom.radio.switch_radios()''''' used to switch between comm1, comm2, or both for transmitting. There is one interesting attribute in the object '''''fgcom.radio.current_radio''''', which will be either 0, 1, or 2 depending on which comm radio(s) is selected. This, and all other attributes of the object are '''READ ONLY''', do not modify them. The object also exposes some which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should also be considered read only, changing them will not affect anything.&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again, refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML ocs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switchin between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.switch_radios();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16122</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16122"/>
		<updated>2009-10-06T21:33:17Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Making fgcom behave more like a real radio==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily, avoiding the cumbersome SHIFT+SPACE switching that fgcom uses.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
Place the protocol file in '''''$fg-root/Protocols''''' with the other protocols.&lt;br /&gt;
&lt;br /&gt;
Place the script file in '''''$fg-home/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal'''''. Do '''not''' put it in '''''$fg-root/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
The script file creates an instance of an FGComRadio object, available to other scripts as '''''fgcom.radio'''''. There are two interesting methods in the object, '''''fgcom.radio.ptt(BOOL)''''' to enable/disable push to talk, and '''''fgcom.radio.switch_radios()''''' used to switch between comm1, comm2, or both for transmitting. There is one interesting attribute in the object '''''fgcom.radio.current_radio''''', which will be either 0, 1, or 2 depending on which comm radio(s) is selected. This, and all other attributes of the object are '''READ ONLY''', do not modify them. The object also exposes some which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should also be considered read only, changing them will not affect anything.&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again, refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML ocs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switchin between comm radios. So I will just show those parts of my joystick config as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;br /&gt;
&lt;br /&gt;
'''''binds button 1 on my joystick to push to talk. Transmits (on selected radio) while pressed, stops when released.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;1&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;1&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Push To Talk&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;mod-up&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;&lt;br /&gt;
                &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
                &amp;lt;script&amp;gt;fgcom.radio.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''binds button 4 on my joystick to switching selected radio(s) for transmitting.'''''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Change comm radio used for ptt&amp;lt;/desc&amp;gt;&lt;br /&gt;
        &amp;lt;number&amp;gt;&lt;br /&gt;
            &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
            &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
        &amp;lt;/number&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;script&amp;gt;fgcom.radio.switch_radios();&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16119</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16119"/>
		<updated>2009-10-06T21:19:33Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Making fgcom behave more like a real radio==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily, avoiding the cumbersome SHIFT+SPACE switching that fgcom uses.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
Place the protocol file in '''''$fg-root/Protocols''''' with the other protocols.&lt;br /&gt;
&lt;br /&gt;
Place the script file in '''''$fg-home/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal'''''. Do '''not''' put it in '''''$fg-root/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
The script file creates an instance of an FGComRadio object, available to other scripts as '''''fgcom.radio'''''. There are two interesting methods in the object, '''''fgcom.radio.ptt(BOOL)''''' to enable/disable push to talk, and '''''fgcom.radio.switch_radios()''''' used to switch between comm1, comm2, or both for transmitting. There is one interesting attribute in the object '''''fgcom.radio.current_radio''''', which will be either 0, 1, or 2 depending on which comm radio(s) is selected. This, and all other attributes of the object are '''READ ONLY''', do not modify them. The object also exposes some which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should also be considered read only, changing them will not affect anything.&lt;br /&gt;
&lt;br /&gt;
====Setup====&lt;br /&gt;
Setup is fairly simple and consists of the following:&lt;br /&gt;
# Configuring a second generic protocol for comm2.&lt;br /&gt;
# Adding bindings to the joystick or keyboard to call the methods in the '''''fgcom.radio''''' object.&lt;br /&gt;
&lt;br /&gt;
=====Protocol=====&lt;br /&gt;
Start by configuring the second generic protocol for flightgear. This is in addition to the fgcom protocol you have setup previously, and should be the same except '''change port to 16662''' and change the protocol name to '''fgcom_comm2'''. If you need help in setting up the protocol again, refer to this section of [http://wiki.flightgear.org/index.php/FGCOM#Functional_Test_.2B_User_Briefing the main fgcom article](scroll down to part '''6) Input/Output'''). If your using fgcomgui, you can go to ''Help-&amp;gt;HTML ocs'' and refer to the flightgear section there.&lt;br /&gt;
&lt;br /&gt;
=====Bindings=====&lt;br /&gt;
The default push to talk binding in flightgear is the spacebar, but only affects properties for comm1. You can try to modify the default bindings if you wish, but I recommend just leaving them and adding your own bindings elsewhere. I personally use two buttons on my joystick for this, one for push to talk, and one for switchin between comm radios. So I will just show those bindings as an example for how to setup bindings using the '''''fgcom.radio''''' object for control.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16098</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16098"/>
		<updated>2009-10-06T06:39:33Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Making fgcom behave more like a real radio==&lt;br /&gt;
&lt;br /&gt;
 * ''This article is not yet finished, please check back later.''&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily, avoiding the cumbersome SHIFT+SPACE switching that fgcom uses.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
Place the protocol file in '''''$fg-root/Protocols''''' with the other protocols.&lt;br /&gt;
&lt;br /&gt;
Place the script file in '''''$fg-home/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal'''''. Do '''not''' put it in '''''$fg-root/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
The script file creates an instance of an FGComRadio object, available to other scripts as '''''fgcom.radio'''''. There are two interesting methods in the object, '''''fgcom.radio.ptt(BOOL)''''' to enable/disable push to talk, and '''''fgcom.radio.switch_radios()''''' used to switch between comm1, comm2, or both for transmitting. There is one interesting attribute in the object '''''fgcom.radio.current_radio''''', which will be either 0, 1, or 2 depending on which comm radio(s) is selected. This, and all other attributes of the object are '''READ ONLY''', do not modify them. The object also exposes some which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should also be considered read only, changing them will not affect anything.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16097</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16097"/>
		<updated>2009-10-06T06:29:37Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Making fgcom behave more like a real radio==&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily, avoiding the cumbersome SHIFT+SPACE switching that fgcom uses.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
Place the protocol file in '''''$fg-root/Protocols''''' with the other protocols.&lt;br /&gt;
&lt;br /&gt;
Place the script file in '''''$fg-home/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal'''''. Do '''not''' put it in '''''$fg-root/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
The script file creates an instance of an FGComRadio object, available to other scripts as '''''fgcom.radio'''''. There are two interesting methods in the object, '''''fgcom.radio.ptt(BOOL)''''' to enable/disable push to talk, and '''''fgcom.radio.switch_radios()''''' used to switch between comm1, comm2, or both for transmitting. There is one interesting attribute in the object '''''fgcom.radio.current_radio''''', which will be either 0, 1, or 2 depending on which comm radio(s) is selected. This, and all other attributes of the object are '''READ ONLY''', do not modify them. The object also exposes some which will be found in flightgear under '''''/local/fgcom'''''. These properties are purely informational and should also be considered read only, changing them will not affect anything.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16092</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16092"/>
		<updated>2009-10-06T02:40:53Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Making fgcom behave more like a real radio==&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily, avoiding the cumbersome SHIFT+SPACE switching that fgcom uses.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nas]&lt;br /&gt;
&lt;br /&gt;
Place the protocol file in '''''$fg-root/Protocols''''' with the other protocols.&lt;br /&gt;
&lt;br /&gt;
Place the script file in '''''$fg-home/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal'''''. Do '''not''' put it in '''''$fg-root/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
The script file creates an instance of an FGComRadio object, available to other scripts as '''''fgcom.radio'''''. There are two interesting methods in the object, '''''fgcom.radio.ptt(BOOL)''''' to enable/disable push to talk, and '''''fgcom.radio.switch_radios()''''' used to switch between comm1 and comm2. There is one interesting attribute in the object '''''fgcom.radio.current_radio''''', which will be either 0 or 1 depending on which comm radio is selected. This, and all other attributes of the object are '''READ ONLY''', do not modify them. The object also exposes some informational properties, which will be found in flightgear under '''''/local/fgcom'''''.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16091</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16091"/>
		<updated>2009-10-06T02:30:10Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Making fgcom behave more like a real radio==&lt;br /&gt;
&lt;br /&gt;
====The Goal====&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily, avoiding the cumbersome SHIFT+SPACE switching that fgcom uses.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nasal]&lt;br /&gt;
&lt;br /&gt;
Place the protocol file in '''''$fg-root/Protocols''''' with the other protocols.&lt;br /&gt;
&lt;br /&gt;
Place the script file in '''''$fg-home/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal'''''. Do '''not''' put it in '''''$fg-root/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
The script file creates an instance of an FGComRadio object, available to other scripts as '''''fgcom.radio'''''. There are two interesting methods in the object, '''''fgcom.radio.ptt(BOOL)''''' to enable/disable push to talk, and '''''fgcom.radio.switch_radios()''''' used to switch between comm1 and comm2. There is one interesting attribute in the object '''''fgcom.radio.current_radio''''', which will be either 0 or 1 depending on which comm radio is selected. This, and all other attributes of the object are '''READ ONLY''', do not modify them. The object also exposes some informational properties, which will be found in flightgear under '''''/local/fgcom'''''.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16089</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16089"/>
		<updated>2009-10-06T01:54:34Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Making fgcom behave more like a real radio==&lt;br /&gt;
&lt;br /&gt;
===The Goal===&lt;br /&gt;
# Be able to monitor both the comm1 frequency and comm2 frequency at the same time.&lt;br /&gt;
# Be able to select between comm1 and comm2 to transmit on easily, avoiding the cumbersome SHIFT+SPACE switching that fgcom uses.&lt;br /&gt;
# To do so with existing fgcom and flightgear functionality.&lt;br /&gt;
&lt;br /&gt;
====What Is Involved====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nasal]&lt;br /&gt;
&lt;br /&gt;
Place the protocol file in '''''$fg-root/Protocols''''' with the other protocols.&lt;br /&gt;
&lt;br /&gt;
Place the script file in '''''$fg-home/Nasal'''''. On Linux this is '''''/home/&amp;lt;username&amp;gt;/.fgfs/Nasal'''''. Do '''not''' put it in '''''$fg-root/Nasal'''''!&lt;br /&gt;
&lt;br /&gt;
The script file creates an instance of an FGComRadio object, available to other scripts as '''''fgcom.radio'''''. There are two interesting methods in the object, '''''fgcom.radio.ptt(BOOL)''''' to enable/disable push to talk, and '''''fgcom.radio.switch_radios()''''' used to switch between comm1 and comm2. There is one interesting attribute in the object '''''fgcom.radio.current_radio''''', which will be either 0 or 1 depending on which comm radio is selected. This, and all other attributes of the object are '''READ ONLY''', do not modify them. The object also exposes some informational properties, which will be found in flightgear under '''''/local/fgcom'''''.&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16079</id>
		<title>User:Tuxklok</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Tuxklok&amp;diff=16079"/>
		<updated>2009-10-06T00:23:43Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: Created page with '==Making fgcom behave more like a real radio==  The goal is to be able to monitor comm1 and comm2 frequencies at the same time, and be able to select which radio will be used for…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Making fgcom behave more like a real radio==&lt;br /&gt;
&lt;br /&gt;
The goal is to be able to monitor comm1 and comm2 frequencies at the same time, and be able to select which radio will be used for transmitting. FGCom does not support this out of the box, but with a little effort one can make this work.&lt;br /&gt;
&lt;br /&gt;
====To make this work you need====&lt;br /&gt;
* Two instances of fgcom, one for each comm radio.&lt;br /&gt;
* A second, slightly modified fgcom protocol file for comm2.&lt;br /&gt;
* A second generic protocol definition for the above.&lt;br /&gt;
* A bit of nasal script to glue it all together&lt;br /&gt;
* A little bit of patience.&lt;br /&gt;
&lt;br /&gt;
====Files====&lt;br /&gt;
* The secondary fgcom protocol file - [http://.com fgcom_comm2.xml]&lt;br /&gt;
* The nasal script file - [http://.com fgcom.nasal]&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=FlightGear_Newsletter_August_2009&amp;diff=13726</id>
		<title>FlightGear Newsletter August 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=FlightGear_Newsletter_August_2009&amp;diff=13726"/>
		<updated>2009-08-04T06:02:08Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the second edition of the FlightGear Newsletter. In this issue, we have a new GA aircraft in the hangar, a report from LinuxTag 2009, a description of a Tornado simulator, and some new custom scenery around Innsbruck, Austria.&lt;br /&gt;
&lt;br /&gt;
The newsletter is still a bit thin on contributions, so if you'd like to contribute, please feel free to log onto the wiki and start editing the next edition [[FlightGear Newsletter September 2009| here]]. We're still looking for a permanent (or even a temporary) newsletter editor, so if you'd like to get involved, have a look on the [http://www.flightgear.org/forums/ Forums].&lt;br /&gt;
&lt;br /&gt;
==What's New in CVS==&lt;br /&gt;
&lt;br /&gt;
===Configurable Shaders===&lt;br /&gt;
&lt;br /&gt;
Tim Moore has committed a significant change to the graphics system that will allow much easier integration of OpenGL shaders within the simulator. &lt;br /&gt;
&lt;br /&gt;
Shaders are small programs that run on your graphics card itself, and allow the simulator to do graphics operations that would otherwise be too computationally expensive. The current FG release (1.9.1) uses shaders for the forests of trees and 3D clouds.&lt;br /&gt;
&lt;br /&gt;
This change represented a lot of work on the infrastructure of the project for long-term benefit. While there aren't any significant graphics changes based on this yet, we can expect a lot in the future, including integration of some nice water effects.&lt;br /&gt;
&lt;br /&gt;
===Generic Binary I/O protocol===&lt;br /&gt;
&lt;br /&gt;
The input and output code of FlightGear has been very flexible for many years by  allowing for communications to (and from) files, serial ports and network sockets just by altering a command-line option.&lt;br /&gt;
&lt;br /&gt;
In conjunction with that FlightGear has had support for a generic ASCII only input-output protocol handler for a number of years now. It is called 'generic' because it allows handling of just about any information in any form by altering  a user modifiable xml configuration file. The functionality has been extended further by the possibility to define an offset and a multiplication factor. This approach might not cover every possible scenario but it will probably be good enough for most cases.&lt;br /&gt;
&lt;br /&gt;
With the help of Anders Gidenstam the generic protocol has recently been extended to also support binary input and output. The data will be tightly packed in a packet that contains the requested data described in the configuration file. Supported types are: boolean values (8-bit), integer values (32-bit), floating point values (32-bit) and double precision floating point values (64-bit). Anders also added the option to support network byte ordering (big-endian) or system native byte-ordering which will save some processing time when only one type of system is used. To make it easier to see how the packet will be handled by FlightGear a utility called generic-protocol-analyze has been created which can be found in FlightGear/utils/xmlgrep. It outputs the data  offset and size along with it's description.&lt;br /&gt;
&lt;br /&gt;
==New Wiki Articles ==&lt;br /&gt;
The wiki provides now a new article for aspiring core developers about extending the built-in Nasal scripting interpreter with custom extension functions: [[Howto:Extending Nasal]].&lt;br /&gt;
The [[Nasal scripting language|Nasal documentation]] itself has been slightly reworked to provide a step by step introduction for users completely new to scripting or programming in general.&lt;br /&gt;
&lt;br /&gt;
==In the Hangar==&lt;br /&gt;
&lt;br /&gt;
[[Image:Pa22.jpg|150px|Piper Tri-Pacer]] &lt;br /&gt;
[[Image:Pa22cockpit.jpg|150px|Piper Tri-Pacer cockpit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There's a new aircraft in the CVS hangar - the [http://en.wikipedia.org/wiki/Piper_Pacer PA 22-160 Tri Pacer]. Created by Robert Leda (aka erobo) and Pawel Luchowski, this is a lovely GA aircraft and well worth having a flight in. If you enjoy VFR cross-country flying, or even simple IFR, and want to try something different to the Cessna 172, this is the plane for you.&lt;br /&gt;
&lt;br /&gt;
The level of detail is very impressive - you must prime to start the engine (making sure the mixture is set), the sound varies depending on whether you've got the window open, and the doors slam shut. All in all, it's a great polished aircraft, and a fine addition to the hanger.&lt;br /&gt;
&lt;br /&gt;
The FG hangar now has a very wide range of Piper aircraft, from the simple Cub, through the Cherokee Warrior II, Comanche 250, to the Seneca II. It is worth noting that the Warrior, Comanche and Seneca are all based on airframes flown by FG contributors in real life.&lt;br /&gt;
&lt;br /&gt;
==Useful Links==&lt;br /&gt;
&lt;br /&gt;
For those wanting to do some dead reckoning, this [http://www.csgnetwork.com/e6bcalc.html CRP5 E6B] online calculator may be of interest. Get your stopwatch, chinagraph pencils, ruler and protractor ready!&lt;br /&gt;
&lt;br /&gt;
There are a whole host of funky aviation converters [http://www.csgnetwork.com/aviationconverters.html here]. Thanks to eeK on the forums for the links.&lt;br /&gt;
&lt;br /&gt;
==LinuxTag 2009==&lt;br /&gt;
[[Image:Linuxtag2009_1.jpg|thumb|200px|A view of the FlightGear stand]]&lt;br /&gt;
[[Image:Linuxtag2009 terrain before.jpg|thumb|150px|left|Terrain texture (before)]]&lt;br /&gt;
[[Image:Linuxtag2009 terrain after.jpg|thumb|150px|left|Terrain texture (linuxtag)]]&lt;br /&gt;
[[Image:Shader sea linuxtag2009.jpg|thumb|150px|right|Sea texture (linuxtag)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The 2009 edition of the LinuxTag has been concluded and the FlightGear hangar was there full of aircraft and pilots ! You could easily spot our stand since it seemed to me the most popular one, the idea to take a free virtual flight coupled with a free flight instructor was like honey for bears. Furthermore the hardware was impressive, 2 flight stations with 3 big monitors each and real controls were worth a try ! You could even track your flight through a projected mapserver on the wall.&amp;lt;br/&amp;gt; We flew mostly around the [[EDDF|Frankfurt]] area, where a highly detailed airport (still with a high fps rate) was the background of our participants. The favorite aircraft was the [[Piper_PA34-200T_Seneca_II|SenecaII]] as it was perfect to be flown with our equipment. Meanwhile in the forward station was easy to see some [[Eurocopter_Bo105|Eurocopter Bo105]] pilot or [[Grumman_F-14_Tomcat|F-14 Tomcat]] top gun enjoying [[Aircraft_carrier|carrier]] approaches.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But it was not just all flying and fun. At the stand you could talk to some code and model developers, discussing new features and wishes. There was a developers section too: Till was hacking an earth and sea textures generator to improve our virtual world terrain painting, applying [http://en.wikipedia.org/wiki/Shader shaders] instead of fixed photos; early results where really interesting and I hope to see them soon in [[CVS]].&lt;br /&gt;
&lt;br /&gt;
The FlightGear guys prove themselves very friendly and always spoke in english in my presence. Martin Spott took care to manage an entrance pass for me and kept me informed prior to LinuxTag via Emails. This means you have no excuses to miss the event next year (At least only if you are not afraid of virtually flight !).&lt;br /&gt;
&lt;br /&gt;
* [http://brisa.homelinux.net/zenphoto/index.php?album=linuxtag2009 photos from Francesco and Matthias of the stand]&lt;br /&gt;
&lt;br /&gt;
- Francesco Brisa&lt;br /&gt;
&lt;br /&gt;
==Tornado F3 Simulator==&lt;br /&gt;
&lt;br /&gt;
I had the very good fortune to use a genuine Panavia Tornado F3 simulator at RAF Leuchars in Scotland at the start of August.&lt;br /&gt;
&lt;br /&gt;
I flew in from the south in my microlight, as part of a fly-in to the base. This was a rather unique event, as the last fly in to the base had been some 15 years before, and the RAF made us very welcome, with talks about their ATC and how to avoid the fast jets that fly near us (top tip - don't be at 250ft AGL - that's where they spend most of their time!). &lt;br /&gt;
&lt;br /&gt;
The simulator itself did not have a moving platform, but did use a real cockpit, had a 120 degree field of view display and was used for training by the pilots, including interceptions and weapons training. The short sortie I flew took off from RAF Leuchars (EGQL) up the Firth of Forth, underneath the Forth Bridges, and then landing at Edinburgh (EGPH). The feeling of &amp;quot;being there&amp;quot; was quite remarkable, and it was a real privilege to have the opportunity to use it.&lt;br /&gt;
&lt;br /&gt;
One of the things that struck me however, was that there was nothing there that was beyond the capabilities of FlightGear. The graphics were possibly slightly lower in quality (no scenery objects apart from the bridges) and the display technology was using DLP projectors (there's a description [http://ntdd2489.fm.netbenefit.co.uk/recentInstallations/Industry/Simulation/RAF_Leuchars/index.asp here]). The key thing that made the experience so realistic was the wide field of view and the use of real hardware. I was sat in a real Tornado cockpit, the canopy was closed (with warning klaxon), the stick was heavy, and the throttles had to be moved appropriately for reheat or reverse thrust. So, perhaps its time to see if there are any real cockpits available...&lt;br /&gt;
&lt;br /&gt;
Of course, none of this is news to the various people who are building fixed base simulators using FG as a software platform. There is a list of the known FG-based projects [http://www.flightgear.org/Projects/ here], and almost certainly plenty more around.&lt;br /&gt;
&lt;br /&gt;
-Stuart Buchanan&lt;br /&gt;
&lt;br /&gt;
==Innsbruck Gets A Face Lift==&lt;br /&gt;
[[Image:Innsbruck_after_003.jpg|thumb|175px|left|screenshot]]&lt;br /&gt;
[[Image:Innsbruck_after_006.jpg|thumb|175px|left|screenshot]]&lt;br /&gt;
&lt;br /&gt;
Custom scenery for the area in and around Innsbruck, Austria, is now available for downloading. The scenery currently covers a 1x1 degree area containing parts of Austria and Germany, and makes use of accurate data from the [http://www.eea.europa.eu Corine Land Cover], and [http://www.openstreetmap.org Open Street Map] projects. Three airports lie within this area, Innsbruck LOWI towards the south western end in Austria, and EDHR + EDMK on the northern end in Germany. See the forum topic [http://flightgear.org/forums/viewtopic.php?f=5&amp;amp;t=5350 here] for more details, pictures, and links to download the scenery.&lt;br /&gt;
&lt;br /&gt;
See [http://fgfs.i-net.hu/modules/fgtracker/?FUNCT=FLIGHT&amp;amp;FLIGHTID=973183 here]for a route that will take you on a nice tour around the scenery. The route starts and ends at Innsbruck LOWI, with visits to Lake Walchensee, Tegernsee, and Achensee. I recommend an amphibious plane such as the De Havilland Beaver on floats (--aircraft=dhc2F), so you can make stops at these beautiful alpine lakes and enjoy the view.&lt;br /&gt;
&lt;br /&gt;
-Jacob Burbach&lt;br /&gt;
&lt;br /&gt;
==And Finally...==&lt;br /&gt;
Check out the cockpit of an Airbus A380 and have a virtual tour here:&lt;br /&gt;
[http://www.airbus.com/store/mm_repository/cockpit_airbusA380/flash/cockpit1.htm http://www.airbus.com/store/mm_repository/cockpit_airbusA380/flash/cockpit1.htm]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear Newsletter|2009 8]]&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=FlightGear_Newsletter_August_2009&amp;diff=13725</id>
		<title>FlightGear Newsletter August 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=FlightGear_Newsletter_August_2009&amp;diff=13725"/>
		<updated>2009-08-04T05:37:44Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the second edition of the FlightGear Newsletter. In this issue, we have a new GA aircraft in the hangar, a report from LinuxTag 2009, a description of a Tornado simulator, and some new custom scenery around Innsbruck, Austria.&lt;br /&gt;
&lt;br /&gt;
The newsletter is still a bit thin on contributions, so if you'd like to contribute, please feel free to log onto the wiki and start editing the next edition [[FlightGear Newsletter September 2009| here]]. We're still looking for a permanent (or even a temporary) newsletter editor, so if you'd like to get involved, have a look on the [http://www.flightgear.org/forums/ Forums].&lt;br /&gt;
&lt;br /&gt;
==What's New in CVS==&lt;br /&gt;
&lt;br /&gt;
===Configurable Shaders===&lt;br /&gt;
&lt;br /&gt;
Tim Moore has committed a significant change to the graphics system that will allow much easier integration of OpenGL shaders within the simulator. &lt;br /&gt;
&lt;br /&gt;
Shaders are small programs that run on your graphics card itself, and allow the simulator to do graphics operations that would otherwise be too computationally expensive. The current FG release (1.9.1) uses shaders for the forests of trees and 3D clouds.&lt;br /&gt;
&lt;br /&gt;
This change represented a lot of work on the infrastructure of the project for long-term benefit. While there aren't any significant graphics changes based on this yet, we can expect a lot in the future, including integration of some nice water effects.&lt;br /&gt;
&lt;br /&gt;
===Generic Binary I/O protocol===&lt;br /&gt;
&lt;br /&gt;
The input and output code of FlightGear has been very flexible for many years by  allowing for communications to (and from) files, serial ports and network sockets just by altering a command-line option.&lt;br /&gt;
&lt;br /&gt;
In conjunction with that FlightGear has had support for a generic ASCII only input-output protocol handler for a number of years now. It is called 'generic' because it allows handling of just about any information in any form by altering  a user modifiable xml configuration file. The functionality has been extended further by the possibility to define an offset and a multiplication factor. This approach might not cover every possible scenario but it will probably be good enough for most cases.&lt;br /&gt;
&lt;br /&gt;
With the help of Anders Gidenstam the generic protocol has recently been extended to also support binary input and output. The data will be tightly packed in a packet that contains the requested data described in the configuration file. Supported types are: boolean values (8-bit), integer values (32-bit), floating point values (32-bit) and double precision floating point values (64-bit). Anders also added the option to support network byte ordering (big-endian) or system native byte-ordering which will save some processing time when only one type of system is used. To make it easier to see how the packet will be handled by FlightGear a utility called generic-protocol-analyze has been created which can be found in FlightGear/utils/xmlgrep. It outputs the data  offset and size along with it's description.&lt;br /&gt;
&lt;br /&gt;
==New Wiki Articles ==&lt;br /&gt;
The wiki provides now a new article for aspiring core developers about extending the built-in Nasal scripting interpreter with custom extension functions: [[Howto:Extending Nasal]].&lt;br /&gt;
The [[Nasal scripting language|Nasal documentation]] itself has been slightly reworked to provide a step by step introduction for users completely new to scripting or programming in general.&lt;br /&gt;
&lt;br /&gt;
==In the Hangar==&lt;br /&gt;
&lt;br /&gt;
[[Image:Pa22.jpg|150px|Piper Tri-Pacer]] &lt;br /&gt;
[[Image:Pa22cockpit.jpg|150px|Piper Tri-Pacer cockpit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There's a new aircraft in the CVS hangar - the [http://en.wikipedia.org/wiki/Piper_Pacer PA 22-160 Tri Pacer]. Created by Robert Leda (aka erobo) and Pawel Luchowski, this is a lovely GA aircraft and well worth having a flight in. If you enjoy VFR cross-country flying, or even simple IFR, and want to try something different to the Cessna 172, this is the plane for you.&lt;br /&gt;
&lt;br /&gt;
The level of detail is very impressive - you must prime to start the engine (making sure the mixture is set), the sound varies depending on whether you've got the window open, and the doors slam shut. All in all, it's a great polished aircraft, and a fine addition to the hanger.&lt;br /&gt;
&lt;br /&gt;
The FG hangar now has a very wide range of Piper aircraft, from the simple Cub, through the Cherokee Warrior II, Comanche 250, to the Seneca II. It is worth noting that the Warrior, Comanche and Seneca are all based on airframes flown by FG contributors in real life.&lt;br /&gt;
&lt;br /&gt;
==Useful Links==&lt;br /&gt;
&lt;br /&gt;
For those wanting to do some dead reckoning, this [http://www.csgnetwork.com/e6bcalc.html CRP5 E6B] online calculator may be of interest. Get your stopwatch, chinagraph pencils, ruler and protractor ready!&lt;br /&gt;
&lt;br /&gt;
There are a whole host of funky aviation converters [http://www.csgnetwork.com/aviationconverters.html here]. Thanks to eeK on the forums for the links.&lt;br /&gt;
&lt;br /&gt;
==LinuxTag 2009==&lt;br /&gt;
[[Image:Linuxtag2009_1.jpg|thumb|200px|A view of the FlightGear stand]]&lt;br /&gt;
[[Image:Linuxtag2009 terrain before.jpg|thumb|150px|left|Terrain texture (before)]]&lt;br /&gt;
[[Image:Linuxtag2009 terrain after.jpg|thumb|150px|left|Terrain texture (linuxtag)]]&lt;br /&gt;
[[Image:Shader sea linuxtag2009.jpg|thumb|150px|right|Sea texture (linuxtag)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The 2009 edition of the LinuxTag has been concluded and the FlightGear hangar was there full of aircraft and pilots ! You could easily spot our stand since it seemed to me the most popular one, the idea to take a free virtual flight coupled with a free flight instructor was like honey for bears. Furthermore the hardware was impressive, 2 flight stations with 3 big monitors each and real controls were worth a try ! You could even track your flight through a projected mapserver on the wall.&amp;lt;br/&amp;gt; We flew mostly around the [[EDDF|Frankfurt]] area, where a highly detailed airport (still with a high fps rate) was the background of our participants. The favorite aircraft was the [[Piper_PA34-200T_Seneca_II|SenecaII]] as it was perfect to be flown with our equipment. Meanwhile in the forward station was easy to see some [[Eurocopter_Bo105|Eurocopter Bo105]] pilot or [[Grumman_F-14_Tomcat|F-14 Tomcat]] top gun enjoying [[Aircraft_carrier|carrier]] approaches.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But it was not just all flying and fun. At the stand you could talk to some code and model developers, discussing new features and wishes. There was a developers section too: Till was hacking an earth and sea textures generator to improve our virtual world terrain painting, applying [http://en.wikipedia.org/wiki/Shader shaders] instead of fixed photos; early results where really interesting and I hope to see them soon in [[CVS]].&lt;br /&gt;
&lt;br /&gt;
The FlightGear guys prove themselves very friendly and always spoke in english in my presence. Martin Spott took care to manage an entrance pass for me and kept me informed prior to LinuxTag via Emails. This means you have no excuses to miss the event next year (At least only if you are not afraid of virtually flight !).&lt;br /&gt;
&lt;br /&gt;
* [http://brisa.homelinux.net/zenphoto/index.php?album=linuxtag2009 photos from Francesco and Matthias of the stand]&lt;br /&gt;
&lt;br /&gt;
- Francesco Brisa&lt;br /&gt;
&lt;br /&gt;
==Tornado F3 Simulator==&lt;br /&gt;
&lt;br /&gt;
I had the very good fortune to use a genuine Panavia Tornado F3 simulator at RAF Leuchars in Scotland at the start of August.&lt;br /&gt;
&lt;br /&gt;
I flew in from the south in my microlight, as part of a fly-in to the base. This was a rather unique event, as the last fly in to the base had been some 15 years before, and the RAF made us very welcome, with talks about their ATC and how to avoid the fast jets that fly near us (top tip - don't be at 250ft AGL - that's where they spend most of their time!). &lt;br /&gt;
&lt;br /&gt;
The simulator itself did not have a moving platform, but did use a real cockpit, had a 120 degree field of view display and was used for training by the pilots, including interceptions and weapons training. The short sortie I flew took off from RAF Leuchars (EGQL) up the Firth of Forth, underneath the Forth Bridges, and then landing at Edinburgh (EGPH). The feeling of &amp;quot;being there&amp;quot; was quite remarkable, and it was a real privilege to have the opportunity to use it.&lt;br /&gt;
&lt;br /&gt;
One of the things that struck me however, was that there was nothing there that was beyond the capabilities of FlightGear. The graphics were possibly slightly lower in quality (no scenery objects apart from the bridges) and the display technology was using DLP projectors (there's a description [http://ntdd2489.fm.netbenefit.co.uk/recentInstallations/Industry/Simulation/RAF_Leuchars/index.asp here]). The key thing that made the experience so realistic was the wide field of view and the use of real hardware. I was sat in a real Tornado cockpit, the canopy was closed (with warning klaxon), the stick was heavy, and the throttles had to be moved appropriately for reheat or reverse thrust. So, perhaps its time to see if there are any real cockpits available...&lt;br /&gt;
&lt;br /&gt;
Of course, none of this is news to the various people who are building fixed base simulators using FG as a software platform. There is a list of the known FG-based projects [http://www.flightgear.org/Projects/ here], and almost certainly plenty more around.&lt;br /&gt;
&lt;br /&gt;
-Stuart Buchanan&lt;br /&gt;
&lt;br /&gt;
==Innsbruck Gets A Face Lift==&lt;br /&gt;
[[Image:Innsbruck_after_003.jpg|thumb|175px|left|screenshot]]&lt;br /&gt;
[[Image:Innsbruck_after_006.jpg|thumb|175px|left|screenshot]]&lt;br /&gt;
&lt;br /&gt;
Custom scenery for the area in and around Innsbruck, Austria, is now available for downloading. Scenery currently covers a 1x1 degree area containing parts of Austria and Germany, and makes use of accurate data from the [http://www.eea.europa.eu Corine Land Cover], and [http://www.openstreetmap.org Open Street Map] projects. Three airports lie within this area, LOWI towards the south western end in Austria, and EDHR + EDMK on the northern end in Germany. See the forum topic [http://flightgear.org/forums/viewtopic.php?f=5&amp;amp;t=5350 here] for more details, pictures, and links to download the scenery.&lt;br /&gt;
&lt;br /&gt;
-Jacob Burbach (Tuxklok)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==And Finally...==&lt;br /&gt;
Check out the cockpit of an Airbus A380 and have a virtual tour here:&lt;br /&gt;
[http://www.airbus.com/store/mm_repository/cockpit_airbusA380/flash/cockpit1.htm http://www.airbus.com/store/mm_repository/cockpit_airbusA380/flash/cockpit1.htm]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear Newsletter|2009 8]]&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=FlightGear_Newsletter_August_2009&amp;diff=13724</id>
		<title>FlightGear Newsletter August 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=FlightGear_Newsletter_August_2009&amp;diff=13724"/>
		<updated>2009-08-04T05:19:14Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the second edition of the FlightGear Newsletter. In this issue, we have a new GA aircraft in the hangar, a report from LinuxTag 2009, a description of a Tornado simulator, and some new custom scenery around Innsbruck, Austria.&lt;br /&gt;
&lt;br /&gt;
The newsletter is still a bit thin on contributions, so if you'd like to contribute, please feel free to log onto the wiki and start editing the next edition [[FlightGear Newsletter September 2009| here]]. We're still looking for a permanent (or even a temporary) newsletter editor, so if you'd like to get involved, have a look on the [http://www.flightgear.org/forums/ Forums].&lt;br /&gt;
&lt;br /&gt;
==What's New in CVS==&lt;br /&gt;
&lt;br /&gt;
===Configurable Shaders===&lt;br /&gt;
&lt;br /&gt;
Tim Moore has committed a significant change to the graphics system that will allow much easier integration of OpenGL shaders within the simulator. &lt;br /&gt;
&lt;br /&gt;
Shaders are small programs that run on your graphics card itself, and allow the simulator to do graphics operations that would otherwise be too computationally expensive. The current FG release (1.9.1) uses shaders for the forests of trees and 3D clouds.&lt;br /&gt;
&lt;br /&gt;
This change represented a lot of work on the infrastructure of the project for long-term benefit. While there aren't any significant graphics changes based on this yet, we can expect a lot in the future, including integration of some nice water effects.&lt;br /&gt;
&lt;br /&gt;
===Generic Binary I/O protocol===&lt;br /&gt;
&lt;br /&gt;
The input and output code of FlightGear has been very flexible for many years by  allowing for communications to (and from) files, serial ports and network sockets just by altering a command-line option.&lt;br /&gt;
&lt;br /&gt;
In conjunction with that FlightGear has had support for a generic ASCII only input-output protocol handler for a number of years now. It is called 'generic' because it allows handling of just about any information in any form by altering  a user modifiable xml configuration file. The functionality has been extended further by the possibility to define an offset and a multiplication factor. This approach might not cover every possible scenario but it will probably be good enough for most cases.&lt;br /&gt;
&lt;br /&gt;
With the help of Anders Gidenstam the generic protocol has recently been extended to also support binary input and output. The data will be tightly packed in a packet that contains the requested data described in the configuration file. Supported types are: boolean values (8-bit), integer values (32-bit), floating point values (32-bit) and double precision floating point values (64-bit). Anders also added the option to support network byte ordering (big-endian) or system native byte-ordering which will save some processing time when only one type of system is used. To make it easier to see how the packet will be handled by FlightGear a utility called generic-protocol-analyze has been created which can be found in FlightGear/utils/xmlgrep. It outputs the data  offset and size along with it's description.&lt;br /&gt;
&lt;br /&gt;
==New Wiki Articles ==&lt;br /&gt;
The wiki provides now a new article for aspiring core developers about extending the built-in Nasal scripting interpreter with custom extension functions: [[Howto:Extending Nasal]].&lt;br /&gt;
The [[Nasal scripting language|Nasal documentation]] itself has been slightly reworked to provide a step by step introduction for users completely new to scripting or programming in general.&lt;br /&gt;
&lt;br /&gt;
==In the Hangar==&lt;br /&gt;
&lt;br /&gt;
[[Image:Pa22.jpg|150px|Piper Tri-Pacer]] &lt;br /&gt;
[[Image:Pa22cockpit.jpg|150px|Piper Tri-Pacer cockpit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There's a new aircraft in the CVS hangar - the [http://en.wikipedia.org/wiki/Piper_Pacer PA 22-160 Tri Pacer]. Created by Robert Leda (aka erobo) and Pawel Luchowski, this is a lovely GA aircraft and well worth having a flight in. If you enjoy VFR cross-country flying, or even simple IFR, and want to try something different to the Cessna 172, this is the plane for you.&lt;br /&gt;
&lt;br /&gt;
The level of detail is very impressive - you must prime to start the engine (making sure the mixture is set), the sound varies depending on whether you've got the window open, and the doors slam shut. All in all, it's a great polished aircraft, and a fine addition to the hanger.&lt;br /&gt;
&lt;br /&gt;
The FG hangar now has a very wide range of Piper aircraft, from the simple Cub, through the Cherokee Warrior II, Comanche 250, to the Seneca II. It is worth noting that the Warrior, Comanche and Seneca are all based on airframes flown by FG contributors in real life.&lt;br /&gt;
&lt;br /&gt;
==Useful Links==&lt;br /&gt;
&lt;br /&gt;
For those wanting to do some dead reckoning, this [http://www.csgnetwork.com/e6bcalc.html CRP5 E6B] online calculator may be of interest. Get your stopwatch, chinagraph pencils, ruler and protractor ready!&lt;br /&gt;
&lt;br /&gt;
There are a whole host of funky aviation converters [http://www.csgnetwork.com/aviationconverters.html here]. Thanks to eeK on the forums for the links.&lt;br /&gt;
&lt;br /&gt;
==LinuxTag 2009==&lt;br /&gt;
[[Image:Linuxtag2009_1.jpg|thumb|200px|A view of the FlightGear stand]]&lt;br /&gt;
[[Image:Linuxtag2009 terrain before.jpg|thumb|150px|left|Terrain texture (before)]]&lt;br /&gt;
[[Image:Linuxtag2009 terrain after.jpg|thumb|150px|left|Terrain texture (linuxtag)]]&lt;br /&gt;
[[Image:Shader sea linuxtag2009.jpg|thumb|150px|right|Sea texture (linuxtag)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The 2009 edition of the LinuxTag has been concluded and the FlightGear hangar was there full of aircraft and pilots ! You could easily spot our stand since it seemed to me the most popular one, the idea to take a free virtual flight coupled with a free flight instructor was like honey for bears. Furthermore the hardware was impressive, 2 flight stations with 3 big monitors each and real controls were worth a try ! You could even track your flight through a projected mapserver on the wall.&amp;lt;br/&amp;gt; We flew mostly around the [[EDDF|Frankfurt]] area, where a highly detailed airport (still with a high fps rate) was the background of our participants. The favorite aircraft was the [[Piper_PA34-200T_Seneca_II|SenecaII]] as it was perfect to be flown with our equipment. Meanwhile in the forward station was easy to see some [[Eurocopter_Bo105|Eurocopter Bo105]] pilot or [[Grumman_F-14_Tomcat|F-14 Tomcat]] top gun enjoying [[Aircraft_carrier|carrier]] approaches.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But it was not just all flying and fun. At the stand you could talk to some code and model developers, discussing new features and wishes. There was a developers section too: Till was hacking an earth and sea textures generator to improve our virtual world terrain painting, applying [http://en.wikipedia.org/wiki/Shader shaders] instead of fixed photos; early results where really interesting and I hope to see them soon in [[CVS]].&lt;br /&gt;
&lt;br /&gt;
The FlightGear guys prove themselves very friendly and always spoke in english in my presence. Martin Spott took care to manage an entrance pass for me and kept me informed prior to LinuxTag via Emails. This means you have no excuses to miss the event next year (At least only if you are not afraid of virtually flight !).&lt;br /&gt;
&lt;br /&gt;
* [http://brisa.homelinux.net/zenphoto/index.php?album=linuxtag2009 photos from Francesco and Matthias of the stand]&lt;br /&gt;
&lt;br /&gt;
- Francesco Brisa&lt;br /&gt;
&lt;br /&gt;
==Tornado F3 Simulator==&lt;br /&gt;
&lt;br /&gt;
I had the very good fortune to use a genuine Panavia Tornado F3 simulator at RAF Leuchars in Scotland at the start of August.&lt;br /&gt;
&lt;br /&gt;
I flew in from the south in my microlight, as part of a fly-in to the base. This was a rather unique event, as the last fly in to the base had been some 15 years before, and the RAF made us very welcome, with talks about their ATC and how to avoid the fast jets that fly near us (top tip - don't be at 250ft AGL - that's where they spend most of their time!). &lt;br /&gt;
&lt;br /&gt;
The simulator itself did not have a moving platform, but did use a real cockpit, had a 120 degree field of view display and was used for training by the pilots, including interceptions and weapons training. The short sortie I flew took off from RAF Leuchars (EGQL) up the Firth of Forth, underneath the Forth Bridges, and then landing at Edinburgh (EGPH). The feeling of &amp;quot;being there&amp;quot; was quite remarkable, and it was a real privilege to have the opportunity to use it.&lt;br /&gt;
&lt;br /&gt;
One of the things that struck me however, was that there was nothing there that was beyond the capabilities of FlightGear. The graphics were possibly slightly lower in quality (no scenery objects apart from the bridges) and the display technology was using DLP projectors (there's a description [http://ntdd2489.fm.netbenefit.co.uk/recentInstallations/Industry/Simulation/RAF_Leuchars/index.asp here]). The key thing that made the experience so realistic was the wide field of view and the use of real hardware. I was sat in a real Tornado cockpit, the canopy was closed (with warning klaxon), the stick was heavy, and the throttles had to be moved appropriately for reheat or reverse thrust. So, perhaps its time to see if there are any real cockpits available...&lt;br /&gt;
&lt;br /&gt;
Of course, none of this is news to the various people who are building fixed base simulators using FG as a software platform. There is a list of the known FG-based projects [http://www.flightgear.org/Projects/ here], and almost certainly plenty more around.&lt;br /&gt;
&lt;br /&gt;
-Stuart Buchanan&lt;br /&gt;
&lt;br /&gt;
==Innsbruck Gets A Face Lift==&lt;br /&gt;
[[Image:Innsbruck_after_003.jpg|thumb|175px|left|screenshot]]&lt;br /&gt;
[[Image:Innsbruck_after_006.jpg|thumb|175px|left|screenshot]]&lt;br /&gt;
&lt;br /&gt;
Custom scenery for the area in and around Innsbruck, Austria, is now available for downloading.The scenery covers a 1x1 degree area in and around Innsbruck, Austria, and makes use of accurate data from the '''Corine Land Cover''' and '''Open Street Map''' projects. See the forum topic [http://flightgear.org/forums/viewtopic.php?f=5&amp;amp;t=5350 here] for more details, pictures, and links to download the scenery.&lt;br /&gt;
&lt;br /&gt;
-Jacob Burbach (Tuxklok)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==And Finally...==&lt;br /&gt;
Check out the cockpit of an Airbus A380 and have a virtual tour here:&lt;br /&gt;
[http://www.airbus.com/store/mm_repository/cockpit_airbusA380/flash/cockpit1.htm http://www.airbus.com/store/mm_repository/cockpit_airbusA380/flash/cockpit1.htm]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear Newsletter|2009 8]]&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=FlightGear_Newsletter_August_2009&amp;diff=13721</id>
		<title>FlightGear Newsletter August 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=FlightGear_Newsletter_August_2009&amp;diff=13721"/>
		<updated>2009-08-03T21:40:32Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the second edition of the FlightGear Newsletter. In this issue, we have a new GA aircraft in the hangar, a report from LinuxTag 2009, and a description of a Tornado simulator.&lt;br /&gt;
&lt;br /&gt;
The newsletter is still a bit thin on contributions, so if you'd like to contribute, please feel free to log onto the wiki and start editing the next edition [[FlightGear Newsletter September 2009| here]]. We're still looking for a permanent (or even a temporary) newsletter editor, so if you'd like to get involved, have a look on the [http://www.flightgear.org/forums/ Forums].&lt;br /&gt;
&lt;br /&gt;
==What's New in CVS==&lt;br /&gt;
&lt;br /&gt;
===Configurable Shaders===&lt;br /&gt;
&lt;br /&gt;
Tim Moore has committed a significant change to the graphics system that will allow much easier integration of OpenGL shaders within the simulator. &lt;br /&gt;
&lt;br /&gt;
Shaders are small programs that run on your graphics card itself, and allow the simulator to do graphics operations that would otherwise be too computationally expensive. The current FG release (1.9.1) uses shaders for the forests of trees and 3D clouds.&lt;br /&gt;
&lt;br /&gt;
This change represented a lot of work on the infrastructure of the project for long-term benefit. While there aren't any significant graphics changes based on this yet, we can expect a lot in the future, including integration of some nice water effects.&lt;br /&gt;
&lt;br /&gt;
===Generic Binary I/O protocol===&lt;br /&gt;
&lt;br /&gt;
The input and output code of FlightGear has been very flexible for many years by  allowing for communications to (and from) files, serial ports and network sockets just by altering a command-line option.&lt;br /&gt;
&lt;br /&gt;
In conjunction with that FlightGear has had support for a generic ASCII only input-output protocol handler for a number of years now. It is called 'generic' because it allows handling of just about any information in any form by altering  a user modifiable xml configuration file. The functionality has been extended further by the possibility to define an offset and a multiplication factor. This approach might not cover every possible scenario but it will probably be good enough for most cases.&lt;br /&gt;
&lt;br /&gt;
With the help of Anders Gidenstam the generic protocol has recently been extended to also support binary input and output. The data will be tightly packed in a packet that contains the requested data described in the configuration file. Supported types are: boolean values (8-bit), integer values (32-bit), floating point values (32-bit) and double precision floating point values (64-bit). Anders also added the option to support network byte ordering (big-endian) or system native byte-ordering which will save some processing time when only one type of system is used. To make it easier to see how the packet will be handled by FlightGear a utility called generic-protocol-analyze has been created which can be found in FlightGear/utils/xmlgrep. It outputs the data  offset and size along with it's description.&lt;br /&gt;
&lt;br /&gt;
==New Wiki Articles ==&lt;br /&gt;
The wiki provides now a new article for aspiring core developers about extending the built-in Nasal scripting interpreter with custom extension functions: [[Howto:Extending Nasal]].&lt;br /&gt;
The [[Nasal scripting language|Nasal documentation]] itself has been slightly reworked to provide a step by step introduction for users completely new to scripting or programming in general.&lt;br /&gt;
&lt;br /&gt;
==In the Hangar==&lt;br /&gt;
&lt;br /&gt;
[[Image:Pa22.jpg|150px|Piper Tri-Pacer]] &lt;br /&gt;
[[Image:Pa22cockpit.jpg|150px|Piper Tri-Pacer cockpit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There's a new aircraft in the CVS hangar - the [http://en.wikipedia.org/wiki/Piper_Pacer PA 22-160 Tri Pacer]. Created by Robert Leda (aka erobo) and Pawel Luchowski, this is a lovely GA aircraft and well worth having a flight in. If you enjoy VFR cross-country flying, or even simple IFR, and want to try something different to the Cessna 172, this is the plane for you.&lt;br /&gt;
&lt;br /&gt;
The level of detail is very impressive - you must prime to start the engine (making sure the mixture is set), the sound varies depending on whether you've got the window open, and the doors slam shut. All in all, it's a great polished aircraft, and a fine addition to the hanger.&lt;br /&gt;
&lt;br /&gt;
The FG hangar now has a very wide range of Piper aircraft, from the simple Cub, through the Cherokee Warrior II, Comanche 250, to the Seneca II. It is worth noting that the Warrior, Comanche and Seneca are all based on airframes flown by FG contributors in real life.&lt;br /&gt;
&lt;br /&gt;
==Useful Links==&lt;br /&gt;
&lt;br /&gt;
For those wanting to do some dead reckoning, this [http://www.csgnetwork.com/e6bcalc.html CRP5 E6B] online calculator may be of interest. Get your stopwatch, chinagraph pencils, ruler and protractor ready!&lt;br /&gt;
&lt;br /&gt;
There are a whole host of funky aviation converters [http://www.csgnetwork.com/aviationconverters.html here]. Thanks to eeK on the forums for the links.&lt;br /&gt;
&lt;br /&gt;
==LinuxTag 2009==&lt;br /&gt;
[[Image:Linuxtag2009_1.jpg|thumb|200px|A view of the FlightGear stand]]&lt;br /&gt;
[[Image:Linuxtag2009 terrain before.jpg|thumb|150px|left|Terrain texture (before)]]&lt;br /&gt;
[[Image:Linuxtag2009 terrain after.jpg|thumb|150px|left|Terrain texture (linuxtag)]]&lt;br /&gt;
[[Image:Shader sea linuxtag2009.jpg|thumb|150px|right|Sea texture (linuxtag)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The 2009 edition of the LinuxTag has been concluded and the FlightGear hangar was there full of aircraft and pilots ! You could easily spot our stand since it seemed to me the most popular one, the idea to take a free virtual flight coupled with a free flight instructor was like honey for bears. Furthermore the hardware was impressive, 2 flight stations with 3 big monitors each and real controls were worth a try ! You could even track your flight through a projected mapserver on the wall.&amp;lt;br/&amp;gt; We flew mostly around the [[EDDF|Frankfurt]] area, where a highly detailed airport (still with a high fps rate) was the background of our participants. The favorite aircraft was the [[Piper_PA34-200T_Seneca_II|SenecaII]] as it was perfect to be flown with our equipment. Meanwhile in the forward station was easy to see some [[Eurocopter_Bo105|Eurocopter Bo105]] pilot or [[Grumman_F-14_Tomcat|F-14 Tomcat]] top gun enjoying [[Aircraft_carrier|carrier]] approaches.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But it was not just all flying and fun. At the stand you could talk to some code and model developers, discussing new features and wishes. There was a developers section too: Till was hacking an earth and sea textures generator to improve our virtual world terrain painting, applying [http://en.wikipedia.org/wiki/Shader shaders] instead of fixed photos; early results where really interesting and I hope to see them soon in [[CVS]].&lt;br /&gt;
&lt;br /&gt;
The FlightGear guys prove themselves very friendly and always spoke in english in my presence. Martin Spott took care to manage an entrance pass for me and kept me informed prior to LinuxTag via Emails. This means you have no excuses to miss the event next year (At least only if you are not afraid of virtually flight !).&lt;br /&gt;
&lt;br /&gt;
* [http://brisa.homelinux.net/zenphoto/index.php?album=linuxtag2009 photos from Francesco and Matthias of the stand]&lt;br /&gt;
&lt;br /&gt;
- Francesco Brisa&lt;br /&gt;
&lt;br /&gt;
==Tornado F3 Simulator==&lt;br /&gt;
&lt;br /&gt;
I had the very good fortune to use a genuine Panavia Tornado F3 simulator at RAF Leuchars in Scotland at the start of August.&lt;br /&gt;
&lt;br /&gt;
I flew in from the south in my microlight, as part of a fly-in to the base. This was a rather unique event, as the last fly in to the base had been some 15 years before, and the RAF made us very welcome, with talks about their ATC and how to avoid the fast jets that fly near us (top tip - don't be at 250ft AGL - that's where they spend most of their time!). &lt;br /&gt;
&lt;br /&gt;
The simulator itself did not have a moving platform, but did use a real cockpit, had a 120 degree field of view display and was used for training by the pilots, including interceptions and weapons training. The short sortie I flew took off from RAF Leuchars (EGQL) up the Firth of Forth, underneath the Forth Bridges, and then landing at Edinburgh (EGPH). The feeling of &amp;quot;being there&amp;quot; was quite remarkable, and it was a real privilege to have the opportunity to use it.&lt;br /&gt;
&lt;br /&gt;
One of the things that struck me however, was that there was nothing there that was beyond the capabilities of FlightGear. The graphics were possibly slightly lower in quality (no scenery objects apart from the bridges) and the display technology was using DLP projectors (there's a description [http://ntdd2489.fm.netbenefit.co.uk/recentInstallations/Industry/Simulation/RAF_Leuchars/index.asp here]). The key thing that made the experience so realistic was the wide field of view and the use of real hardware. I was sat in a real Tornado cockpit, the canopy was closed (with warning klaxon), the stick was heavy, and the throttles had to be moved appropriately for reheat or reverse thrust. So, perhaps its time to see if there are any real cockpits available...&lt;br /&gt;
&lt;br /&gt;
Of course, none of this is news to the various people who are building fixed base simulators using FG as a software platform. There is a list of the known FG-based projects [http://www.flightgear.org/Projects/ here], and almost certainly plenty more around.&lt;br /&gt;
&lt;br /&gt;
-Stuart Buchanan&lt;br /&gt;
&lt;br /&gt;
==Innsbruck Gets A Face Lift==&lt;br /&gt;
[[Image:Innsbruck_after_003.jpg|thumb|175px|left|screenshot]]&lt;br /&gt;
[[Image:Innsbruck_after_006.jpg|thumb|175px|left|screenshot]]&lt;br /&gt;
&lt;br /&gt;
Custom scenery for the area in and around Innsbruck, Austria, is now available for downloading.The scenery covers a 1x1 degree area in and around Innsbruck, Austria, and makes use of accurate data from the '''Corine Land Cover''' and '''Open Street Map''' projects. See the forum topic [http://flightgear.org/forums/viewtopic.php?f=5&amp;amp;t=5350 here] for more details, pictures, and links to download the scenery.&lt;br /&gt;
&lt;br /&gt;
-Jacob Burbach (Tuxklok)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==And Finally...==&lt;br /&gt;
Check out the cockpit of an Airbus A380 and have a virtual tour here:&lt;br /&gt;
[http://www.airbus.com/store/mm_repository/cockpit_airbusA380/flash/cockpit1.htm http://www.airbus.com/store/mm_repository/cockpit_airbusA380/flash/cockpit1.htm]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear Newsletter|2009 8]]&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=FlightGear_Newsletter_August_2009&amp;diff=13720</id>
		<title>FlightGear Newsletter August 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=FlightGear_Newsletter_August_2009&amp;diff=13720"/>
		<updated>2009-08-03T21:40:01Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: /* Innsbruck Gets A Face Lift */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the second edition of the FlightGear Newsletter. In this issue, we have a new GA aircraft in the hangar, a report from LinuxTag 2009, and a description of a Tornado simulator.&lt;br /&gt;
&lt;br /&gt;
The newsletter is still a bit thin on contributions, so if you'd like to contribute, please feel free to log onto the wiki and start editing the next edition [[FlightGear Newsletter September 2009| here]]. We're still looking for a permanent (or even a temporary) newsletter editor, so if you'd like to get involved, have a look on the [http://www.flightgear.org/forums/ Forums].&lt;br /&gt;
&lt;br /&gt;
==What's New in CVS==&lt;br /&gt;
&lt;br /&gt;
===Configurable Shaders===&lt;br /&gt;
&lt;br /&gt;
Tim Moore has committed a significant change to the graphics system that will allow much easier integration of OpenGL shaders within the simulator. &lt;br /&gt;
&lt;br /&gt;
Shaders are small programs that run on your graphics card itself, and allow the simulator to do graphics operations that would otherwise be too computationally expensive. The current FG release (1.9.1) uses shaders for the forests of trees and 3D clouds.&lt;br /&gt;
&lt;br /&gt;
This change represented a lot of work on the infrastructure of the project for long-term benefit. While there aren't any significant graphics changes based on this yet, we can expect a lot in the future, including integration of some nice water effects.&lt;br /&gt;
&lt;br /&gt;
===Generic Binary I/O protocol===&lt;br /&gt;
&lt;br /&gt;
The input and output code of FlightGear has been very flexible for many years by  allowing for communications to (and from) files, serial ports and network sockets just by altering a command-line option.&lt;br /&gt;
&lt;br /&gt;
In conjunction with that FlightGear has had support for a generic ASCII only input-output protocol handler for a number of years now. It is called 'generic' because it allows handling of just about any information in any form by altering  a user modifiable xml configuration file. The functionality has been extended further by the possibility to define an offset and a multiplication factor. This approach might not cover every possible scenario but it will probably be good enough for most cases.&lt;br /&gt;
&lt;br /&gt;
With the help of Anders Gidenstam the generic protocol has recently been extended to also support binary input and output. The data will be tightly packed in a packet that contains the requested data described in the configuration file. Supported types are: boolean values (8-bit), integer values (32-bit), floating point values (32-bit) and double precision floating point values (64-bit). Anders also added the option to support network byte ordering (big-endian) or system native byte-ordering which will save some processing time when only one type of system is used. To make it easier to see how the packet will be handled by FlightGear a utility called generic-protocol-analyze has been created which can be found in FlightGear/utils/xmlgrep. It outputs the data  offset and size along with it's description.&lt;br /&gt;
&lt;br /&gt;
==New Wiki Articles ==&lt;br /&gt;
The wiki provides now a new article for aspiring core developers about extending the built-in Nasal scripting interpreter with custom extension functions: [[Howto:Extending Nasal]].&lt;br /&gt;
The [[Nasal scripting language|Nasal documentation]] itself has been slightly reworked to provide a step by step introduction for users completely new to scripting or programming in general.&lt;br /&gt;
&lt;br /&gt;
==In the Hangar==&lt;br /&gt;
&lt;br /&gt;
[[Image:Pa22.jpg|150px|Piper Tri-Pacer]] &lt;br /&gt;
[[Image:Pa22cockpit.jpg|150px|Piper Tri-Pacer cockpit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There's a new aircraft in the CVS hangar - the [http://en.wikipedia.org/wiki/Piper_Pacer PA 22-160 Tri Pacer]. Created by Robert Leda (aka erobo) and Pawel Luchowski, this is a lovely GA aircraft and well worth having a flight in. If you enjoy VFR cross-country flying, or even simple IFR, and want to try something different to the Cessna 172, this is the plane for you.&lt;br /&gt;
&lt;br /&gt;
The level of detail is very impressive - you must prime to start the engine (making sure the mixture is set), the sound varies depending on whether you've got the window open, and the doors slam shut. All in all, it's a great polished aircraft, and a fine addition to the hanger.&lt;br /&gt;
&lt;br /&gt;
The FG hangar now has a very wide range of Piper aircraft, from the simple Cub, through the Cherokee Warrior II, Comanche 250, to the Seneca II. It is worth noting that the Warrior, Comanche and Seneca are all based on airframes flown by FG contributors in real life.&lt;br /&gt;
&lt;br /&gt;
==Useful Links==&lt;br /&gt;
&lt;br /&gt;
For those wanting to do some dead reckoning, this [http://www.csgnetwork.com/e6bcalc.html CRP5 E6B] online calculator may be of interest. Get your stopwatch, chinagraph pencils, ruler and protractor ready!&lt;br /&gt;
&lt;br /&gt;
There are a whole host of funky aviation converters [http://www.csgnetwork.com/aviationconverters.html here]. Thanks to eeK on the forums for the links.&lt;br /&gt;
&lt;br /&gt;
==LinuxTag 2009==&lt;br /&gt;
[[Image:Linuxtag2009_1.jpg|thumb|200px|A view of the FlightGear stand]]&lt;br /&gt;
[[Image:Linuxtag2009 terrain before.jpg|thumb|150px|left|Terrain texture (before)]]&lt;br /&gt;
[[Image:Linuxtag2009 terrain after.jpg|thumb|150px|left|Terrain texture (linuxtag)]]&lt;br /&gt;
[[Image:Shader sea linuxtag2009.jpg|thumb|150px|right|Sea texture (linuxtag)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The 2009 edition of the LinuxTag has been concluded and the FlightGear hangar was there full of aircraft and pilots ! You could easily spot our stand since it seemed to me the most popular one, the idea to take a free virtual flight coupled with a free flight instructor was like honey for bears. Furthermore the hardware was impressive, 2 flight stations with 3 big monitors each and real controls were worth a try ! You could even track your flight through a projected mapserver on the wall.&amp;lt;br/&amp;gt; We flew mostly around the [[EDDF|Frankfurt]] area, where a highly detailed airport (still with a high fps rate) was the background of our participants. The favorite aircraft was the [[Piper_PA34-200T_Seneca_II|SenecaII]] as it was perfect to be flown with our equipment. Meanwhile in the forward station was easy to see some [[Eurocopter_Bo105|Eurocopter Bo105]] pilot or [[Grumman_F-14_Tomcat|F-14 Tomcat]] top gun enjoying [[Aircraft_carrier|carrier]] approaches.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But it was not just all flying and fun. At the stand you could talk to some code and model developers, discussing new features and wishes. There was a developers section too: Till was hacking an earth and sea textures generator to improve our virtual world terrain painting, applying [http://en.wikipedia.org/wiki/Shader shaders] instead of fixed photos; early results where really interesting and I hope to see them soon in [[CVS]].&lt;br /&gt;
&lt;br /&gt;
The FlightGear guys prove themselves very friendly and always spoke in english in my presence. Martin Spott took care to manage an entrance pass for me and kept me informed prior to LinuxTag via Emails. This means you have no excuses to miss the event next year (At least only if you are not afraid of virtually flight !).&lt;br /&gt;
&lt;br /&gt;
* [http://brisa.homelinux.net/zenphoto/index.php?album=linuxtag2009 photos from Francesco and Matthias of the stand]&lt;br /&gt;
&lt;br /&gt;
- Francesco Brisa&lt;br /&gt;
&lt;br /&gt;
==Tornado F3 Simulator==&lt;br /&gt;
&lt;br /&gt;
I had the very good fortune to use a genuine Panavia Tornado F3 simulator at RAF Leuchars in Scotland at the start of August.&lt;br /&gt;
&lt;br /&gt;
I flew in from the south in my microlight, as part of a fly-in to the base. This was a rather unique event, as the last fly in to the base had been some 15 years before, and the RAF made us very welcome, with talks about their ATC and how to avoid the fast jets that fly near us (top tip - don't be at 250ft AGL - that's where they spend most of their time!). &lt;br /&gt;
&lt;br /&gt;
The simulator itself did not have a moving platform, but did use a real cockpit, had a 120 degree field of view display and was used for training by the pilots, including interceptions and weapons training. The short sortie I flew took off from RAF Leuchars (EGQL) up the Firth of Forth, underneath the Forth Bridges, and then landing at Edinburgh (EGPH). The feeling of &amp;quot;being there&amp;quot; was quite remarkable, and it was a real privilege to have the opportunity to use it.&lt;br /&gt;
&lt;br /&gt;
One of the things that struck me however, was that there was nothing there that was beyond the capabilities of FlightGear. The graphics were possibly slightly lower in quality (no scenery objects apart from the bridges) and the display technology was using DLP projectors (there's a description [http://ntdd2489.fm.netbenefit.co.uk/recentInstallations/Industry/Simulation/RAF_Leuchars/index.asp here]). The key thing that made the experience so realistic was the wide field of view and the use of real hardware. I was sat in a real Tornado cockpit, the canopy was closed (with warning klaxon), the stick was heavy, and the throttles had to be moved appropriately for reheat or reverse thrust. So, perhaps its time to see if there are any real cockpits available...&lt;br /&gt;
&lt;br /&gt;
Of course, none of this is news to the various people who are building fixed base simulators using FG as a software platform. There is a list of the known FG-based projects [http://www.flightgear.org/Projects/ here], and almost certainly plenty more around.&lt;br /&gt;
&lt;br /&gt;
-Stuart Buchanan&lt;br /&gt;
&lt;br /&gt;
==Innsbruck Gets A Face Lift==&lt;br /&gt;
[[Image:Innsbruck_after_003.jpg|thumb|175px|left|screenshot]]&lt;br /&gt;
[[Image:Innsbruck_after_006.jpg|thumb|175px|left|screenshot]]&lt;br /&gt;
&lt;br /&gt;
Custom scenery for the area in and around Innsbruck, Austria, is now available for downloading.The scenery covers a 1x1 degree area in and around Innsbruck, Austria, and makes use of accurate data from the '''Corine Land Cover''' and '''Open Street Map''' projects. See the forum topic [http://flightgear.org/forums/viewtopic.php?f=5&amp;amp;t=5350 here] for more details, pictures, and links to download the scenery.&lt;br /&gt;
&lt;br /&gt;
-Jacob Burbach (Tuxklok)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==And Finally...==&lt;br /&gt;
Check out the cockpit of an Airbus A380 and have a virtual tour here:&lt;br /&gt;
[http://www.airbus.com/store/mm_repository/cockpit_airbusA380/flash/cockpit1.htm http://www.airbus.com/store/mm_repository/cockpit_airbusA380/flash/cockpit1.htm]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear Newsletter|2009 8]]&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=FlightGear_Newsletter_August_2009&amp;diff=13719</id>
		<title>FlightGear Newsletter August 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=FlightGear_Newsletter_August_2009&amp;diff=13719"/>
		<updated>2009-08-03T21:39:35Z</updated>

		<summary type="html">&lt;p&gt;Tuxklok: /* Innsbruck Gets A Face Lift */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the second edition of the FlightGear Newsletter. In this issue, we have a new GA aircraft in the hangar, a report from LinuxTag 2009, and a description of a Tornado simulator.&lt;br /&gt;
&lt;br /&gt;
The newsletter is still a bit thin on contributions, so if you'd like to contribute, please feel free to log onto the wiki and start editing the next edition [[FlightGear Newsletter September 2009| here]]. We're still looking for a permanent (or even a temporary) newsletter editor, so if you'd like to get involved, have a look on the [http://www.flightgear.org/forums/ Forums].&lt;br /&gt;
&lt;br /&gt;
==What's New in CVS==&lt;br /&gt;
&lt;br /&gt;
===Configurable Shaders===&lt;br /&gt;
&lt;br /&gt;
Tim Moore has committed a significant change to the graphics system that will allow much easier integration of OpenGL shaders within the simulator. &lt;br /&gt;
&lt;br /&gt;
Shaders are small programs that run on your graphics card itself, and allow the simulator to do graphics operations that would otherwise be too computationally expensive. The current FG release (1.9.1) uses shaders for the forests of trees and 3D clouds.&lt;br /&gt;
&lt;br /&gt;
This change represented a lot of work on the infrastructure of the project for long-term benefit. While there aren't any significant graphics changes based on this yet, we can expect a lot in the future, including integration of some nice water effects.&lt;br /&gt;
&lt;br /&gt;
===Generic Binary I/O protocol===&lt;br /&gt;
&lt;br /&gt;
The input and output code of FlightGear has been very flexible for many years by  allowing for communications to (and from) files, serial ports and network sockets just by altering a command-line option.&lt;br /&gt;
&lt;br /&gt;
In conjunction with that FlightGear has had support for a generic ASCII only input-output protocol handler for a number of years now. It is called 'generic' because it allows handling of just about any information in any form by altering  a user modifiable xml configuration file. The functionality has been extended further by the possibility to define an offset and a multiplication factor. This approach might not cover every possible scenario but it will probably be good enough for most cases.&lt;br /&gt;
&lt;br /&gt;
With the help of Anders Gidenstam the generic protocol has recently been extended to also support binary input and output. The data will be tightly packed in a packet that contains the requested data described in the configuration file. Supported types are: boolean values (8-bit), integer values (32-bit), floating point values (32-bit) and double precision floating point values (64-bit). Anders also added the option to support network byte ordering (big-endian) or system native byte-ordering which will save some processing time when only one type of system is used. To make it easier to see how the packet will be handled by FlightGear a utility called generic-protocol-analyze has been created which can be found in FlightGear/utils/xmlgrep. It outputs the data  offset and size along with it's description.&lt;br /&gt;
&lt;br /&gt;
==New Wiki Articles ==&lt;br /&gt;
The wiki provides now a new article for aspiring core developers about extending the built-in Nasal scripting interpreter with custom extension functions: [[Howto:Extending Nasal]].&lt;br /&gt;
The [[Nasal scripting language|Nasal documentation]] itself has been slightly reworked to provide a step by step introduction for users completely new to scripting or programming in general.&lt;br /&gt;
&lt;br /&gt;
==In the Hangar==&lt;br /&gt;
&lt;br /&gt;
[[Image:Pa22.jpg|150px|Piper Tri-Pacer]] &lt;br /&gt;
[[Image:Pa22cockpit.jpg|150px|Piper Tri-Pacer cockpit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There's a new aircraft in the CVS hangar - the [http://en.wikipedia.org/wiki/Piper_Pacer PA 22-160 Tri Pacer]. Created by Robert Leda (aka erobo) and Pawel Luchowski, this is a lovely GA aircraft and well worth having a flight in. If you enjoy VFR cross-country flying, or even simple IFR, and want to try something different to the Cessna 172, this is the plane for you.&lt;br /&gt;
&lt;br /&gt;
The level of detail is very impressive - you must prime to start the engine (making sure the mixture is set), the sound varies depending on whether you've got the window open, and the doors slam shut. All in all, it's a great polished aircraft, and a fine addition to the hanger.&lt;br /&gt;
&lt;br /&gt;
The FG hangar now has a very wide range of Piper aircraft, from the simple Cub, through the Cherokee Warrior II, Comanche 250, to the Seneca II. It is worth noting that the Warrior, Comanche and Seneca are all based on airframes flown by FG contributors in real life.&lt;br /&gt;
&lt;br /&gt;
==Useful Links==&lt;br /&gt;
&lt;br /&gt;
For those wanting to do some dead reckoning, this [http://www.csgnetwork.com/e6bcalc.html CRP5 E6B] online calculator may be of interest. Get your stopwatch, chinagraph pencils, ruler and protractor ready!&lt;br /&gt;
&lt;br /&gt;
There are a whole host of funky aviation converters [http://www.csgnetwork.com/aviationconverters.html here]. Thanks to eeK on the forums for the links.&lt;br /&gt;
&lt;br /&gt;
==LinuxTag 2009==&lt;br /&gt;
[[Image:Linuxtag2009_1.jpg|thumb|200px|A view of the FlightGear stand]]&lt;br /&gt;
[[Image:Linuxtag2009 terrain before.jpg|thumb|150px|left|Terrain texture (before)]]&lt;br /&gt;
[[Image:Linuxtag2009 terrain after.jpg|thumb|150px|left|Terrain texture (linuxtag)]]&lt;br /&gt;
[[Image:Shader sea linuxtag2009.jpg|thumb|150px|right|Sea texture (linuxtag)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The 2009 edition of the LinuxTag has been concluded and the FlightGear hangar was there full of aircraft and pilots ! You could easily spot our stand since it seemed to me the most popular one, the idea to take a free virtual flight coupled with a free flight instructor was like honey for bears. Furthermore the hardware was impressive, 2 flight stations with 3 big monitors each and real controls were worth a try ! You could even track your flight through a projected mapserver on the wall.&amp;lt;br/&amp;gt; We flew mostly around the [[EDDF|Frankfurt]] area, where a highly detailed airport (still with a high fps rate) was the background of our participants. The favorite aircraft was the [[Piper_PA34-200T_Seneca_II|SenecaII]] as it was perfect to be flown with our equipment. Meanwhile in the forward station was easy to see some [[Eurocopter_Bo105|Eurocopter Bo105]] pilot or [[Grumman_F-14_Tomcat|F-14 Tomcat]] top gun enjoying [[Aircraft_carrier|carrier]] approaches.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But it was not just all flying and fun. At the stand you could talk to some code and model developers, discussing new features and wishes. There was a developers section too: Till was hacking an earth and sea textures generator to improve our virtual world terrain painting, applying [http://en.wikipedia.org/wiki/Shader shaders] instead of fixed photos; early results where really interesting and I hope to see them soon in [[CVS]].&lt;br /&gt;
&lt;br /&gt;
The FlightGear guys prove themselves very friendly and always spoke in english in my presence. Martin Spott took care to manage an entrance pass for me and kept me informed prior to LinuxTag via Emails. This means you have no excuses to miss the event next year (At least only if you are not afraid of virtually flight !).&lt;br /&gt;
&lt;br /&gt;
* [http://brisa.homelinux.net/zenphoto/index.php?album=linuxtag2009 photos from Francesco and Matthias of the stand]&lt;br /&gt;
&lt;br /&gt;
- Francesco Brisa&lt;br /&gt;
&lt;br /&gt;
==Tornado F3 Simulator==&lt;br /&gt;
&lt;br /&gt;
I had the very good fortune to use a genuine Panavia Tornado F3 simulator at RAF Leuchars in Scotland at the start of August.&lt;br /&gt;
&lt;br /&gt;
I flew in from the south in my microlight, as part of a fly-in to the base. This was a rather unique event, as the last fly in to the base had been some 15 years before, and the RAF made us very welcome, with talks about their ATC and how to avoid the fast jets that fly near us (top tip - don't be at 250ft AGL - that's where they spend most of their time!). &lt;br /&gt;
&lt;br /&gt;
The simulator itself did not have a moving platform, but did use a real cockpit, had a 120 degree field of view display and was used for training by the pilots, including interceptions and weapons training. The short sortie I flew took off from RAF Leuchars (EGQL) up the Firth of Forth, underneath the Forth Bridges, and then landing at Edinburgh (EGPH). The feeling of &amp;quot;being there&amp;quot; was quite remarkable, and it was a real privilege to have the opportunity to use it.&lt;br /&gt;
&lt;br /&gt;
One of the things that struck me however, was that there was nothing there that was beyond the capabilities of FlightGear. The graphics were possibly slightly lower in quality (no scenery objects apart from the bridges) and the display technology was using DLP projectors (there's a description [http://ntdd2489.fm.netbenefit.co.uk/recentInstallations/Industry/Simulation/RAF_Leuchars/index.asp here]). The key thing that made the experience so realistic was the wide field of view and the use of real hardware. I was sat in a real Tornado cockpit, the canopy was closed (with warning klaxon), the stick was heavy, and the throttles had to be moved appropriately for reheat or reverse thrust. So, perhaps its time to see if there are any real cockpits available...&lt;br /&gt;
&lt;br /&gt;
Of course, none of this is news to the various people who are building fixed base simulators using FG as a software platform. There is a list of the known FG-based projects [http://www.flightgear.org/Projects/ here], and almost certainly plenty more around.&lt;br /&gt;
&lt;br /&gt;
-Stuart Buchanan&lt;br /&gt;
&lt;br /&gt;
==Innsbruck Gets A Face Lift==&lt;br /&gt;
[[Image:Innsbruck_after_003.jpg|thumb|175px|left|screenshot]]&lt;br /&gt;
[[Image:Innsbruck_after_006.jpg|thumb|175px|left|screenshot]]&lt;br /&gt;
&lt;br /&gt;
Custom scenery for the area in and around Innsbruck, Austria, is now available for downloading.The scenery covers a 1x1 degree area in and around Innsbruck, Austria, and makes use of accurate data from the '''Corine Land Cover''' and '''Open Street Map''' projects. See the forum topic [http://flightgear.org/forums/viewtopic.php?f=5&amp;amp;t=5350 here] for more details, pictures, and links to download the scenery.&lt;br /&gt;
&lt;br /&gt;
-Jacob Burbach (Tuxklok)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==And Finally...==&lt;br /&gt;
Check out the cockpit of an Airbus A380 and have a virtual tour here:&lt;br /&gt;
[http://www.airbus.com/store/mm_repository/cockpit_airbusA380/flash/cockpit1.htm http://www.airbus.com/store/mm_repository/cockpit_airbusA380/flash/cockpit1.htm]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear Newsletter|2009 8]]&lt;/div&gt;</summary>
		<author><name>Tuxklok</name></author>
	</entry>
</feed>