News:

Precision Simulator update 10.189 (5 August 2026) is now available.
Navburo update 13 (23 November 2022) is now available.
NG FMC and More is released.

Main Menu

Compatibility Honeycomb throttle

Started by Masterrenderer, Sat, 19 Jul 2025 20:00

Masterrenderer

Hi,

How compatible is the Honeycomb Bravo Throttle. Do the thrust reversers work and the lights. If not, how do you have these setup?

Thanks.


voipmeister

Hello,

You can use Macroflight's 'psxhacks' to have more granular control over your USB devices, provided that they are supported by the 'PyGame' module. The Honeycomb Bravo is supported and if you look at the project @ Github and check the config_examples directory, you'll find my sample config for the Honeycomb Bravo. I have 4 separate thrust + reverse levers working with this config.

Using 'psxhacks' should be fairly straightforward if you use the instructions provided. I've been enjoying it for a while now  :)
Seb

JG

Hi Seb, I would like to pick your brain about Honeycomb Bravo to PSX interface...specifically reverse thrust application. My current setup uses a mechanical approach to make then break the switch action of the #2 reverse selector and tied to Hardy's reverse cycle solution. So I apply reverse, deploy and max power is activated. At the desired time I select the reverser to stow and because of the mechanical hack reverse idle is activated. I then stow the reversers using another button or keyboard if someone else is the pilot flying and I'm in the observer chair.
I have just received a set of these in the picture.
These are nice because they give a full set of TOGA and AT disconnects in the correct location. Additionally the reverser action is not as tight as the original levers which means pulling the reverse lever on doesn't move the whole lever past the detente. This allows the area of movement behind the throttle detentes to be used for reverse thrust control with the correct kind of interface software. I'm hoping you or Macroflight might have a clue on how to make that a reality? So the idea is, the detente position becomes idle instead of fully back (this is probably easiest managed with readjustment in PSX but I'm asking because that may not be the case with another layer of software doing the other action). When the reversers are applied the area behind the detente becomes reverse idle to max reverse. The reverser switch would be made the entire time the lever is in the reverse position and then open again when moved to the stow position.
I know this subject has been done to death but these new lever heads now open some possibility for better operation without the enormous price tag.
Any suggestions or assistance appreciated, cheers, J.G.

voipmeister

Hi JG,
Sorry -- I missed this message and have not been flying for a two+ months due to IRL things happening (work, house, family). Not bad things but focus has not been on flying lately.

How I use the reversers:
- Upon landing, I pull the reverser handles up (the Bravo supports 'on' and 'off', so they're set to 'on' (individually per engine as per config)
- I wait a bit
- I push the throttle levers forward to apply max thrust
- Around 80kts I pull the throttle levers back to idle
- Around 60kts I press the reverser handles down to stow the reversers

This is based on the example config in the Github repo. I have seen the ProDeskSim goodies this week, but haven't examined them closely. I suspect you can apply my config, with the addition of the TO/GA button (which is originally in a clumsy place, so I haven't configured that).
Seb

JG

G'day Seb, hope all is well, I go dark as real life intervenes too.
To me pushing the throttles forward to operate reverse thrust is a very "alien feeling". I agree that you have come up with a good way to operate the reverse sleeves. Can you tell me what your code actually tells PSX when to you engage the reverse levers? I assume it somehow injects negative values into Qs436 and knowledge of how that is done could be of great help...but how it does that would require a good deal of additional explanation to me because when it comes to code and interpreting it, I'm a complete techno-cripple! My skills lie in electronic circuitry and I have started a project that only requires some opp amps, the addition of a USB analogue axis board and some cmos switches to generate the 4 additional axes for reverse from the area behind the idle detents on the Bravo. I'm still designing the lockout to make it impossible to engage reverse at a prohibited stage of flight....it maybe that PSX would prevent that anyway, I have some tests to do before the build continues to find these things out, I'm expecting to see an error displayed but no reverse sleeve action should a reverse axis value increase while the same engine is not in Fwd idle. The switches in the Bravo underneath the idle detents might assist with this along with some voltage comparison on the lever position and the micro switch on the reverse levers to ensure correct selection is only ever possible.
I will look again at Macro's Github and see if I can nut anything else out.
Cheers, and thanks J.G.

JG

Hi again Seb....OK have had a little time to revisit this and look over Macro's info again. Turns out I have completely misunderstood the operation of the axes and the axes micro switches on the Bravo. The range of the axis ends at the detent, the micro switch I thought was under the detent actually doesn't activate at the detent but after you pull aft past it....which means a complete rethink of what I was going to do. I really like what Macro has done with Python and I've had a blind mans look at your Bravo code.....but because of my lack of knowledge, I really don't have much of a clue how to use it properly. Seems though that for someone with the knowledge it wouldn't be too hard to make Qs436 (Tla) inject -3000 into the integer string at pulling of the reverse switches and then inject -8925 at pulling the lever aft past the detent and using that switch to instigate it. I can't really get my head around how you guys have managed to make the reverse selectable on individual engines? I'm still thinking a hardware solution because that will be way quicker than learning Python and less of a disruption to others as I ask stupid questions.....
Thanks again Seb, J.G.

voipmeister

#6
Hi JG,

The relevant portion in the example config is this:

    'Bravo Throttle Quadrant': {
        'axis motion': {
            0: {
                # A throttle axis that uses a button to switch into
                # reverse mode.
                'axis type': 'THROTTLE_WITH_REVERSE_BUTTON',
                'psx variable': 'Tla',
                'axis swap': False,
                # We have a detent to limit forward travel
                'axis min': -1.00,
                'axis max': 1.00,
                # Values to send to PSX at idle and full thrust
                'psx idle': 0,
                'psx full': 5000,
                # PSX values to send at reverse idle and reverse full
                'psx reverse idle': -3000,
                'psx reverse full': -8925,
                # Only possible to toggle reverse when axis is in this range
                'reverse lever unlocked range': (-1.0, -0.90),
                # The PSX engines (1-2) controlled by this throttle
                'engine indexes': [0],
                # The button that triggers reverse
                'reverse button': 8,
        # 'static zones': [(0.62, 1.00, 1.00)],  # axis min, axis max, axis replacement value
            },
            5: {
                'axis type': 'THROTTLE_WITH_REVERSE_BUTTON',
                'psx variable': 'Tla',
                'axis swap': False,
                'axis min': -1.00,
                'axis max': 1.00,
                'psx idle': 0,
                'psx full': 5000,
                'psx reverse idle': -3000,
                'psx reverse full': -8925,
                'reverse lever unlocked range': (-1.0, -0.90),
                'engine indexes': [1],
                'reverse button': 9,
        # 'static zones': [(0.62, 1.00, 1.00)],  # axis min, axis max, axis replacement value
            },
            4: {
                'axis type': 'THROTTLE_WITH_REVERSE_BUTTON',
                'psx variable': 'Tla',
                'axis swap': False,
                'axis min': -1.00,
                'axis max': 1.00,
                'psx idle': 0,
                'psx full': 5000,
                'psx reverse idle': -3000,
                'psx reverse full': -8925,
                'reverse lever unlocked range': (-1.0, -0.990),
                'engine indexes': [2],
                'reverse button': 10,
        # 'static zones': [(0.62, 1.00, 1.00)],  # axis min, axis max, axis replacement value
            },
            3: {
                'axis type': 'THROTTLE_WITH_REVERSE_BUTTON',
                'psx variable': 'Tla',
                'axis swap': False,
                'axis min': -1.00,
                'axis max': 1.00,
                'psx idle': 0,
                'psx full': 5000,
                'psx reverse idle': -3000,
                'psx reverse full': -8925,
                'reverse lever unlocked range': (-1.0, -0.90),
                'engine indexes': [3],
                'reverse button': 11,
        # 'static zones': [(0.62, 1.00, 1.00)],  # axis min, axis max, axis replacement value
            },

You will notice the idiotic numbering of the thrust levers being 0-5-4-3, which are levers 1-2-3-4 looking at them.

The reversers are triggered by this keyword + button number, per throttle:
                'reverse button': 11,
This example is for the engine #4 lever. Once button 11 is triggered, the reverser is engaged. The default 4-engine levers of the Bravo TQ only have an on/off position, you can't regulate thrust with them. The amount of thrust applied can be regulated by pushing the thrust levers forward. The detent under each thrust lever isn't used. Not exactly a life-like setup, but I like it. The reason I use a per-lever reverser config is that it allows for a specific engine/reverser failure as opposed to when you use only one button action for all reversers.

Ofcourse you could automate the amount of thrust after the reversers are engaged, but I prefer this setup :)

For reference, I use the original Honeycomb 4-engine lever set:



HTH
Seb

JG

Morning Seb, thanks for the extra detail....I see now how you guys have achieved engine selective reverse, I'm guessing the engine index is how the injection values get to the correct place in the integer string of (Tla). As already stated I can't really deal with applying forward lever movement to stop the aircraft....it makes it feel like an aborted landing rather than a full stop and I would start to panic as the speed went down! In a post after the one you kindly responded to I added some further info on the Bravo and a summary of what I'm going to do. The idea is to use the reverse axes as Hardy intended and drive them with a switched resistance network controlled by the relevant switches in the Bravo. Another of my goals while building the entire sim has been to limit as much as possible the existence of little bits of software running in the background to make stuff work....it can be a pain starting it, starting it in the correct order, matching version numbers, putting it in the correct location and the list goes on, especially in a multi PC setup. This is a further reason why I'm heavily biased toward the Simstack hardware because the needed software runs on it's own local hardware via a dedicated router that also acts as a network traffic filter, limiting network traffic and protecting the rest of the sim.
Cheers, J.G.

voipmeister

Quote from: JG on Fri, 13 Feb 2026 22:20Another of my goals while building the entire sim has been to limit as much as possible the existence of little bits of software running in the background to make stuff work....it can be a pain starting it, starting it in the correct order, matching version numbers, putting it in the correct location and the list goes on, especially in a multi PC setup. This is a further reason why I'm heavily biased toward the Simstack hardware because the needed software runs on it's own local hardware via a dedicated router that also acts as a network traffic filter, limiting network traffic and protecting the rest of the sim.

Hi JG, I get that. I try to have as less moving parts as possible, but it's a tradeoff against functionality and in this case I really like the added functionality :)
Seb

JG

Hi all. A USB question has arisen from this on going project. As the investigation into the Bravo progressed I found the PIC is programmed to give a switch output rather than an axis negative extension past the idle detentes. So the decision was taken to replace the factory PIC with a Leo Bodnar BU 0836A, giving the 8 axes required to do all the throttle work. The speed brakes and flaps still being handle by the factory PIC. With a bit of change over hardware the pots on the Bravo throttle levers change between the throttle axes and the reverse axes depending on the position of the reverse levers. You then pull on the reverse levers which forces the thrust levers aft of the detent giving reverse power setting ability. Nice, we now have a reasonably realistic action when landing to give reverser control. My problem is this; the USB action in as it should be with windows joy.cpl but in PSX two of the axes are appearing with the same ident name and interact with each other? These are the ones that are "slider" and "dial" in windows but appear as "slider" twice on the PSX USB config page. A couple of snaps depicting this are included.

Does anyone have any idea how I might start to fix this?
Cheers, J.G.

JG

Ok, so I've gone around this USB issue by using the original PIC axes for forward thrust and only the first 4 of the Leo Bodnar interface for reverse thrust. I guess the purpose of this post is to outline that the proof of concept of what I was trying to achieve has been realised. I can now control reverse thrust individually and set the desired power using a rearward control input rather than an forward input with a Honeycomb Bravo. The result is quite pleasing. If anyone cares to know what I have done, please post here, but be advised you need some basic electronics skills to do the mod.
Cheers, J.G.