Jump to content

DirectX adapter for Brunner FFB Joystick ready


Recommended Posts

Hi Chuls!

I have an Brunner yoke CLS-E MK II. Except of P3D which works fine, I want it to use for racing games like F1 2020 and I was happy to find your Arduino solution, but I didn't get it to work. Is it a problem, that I have installes vJoy? What are the exact settings in CLS2Sim? (for example: Is it "Emulate USB HID Joystick"? And which Port do I have to wite in the brunnerdx.py file - TCP, UDP, UDP response Port ...?)

By the way, I have connected the yoke via USB. Is this correct? A lot of questions ;)  Thank you very much!

Miguelito

Link to comment
Share on other sites

1 hour ago, Chuls said:

that's great news! just curious, what DCS module are you using?
by the way, I just updated the Arduino code because some shakes were much weaker than they should. If you download the zip file again and compile and upload to the Arduino, you will get better effects

I am using the Bf-109 and yes the effexts needed to be increased

PC: 9980XE @ 64GB RAM /2080Ti, Samsung C49RG90

Joystick bases: VKB GFIII, FSSB R3L, Brunner CLS-E, Virpil Mongoos CM2

Joystick grips: Realsimulator (F-18CGRH, F-16SGRH-CE), VKB (MCG Pro, F-14, KG-12), Virpil Warbrd

Throttles: Virpil CM2, Kantorrin,

Other: TrackIR, TM MFDx2 (Cubesim Screenx2), Virpil Control Panel 1

Link to comment
Share on other sites

1 hour ago, Miguelito.MH said:

Hi Chuls!

I have an Brunner yoke CLS-E MK II. Except of P3D which works fine, I want it to use for racing games like F1 2020 and I was happy to find your Arduino solution, but I didn't get it to work. Is it a problem, that I have installes vJoy? What are the exact settings in CLS2Sim? (for example: Is it "Emulate USB HID Joystick"? And which Port do I have to wite in the brunnerdx.py file - TCP, UDP, UDP response Port ...?)

By the way, I have connected the yoke via USB. Is this correct? A lot of questions 😉 Thank you very much!

Miguelito

I would have never thought of using this for driving games but I guess it should work!
You can have VJoy installed, that shouldn't affect anything. The important settings in CLS2Sim is that you need to have the checks "Enable" and "External Control" under the "Remote Control" in the settings screen.

 

Just in case, did you follow the instructions I updated recently in https://github.com/jmriego/brunnerdx?
When you say this is not working for you what is the problem you are facing? Which step was giving you a problem or what error message did you get?

Link to comment
Share on other sites

Now I followed the instructions. I had not installed Python, but now it is. The game is recognising the yoke, but I don't get force feedback effects. And I can't calibrate the yoke with the Windows gamecontroller settings. The cross doesn't follow the yoke inputs. Any ideas? Thanks a lot!

CLS2Sim.jpg

Link to comment
Share on other sites

ok, so if it's recognizing the yoke that means you are almost there. I think you might be missing some of these steps?

  • Open a command prompt (Windows button, then open Command Prompt)
  • type pip install pyserial
  • Execute the brunnerdx.py file that it's on the folder you extracted on step 1. You can double click on it or right click->Edit with IDLE->Run->Run Module

The goal with the last step is to have a windows open that says "Connected to Arduino". That is a program that needs to be running on the background to connect the Arduino and the Brunner. So every time you want to play a game you have to have CLS2Sim and brunnerdx.py running

Link to comment
Share on other sites

vor 4 Stunden schrieb Chuls:

ok, so if it's recognizing the yoke that means you are almost there. I think you might be missing some of these steps?

  • Open a command prompt (Windows button, then open Command Prompt)
  • type pip install pyserial
  • Execute the brunnerdx.py file that it's on the folder you extracted on step 1. You can double click on it or right click->Edit with IDLE->Run->Run Module

The goal with the last step is to have a windows open that says "Connected to Arduino". That is a program that needs to be running on the background to connect the Arduino and the Brunner. So every time you want to play a game you have to have CLS2Sim and brunnerdx.py running

You are right! With "Open the brunnerdx.py" I thought you mean "open in an editor" for the IP and force settings. But "execute" was the key word!

