Archive for April, 2011

Use Your Logitech G25/G27 Pedals as Rudder Controls

If you are into flight sims like Flight Simulator X, X-Plane, or IL-2, you know that it’s much more realistic and much cooler to pilot your airplane with real rudder controls.  Unfortunately, the CH rudder pedals are kind of a one trick pony and kind of expensive.  If you happen to also be a sim racer and you happen to have a G25 or G27 wheel with pedals, you’re in luck.  You can used those G2x pedals as your rudder pedals for most flight sims.  I’ve been able to use them for FSX, IL-2, X-Plane, and Wings of Prey.  Theoretically, this should work with anything that uses rudder-type controls. It’s relatively to use the accelerator and the brake as rudder pedals.  The Logitech Profiler will do that for you by combining the accelerator and brake axis.  However, the brake has a much stiffer throw than the accelerator and, for me, it kind of breaks the illusion of flying.  So, we’ll learn how to combine your clutches axis with the accelerator so your feet will be in a more natural position and the throw will feel roughly the same on both pedals.

GET YOUR STUFF

What you’ll need at a minimum is:

  • Logitech G25/G27 Pedals
  • GlovePIE
  • PPJoy (version 0.8.4.5 early release)
  • Microsoft Windows

I also have a Bodnar box which allows me to connect my pedals directly to my computer.  It gives the pedals a much higher resolution than having them connected through the wheel.  The instructions here assume you have one.  If you don’t, you’ll still be able to make this work, but you’ll have to fiddle with the GlovePIE program a bit.  More on that later.

EXTRACT GLOVEPIE

Once you’ve downloaded all of the necessary software, you can begin by extracting GlovePIE.  It’s not an install, so just uzip it to wherever you are going to run it from.  After you’ve extracted the software, you’ll probably want to put a shortcut to GlovePIE somewhere you can launch it before launching your favorite sim.  You’ll be using GlovePIE.exe everytime you want to turn your G25 pedals into rudder pedals.

INSTALL PPJOY

After you’ve taken care of GlovePIE, you’ll need to install PPJoy.  Here is where the fun begins if you are a Windows 7 x64 user (if you are a 32 bit Windows user, you can skip straight to the configuration part).  Microsoft enforces driver signing in 64 bit Windows 7 for security purposes.  This is a good deal for security, but not so much for small hobbyist developers like Deon Van Der Westhuysen.  A Verisign certificate costs upwards of $500 per year…not very attractive for a guy just trying to help the community. In any case, there is good news for us in the x64 boat.  When you launch the installer, you’ll see a message box with some cryptic commands in it.  Essentially, this is what’s going to allow us to install and run PPJoy.  If you’ve begun installing PPJoy, click cancel.  Open a command prompt by clicking Start, then Run, type CMD, and hit Enter (or you can hold the Windows key and press R).  In the DOS window, type the following and hit enter:

BCDEDIT -SET TESTSIGNING ON

After you’ve turned Test Signing on, you you see a message on your desktop telling you that you are in Test Mode.Windows 7 Test Mode If you don’t see this message, PPJoy will not work.  It’s worth noting that if you have the User Account Control turned on, you may need to run the command prompt as the local administrator.  You can do this by finding the shortcut for the command prompt in the Start Menu, right-clicking it, and selecting Run As Administrator.

If you see this message, congratulations, you’ve just made your computer slightly less secure!  I recommend extreme caution when installing anything while running in Test Mode.  When not using your pedals as rudder pedals, I recommend turning this off by running the same command, but change ON to OFF.  Unfortunately, this seems to break the PPJoy install and you’ll need to reinstall it.  So, I’ve warned you about this.  If you goon your computer, I’m not legally, financially, morally, or emotionally responsible.  Like my old First Sergeant used to say, “Fair warning is fair play.”  You can go ahead an continue installing PPJoy like you would any other piece of software.

CONFIGURE PPJOY

After you’ve installed everything, you’ll need to configure a virtual joystick port.  Click Start, Programs, All Programs, and find the PPJoy Joystick Driver folder and launch “Configure Joysticks” and “Add” a joystick.  After adding a joystick, we need to configure it.  You can just use the defaults if you want, but it adds a bunch of stuff I don’t like.  Start the configuration process by clicking “Mapping” and doing the following:

  • Leave the default setting of “modify the mapping of this controller” and click Next
  • Change the Axes dropdown to 2 and make sure there are 0 buttons or POV hats selected (you may only need one axis here, but I chose 2 just to be safe)
  • Change Axis 1 to X Rotation and Axis 2 to Z Rotation and click Next
  • Make the Min setting on Axis 1 to Analog 0 and Axis 2 to Analogue 1 and click Next
  • Click Next on the next screen (everything should be grayed out anyway)
  • Click Finish

Windows Game ControllersYou can click “Done” on the PPJoy configuration window.  If everything is right with the world, you should see a PPJoy Virtual Joystick 1 entry in your Game Controllers settings.  If your Game Controllers window doesn’t show a virtual joystick, you’ll need to repeat the steps above.  It’s very important that a virtual controller shows up here.

CONFIGURE GLOVEPIE

