SpaceMouse Enterprise will 0 an axis if it's held steady for too long

Post questions, comments and feedback to our 3Dconnexion Windows Development Team.

Moderator: Moderators

Post Reply
notkevinhise
Posts: 24
Joined: Thu Jun 20, 2019 8:33 am

SpaceMouse Enterprise will 0 an axis if it's held steady for too long

Post by notkevinhise »

I'm just trying to use the SpaceMouse as a joystick, in an application that uses SDL to handle joystick input. Apparently there's a feature within the SpaceMouse to start sending out 0 values for the axis if it's pushed and held relatively steady for "too long". When the deflection on the axis is released then the SpaceMouse sends out values that are opposite...for a while...and then once again goes back to zero.

The application controls a pan-tilt and it's useless to stop moving when you're trying to follow something that moves at a constant rate.

I get it that the SpaceMouse wasn't designed to be used as a joystick, but is there any way to turn off this feature?

Does it require the driver be installed, or the SDK used, or some custom setting changed in an XML file?
jwick
Moderator
Moderator
Posts: 3331
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Re: SpaceMouse Enterprise will 0 an axis if it's held steady for too long

Post by jwick »

Sign up as a developer and send us an email.
I can send you some code to turn this firmware feature off.
notkevinhise
Posts: 24
Joined: Thu Jun 20, 2019 8:33 am

Re: SpaceMouse Enterprise will 0 an axis if it's held steady for too long

Post by notkevinhise »

It'd be helpful if you could point to an instruction on how to "sign up as a developer" vs. "register"....which is what I've done 3 times already (2 of them seem successful).

And who do I send an email to? Do I need a special developer email address to send the email?

Can you just post the code?

Thanks.
notkevinhise
Posts: 24
Joined: Thu Jun 20, 2019 8:33 am

Re: SpaceMouse Enterprise will 0 an axis if it's held steady for too long

Post by notkevinhise »

testing if I can reply.
jwick
Moderator
Moderator
Posts: 3331
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Re: SpaceMouse Enterprise will 0 an axis if it's held steady for too long

Post by jwick »

We got your email. We sent a tool that will do this for you.
notkevinhise
Posts: 24
Joined: Thu Jun 20, 2019 8:33 am

Re: SpaceMouse Enterprise will 0 an axis if it's held steady for too long

Post by notkevinhise »

So, the utility program I received works for some axis but not all, apparently.

I was trying to implement the knob twist as a video playback ****** control (so twist the knob CCW and the video plays backwards, twist CW and it plays forwards, and the speed of each is dependent upon how much you twist) but I've found that the SME will stop sending the axis value after a few seconds, and then when released send the reverse for a few seconds. So I replied to Uta about a utility to turn off the auto-center firmware feature for all axis.

I really don't understand the purpose of that feature.

But...it raises a question: If there's a way to turn off the firmware auto-zero function, does that mean I need to figure in some "dead zone" so that I can tell when the SME has been released and should have returned to center (and zero...but that's been disabled so maybe in some circumstances it never can).

Thanks.
notkevinhise
Posts: 24
Joined: Thu Jun 20, 2019 8:33 am

Re: SpaceMouse Enterprise will 0 an axis if it's held steady for too long

Post by notkevinhise »

The word ****** has been blocked out?
notkevinhise
Posts: 24
Joined: Thu Jun 20, 2019 8:33 am

Re: SpaceMouse Enterprise will 0 an axis if it's held steady for too long

Post by notkevinhise »

OK...why is

s
h
u
t
t
l
e

...as in "space ******" a blocked out word?
notkevinhise
Posts: 24
Joined: Thu Jun 20, 2019 8:33 am

Re: SpaceMouse Enterprise will 0 an axis if it's held steady for too long

Post by notkevinhise »

Uta replied, I see. Not sure yet what the issue is, however. I think he just sent the same utility that we already have.

Thanks.
notkevinhise
Posts: 24
Joined: Thu Jun 20, 2019 8:33 am

Re: SpaceMouse Enterprise will 0 an axis if it's held steady for too long

Post by notkevinhise »

I've discovered my problem...I'd neglected to add the parameters to the system call to HIDSetAutoCalibrate, so apparently it wasn't doing anything. I've been able to make the change and now the auto calibrate function seems to be correctly disabled for the twist axis.

Apologies for my error, and for raising this issue again. Thanks.
notkevinhise
Posts: 24
Joined: Thu Jun 20, 2019 8:33 am

Re: SpaceMouse Enterprise will 0 an axis if it's held steady for too long

Post by notkevinhise »

Still not sure about how necessary the calibrate function is, however. If the SME knob tends to become biased over time with use, so that it doesn't return to zero anymore unless it's "calibrated", then I'm going to speculate that we'll need a way to force the calibration. Or else plan on some "dead zone" in the center which can be ignored by our application.

If an engineer thought that just a few seconds of holding the knob steady with your hand (which isn't steady by any means) was enough of a threshold to determine via firmware that the knob has been released and is back at the center, then I'm worried with some use during the day, the knob will lose the ability to "center" until the whole system is rebooted.

So...is it possible to force the calibration via some executable? Or some USB commands?

Thanks.
jwick
Moderator
Moderator
Posts: 3331
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Re: SpaceMouse Enterprise will 0 an axis if it's held steady for too long

Post by jwick »

The auto-calibrate function is mainly for a startup problem.

If the user has something resting on the device cap when it boots it will save that as its center position. When the user removes the object the cap will return to its mechanical center, and it will calculate that the user is pushing it in the opposite direction.

This is particularly an issue for wireless devices when the user picks up the device to turn on the power switch while holding it sideways. The weight of the hanging sprung mechanism is enough to define a new center position. When the user rights the device, it calculates the mechanical center as a new position.

Other than those scenarios, generally the device doesn't start drifting over time. If it is drifting, there is probably something broken inside and it needs to be replaced.

The API has a function to calibrate the device. I haven't seen anyone use it in years. The driver also has a Calibrate function under the 3Dx systray icon.

You can increase the null / dead region of the device with the driver. Users have done that for "bumpy" environments.

It will always send an all zero event when slipping into the null region, no matter how it is defined. This is crucial.
Post Reply