X-Plane 11.35 comes with a few additions to the fuel system, in order to make it more flexible for third-party developers, hopefully removing the need to override it in many cases.

Fuel-arm for oddly shaped tanks

New to X-Plane 11.35 is the possibility to enter two longitudinal arms for the fuel tank position, one for empty and for full (by default, X-Plane just copies the arm of the empty tank to the full tank). Normally, the moment of the fuel in a tank is expressed by the arm of the fuel tank, multiplied by the fuel weight. On some planes the arm itself changes as fuel is used from an oddly-shaped tank, and the moment changes by both the weight difference and the arm difference. King Airs are notable examples of where the fuel arm changes with fuel level. By setting a different arm for the full tank, X-Plane will accurate simulate the mass and balance effect of the fuel in such tank arrangements.

Fuel pump pressure per tank setting

This is a setting in Plane Maker that has existed for a long time, even before X-Plane 11. By giving tanks individual fuel pump pressures, designers can control the order in which X-Plane is going to empty the tanks.

When multiple tanks are available according to the fuel selector setting (e.g. fuel selector to “left” with multiple tanks on the left side), the pump with the highest pressure will supply the fuel until its tank is empty. This is comparable to the system of override pumps, found for example on a 747.

New to X-Plane 11.35 is the ability to change fuel pump pressure at run-time via a dataref, allowing precise control over which tanks will be providing fuel at any given time.

For example, on a 737 the center tank pumps provide a higher pressure than the wing tanks, therefore, the center tank is first emptied before any fuel is taken from the wing tanks.

Firewall shutoff valves

Commands for the left and right firewall shutoff valves (sim/fuel/fuel_firewall_valve_lft_open, etc.) have existed in X-Plane since before version 11. X-Plane 11.35 adds data refs, too. Use them to your advantage.

Fuel tank Role – NEW to X-Plane 11.35

In addition to the pressure, a tank can now be assigned a role:

  • Normal – this is the default and retains the logic directed by the pump pressure
  • Feeder – this is a tank that feeds an engine and is always kept full from the other tanks on this side with an automatic transfer pump. If a feeder tank exists, the engine will only get its fuel from the feeder, while other tanks can provide fuel to keep the feeder full.
  • Aux – this is the opposite of a feeder tank: it cannot feed the engine directly, but it is used to keep the feeder tank full as long as possible with the automatic transfer pump
  • Trim – like an AUX tank, but never automatically transferred to or from. You need to use “fuel transfer from” or “fuel transfer to” to change this tank’s fuel level

Note that this is not necessarily what the POH calls the tank! For example, in a Cessna Golden Eagle the tip tank is called “Aux” tank, but it can be selected to feed the engine directly, with the fuel selector. Therefore, it is not an “Aux” tank for X-Plane, since that would mean it is not selectable to feed the engine directly. In order to model the preference for main or aux tank, one would use the new pressure dataref.

Note that a stabilizer tank on a 767-400ERX or a 747-400 is not a “trim” tank. Despite being in the stabilizer, it contains useable fuel for both in flight or on the ground. On the other hand, Tank 11 in a Concorde is a “trim” tank, because it cannot be filled on the ground without the plane tipping over!

Automatic transfer pumps

With tanks on each side of the airplane being configured as Feeder and Aux, the transfer pump on each side will keep the feeder tank full until the aux tank runs dry, and then turn on the “NO TRANSFER” warning light.

A feeder pump can be operated in automatic mode (where you can specify a difference that triggers the pump to operate) or override mode, where the pump runs continuously.

Automatic cross feed

This is also new for 11.35. The common crossfeed manifold allows an electric boost pump to supply pressure to the engine on the other side and thus cross-feed an engine if the on-side boost pump has failed.

If the cross feed is operated in auto mode, the same limit value that triggers the low fuel pressure annunciator will also trigger the crossfeed valve. In manual mode, the crossfeed valve can be open or closed.


sim/cockpit2/fuel/transfer_pump_left	int	y	enum	Transfer from left AUXes to left FEEDers: 0: Off, 1: Auto, 2: On/Override 
sim/cockpit2/fuel/transfer_pump_right	int	y	enum	Transfer from right AUXes to right FEEDers: 0: Off, 1: Auto, 2: On/Override
sim/cockpit2/fuel/transfer_pump_activation	float	y	kg	Automatically transfer from AUXes to FEEDers in auto mode when feeder has more than X kg left to full
sim/cockpit2/fuel/fuel_level_indicated_left	float	n	kg	Indicated fuel level left, shows total or only nacelle tanks depending if user is holding down the aux-tank button.
sim/cockpit2/fuel/fuel_level_indicated_right	float	n	kg	Indicated fuel level right, shows total or only nacelle tanks depending if user is holding down the aux-tank button.
sim/cockpit2/fuel/firewall_closed_left	int	y	boolean	Firewall valve closed, left
sim/cockpit2/fuel/firewall_closed_right	int	y	boolean	Firewall valve closed, right
sim/cockpit2/fuel/auto_crossfeed	int	y	enum	0=Off 1=Auto 2=On - If fuel pressure on one side is low, due to fuel pump failure for example, cross-feed is opened to allow one pump to supply pressure to both engines.
sim/cockpit2/fuel/no_transfer_left	int	n	boolean	Warning light, will illuminate when transfer from aux to feeder is requested, but aux tank is empty
sim/cockpit2/fuel/no_transfer_right	int	n	boolean	Warning light, will illuminate when transfer from aux to feeder is requested, but aux tank is empty
sim/cockpit2/fuel/transfer_test	int	y	boolean	Transfer test switch. 0 = normal, -1 = test left, +1 = test right
sim/cockpit2/fuel/tank_pump_pressure_psi	float[9]	y	psi	Pressure generated by the fuel pump per tank. If multiple tanks are accesible per the fuel selector, fuel will be consumed from the tanks in order of pump pressure