Configuring GlovePIE is sometimes both the easiest and most frustrating part of this process.  GlovePIE is what turns your virtual joystick into a single axis that your flight simulator will be able to use as the rudder axis.  The biggest hurdle you have to overcome is to find out what your axes your computer reads on your virtual joystick.  Probably the easiest way is to buy FSUIPC. It’s an addon for FSX that really does a ton of stuff, but I use it for joystick calibration.  It will also show you what axis your rudder pedals use.

In any case, when launched, GlovePIE is pretty nondescript.  GlovePIEIt just a window with a three tabs and a run button.  We’re interested in the tab that’s labeled “Untitled”.  That’s where we write our program that will tell GlovePIE to turn our accelerator and clutch into one axis that our flight sim can use.  Depending on your pedal configuration, this is going to be much different that what I’ve written for my pedals.  If you have a Bodnar box, you will probably be able to just take the GlovePIE program I’ve written and use it for your pedals.  If you don’t…well, that’s where the frustration happens.  You can try every random axis your pedals could possibly use and you may stumble on the correct ones, but you may not either.  This is where FSUIPC will be helpful.  It’s been a while, but I think you need the full version in order to find joystick assignments.  If you don’t have FSUIPC and can’t afford it, you may want to check the internet and see if you can find the axes that the accelerator and clutch use.

If you have a Bodnar box, the program I’ve written should mostly just work.  There is some modification you may have to make depending on the number of joysticks you have and where your virtual joystick shows up in Game Controllers.  We’ll talk about that in a minute, but for now, just copy and paste the code below in to GlovePIE and save your program someplace you can find it (I keep mine in my GlovePIE directory).

///Combined throttle (X Rotation) and clutch (Z Rotation)
///make virtual joystick axis.  This is required if your
///G25 pedals are using a Bodnar Box.

PPJoy1.Analog0 =  (.5*Joystick2.U) - (-.5*Joystick2.R)

 

The breakdown of the code here is PPJoy1.Analog0 means that your are working with the first PPJoy joystick on the Analog 0 axis.  This is the Analogs you set in the PPJoy configuration.  The (.5*Joystick2.U) – (-.5*Joystick2.R) is where we configure how the axis works.  Before I break this down, I need to point out that this is where your configuration could differ quite a bit depending on whether you have a Bodar box, how many joysticks you have, and where your virtual joystick appears in your Game Controllers control panel.  I have 3 joysticks listed and my PPJoy joystick appears third in the list, so I use Joystick2.  If you are a programmer or a scripter, you probably understand why my joystick appears third in the list and is Joystick2.  Your joystick count starts at zero.  So, your first stick is Joystick0, your second is Joystick1, and your third is Joystick2.  Hey, I didn’t make the rules.

In real aircraft rudder pedals, each pedal is only responsible for half the total movement of the rudder.  The code above takes half of clutch (.5*Joystick2.U) and half of the accelerator (-.5*Joystick2.R) and combines them to be the a single axis (X Rotation).  Notice the accelerator uses a negative number in the assignment. It’s complicated, but this is necessary to make the accelerator work correctly.  If anyone really wants to understand why that is, let me know and I’ll explain it.

ASSIGN YOUR AXIS

Now that you have your axis created and functioning correctly, you need to go to the control panel of your favorite flight sim and configure them to be your rudder pedals (you need to make sure you have GlovePIE up and running the program we just created).  If you’ve done everything correctly, when you press either the accelerator or clutch, your flight sim should assign your new pedals axis to the rudder.

 

Hopefully this is helpful to somebody who has been struggling getting this functioning in x64 Windows or somebody just looking to add rudder pedals to their flight sim without investing more money in yet one more peripheral.  Please let me know if this has been helpful.  if you run across any mistakes, let me know if the comments.

Really Kill that Excel Object

If you’ve tried to use Excel 2007 or above with any of your Powershell scripts, you know that more often than not, when you quit Excel, a process stays running.  Not a huge deal until you’ve got a script scheduled to run several times a week and you end up silly with memory-eating Excel processes. You could kill all EXCEL.EXE processes, but what if you’ve got a scheduler that may be running other Excel processes as well?  If you kill all  running EXCEL.EXE processes, you’ll also be killing other Excel processes that should be running.

I’ve managed to put together some code that will determine what Excel processes are running before your create your Excel object and kill only the process spawned by your script.

## Grab all EXCEL.EXE processes before we create our Excel object.  This will find
## all Excel processes that we don't want to kill.  After we have those, we create
## our Excel object and immediately look at the Excel processes afterward.  There
## obviously a slight chance that you'll grab a process that spawned between our
## $startprocs and $endprocs scans, but it's a pretty small chance.
$startprocs = Get-Process | Where {($_.Name.ToLower() -eq "excel")}
$excel      = New-Object -ComObject Excel.Application
$endprocs   = Get-Process | Where {($_.Name.ToLower() -eq "excel")}
 
//             Your Code Goes Here                                        //
 
## Try to quit Excel (after you've saved your doc).  It's probably not going to work,
## but we're gonna try anyway.
$excel.Quit()
 
## Check to make sure $startprocs isn't null.  If it is null and we don't check, the
## script will blow.  If $startprocs is null, we're going to kill the only running
## Excel process...the one we created.
If($startprocs -gt $null)
{
     $compare = Compare-Object $startprocs $endprocs
     $process  = $compare | % {If($_.SideIndicator -match "=>") {$_.InputObject}}
}
else
{
     $process = $endprocs
}
 
Kill -Id $process.Id