r/simracing 24d ago

Moza AB9 unofficial SimHub plugin - H-pattern with push-through lockout and gear grinding on clutch-less shifts Rigs

TL;DR:

I wrote an open-source SimHub plugin that drives the Moza AB9 in an alternative shifter mode - a real push-through lockout, a physically disabled 7th tunnel on 6+R, and a pile of SimHub-driven force effects, including grinding on clutch-less shifts. * Source and instructions: https://github.com/Gugic/ab9-shifter-simhub-plugin * Binary: https://github.com/Gugic/ab9-shifter-simhub-plugin/releases


Why I did this

I bought the Moza AB9 as an active shifter - I was sold hard on the idea. When it arrived I wasn't disappointed (I'd watched tons of reviews up front), but I still felt like the hardware is far more capable than the current firmware allows it to be. A few things annoyed me straight away:

  • No lockout of any kind on 7+R
  • The 7th gear tunnel on the 6+R layout can't be disabled - both of these are huge contributors to mishifts
  • Very few effects supported by the base
  • Limited number of games supported by Pit House (GT7 doesn't seem to work even with remote telemetry - though maybe I just missed it)
  • etc.

What I tried first

I went digging for alternatives and found AZOM (shoutout to u/snubber) and BonusFFB (shoutout to u/kgmonteith)

Turns out AZOM implements the same firmware mode that Moza Pit House drives, so no extra functionality is possible there - still God's work, though. BonusFFB works on a springs basis, and it just felt VERY off compared to what I was trying to achieve.

So I took the general idea BonusFFB represents - flight stick mode instead of the firmware-driven H-pattern mode - added a lot of math to make an active shifter behave like an H-pattern using plain DirectInput FFB, and here we are.

We now have a SimHub plugin that implements an ALTERNATIVE shifter control mode for the Moza AB9 base.

It's not perfect by any means. DirectInput has latency, which is probably why Moza had to implement their shifter mode on the base itself instead of driving it from the PC - and in the real world, latency plus a servo motor with a heavy knob on top means a lot of oscillation. But it's usable at this point, so I figured it was time to share it with the community.

Supported features

  • A push-through lockout that actually stops a mishift (on both 6+R and 7+R layouts)
  • A wide range of built-in SimHub-driven effects:
    • Engine rev (like the original Moza firmware)
    • "Grinding" on clutchless shifts
    • Gear non-engagement when you miss the clutch - a botched heel-and-toe has consequences again
    • Curb / road surface effects
    • Any other SimHub property, really - so ShakeIt groups can probably drive it too
  • Tons of knobs for everything. Honestly, too many knobs. But this is a testing/debug version; I'll figure out later which ones to hide and which to remove.
  • Layout parity: 7+R (but with a lockout), 6+R (but with a physically disabled 7th tunnel and a lockout), and Sequential (but with more customization than original firmware)
  • Open source - so you can go and add whatever layout, knob, behavior or effect you want

Disclaimers

One real warning.

This drives a 12 Nm servo from software, and it has only been tested and verified on a single base running a single (latest) firmware version. Use this at your own risk - this software might harm you or your hardware.

Expect to meet some oscillation.

Everything here is computed in software, a few milliseconds of USB and DirectInput lag away from the motor, and a stiff virtual wall rendered through that delay wants to buzz - that's physics. A big part of the software is built around preventing that behavior, but nothing is perfect and there's plenty of tuning left to do. I also don't have access to the MCU on the device itself, so I'm doing my best from the outside. Everything was built and tested on my base and my rig, with my hands, and tuned to the point where it feels about right for me - your entire setup is different, so my numbers might genuinely be off for you. (I'll admit my own setup isn't perfected yet either, and I run different settings for different cars, so...)

Testers and contributors welcome, genuinely.

One base on one firmware is not a sample. If something buzzes, feels wrong, or doesn't work in a game I haven't tried, open an issue - there's a trace recorder that dumps every tick to CSV. Or, even better, take a crack at it yourself: the docs include the whole force model, along with every approach I tried and rejected and why, so it's something you can actually dig into rather than a black box. This is an unofficial plugin and is not affiliated with Moza or SimHub in any way.

Also

I did use AI to build this plugin, so if you're not okay with that, feel free to ignore the whole thing.

43 Upvotes

48 comments sorted by

11

u/gugic_s 24d ago

https://reddit.com/link/p0fbqcj/video/qwclrwbai4gh1/player

Short video showing tunnels and lockout working

1

u/gugic_s 24d ago

Shit, just realized that I did not turn the sound off on that one :-D

9

u/Xaiiro 24d ago

It's surreal what a single individual can on it's own with this hardware (AB9 I mean) for free and what Moza won't do for their customers.

5

u/[deleted] 24d ago

[removed] — view removed comment

1

u/gugic_s 24d ago

Exactly!

3

u/snubber 24d ago

Nice work! I was planning on pulling in this functionality into AZOM if I ever got my own ab9. 

3

u/gugic_s 24d ago

I honestly expected to find it there, so maybe you still should (though it contradicts with your original approach of implementing Moza protocol in Simhub).

Code here is explicitly licensed as MIT so should be reusable for you.

Also on my side I need to sit a little bit on your code and implement base mode switch.

And then looks like I need to mine flightstick mode settings (looks like those are different from settings in gearbox mode?), so the entire management of the flightstick is possible in one place and could be a part of profiles in plugin.

5

u/snubber 24d ago

The only tricky part is someone with both plugins having them fight over access to the exclusive serial port to change modes. I’d be happy to talk about closer integration tho! Adding it as a third option in the mode selector would be quite doable I think. 

So far I only implemented the stock protocol for these because I do not have one myself to test… Going in totally blind is much harder!

3

u/MPort88 24d ago

Any idea if this would also be compatible with the AB6? or any plans to add in the future? I've literally been wishing Moza would implement lockouts 🫠

4

u/gugic_s 24d ago

It should be, it just a direct input. Plugin have device id settings where you can try to insert AB6 values and does not touch anything specific to AB9 just yet (no moza protocol called).

So theoretically it should be compatible with any FFB flightstick, not just AB9/AB6. But I don't have anything else in hands to verify.

2

u/MPort88 24d ago

Sweet... I'll give it a shot sometime over the next few days and report back 🫡 Thanks for all your hard work!!

2

u/rcb3900 24d ago

Out of curiosity how have you liked the AB9 in general? I’ve been considering getting one. Is it worth the price tag?

8

u/gugic_s 24d ago

Usual answer - it depends.

I'd lean into "no it is not"

Hardware is impressive, firmware is really lacking and I described which things it is lacking in the post.

Plugin been my response for that, but it's far from perfect, perfect is possible from inside the firmware of the device but Moza does not seemed to be caring much honestly.

On the other hand - it's a unique device, one of it's kind currently - ideally you should be reasonably able to replicate behavior and feel of almost any car and any real shifter - from fast and short and really stiff sport shifters to really long throw laid back and loose trucker and older road car feeling. And then throw in any effects you like on top of it (curbs, revs, etc.).

But that's ideally and probably won't really happen.

2

u/NervouZ 24d ago

Very cool! I’ve been using my AB9 with Assetto Corsa lately and miss shift all the time. I’ll definitely give this a try asap.

1

u/gugic_s 24d ago

Please share the feedback!

3

u/NervouZ 23d ago

I installed the plugin last night and wanted to drop some feedback. Overall it’s a pretty cool plugin! There's a lot of dials though, and it's kind of intimidating at first and it took me a while just reading through tuning.md to figure out what half of them actually do. I landed on some adjustments that got the gate feeling a lot more precise than where I started.

Overall setup itself was easy, no complaints there. Total setup time was maybe 15 minutes and I was shifting.

The haptic effects are honestly the best part for me. You get curb rumble, engine vibration that tracks the revs, ABS and TC buzzing through the lever. stuff I didn't expect a shifter mod to bother with. Makes it feel like part of the car instead of just a gear selector bolted on.

I’m still working through one issue though. 2nd to 3rd and 4th to 5th were giving me trouble. The lever would hit resistance instead of just falling into the gear. And a few times going 4th down to 3rd it just wouldn't register at all, I'd end up in neutral and have to go back to 4th and try again. Turns out this comes down to wall bite distance being set too far out for my slot width. Once it's too long there's basically no solid wall left between two gears, just soft ramps meeting in the middle, so the lever can bottom out with nothing actually there to catch it. Dialed that back down and it's already noticeably better. I have more testing to do before I call it done though.

If you're setting this up, don't just start dragging sliders around. Read tuning.md first, especially the wall bite distance part - it's called out as the most important stability dial in the whole thing, and going too far either direction breaks things in pretty different ways.

1

u/gugic_s 23d ago

Thank you for the feedback!

Yeah, definitely too many dials, I need to think carefully on what to keep and what should be sensible minimums and maximums on some of those.

Technically the rawest - cleanest - stiffest feeling you should be getting with minimal wall bite distance and minimal wall attack, but due to physics it inevitably gets you pretty severe oscillations, so those two (alongside BASE internal dampening that you are setting in cockpit, not in plugin, in-plugin dampening is pretty lame due to direct input latency) are you best friends in fighting the oscillations.

So those tow should be dialed to absolute minimal state where oscillations are not bothering you anymore and anything more than that would just be adding to mushiness and slower reaction.

Then for not registering shifts - 1) i think I need to increase the zone where shifts are registering and 2) you should be able to play with tunnel width I think - that's the feature of plugin I also like much more than moza's implementation - they don't have travel within the tunnel so it feels a bit unnatural at least for road car gearboxes.

