Bits for FlightGear free software flight simulator. https://spacecruft.org/aviation/flightgear
Find a file
2025-01-18 20:51:07 -05:00
dot-fgfs Move corresponding configs to Cessna and SR22T directories 2025-01-18 20:51:07 -05:00
screenshots Closer YASim SR22T screenshot 2024-12-26 17:08:10 -05:00
scripts Python script to turn on/off Switch Panel 2024-12-26 20:27:52 -05:00
.gitignore ignore 2024-12-26 14:04:32 -05:00
LICENSE-GPLv2.txt GPLv2 2024-12-26 14:04:20 -05:00
README.md Move corresponding configs to Cessna and SR22T directories 2025-01-18 20:51:07 -05:00

FlightGear Flight Simulator

Bits and docs for FlightGear Flight Simulator.

Hardware

Works with FlightGear:

  • Logitech Flight Rudder Pedals
  • Logitech Flight Yoke System
  • Logitech Flight Throttle Quadrant
  • Logitech Flight Radio Panel
  • Logitech Flight Switch Panel

Partially working with FlightGear:

  • Logitech Flight Multi Panel
  • Redbird Alloy YK2 Side Stick Yoke

Initial development with FlightGear:

  • RealSimGear Cirrus Throttle Quadrant

Hardware Configuration Files

Configuration files for input hardware. Move files from the dot-fgfs/ directory in this repo to the corresponding directory in ~/.fgfs/ on the target system.

RealSimGear Cirrus Throttle Quadrant

Throttle in the style of Cirrus SR series.

Manufacturer's page:

Supplier page:

When the device is connected, it outputs this to dmesg:

[Sat Jan 18 12:41:35 2025] usb 1-8.2.1: new full-speed USB device number 11 using xhci_hcd
[Sat Jan 18 12:41:36 2025] usb 1-8.2.1: New USB device found, idVendor=32b6, idProduct=01f6, bcdDevice= 1.00
[Sat Jan 18 12:41:36 2025] usb 1-8.2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[Sat Jan 18 12:41:36 2025] usb 1-8.2.1: Product: RealSimGear Cirrus Throttle
[Sat Jan 18 12:41:36 2025] usb 1-8.2.1: Manufacturer: RealSimGear Inc.
[Sat Jan 18 12:41:36 2025] usb 1-8.2.1: SerialNumber: HIDID
[Sat Jan 18 12:41:36 2025] cdc_acm 1-8.2.1:1.0: ttyACM0: USB ACM device
[Sat Jan 18 12:41:36 2025] input: RealSimGear Inc. RealSimGear Cirrus Throttle as /devices/pci0000:00/0000:00:02.1/0000:02:00.0/0000:03:0c.0/0000:08:00.0/usb1/1-8/1-8.2/1-8.2.1/1-8.2.1:1.2/0003:32B6:01F6.000D/input/input27
[Sat Jan 18 12:41:36 2025] hid-generic 0003:32B6:01F6.000D: input,hidraw7: USB HID v1.01 Joystick [RealSimGear Inc. RealSimGear Cirrus Throttle] on usb-0000:08:00.0-8.2.1/input2

Output from lsusb:

Bus 001 Device 011: ID 32b6:01f6 RealSimGear Inc. RealSimGear Cirrus Throttle

Viewing device in Hidviz. Buttons:

Button 1  GO AROUND
Button 2  BOOST
Button 3  PRIME
Button 4  OFF Left Fuel
Button 5  LEFT Fuel
Button 6  RIGHT Fuel
Button 7  OFF Right Fuel
Button 8  FLAPS 100%
Button 9  FLAPS 50%
Button 10 FLAPS UP
  • In hidviz MIN thrust reads Wing Flaps -32447. It's not wing flaps though.
  • In hidviz MAX thrust reads Wing Flaps 32382. It's not wing flaps though.
  • In hidviz MIXTURE CUTOFF reads Weapons Select -32767. It's not weapons select though.
  • In hidviz MIXTURE RICH reads Weapons Select 31165. It's not weapons select though.

The padding is 6 bits.

The USB throttle creates a HID and a serial port on /dev/ttyACM0.

Connecting to the serial port with minicom -D /dev/ttyACM0 at 115200 8N1, outputs:

\####RealSimGear#RealSimGear-CIRRUS-THROTTLE#7#3.3.0-v1#3232323635E1312/

For DRAFT config, see:

dot-fgfs/JSBSim/Input/Joysticks/RealSimGear-Inc-RealSimGear-Cirrus-Throttle.xml

Set with jscal. It is js1 when RealSim Gear throttle is also attached.

XXX cruft, set jebba to username (e.g. debian):

