-
-
Notifications
You must be signed in to change notification settings - Fork 94
Big Motor only rumbles above certain strength value #52
Description
Summary
Big Motor (BM) commands sent to the controller have two parameters: duration and strength. The values range from decimal 0 to 255. Regarding rumble strength:
- decimal 0 turns off the BM
- decimal 1 should activate the BM at minimum strength
- decimal 255 activates BM at maximum strength
What actually happens is that the BM is only activated at a value far greater than decimal 1. With a controller Model: CECHZC2M (Date Code: 2D) the minimum value is decimal 64.
Testing
- If possible, do these tests with the controller connected by bluetooth
- Set the controller in SXS mode
- Make sure the controller is not hidden by HidGuardian/HidHide. If the controller is hidden with HidHide you can just open its Configuration Utility, disable the "Enable device hiding" box in the devices tab and then reconnect the controller to make it visible again.
- Download and extract this archive
- Run "MightyHIDTest.exe". If it immediately closes then your controller is not in SXS mode or is hidden
- MAKE SURE TO NOT CLICK INSIDE THE BLACK WINDOW OTHERWISE THE PROGRAM WILL CRASH. If you need to select the window to write make sure to click on the top of the command window
- Run the test once (write "1" and then ENTER). Your controller should rumble weakly. If it does not, then the minimum value that makes your controller rumble is greater than decimal 64
- Close the command window
Now, to discover what is the minimum strength that makes your controller rumble, we need to edit the settings.json file in the extracted folder to vary the strength value. First, let's choose a new strength value.
If your controller rumbled with decimal 64, then the next lower value is decimal 63. If it didn't rumble then let's go higher with decimal 65
The reason I'm writing "decimal" everywhere is because we will need to use values in hexadecimal. E.g.:
- decimal 65 is hexadecimal 41
- decimal 64 is hexadecimal 40
- decimal 63 is hexadecimal 3F
So, after choosing the new decimal value you want to test you need to find its hexadecimal representation. You can convert from decimal to hexadecimal by using this site or by looking in the table in the image below, where hexadecimal values are in black and decimal in red:
After having chosen the hexadecimal representation of the new test value:
- Open the
settings.jsonfile with a text editor (windows' notepad is enough, just right click on thesettings.jsonfile -> Open with -> Choose another app -> Select notepad on the list - REPLACE the first 2 digits AFTER THE "7F" AS SHOWN IN THE IMAGE BELOW with the new value:

- Close the notepad and choose to save changes
- Run MightyHIDTest.exe again, choose "1" again
- Check if your controller will rumble
- Keep trying different values until you find the minimum value where the controller rumbles
Reporting your findings
It would be great if you provided the maximum amount of info regarding your controller and the tests:
- Your controller model, as well as other relevant info (if you could post a photo of the information sticker in the back of your controller it would be great, but it's not a necessity)
- The minimum value that makes your controller rumble (specifiy if the value is in Decimal or hexadecimal. Better yet, inform both)
- A print of your DSHMC tool so it's possible to see the genuine controller check
- The identification property of your controller. Keep in mind that 1) you need to be on the latest released driver 2) be connected by USB for this info to be available on Windows
Proposed solution:
Re-scale BM Strength values to the range that actually activates the motor. If the minimum value is not consistent across all devices then include in DSHMC tool a slider to adjust the minimum value used for the re-scaling function.