Now it works in principle, but: The forces sent to the yoke appear to be more random than correct. Regardless of whether in the flight simulator or in the racing game.

Do you think you might need some kind of ffb translation specifically for this yoke?

Link to comment
Share on other sites

no worries, I actually changed the phrasing of that to make it clearer.
I guess if you are finding it working kind of randomly maybe there's a difference between the yoke and the CLS-E base? I didn't see anything on the docs but might be.

 

One thing you could do to help me figure this out, do you mind (while you have both the CLS2Sim and the brunnerdx.py file running) executing the "reference/ForceTest.exe" file and run these tests?

1. Mark the "Spring Center" effect with pitch and roll both at 100. This should make the yoke try to return to the center when you move it in any direction

image.png

2. Change the Pitch force from 100 to 0. Does the yoke try to return to center only on the roll axis?

3. Now the opposite test, pitch 100, roll 0. Does the yoke move freely on the roll axis but want to return to center pitch?

Link to comment
Share on other sites

 

vor 2 Stunden schrieb Chuls:

1. Mark the "Spring Center" effect with pitch and roll both at 100. This should make the yoke try to return to the center when you move it in any direction

2. Change the Pitch force from 100 to 0. Does the yoke try to return to center only on the roll axis?

3. Now the opposite test, pitch 100, roll 0. Does the yoke move freely on the roll axis but want to return to center pitch?

Pitch and roll centering in "Spring center" works perfectly. But a pitch offset -100 is not forward, but 6 o'clock!  "Constant force" left and right seems to be the opposit direction (90 deg = left, 180 deg = right, but 0 deg = 12 o'clock and 180 = 6 o'clock). In "Grooves" the spacing has no effect. "Friction" feels a little bumpy, it means, not really constant. And "Damping" is ok.

I hope, this helps 😉

 


Edited by Miguelito.MH
Link to comment
Share on other sites

yes that helps a lot!
I think the pitch, both the position and the forces, are being inverted in the Brunner Yoke.

Testing against the Microsoft FFB2, the correct forces would be:
 

Direction Spring pitch offset Spring roll offset Constant Force Angle
Down 100 0 0
Left 0 -100 90
Up -100 0 180
Right 0 100 270

 

I am uploading this file here to test if this is the correct solution for the yoke. Can you overwrite the brunnerdx.py file with this version and let me know if this fixes it for you?
https://gist.github.com/jmriego/772f6940ed23c8f7c2b05d98d4a121ab

Link to comment
Share on other sites

I remember with the MSFFB2, you have to use the ‘Tune FFB’ option under the controls for each axis, and check the ‘invert’ box.   Not sure if that helps.  

 

i9 12900k @ 4.9ghz, 32gb RAM

Nvidia RTX 3090

Windows 11 x64

Valve Index

Brunner CLS-E w/RS F16GRH, Virpil TCS Rotor Plus Collective, BRD F1 Pedals, WH Throttle, FSSB R3 w/WH Grip, PointCTRL v1

Link to comment
Share on other sites

I tested the new file:

Spring center works fine (negative offset = forward / left). But now constant force is totally inverted (90: yoke moves left, like it was before /  180: yoke moves to 6 o'clock position).

 

One question of definition: in the help windows of ForceTest.exe you can read: "...specifies the direction in which the force comes from". So, if the force comes FROM 90 degrees, the yoke has to move to the left! ??

Link to comment
Share on other sites

yes, that sounds like it's doing what it's supposed to do. By down I mean 6 o'clock, or towards you (that would move the nose of a plane up). Up would be 12 o'clock, away from you (nose down).

 

Sorry, I'm not sure I understand the problem then.

On 2/14/2021 at 8:33 PM, Miguelito.MH said:

 

"Constant force" left and right seems to be the opposit direction (90 deg = left, 180 deg = right, but 0 deg = 12 o'clock and 180 = 6 o'clock).

 

 

6 hours ago, Miguelito.MH said:

But now constant force is totally inverted (90: yoke moves left, like it was before /  180: yoke moves to 6 o'clock position).

 

The correct thing to happen is that 0 degrees moves the yoke towards you, nose up. Not sure if that would be the original file or the new one I sent you to test

Link to comment
Share on other sites

  • 2 weeks later...

I have made huge changes to the way this works and it's now a proper app instead of a script.

Hope this is going to make things easier for anyone who wants to try this!

I have done lots of testing with IL-2 Cliffs of Dover and Battle of Stalingrad but I am going to keep on working on it and improving it little by little. Let me know if you find any issues!

https://github.com/jmriego/brunnerdx



108774216-4aa71300-7557-11eb-81a9-aa1215

Link to comment
Share on other sites

Downloaded, installed and set up all very easy and confirm that it works for DCS - buffeting in the Bf-109 before leading edge stall excellent. Suggestion is to have multiple tabs for the force feed back forces, or at least the option of forces based on speed and forces based on effects - but so far very happy - Thank You for this excellent app.

 

Have you uploaded this to the Bruuner Forum? I feel it deserves wider credit

PC: 9980XE @ 64GB RAM /2080Ti, Samsung C49RG90

Joystick bases: VKB GFIII, FSSB R3L, Brunner CLS-E, Virpil Mongoos CM2

Joystick grips: Realsimulator (F-18CGRH, F-16SGRH-CE), VKB (MCG Pro, F-14, KG-12), Virpil Warbrd

Throttles: Virpil CM2, Kantorrin,

Other: TrackIR, TM MFDx2 (Cubesim Screenx2), Virpil Control Panel 1

Link to comment
Share on other sites

Thanks @Lynchsl62! No, I didn't yet as I'm not sure Brunner will really like this existing as they have been saying they will eventually work with DirectX, but I'll post it and see

I still have some effects like friction and joystick damper (similar to hydraulics) to improve, then I'll investigate adding some adjustments tabs. Enjoy!

Link to comment
Share on other sites

  • 2 weeks later...

The program has been updated - yet to try it out, but was great to see the app actually informed me that there was an update. Great works thanks.

 

As a tip for Il-2, I set the pitch and roll axis in the control settings, but this was for the CLS-E joystick and was joystick_0. I then opened the devises file in the input directory and cut and paste the Arduino joystick to the 0 configuration, and the CLS-E to the setting of the Arduino which in my case was 7

 

0,%220b136e90-6d56-11eb-0000545345440180%22,Arduino%20Micro|

7,%22f9041c70-3d47-11ea-0000545345440180%22,CLSE%20Joystick%20HOTAS|

 

For £20 I get great force feed back effects in the simulator and the game.

Outstanding, I cannot recommend this enough and looking forward to contimued development

PC: 9980XE @ 64GB RAM /2080Ti, Samsung C49RG90

Joystick bases: VKB GFIII, FSSB R3L, Brunner CLS-E, Virpil Mongoos CM2

Joystick grips: Realsimulator (F-18CGRH, F-16SGRH-CE), VKB (MCG Pro, F-14, KG-12), Virpil Warbrd

Throttles: Virpil CM2, Kantorrin,

Other: TrackIR, TM MFDx2 (Cubesim Screenx2), Virpil Control Panel 1

Link to comment
Share on other sites

Thanks! Glad to hear to you are enjoying it!

 

I didn't know you could change the mapping that way, that's a really good solution. I was having that issue too because while this program is running you have the Brunner and the Arduino moving at the same time so when trying to map the axes in IL-2 it detects the first one to move. I have added another solution for this in the new version with a delay parameter. The idea is that it will introduce a delay between your Brunner moving and the Arduino moving after a few seconds. You set it at let's say 5 seconds, go to IL-2 and move the joystick, then click on the control you want to map. It won't detect the Brunner because you are not moving it but after a few seconds the Arduino will move so that's the axis that will be mapped.

 

Besides that there's also some improvements with the speed of transfer with CLS2Sim and some forces so it just feels a bit smoother in general

Link to comment
Share on other sites

  • 5 weeks later...

Thanks a lot for this cool tool, I'm enjoying it a lot. Haven't been testing other simulations, but in DCS it's working great.

 

I have only often the problem, that in DCS half of the time the FFB will not be activated when first entering a module. In the external forcetest.exe tool all the effects are working, but when entering the for example the Hip, then the joystick will not be centered. I'm doing then some random magic (restarting DCS, the Brunner software ( incl disabling active roll and pitch, then reenabling), restarting your tool and most of the time it's working after this. But I don't know which is the cause of this behaviour, because sometimes the random magic doesn't solve the problem.

I'm assuming a DCS problem, not one in your software, but maybe someone using your tool has a workaround for this 😉

 

Thanks again for this nice tool.

 

Edit: Sometimes by restarting DCS, starting a SP Mission, waiting for FFB, then going for MP is working. Strange...


Edited by Jharvis
Link to comment
Share on other sites

4 hours ago, Jharvis said:

I have only often the problem, that in DCS half of the time the FFB will not be activated when first entering a module. In the external forcetest.exe tool all the effects are working, but when entering the for example the Hip, then the joystick will not be centered. I'm doing then some random magic (restarting DCS, the Brunner software ( incl disabling active roll and pitch, then reenabling), restarting your tool and most of the time it's working after this. But I don't know which is the cause of this behaviour, because sometimes the random magic doesn't solve the problem.

I'm assuming a DCS problem, not one in your software, but maybe someone using your tool has a workaround for this 😉

I have experienced the same issue and my workaround is to unplug completely the Brunner from the power and the USB and then reinstate power and USB to allow Windows to recognise the devise. This typically occurs when stopping and starting DCS in the same Windows session and occasionally between DCS flights. Not a show stopper for me compared to the outstanding benefits. 
 

 

there are reports that there is a thermal cut out which causes the Brunner to switch off, this at well be the issue but it has never occurred inflight. 

PC: 9980XE @ 64GB RAM /2080Ti, Samsung C49RG90

Joystick bases: VKB GFIII, FSSB R3L, Brunner CLS-E, Virpil Mongoos CM2

Joystick grips: Realsimulator (F-18CGRH, F-16SGRH-CE), VKB (MCG Pro, F-14, KG-12), Virpil Warbrd

Throttles: Virpil CM2, Kantorrin,

Other: TrackIR, TM MFDx2 (Cubesim Screenx2), Virpil Control Panel 1

Link to comment
Share on other sites

No worries! Glad to see more people using it 🙂

I really don't know what might be causing this but I'm working right now on some changes to the USB communication. I found out that Windows was not receiving the current status of the effects. So it was able to play some forces but Windows didn't know if they were working or not.

When I upload the new version you will see a link to it on the log window. I have no idea if that will fix this DCS issue but let's hope it does!

Link to comment
Share on other sites

On 4/11/2021 at 9:09 PM, Lynchsl62 said:

...

there are reports that there is a thermal cut out which causes the Brunner to switch off, this at well be the issue but it has never occurred inflight. 

 

To me that has happened a lot when playing Elite Dangerous. Basically because there are many times in which you have to push the joystick at max deflection. What I did is lower the strength of the joystick by going to CLS2Sim and setting a higher hydraulics value. It seems to work but not sure if it's the best solution

 

On 4/11/2021 at 5:04 PM, Jharvis said:

...

 

I have only often the problem, that in DCS half of the time the FFB will not be activated when first entering a module

....

 

Edit: Sometimes by restarting DCS, starting a SP Mission, waiting for FFB, then going for MP is working. Strange...

 

I have just uploaded a newer version of this tool that sends back to DCS the status of the FFB joystick. If we are lucky that might solve the issue. When I manage to get a GPU I'll do some debugging in DCS

Link to comment
Share on other sites

I'm sure you're going to love your Brunner joystick even more 🙂

It would be really difficult to get the blend effects to work. The main issue is that CLS2Sim only allows marking "external control" yes or no. There doesn't seem to be a way to connect to DCS and at the same time allow external control.

I guess the most logical way would be if the Brunner DCS plugin was open sourced so we can run something similar that blends with the normal FFB. Another option could be trying to make a device that CLS2Sim believes is a Brunner joystick but I guess for that we'd have to reverse engineer the device communications

Link to comment
Share on other sites

I see, so when 'external control' is used, pretty much All of the options under the 'effects' tab are inhibited because it is no longer connected to the Simulator, but to external control instead? 

 

That's a shame, I was hoping to be able to have ground rumbles or hydraulics failure (if that is supported in DCS) in addition to Heatblur's decent FFB effects.

 

I've only just received my brunner, recent upgrade from a G940, haven't tried it out yet. 


Edited by faycheung
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...