sudo mkdir /var/lib/joystick
sudo chown jebba /var/lib/joystick
jscal -c /dev/input/js0
jscal -q /dev/input/js0
# jscal -u 2,6,7,10,288,289,290,291,292,293,294,295,296,297 /dev/input/js0
jscal-store /dev/input/js0

Redbird Alloy YK2

Yoke in the style of Cirrus SR series.

Manufacturer's page:

Supplier page:

It connects and minimally works out-of-the-box with FlightGear. But it needs tuning, as the default values move everything to the left.

For DRAFT config, see:

dot-fgfs/JSBSim/Input/Joysticks/Redbird-Flight-Simulations,-Inc-Alloy-YK2.xml

Needs to be tuned in and buttons added.

When the device is connected, it outputs this to dmesg:

[Fri Dec 27 14:02:25 2024] usb 3-2: USB disconnect, device number 4
[Fri Dec 27 14:31:29 2024] usb 3-2: new full-speed USB device number 5 using xhci_hcd
[Fri Dec 27 14:31:29 2024] usb 3-2: New USB device found, idVendor=241d, idProduct=febb, bcdDevice= 0.01
[Fri Dec 27 14:31:29 2024] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[Fri Dec 27 14:31:29 2024] usb 3-2: Product: Alloy YK2
[Fri Dec 27 14:31:29 2024] usb 3-2: Manufacturer: Redbird Flight Simulations, Inc.
[Fri Dec 27 14:31:29 2024] input: Redbird Flight Simulations, Inc. Alloy YK2 as /devices/pci0000:00/0000:00:08.1/0000:0a:00.3/usb3/3-2/3-2:1.0/0003:241D:FEBB.0036/input/input67
[Fri Dec 27 14:31:29 2024] hid-generic 0003:241D:FEBB.0036: input,hidraw2: USB HID v1.10 Joystick [Redbird Flight Simulations, Inc. Alloy YK2] on usb-0000:0a:00.3-2/input0

Output from lsusb:

Bus 003 Device 005: ID 241d:febb Redbird Flight Simulations, Inc. Alloy YK2

Viewing device in Hidviz. Buttons:

Button 1  Trim Hat Left   0  1
Button 2  Trim Hat Center 0  1
Button 3  Trim Hat Down   0  1
Button 4  A/P DISC        0  1
Button 5  PTT             0  1
Button 6  Trim Hat Right  0  1
Button 7  Trim Hat Up     0  1

Yoke:

              Center Min  Max
X Left/Right  243    235  425
Y In/Out      444     27  902

Padding: 5 bits.

Values in FlightGear Joystick Configuration available under File --> Input Devices --> Joystick Config

Yoke:

Axis    Input  Input Left  Input Right   Control    Inverted?
----    -----  ----------  -----------   -------    ---------
Axis 0  -0.23   -0.54        -0.07       Aileron        No

Axis    Input  Input In    Input Out     Control    Inverted?
----    -----  --------    ---------     -------    ---------
Axis 1   0.00   -1.00         0.58       Elevator      Yes

Buttons:

Input   Control
-----   -------
 0      Aileron Trim Left
 1      XXX Center trim hat
 2      Elevator Trim Up
 3      Autopilot disconnect
 4      FGCom PTT
 5      Aileron Trim Right
 6      Elevator Trim Down

Set with jscal. It is js1 when RealSim Gear throttle is also attached.

jscal -c /dev/input/js1
jscal -q /dev/input/js1
# jscal -u 2,0,1,7,288,289,290,291,292,293,294 /dev/input/js1
jscal-store /dev/input/js1

Logitech Flight Rudder Pedals

Manufacturer's pages:

The rudder pedals are manufactured by Logitech, but is referred to as Saitek, as they were the original manufacturer and were subsequently bought out by Logitech. Lots of the FlightGear documentation, and even the device itself, refer to Saitek instead of Logitech.

When the device is connected, it outputs this to dmesg:

[Sat Dec 21 12:26:52 2024] usb 5-1: new full-speed USB device number 2 using xhci_hcd
[Sat Dec 21 12:26:52 2024] usb 5-1: New USB device found, idVendor=06a3, idProduct=0763, bcdDevice= 1.01
[Sat Dec 21 12:26:52 2024] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[Sat Dec 21 12:26:52 2024] usb 5-1: Product: Saitek Pro Flight Rudder Pedals
[Sat Dec 21 12:26:52 2024] usb 5-1: Manufacturer: Saitek
[Sat Dec 21 12:26:52 2024] input: Saitek Saitek Pro Flight Rudder Pedals as /devices/pci0000:00/0000:00:08.1/0000:0a:00.4/usb5/5-1/5-1:1.0/0003:06A3:0763.000A/input/input41