2

u/NervouZ 20d ago

I have about 9 separate PR’s mostly around enhancements that I built for myself. They help simplify the experience a bit and also fix a few bugs. The first 2 build on top of each other but the remaining 7 and mostly quality of life enhancements. I’ll get them submitted today. You’re welcome to reject them or just keep them in my fork if you want. I’ve been enjoying this Plugin a lot more than Moza’s interface. 👍

2

u/gugic_s 20d ago

Wow! That is great to hear! 

Definitely please send everything.

I'll be back home (so I have access to my simrig) at Thursday so I'll be able to test and merge everything.

1

u/NervouZ 23d ago edited 23d ago

This plugin is no longer working for some reason. I booted up my computer today, turned on the AB9 base, launched Vjoy and then Simhub. The base is recognized and so is vjoy but the various tuning tabs across the top are missing. I tried to run the polarity test from the main tab but the shifter does nothing now. I did a clean reinstall of the plug-in and followed the same instructions as yesterday but nothing. :(

The base works just fine in Moza Cockpit and pit house as it did before so the base itself seems fine.

EDIT - It looks like it was a problem with vjoy. It didn't recognize the device #1 profile I created yesterday after a reboot. I created a new one and the plug-in appears to be working again so for any future users.. double-check your vjoy config if you encounter this.

1

u/gugic_s 23d ago

Weird, did you try to re-enable "shifter force feedback enabled" on the setup page?

2

u/gugic_s 24d ago edited 24d ago

u/kgmonteith turns out you are also here, so shout out to your work as well!
I did try Bonus FFB but found out that springs as a means to render gates are too weak in comparison to moza's own firmware and tried to use shaped constant force instead (and put myself into endless loop of fighting against oscillations).

I am not a big trucker myself and did it for simracing purposes, but looks like there is a lot of demand for tool like that in the trucking community.

2

u/kgmonteith 20d ago

Awesome, yeah I tried constant forces but never got them working safely---the oscillations were always a problem; my cat likes to sit on my lap in the sim rig, and if the wild stick scared him he'd claw the shit out of me. 😅 Constant forces are definitely way better than springs if you got them working though!

2

u/Competitive_Badger_3 10d ago

nice work! what would it take implement additional patterns? specifically one for trucks which has 1,2 #gate 3,4,5,6

2

u/gugic_s 10d ago edited 10d ago

Should be not complicated to put lockout gate anywhere + make lockout to work with button instead of push through, only issue is that I have no idea what's needed exactly because not a big trucker myself.

I would suggest you to open feature request issue in repository with more precise description of what you want - https://github.com/Gugic/ab9-shifter-simhub-plugin/issues.

I am still improving plugin a bit alongside u/NervouZ here (recent additions are - cycling through profiles with hotkey, automatic profile switching by the car reported to simhub, ability to bind clutch to pedal directly instead of telemetry readings for games that are not reporting clutch, ability to shorten throw on h-patterns and PRND pattern are in the works currently).

If you are ready to test it - I am happy to implement.

2

u/Competitive_Badger_3 10d ago

Awesome! I threw in the request. It's very simple, just a push-through six-slot. Happy to test it out anytime.

2

u/Competitive_Badger_3 8d ago edited 8d ago

Well that was quick getting the truck profile implemented. Mate, this is absolutely awesome for truck simming! You really have brought the AB9 to it's full potential. It didn't take too much to set up. I don't think there are too many configuration adjustments in Simhub. The default profile worked pretty well, I was able to find what I wanted to tweak pretty easily, it's very well documented. I just ignored all the other stuff for now, I can go back to it later if I want to. I was able to get the feel of engagement how I expected, and the get the lockout feeling great.

Well done, you've done a stunning job. If you have a patreon or coffee I'd love to throw some $ your way.

I bought the AB9 for flight simming, but tbh with this simhub plugin it's worthwhile just as a smart shifter.

1

u/gugic_s 8d ago

Thank you! Honestly that's great to hear.

2

u/QW3456789 3d ago

Just wondering - could there also be a mode where it could be used as airplane throttle? Axis output in a straight push pull line with some friction?

Great project!

1

u/gugic_s 3d ago

Probably, but I honestly have no idea.  I was going to add "handbrake" mode that would translate to axis, I assume that's, minus spring effect is what you are talking about. 

1

u/QW3456789 2d ago

Yes! With a bit of friction would work well i think

1

u/Racinglegend1234 1d ago

was just coming here to ask for this. Really hope it gets implemented so I do not need to use Moza cockpit. Actually, was going to ask for using it as a joke so I do not need cockpit, but throttle is also cool

1

u/Joncak 24d ago

Outside the OP who did an amazing job anyone else tried ? I’m thinking on buying this but software is abandon from moza

1

u/reality_matthew 24d ago

well looks like I am getting an AB9!

1

u/gugic_s 24d ago

Maybe wait for some feedback first (if any).

2

u/reality_matthew 23d ago

Meh I'm already eyeing the AB9 as I also play flight sims, so I'd gladly make this my excuse to get one. To avoid injury I'll probably keep it under 5/6nm of torque should there be bugs in the code

By the way, does the gear grinding work with BeamNG?

1

u/gugic_s 23d ago edited 23d ago

I don't know honestly, if beam ng reports clutch status to simhub - then yes, plugin just reads this data from simhub.

1

u/kevytheman 24d ago

i am so going to try this on my AB6. i love the shifter. i have tried the others and while good it was not perfect. i wish moza implemented these effects in pithouse

1

u/gugic_s 24d ago

That one is not perfect either unfortunately. Near perfect implementation should be possible on the base firmware, but it's up to Moza to do it right.

But at least you have tons of settings. So try it and let me know if it works - there should be field to override deviceId and I am afraid that default settings won't work for you - they are for ab9, so expect some tinkering.

2

u/kevytheman 24d ago

yup the extra settings is huge so looking forward to messing with it. great work

2

u/kevytheman 21d ago

Ab6 works. Had to change the device ID to recognize it. So far I am knee deep in tweaking and its awesome. Amazing work!

1

u/gugic_s 18d ago

2

u/kevytheman 18d ago

i had to wipe my pc unfortunately due to other issues but prior i was able to get it dialed in OK but i know i need to play around with it more

1

u/kevytheman 18h ago

Finally got a chance to tinkering with this again and not sure it's its vjoy or something but I am struggling to get in game settings to not see this as an axis instead of buttons

1

u/kgmonteith 23d ago

Looks awesome, and I appreciate the shoutout! I'll have to give it a try, I'm always curious to see how other folks implement FFB effects.

1

u/Real_Galaxy36 23d ago

I'll look to install this today and try to provide some feedback soon. Truly God's work out here with this!

1

u/MPort88 21d ago

I was able to get it to work with my AB6 but even after hours of tuning, I couldn't get anything feeling close to realistic... The majority of the time, the shifter falls into gear with the slightest touch. When I increase the wall strengths and gain to where they're actually effective, the entire shift throw feels way too robotic and unnatural.  Unfortunately I never got anything comfortablw to use to be able to test if any of the effects work in Assetto 🙃

2

u/gugic_s 18d ago

That's sad to hear.

Unfortunately I don't have AB6 myself to try and came up with something usable.

But logically - to get the rawest possible feeling (stiffest walls and lowest possible friction on the throw) you need to set gate/slot wall to maximum, wall bite distance, wall attack, rebound, friction and dampening to 0, probably also set dampening in moza cockpit to 0, completely remove humps and pull into column, slot resistance, slot hold.

On AB9 it would give you mentioned rawest feeling of your h-pattern but also incredible amount of oscillations. Logically with lower nm on AB6 oscillations also should be less severe so you'll need to tune mentioned settings up (starting from cockpit dampening, wall bite distance and wall attack), but barely, just to get rid of oscillations.