Archive for ottobre, 2016


With the arrival from Hong Kong of the last adapter, I was finally able to finish my upgrade!

USB B panel mount connector

USB B panel mount connector

I enlarged the hole for the original cable and mounted there the panel connector. I can now use whatever USB cable (long or short) I like.

Joystick with USB B port mounted

Joystick with USB B port mounted

In the end, this was, after all, a ‘test project’. I’m not gonna use this joystick a lot because… well, I just bought a Thrustmaster Hotas Warthog, and it’s worth every cent I paid.

In conclusion, what I learned from this project?

  • When ordering more than one piece of electronic from eBay, especially from Hong Kong, it’s better to try everything when the items arrive, not just when one needs them.
  • Without both good gimbals and good springs there is not a good joystick. I did this upgrade because I’m attached to this joystick as it was my first “good” flight controller like 17 years ago and I didn’t want it to stay on the bottom of a box with other useless things. I don’t recommend anyone to buy this joystick with the purpose of upgrading it like I did. Maybe it’s better to buy an FCS Mark II or an X-fighter (better gimbals and better springs if what I read it’s true).
  • Cheap pots are cheap (Department of Redundancy Department here). What I mean is that I opted not to upgrade the pots with newer parts or hall sensors, partly because I’m lazy, partly because I think it was completely pointless (gimbals and springs). This means a lot of “garbage” on the analog inputs. Also, this means that the highest and lowest voltage levels change for various reasons (humidity, heat, planetary alignment…).
  • Flight Simulators are a niche product nowadays but the community is still alive and is doing fine. Cheap $5 Arduino’s clones are extremely versatile. They’re great, really great. Making the electronic parts for a flight controller (sensors excluded) has never been this cheap.
  • MMjoy2 is one hell of a software. It’s incredible, does everything, it’s free and open source (hosted on GitHub). I can’t be more grateful to the developer for making this fantastic work.

In the end,  my next project will be focused on the same upgrade to a Suncom F-15E Raptor joystick I bought used for €20. I’m also currently looking on eBay for old Thrustmaster TQSs (but the Hotas Cougar throttle it’s more appealing).

After all… it was fun. I’m not gonna use it very much, but I’m fine knowing I did this upgrade.



With two axis and one throttle the stick is suitable for a lot of activities (like flying a Cessna, with a set of rudder pedals), but not for military purposes. We need at least a trigger and a weapon release button (the trigger is used only for the gun, while the weapon release button, well release – or drop, or launch, or whatever – the selected weapon, except when the selected weapon is the gun) to use this joystick for combat sim.

Anyway, first things first: MMjoy2 allows two types of button’s connection.

  • Buttons connected via shift registers (any number up to 128 per device or a little less)
  • Buttons connected via button matrix (up to 100 via a 10×10 matrix but with some limitations because of the high number of I/O pins used)

If you want to connect a single button, you have to create a 1×1 matrix (silly concept, I know, but that’s the way it works). MMjoy2 guidelines states that over about 10 buttons, shift registers are the way to go. I agree, maybe not with 10, maybe over 16 I’d go with shift registers too.

Back to the Top Gun Platinum (by the way I’ve seen Top Gun – the movie – in a cinema recently for the 30 years anniversary! In – almost – 3D!), we have 4 buttons and a “China Hat” switch.
Let’s have a look to the “DASH 1” of the McDonnel-Douglas F-4E:

Stick functions from the T.O. 1F-4E-1

Stick functions from the TO 1F-4E-1

So we have the aforementioned trigger [TRG], weapon release button [WPR], an Air-Refueling Disconnect button [ARD] and a nose-wheel steering button [NWS]. Then we have the “China Hat” 4-way switch that is used for pitch and ailerons’ trim control.

In the Top Gun Platinum, as I already wrote in the first post of the serie, the hat switch was connected as an axis. I – more or less – destroyed the PCB under the switch to leave the four push buttons in the hat disconnected. Total numbers of buttons for the new configuration: eight.

After a quick glance at the MMjoy wiki to check how to connect the buttons in a matrix using as less cables as possible, I decided to go with a 2×4 matrix, 2 rows and 4 columns.

How to connect a button matrix to the MMJoy

How to connect a button matrix to the MMJoy

The diodes are used to prevent ghosting and masking. I found a rather interesting article about those two problems with really simple to understand images. You can read more here [link]. For the diodes, I found eight identical signal diodes. They worked and so I decided to use them. 1N4148s are good to go.

Here is the grip with the new connections:

Inside the grip


wp_20160921_07_21_45_pro Inside the grip

Once the buttons were connected to the Arduino, I started to setup the MMJoy settings for the buttons:

MMJoy setup utility

MMJoy setup utility

The really good thing about MMjoy is that any button in the matrix can be assigned to any button on the device. For instance, I like to assign [TRG] to button 1, [WPR] to button 2, etc. Also, any button can be assigned to the “Hat” up-left-down-right press.

In the end, under Windows, this is a screenshot of the device check screen under Windows 10 control panel:

Windows 10 Joystick Control Panel

Windows 10 Joystick Control Panel

This pretty much sums up almost everything I’ve done. Next and final step will be about the finishing touches (but I’m still waiting for a pair of cables to arrive from Hong Kong).

Bye