Output from lsusb:

Bus 005 Device 002: ID 06a3:0763 Saitek PLC Pro Flight Rudder Pedals

These rudder pedals work out-of-the-box with FlightGear without any additional configuration needed.

Logitech Flight Yoke System and Throttle Quadrant

Manufacturer's pages:

This yoke is manufactured by Logitech, but is referred to as Saitek, as they were the original manufacturer and were subsequently bought out by Logitech. Lots of the FlightGear documentation, and even the device itself, refer to Saitek instead of Logitech.

When the device is connected, it outputs this to dmesg:

[Sat Dec 21 12:19:35 2024] usb 1-8.1: new high-speed USB device number 9 using xhci_hcd
[Sat Dec 21 12:19:35 2024] usb 1-8.1: New USB device found, idVendor=06a3, idProduct=712c, bcdDevice= 1.01
[Sat Dec 21 12:19:35 2024] usb 1-8.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[Sat Dec 21 12:19:35 2024] hub 1-8.1:1.0: USB hub found
[Sat Dec 21 12:19:35 2024] hub 1-8.1:1.0: 4 ports detected
[Sat Dec 21 12:19:35 2024] usb 1-8.1.4: new full-speed USB device number 10 using xhci_hcd
[Sat Dec 21 12:19:35 2024] usb 1-8.1.4: New USB device found, idVendor=06a3, idProduct=0bac, bcdDevice= 1.09
[Sat Dec 21 12:19:35 2024] usb 1-8.1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[Sat Dec 21 12:19:35 2024] usb 1-8.1.4: Product: Logitech Flight Yoke
[Sat Dec 21 12:19:35 2024] usb 1-8.1.4: Manufacturer: Logitech
[Sat Dec 21 12:19:35 2024] input: Logitech Logitech Flight Yoke as /devices/pci0000:00/0000:00:02.1/0000:02:00.0/0000:03:0c.0/0000:08:00.0/usb1/1-8/1-8.1/1-8.1.4/1-8.1.4:1.0/0003:06A3:0BAC.0009/input/input40
[Sat Dec 21 12:19:35 2024] hid-generic 0003:06A3:0BAC.0009: input,hidraw8: USB HID v1.11 Joystick [Logitech Logitech Flight Yoke] on usb-0000:08:00.0-8.1.4/input0

Output from lsusb:

Bus 001 Device 010: ID 06a3:0bac Saitek PLC Pro Flight Yoke
Bus 001 Device 009: ID 06a3:712c Saitek PLC Pro Flight Yoke integrated hub

The device also functions as a USB hub with three USB ports. It has a input plug for 5V, 1.7A to power additional USB devices, but the device does not come with a power adapter. A power adapter is only needed to power additional USB devices, not to use the yoke itself.

The device also comes with a throttle quadrant. There is also a PS/2-esque port for plugging in the Logitech quadrant device. Logitech sells a version of the throttle quadrant that uses USB, but the one that comes with the yoke only has the plug that connects it to the yoke directly, not USB.

The yoke mostly works out-of-the-box with FlightGear. By default these work with a Cessna 172:

  • Ailerons.
  • Elevator.
  • Throttle.

I also mapped the red lever on the throttle quadrant to control the mixture (lean/rich).

This configuration is available here:

dot-fgfs/Cessna-172/Input/Joysticks/Logitech-Logitech-Flight-Yoke.xml

Logitech Flight Radio Panel

Manufacturer's pages:

This radio panel is manufactured by Logitech, but is referred to as Saitek, as they were the original manufacturer and were subsequently bought out by Logitech. The device itself refers to Saitek instead of Logitech.

When the device is connected, it outputs this to dmesg:

[Tue Dec 24 17:13:24 2024] usb 1-1: new full-speed USB device number 10 using xhci_hcd
[Tue Dec 24 17:13:24 2024] usb 1-1: New USB device found, idVendor=06a3, idProduct=0d05, bcdDevice= 1.07
[Tue Dec 24 17:13:24 2024] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[Tue Dec 24 17:13:24 2024] usb 1-1: Product: Logitech Flight Radio Panel
[Tue Dec 24 17:13:24 2024] usb 1-1: Manufacturer: Logitech
[Tue Dec 24 17:13:24 2024] input: Logitech Logitech Flight Radio Panel as /devices/pci0000:00/0000:00:02.1/0000:02:00.0/0000:03:0c.0/0000:08:00.0/usb1/1-1/1-1:1.0/0003:06A3:0D05.0012/input/input35
[Tue Dec 24 17:13:24 2024] hid-generic 0003:06A3:0D05.0012: input,hidraw11: USB HID v1.11 Device [Logitech Logitech Flight Radio Panel] on usb-0000:08:00.0-1/input0

