- Python 100%
| dot-fgfs | ||
| screenshots | ||
| scripts | ||
| .gitignore | ||
| LICENSE-GPLv2.txt | ||
| README.md | ||
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
hidvizMINthrust readsWing Flaps-32447. It's not wing flaps though. - In
hidvizMAXthrust readsWing Flaps32382. It's not wing flaps though. - In
hidvizMIXTURE CUTOFFreadsWeapons Select-32767. It's not weapons select though. - In
hidvizMIXTURE RICHreadsWeapons Select31165. 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:
- https://www.logitechg.com/en-us/products/flight/flight-simulator-rudder-pedals.945-000024.html
- https://www.logitech.com/assets/65127/flight-rudder-pedals.pdf
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:
- https://www.logitechg.com/en-us/products/flight/flight-simulator-yoke-system.945-000023.html
- https://www.logitech.com/assets/65128/flight-yoke-system.pdf
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:
- https://www.logitechg.com/en-us/products/flight/flight-simulator-cockpit-radio-panel.945-000029.html
- https://www.logitech.com/assets/65157/flight-radio-panel.pdf
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:
- https://forum.flightgear.org/viewtopic.php?f=24&t=42265
- https://wiki.flightgear.org/User:Zayamatias/Adding_HID_devices_to_FlightGear
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:
- https://www.logitechg.com/en-us/products/flight/flight-simulator-switch-panel.945-000030.html
- https://www.logitech.com/assets/65149/flight-switch-panel.pdf
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:
- https://www.logitechg.com/en-us/products/flight/flight-simulator-autopilot-multipanel.945-000028.html
- https://www.logitech.com/assets/65126/flight-multi-panel.pdf
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.
- https://en.wikipedia.org/wiki/Cirrus_Aircraft
- https://en.wikipedia.org/wiki/Cirrus_SR20
- https://en.wikipedia.org/wiki/Cirrus_SR22
- https://cirrusaircraft.com/
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):
- https://sourceforge.net/p/flightgear/fgaddon/HEAD/tree/branches/release-2024.1/Aircraft/Cirrus-SR22/
- https://sourceforge.net/p/flightgear/fgaddon/HEAD/tree/branches/release-2024.1/Aircraft/SR22T/
- https://sourceforge.net/p/flightgear/fgaddon/HEAD/tree/trunk/Aircraft/Cirrus-SR22/
- https://sourceforge.net/p/flightgear/fgaddon/HEAD/tree/trunk/Aircraft/SR22T/
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:
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:
- https://gitlab.com/flightgear/fgdata/-/tree/next/Aircraft/Instruments-3d/FG1000
- https://wiki.flightgear.org/FG1000
Status
Alpha development.
License
GPLv2.
Unofficial project, not related to upstream projects.
Upstream sources under their respective copyrights.
Copyright © 2024, 2025, Jeff Moe.