"sim/fuel/left_xfer_override" ,"Aux to feeder transfer left override."
"sim/fuel/left_xfer_on" ,"Aux to feeder transfer left on."
"sim/fuel/left_xfer_off" ,"Aux to feeder transfer left off."
"sim/fuel/left_xfer_up" ,"Aux to feeder transfer left off->on->overide."
"sim/fuel/left_xfer_dn" ,"Aux to feeder transfer left override->on->off."
"sim/fuel/right_xfer_override" ,"Aux to feeder transfer right override."
"sim/fuel/right_xfer_on" ,"Aux to feeder transfer right on."
"sim/fuel/right_xfer_off" ,"Aux to feeder transfer right off."
"sim/fuel/right_xfer_up" ,"Aux to feeder transfer right off->on->overide."
"sim/fuel/right_xfer_dn" ,"Aux to feeder transfer right override->on->off."
"sim/fuel/left_xfer_test" ,"Aux to feeder transfer test left."
"sim/fuel/right_xfer_test" ,"Aux to feeder transfer test right.
"sim/fuel/auto_crossfeed_on_open","Crossfeed valve open."
"sim/fuel/auto_crossfeed_auto" ,"Open crossfeed valve when pressure difference detected."
"sim/fuel/auto_crossfeed_off" ,"Close crossfeed valve and turn off auto-crossfeed."
"sim/fuel/auto_crossfeed_up" ,"Auto-crossfeed off->auto->on."
"sim/fuel/auto_crossfeed_down" ,"Auto-crossfeed on->auto->off."

We have always had independent left and right fuel selectors for twins as datarefs, but not as commands. These are the new commands:


Finally, we can now distinguish between center and aft tanks in the transfer logic, so these commands are added for the transfers:


to enable fuel transfer to and from an aft trim tank.

7 comments on “The X-Plane fuel system

  1. Hi! It’s really great seeing all these changes, very much appreciated! I wanted to ask if there will be an option added where the APU will also be using fuel. I wasn’t able to find a setting for this in planemaker.

  2. Good day. Testing this new beta and now i cannot start engines on my Tu154 project. Previously i just set sim/cockpit/engine/APU_N1 = 100 and sim/cockpit2/pressurization/actuators/bleed_air_mode = 4 (APU) so i had everything for starting engines via plugin by using commands. I created my own codes for simulating APU and just fed sim with necessary DataRefs to make it “think”, that i have an APU and it’s running. But now it doesn’t work. APU_N1 DataRef always shows 0, but APU_running shows 1. Also I see there are new DataRef (at least to me), such as sim/cockpit2/engine/actuators/starter_hit, sim/flightmodel2/engines/starter_is_running and sim/flightmodel2/engines/starter_making_torque, but i can’t get them to work.
    What should i do to start engines from the plugin, using DataRefs and commands? Seems like there is some problem with starting APU, controlling air bleed or something…

    1. Ok, i located the problem. Seems like all i had to do is just enable the APU in Plane Maker. Not sure if this option was there before… Now all devs should use it, if they want to make fully custom systems.

  3. Interesting addition. But still not applicable to my Tu154 project. Hopefuly it will work and i don’t have to rewrite codes for fuel system.
    Here is the riddle: Tu154 has 3 engines and 6 tanks. Two tanks in each wing and two in the middle. All engines use fuel only from tank #1 (aft middle one) and all other tanks has pumps, that transfer fuel into tank #1. How to make such system, using provided DataRefs? So far i found no other solution, than just write proper numbers into sim/flightmodel/weight/m_fuel[#tank] after fuel flow and transfers calculations.

    I remember talking to JAR, how he did his fuel system for his JARDesign Airbus A320Neo, and he said he made only one tank and made all calculations for CG position by plugin.

    I’d love to have some DataRefs, covering all 9 tanks, not only 3. Still need something for engines to set which tank a given engine should use. And for fuel transferring between all 9 tanks in any desired direction. Boeing 747 has 4 engines and 7 tanks. Normally each engine uses its respectful tank. How to make that?

  4. Can the B737 fuel cut off levers used for starting and shutting down the B737 engines be put on a switch in 11.35 version.

  5. i want to write fuelweight into the aircraft’s fuel total weight via a flywithlua script. i tried out several datarefs. Here one example:
    if inputparam == 1 then
    dataref(“fuelweight” , “sim/aircraft/weight/acf_m_fuel_tot” , “writable”)

    fuelweight = math.floor(tonumber(sValue))
    dataref(“fuelweight” , “sim/aircraft/weight/acf_m_fuel_tot” , “writable”)
    elseif manualVSpeedParam == 2 then
    dataref(“load” , “sim/flightmodel/weight/m_fixed” , “writable”)
    Payload = tonumber(sValue)
    load = tonumber(sValue)
    I send the code part for the writing of payload as an example that this one works. I use the print statements as a control element for the developers console. Many thanks for taking time to read this. Would be great if you have a solution

    1. acf_m_fuel_tot is NOT the current fuel level, but the maximum fuel the aircraft can hold when all tanks are full. To put fuel into the tanks, the datarefs you are looking for is sim/flightmodel/weight/m_fuel[N] where N is 0..8, this way you can fill each tank individually.

Leave a Reply

Your email address will not be published. Required fields are marked *

Please do not report bugs in the blog comments.
Only bugs reported via the X-Plane Bug Reporter are tracked.