Output from lsusb:

Bus 001 Device 010: ID 06a3:0d05 Saitek PLC Pro Flight Radio Panel

FlightGear user zayamatias wrote a configuration for this device, available here:

zayamatias also wrote some nice documentation about HOWTO write XML files for new devices:

The configuration file here is copied from zayamatias:

dot-fgfs/Cessna-172/Input/HID/Logitech-Logitech-Flight-Radio-Panel.xml

The only difference is I copy the file to ~/.fgfs/Input/HID/ instead of ~/.fgfs/Input/Event/ as mentioned in zayamatias' documentation.

See the Python script in scripts/radiopanel_ctl.py to turn on and off the radio panel LCD digits.

Logitech Flight Switch Panel

Manufacturer's pages:

This switch panel is manufactured by Logitech, but is referred to as Saitek, as they were the original manufacturer and were subsequently bought out by Logitech. The device itself refers to Saitek instead of Logitech. It also refers to "Intretech". They appear to be a contract manufacturer. Perhaps they were the actual manufacturers of the device.

When the device is connected, it outputs this to dmesg:

[Tue Dec 24 16:52:34 2024] usb 3-1: new full-speed USB device number 2 using xhci_hcd
[Tue Dec 24 16:52:34 2024] usb 3-1: New USB device found, idVendor=06a3, idProduct=0d67, bcdDevice= 1.04
[Tue Dec 24 16:52:34 2024] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[Tue Dec 24 16:52:34 2024] usb 3-1: Product: Saitek Pro Flight Switch Panel
[Tue Dec 24 16:52:34 2024] usb 3-1: Manufacturer: Intretech
[Tue Dec 24 16:52:34 2024] input: Intretech Saitek Pro Flight Switch Panel as /devices/pci0000:00/0000:00:08.1/0000:0a:00.3/usb3/3-1/3-1:1.0/0003:06A3:0D67.000B/input/input24
[Tue Dec 24 16:52:34 2024] hid-generic 0003:06A3:0D67.000B: input,hidraw10: USB HID v1.11 Device [Intretech Saitek Pro Flight Switch Panel] on usb-0000:0a:00.3-1/input0

Output from lsusb:

Bus 003 Device 002: ID 06a3:0d67 Saitek PLC Pro Flight Switch Panel

This hardware is not supported out-of-the-box by FlightGear. FlightGear user Dean Kelly wrote an XML file for this hardware.

Dean Kelly's file didn't work perfectly for me. Some switches were off by one and some didn't work at all. I did an updated version of the file with everything working on a Cessna 172, except landing gear, which the 172 doesn't have. The gear up/down is mapped, so it "should" work on aircraft that support it.

Updated configuration file available here:

dot-fgfs/Cessna-172/Input/HID/Intretech-Saitek-Switch-Panel.xml

See the Python script in scripts/switchpanel_ctl.py to turn on and off the Switch Panel lights. It just does on/off for green. The full byte to light mapping is this:

             # Top    Left    Right
[0x00, 0x00] # off    off     off
[0x00, 0x01] # green  off     off
[0x00, 0x02] # off    green   off
[0x00, 0x03] # green  green   off
[0x00, 0x04] # off    off     green
[0x00, 0x05] # green  off     green
[0x00, 0x06] # off    green   green
[0x00, 0x07] # green  green   green
[0x00, 0x08] # red    off     off
[0x00, 0x09] # yellow off     off
[0x00, 0x0A] # red    green   off
[0x00, 0x0B] # yellow green   off
[0x00, 0x0C] # red    off     green
[0x00, 0x0D] # yellow off     green
[0x00, 0x0E] # red    green   green
[0x00, 0x0F] # yellow green   green
[0x00, 0x10] # off    red     off
[0x00, 0x11] # green  red     off
[0x00, 0x12] # off    yellow  off
[0x00, 0x13] # green  yellow  off
[0x00, 0x14] # off    red     green
[0x00, 0x15] # green  red     green
[0x00, 0x16] # off    yellow  green
[0x00, 0x17] # green  yellow  green
[0x00, 0x18] # red    red     off
[0x00, 0x19] # yellow red     off
[0x00, 0x1A] # red    yellow  off
[0x00, 0x1B] # yellow yellow  off
[0x00, 0x1C] # red    red     green
[0x00, 0x1D] # yellow red     green
[0x00, 0x1E] # red    yellow  green
[0x00, 0x1F] # yellow yellow  green
[0x00, 0x20] # off    off     red
[0x00, 0x21] # green  off     red
[0x00, 0x22] # off    green   red
[0x00, 0x23] # green  green   red
[0x00, 0x24] # off    off     yellow
[0x00, 0x25] # green  off     yellow
[0x00, 0x26] # off    green   yellow
[0x00, 0x27] # green  green   yellow
[0x00, 0x28] # red    off     red
[0x00, 0x29] # yellow off     red
[0x00, 0x2A] # red    green   red
[0x00, 0x2B] # yellow green   red
[0x00, 0x2C] # red    off     yellow
[0x00, 0x2D] # yellow off     yellow
[0x00, 0x2E] # red    green   yellow
[0x00, 0x2F] # yellow green   yellow
[0x00, 0x30] # off    red     red
[0x00, 0x31] # green  red     red
[0x00, 0x32] # off    yellow  red
[0x00, 0x33] # green  yellow  red
[0x00, 0x34] # off    red     yellow
[0x00, 0x35] # green  red     yellow
[0x00, 0x36] # off    yellow  yellow
[0x00, 0x37] # green  yellow  yellow
[0x00, 0x38] # red    red     red
[0x00, 0x39] # yellow red     red
[0x00, 0x3A] # red    yellow  red
[0x00, 0x3B] # yellow yellow  red
[0x00, 0x3C] # red    red     yellow
[0x00, 0x3D] # yellow red     yellow
[0x00, 0x3E] # red    yellow  yellow
[0x00, 0x3F] # yellow yellow  yellow

