GoFlight Bridge

Hoppie Home

GoFlight Bridge

Project Progress



The range of cockpit hardware from GoFlight has good support for PS1 and PS1 addons, and you can extend the system yourself if you are a bit handy.

There are two distinct parts of the support. One is a DLL, included in this package, that bridges the gap between the GoFlight USB device driver and the Tcl scripting language. With this DLL, programmers can very easily interface from Tcl to GoFlight hardware. The other part is a program in Tcl that converts some GoFlight hardware into panels usable to control various functions in PS1, including the complete throttle quadrant.

It is totally feasible to control nearly every aspect of PS1 from a GoFlight panel, including all overhead functions. However it is not easy to write a completely configurable setup where you can assign functions to panels by mouse clicks, such as with the commercial products. I simply do not have the time to do this. So I program the functions that somebody needed and the first one wins.

The sources of the Bridge (both C for the .dll and Tcl for the PS1 interface) are available for download, so you can also add things yourself. If you do, please tell me!


Unpack in a directory of your choice (retain the directory structure in the ZIP!), and run bin\gfbridge.exe. First time, let it know where it can find the Broker. After that, no config required.

All VMREAD keys below are also included in the latest release of the VMREAD Wizard.

If you want to link the GoFlight displays to the PS1 Standby Power switch, so that all panels blank when the Standby Power is switched off, add the following line to VMREAD.CFG (assuming that you already run 747IPC):

2934 1 A_INT 1  VM.StandByPower
For complete panel support (still developing that), you need additionally the following IPC keys:
D32A 1 A_INT 1  JL.FuelCtrlSwitch1
D32B 1 A_INT 1  JL.FuelCtrlSwitch2
D32C 1 A_INT 1  JL.FuelCtrlSwitch3
D32D 1 A_INT 1  JL.FuelCtrlSwitch4
6A0A 1 A_INT 1  JL.StartLight1
6A0B 1 A_INT 1  JL.StartLight2
6A0C 1 A_INT 1  JL.StartLight3
6A0D 1 A_INT 1  JL.StartLight4
698E 1 A_INT 5  VM.FireLtEng1
698F 1 A_INT 5  VM.FireLtEng2
6990 1 A_INT 5  VM.FireLtEng3
6991 1 A_INT 5  VM.FireLtEng4


GF45/GF46 The program announces which GoFlight units it has detected. The first GF45 and/or GF46 detected will be converted to a transponder panel. Of course, with two rotaries you don't get a real nice panel. The left/outer knob dials the left two digits, the right/inner knob the right two. If you do not dial any digits for more than two seconds, the right/inner knob will cycle through STANDBY - AUTO - ON (- IDENT on GF45) modes. On the GF46, the push button does IDENT. The IDENT mode is momentary, the unit will "click back" to the AUTO or ON mode after a second.

GF166 All GF166s detected will be converted to VHF radios. Initially all of them are in "offside tuning" mode (think: standby), indicated by the right green LED (which is white in a real 747-400). You select one of them to be Tuning Master via its right pushbutton. Its LED goes off, and you can tune it in a slightly modified 8.33kHz grid. The Transfer button actually tunes the radio and swaps the displays. Any other unit can take over the Tuning Master role at any time. I have seen four of these being used together.

TQ6 If you have a TQ6, it's configured to directly take over PS1's speed brakes lever, four throttle levers, thrust reversers, and flaps lever. The speed brakes lever is nearly trivial, just take into account that a 747-400 has a motorised speed brake lever and you should try to keep the TQ6 lever in the same position as the lever displayed by PS1. The same holds for the four throttle levers. If you push them all the way forward so that they touch the four reverser levers, the Bridge will generate a TO/GA press. At the other end, pulling them all the way to idle and then pulling the reverser levers there, too, so that they touch, activates PS1's reversers. In flight mode, the reverser levers should be fully forward. The flaps lever can only reach flaps 25 because it does not have enough detents. If you manufacture a custom detent plate, you might get just one more detent out of the lever. In the File/Setup menu, you can select the "Flaps 30" option which then should allow flaps 30 settings. The exact detent points might need to be updated, please notify me.

The default calibration of the TQ6 should be a reasonable guess, but you can go to File/Setup and change the default values for minimum lever position, maximum lever position, and jitter suppression. The latter cannot go less than two, but might be set to three for some levers to keep the output rock-steady when you don't touch them.

In case you do not use the buttons on the engine thrust levers to command the reverse thrust settings, you may set the Rev calibration fields (in the Setup dialog) to something not zero. If you set them to 20, at about 20% out of idle, the lever will read idle thrust. Below 20%, the reverse thrust command for that engine will be given. All engine thrust levers must be near idle and at least two levers must be in the reverse thrust zone to activate reverse thrust. There is no TO/GA function available if you enable the reverse thrust zones.

P8 The eight pushbuttons will be connected to various PS1 overhead panel functions. From left to right:

  1. Start engine #1, with associated light
  2. Start engine #2, with associated light
  3. Start engine #3, with associated light
  4. Start engine #4, with associated light
  5. Strobes
  6. Beacons
  7. APU selector turn left (off/shutdown)
  8. APU selector turn right (on/start)
The APU selector could have been controlled differently, but this was the most practical solution for now. LEDs 5-8 are unassigned.

T8 The eight toggle switches will be connected to various PS1 functions. From left to right:

  1. Fuel control engine #1
  2. Fuel control engine #2
  3. Fuel control engine #3
  4. Fuel control engine #4
  5. Gear lever up or off
  6. Gear lever down or off
  7. Outboard landing lights
  8. Inboard landing lights
The gear lever switches are supposed to be mounted such that either one of them is in the "on" position, or both of them are "off". There are many ways of doing this. You can use two microswitches that detect the end positions of the gear lever. Or you can use one three-lead (SPDT) three-position toggle switch which shares the common line of the T8 (careful!!!). Or one six-lead (DPDT) three-position toggle switch (safer). Your choice.

There is no difference between left or right landing lights. If you want four switches, just parallel them, so that either inboard switch activates the function, etc.

The LEDs are assigned as follows:

  1. Fire engine #1
  2. Fire engine #2
  3. Fire engine #3
  4. Fire engine #4
  5. Master Caution
  6. Master Warning
  7. (unassigned)
  8. (unassigned)
All modules If you have the correct setup with 747IPC and the correct line in the VMREAD.CFG file, all visual displays will follow PS1's Standby Power switch. Your flight deck will go pitch black dark when you switch the power off. There is a general dimmer in the Bridge's Setup menu, which is not yet connected to a rotary input encoder.


I received reports that very fast turning of the GF166's radio tuning knobs or the GF45's rotaries can cause a crash of the program with something like a stack overflow. However I cannot reproduce this behaviour. If you can make the program crash in any way, please notify me!

Source Code

If you would like to peek at the sources or extend the program, you're welcome.

© 2017 Jeroen Hoppenbrouwers For more information, mail to hoppie@hoppie.nl