Logitech Flight Multi Panel

Manufacturer's pages:

This multi panel is manufactured by Logitech, but is referred to as Saitek, as they were the original manufacturer and were subsequently bought out by Logitech. The device itself refers to Saitek instead of Logitech.

When the device is connected, it outputs this to dmesg:

[Tue Dec 24 16:58:45 2024] usb 3-2: new full-speed USB device number 3 using xhci_hcd
[Tue Dec 24 16:58:45 2024] usb 3-2: New USB device found, idVendor=06a3, idProduct=0d06, bcdDevice= 1.07
[Tue Dec 24 16:58:45 2024] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[Tue Dec 24 16:58:45 2024] usb 3-2: Product: Logitech Flight Multi Panel
[Tue Dec 24 16:58:45 2024] usb 3-2: Manufacturer: Logitech
[Tue Dec 24 16:58:45 2024] input: Logitech Logitech Flight Multi Panel as /devices/pci0000:00/0000:00:08.1/0000:0a:00.3/usb3/3-2/3-2:1.0/0003:06A3:0D06.000C/input/input25
[Tue Dec 24 16:58:45 2024] hid-generic 0003:06A3:0D06.000C: input,hidraw11: USB HID v1.11 Device [Logitech Logitech Flight Multi Panel] on usb-0000:0a:00.3-2/input0

Output from lsusb:

Bus 003 Device 003: ID 06a3:0d06 Saitek PLC Flight Pro Multi Panel

This hardware is not supported out-of-the-box by FlightGear.

I wrote a new XML file for this device, based on zayamatias's documentation and Dean Kelly's switch panel XML. So far, only the buttons are working in the DRAFT configuration, available here:

dot-fgfs/Cessna-172/Input/HID/Logitech-Logitech-Flight-Multi-Panel.xml

Here is the button mapping using Hidviz ( https://github.com/hidviz/hidviz ):

Button 1        ALT Dial
Button 2        VS Dial
Button 3        IAS Dial
Button 4        HDG Dial
Button 5        CRS Dial
Button 6        +/- Dial Up
Button 7        +/- Dial Down
Button 8        AP Button                       OK
Button 9        HDG Button                      OK
Button 10       NAV Button                      OK
Button 11       IAS Button                      XXX
Button 12       ALT Button                      OK
Button 13       VS Button                       XXX
Button 14       APR Button                      OK
Button 15       REV Button                      OK
Button 16       Auto Throttle ARM switch ON
Button 17       Flaps Up
Button 18       Flaps Down
Button 19       Pitch Trim DN
Button 20       Pitch Trim UP

Here is the mapping of the button lights:

0x00 = OFF
0x01 = AP
0x02 = HDG
0x03 = AP/HDG
0x04 = NAV
0x05 = AP/NAV
0x06 = HDG/NAV
0x07 = AP/HDG/NAV
0x08 = IAS
0x09 = AP/IAS
0x0A = HDG/IAS
0x0B = AP/HDG/IAS
0x0C = NAV/IAS
0x0D = AP/NAV/IAS
0x0E = HDG/NAV/IAS
0x0F = AP/HDG/NAV/IAS
0x10 = ALT
0x11 = AP/ALT
0x12 = HDG/ALT
0x13 = AP/HDG/ALT
0x14 = NAV/ALT
0x15 = AP/NAV/ALT
0x16 = HDG/NAV/ALT
0x17 = AP/HDG/NAV/ALT
0x18 = IAS/ALT
0x19 = AP/IAS/ALT
0x1A = HDG/IAS/ALT
0x1B = AP/HDG/IAS/ALT
0x1C = NAV/IAS/ALT
0x1D = AP/NAV/IAS/ALT
0x1E = HDG/NAV/IAS/ALT
0x1F = AP/HDG/NAV/IAS/ALT
0x20 = VS
0x21 = AP/VS
0x22 = HDG/VS
0x23 = AP/HDG/VS
0x24 = NAV/VS
0x25 = AP/NAV/VS
0x26 = HDG/NAV/VS
0x27 = AP/HDG/NAV/VS
0x28 = IAS/VS
0x29 = AP/IAS/VS
0x2A = HDG/IAS/VS
0x2B = AP/HDG/IAS/VS
0x2C = NAV/IAS/VS
0x2D = AP/NAV/IAS/VS
0x2E = HDG/NAV/IAS/VS
0x2F = AP/HDG/NAV/IAS/VS
0x30 = ALT/VS
0x31 = AP/ALT/VS
0x32 = HDG/ALT/VS
0x33 = AP/HDG/ALT/VS
0x34 = NAV/ALT/VS
0x35 = AP/NAV/ALT/VS
0x36 = HDG/NAV/ALT/VS
0x37 = AP/HDG/NAV/ALT/VS
0x38 = IAS/ALT/VS
0x39 = AP/IAS/ALT/VS
0x3A = HDG/IAS/ALT/VS
0x3B = AP/HDG/IAS/ALT/VS
0x3C = NAV/IAS/ALT/VS
0x3D = AP/NAV/IAS/ALT/VS
0x3E = HDG/NAV/IAS/ALT/VS
0x3F = AP/HDG/NAV/IAS/ALT/VS
0x40 = APR
0x41 = AP/APR
0x42 = HDG/APR
0x43 = AP/HDG/APR
0x44 = NAV/APR
0x45 = AP/NAV/APR
0x46 = HDG/NAV/APR
0x47 = AP/HDG/NAV/APR
0x48 = IAS/APR
0x49 = AP/IAS/APR
0x4A = HDG/IAS/APR
0x4B = AP/HDG/IAS/APR
0x4C = NAV/IAS/APR
0x4D = AP/NAV/IAS/APR
0x4E = HDG/NAV/IAS/APR
0x4F = AP/HDG/NAV/IAS/APR
0x50 = ALT/APR
0x51 = AP/ALT/APR
0x52 = HDG/ALT/APR
0x53 = AP/HDG/ALT/APR
0x54 = NAV/ALT/APR
0x55 = AP/NAV/ALT/APR
0x56 = HDG/NAV/ALT/APR
0x57 = AP/HDG/NAV/ALT/APR
0x58 = IAS/ALT/APR
0x59 = AP/IAS/ALT/APR
0x5A = HDG/IAS/ALT/APR
0x5B = AP/HDG/IAS/ALT/APR
0x5C = NAV/IAS/ALT/APR
0x5D = AP/NAV/IAS/ALT/APR
0x5E = HDG/NAV/IAS/ALT/APR
0x5F = AP/HDG/NAV/IAS/ALT/APR
0x60 = VS/APR
0x61 = AP/VS/APR
0x62 = HDG/VS/APR
0x63 = AP/HDG/VS/APR
0x64 = NAV/VS/APR
0x65 = AP/NAV/VS/APR
0x66 = HDG/NAV/VS/APR
0x67 = AP/HDG/NAV/VS/APR
0x68 = IAS/VS/APR
0x69 = AP/IAS/VS/APR
0x6A = HDG/IAS/VS/APR
0x6B = AP/HDG/IAS/VS/APR
0x6C = NAV/IAS/VS/APR
0x6D = AP/NAV/IAS/VS/APR
0x6E = HDG/NAV/IAS/VS/APR
0x6F = AP/HDG/NAV/IAS/VS/APR
0x70 = ALT/VS/APR
0x71 = AP/ALT/VS/APR
0x72 = HDG/ALT/VS/APR
0x73 = AP/HDG/ALT/VS/APR
0x74 = NAV/ALT/VS/APR
0x75 = AP/NAV/ALT/VS/APR
0x76 = HDG/NAV/ALT/VS/APR
0x77 = AP/HDG/NAV/ALT/VS/APR
0x78 = IAS/ALT/VS/APR
0x79 = AP/IAS/ALT/VS/APR
0x7A = HDG/IAS/ALT/VS/APR
0x7B = AP/HDG/IAS/ALT/VS/APR
0x7C = NAV/IAS/ALT/VS/APR
0x7D = AP/NAV/IAS/ALT/VS/APR
0x7E = HDG/NAV/IAS/ALT/VS/APR
0x7F = AP/HDG/NAV/IAS/ALT/VS/APR
0x80 = REV
0x81 = AP/REV
0x82 = HDG/REV
0x83 = AP/HDG/REV
0x84 = NAV/REV
0x85 = AP/NAV/REV
0x86 = HDG/NAV/REV
0x87 = AP/HDG/NAV/REV
0x88 = IAS/REV
0x89 = AP/IAS/REV
0x8A = HDG/IAS/REV
0x8B = AP/HDG/IAS/REV
0x8C = NAV/IAS/REV
0x8D = AP/NAV/IAS/REV
0x8E = HDG/NAV/IAS/REV
0x8F = AP/HDG/NAV/IAS/REV
0x90 = ALT/REV
0x91 = AP/ALT/REV
0x92 = HDG/ALT/REV
0x93 = AP/HDG/ALT/REV
0x94 = NAV/ALT/REV
0x95 = AP/NAV/ALT/REV
0x96 = HDG/NAV/ALT/REV
0x97 = AP/HDG/NAV/ALT/REV
0x98 = IAS/ALT/REV
0x99 = AP/IAS/ALT/REV
0x9A = HDG/IAS/ALT/REV
0x9B = AP/HDG/IAS/ALT/REV
0x9C = NAV/IAS/ALT/REV
0x9D = AP/NAV/IAS/ALT/REV
0x9E = HDG/NAV/IAS/ALT/REV
0x9F = AP/HDG/NAV/IAS/ALT/REV
0xA0 = VS/REV
0xA1 = AP/VS/REV
0xA2 = HDG/VS/REV
0xA3 = AP/HDG/VS/REV
0xA4 = NAV/VS/REV
0xA5 = AP/NAV/VS/REV
0xA6 = HDG/NAV/VS/REV
0xA7 = AP/HDG/NAV/VS/REV
0xA8 = IAS/VS/REV
0xA9 = AP/IAS/VS/REV
0xAA = HDG/IAS/VS/REV
0xAB = AP/HDG/IAS/VS/REV
0xAC = NAV/IAS/VS/REV
0xAD = AP/NAV/IAS/VS/REV
0xAE = HDG/NAV/IAS/VS/REV
0xAF = AP/HDG/NAV/IAS/VS/REV
0xB0 = ALT/VS/REV
0xB1 = AP/ALT/VS/REV
0xB2 = HDG/ALT/VS/REV
0xB3 = AP/HDG/ALT/VS/REV
0xB4 = NAV/ALT/VS/REV
0xB5 = AP/NAV/ALT/VS/REV
0xB6 = HDG/NAV/ALT/VS/REV
0xB7 = AP/HDG/NAV/ALT/VS/REV
0xB8 = IAS/ALT/VS/REV
0xB9 = AP/IAS/ALT/VS/REV
0xBA = HDG/IAS/ALT/VS/REV
0xBB = AP/HDG/IAS/ALT/VS/REV
0xBC = NAV/IAS/ALT/VS/REV
0xBD = AP/NAV/IAS/ALT/VS/REV
0xBE = HDG/NAV/IAS/ALT/VS/REV
0xBF = AP/HDG/NAV/IAS/ALT/VS
0xC0 = APR/REV
0xC1 = AP/APR/REV
0xC2 = HDG/APR/REV
0xC3 = AP/HDG/APR/REV
0xC4 = NAV/APR/REV
0xC5 = AP/NAV/APR/REV
0xC6 = HDG/NAV/APR/REV
0xC7 = AP/HDG/NAV/APR/REV
0xC8 = IAS/APR/REV
0xC9 = AP/IAS/APR/REV
0xCA = HDG/IAS/APR/REV
0xCB = AP/HDG/IAS/APR/REV
0xCC = NAV/IAS/APR/REV
0xCD = AP/NAV/IAS/APR/REV
0xCE = HDG/NAV/IAS/APR/REV
0xCF = AP/HDG/NAV/IAS/APR/REV
0xD0 = ALT/APR/REV
0xD1 = AP/ALT/APR/REV
0xD2 = HDG/ALT/APR/REV
0xD3 = AP/HDG/ALT/APR/REV
0xD4 = NAV/ALT/APR/REV
0xD5 = AP/NAV/ALT/APR/REV
0xD6 = HDG/NAV/ALT/APR/REV
0xD7 = AP/HDG/NAV/ALT/APR/REV
0xD8 = IAS/ALT/APR/REV
0xD9 = AP/IAS/ALT/APR/REV
0xDA = HDG/IAS/ALT/APR/REV
0xDB = AP/HDG/IAS/ALT/APR/REV
0xDC = NAV/IAS/ALT/APR/REV
0xDD = AP/NAV/IAS/ALT/APR/REV
0xDE = HDG/NAV/IAS/ALT/APR/REV
0xDF = AP/HDG/NAV/IAS/ALT/APR/REV
0xF0 = ALT/VS/APR/REV
0xF1 = AP/ALT/VS/APR/REV
0xF2 = HDG/ALT/VS/APR/REV
0xF3 = AP/HDG/ALT/VS/APR/REV
0xF4 = NAV/ALT/VS/APR/REV
0xF5 = AP/NAV/ALT/VS/APR/REV
0xF6 = HDG/NAV/ALT/VS/APR/REV
0xF7 = AP/HDG/NAV/ALT/VS/APR/REV
0xF8 = IAS/ALT/VS/APR/REV
0xF9 = AP/IAS/ALT/VS/APR/REV
0xFA = HDG/IAS/ALT/VS/APR/REV
0xFB = AP/HDG/IAS/ALT/VS/APR/REV
0xFC = NAV/IAS/ALT/VS/APR/REV
0xFD = AP/NAV/IAS/ALT/VS/APR/REV
0xFE = HDG/NAV/IAS/ALT/VS/APR/REV
0xFF = AP/HDG/NAV/IAS/ALT/VS/APR/REV

The LED digit segments and lights can be controlled by sending the device a string like this:

[0x09, 0x09, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08, 0x08, 0x08, 0xFF]

Where the first five bytes are the top row of digits, the second five bytes are the bottom row of digits, and the eleventh byte controls which button lights are on. In the above example, the top row would display all nines, the bottom row would display all eights, and all of the button lights would be on.

See the Python script in scripts/multipanel_ctl.py to control and test the Multi Panel LCD display digits and button lights.

Cirrus Aircraft Flight Simulator

The goal is to have a free software flight simulator and hardware of a Cirrus SR22.

Cirrus Aircraft

Cirrus is a manufacturer of general aviation aircraft.

The Cirrus SR20 is the first Cirrus in the SR series. Subsequently, the higher horsepower SR22 was released. The SR22 is the same size (fuselage) as the SR20. A turbo normalized version was available as the Cirrus G3 SR22TN. In later years, Cirrus started manufacturing the turbo SR22T. Cirrus currently manufactures the G7 SR20, SR22, and SR22T. They also manufacture a SF-50 jet, but the focus here is on their single engine piston aircraft.

There are multiple generations of the Cirrus SR series, from G1 to G7. The earlier generations used Avidyne avionics. Later generations used Garmin Perspective avionics. The G6 upgraded to Garmin Perspective+ (plus) avionics. The latest G7 has Garmin Perspective Touch avionics.

Steel Aviation has a very good history of Cirrus Aircraft from their inception through to 2021:

Cirrus Aircraft in FlightGear

Currently there are Cirrus SR22 and a SR22T aircraft in FlightGear.

The Cirrus aircraft are available in FlightGear Addons. In the forthcoming 2024.1 stable release and trunk (-next):

The Cirrus-SR22 version has commits in 2024, whereas the SR22T (without Cirrus- in the directory name) hasn't had a commit since 2021.

There is a YASim version of both the SR22 and the SR22T. The YASim version is in the the Cirrus-SR22 directory.

There is a JSBSim version of the SR22T. The JSBsim version is in the SR22T directory.

The JSBSim version appears to have a better and more recent avionics layout than YASim, even though it has gone longer without an update.

Screenshots of each version:

JSBSim SR22T JSBSim SR22T

YASim Cirrus SR22 YASim SR22

YASim Cirrus SR22T YASim SR22T

In the FlightGear launcher, it displays the ratings for each Aircraft. I'm not sure how these are determined or if they are relatively accurate.

YASim SR22T gets:

  • Flight Model: 3/5
  • Cockpit: 3/5
  • Systems: 2/5
  • Exterior: 4/5

JSBSim SR22T gets:

  • Flight Model: 1/5
  • Cockpit: 1/5
  • Systems: 1/5
  • Exterior: 1/5

Cirrus Avionics

Garmin G1000 is implemented in FlightGear as FG1000, source code:

Status

Alpha development.

License

GPLv2.

Unofficial project, not related to upstream projects.

Upstream sources under their respective copyrights.

Copyright © 2024, 2025, Jeff Moe.