Putting Rigidbody with ConfigurableJoint to sleep in any position after slowing

The Situation: I’m building a generic limb system that can auto manage multi joint rotation behavior (think a 2+ jointed turret that needs to rotate all parts in unison to point at baddy mc bad dude over yonder). One of the physical solutions for this limb system involves ConfigurableJoint’s providing the physical limits while my system runs one of several selectable physical models for applying torque to align where the joint points.

What’s Working: My system successfully reaches the desired joint rotation. It uses my custom “joint friction” in conjunction with a frame analysis with detects what force is needed to counter external forces and keep the joint smoothly in place (even though it’s not resting on the ConfigurableJoint constraints in any way).

The Problem: Even though the joint comes to a complete “floating” stop the rigid body will not go to sleep, making it really inefficient. I’ve implemented my own script that analyzes the final velocity and forces the body to sleep if under a small threshold for several fixed frames. Only it immediately wakes up because the internals of ConfigurableJoint seem to apply force even though all rigid bodies are asleep.

I’ve managed to find a few useful threads (mainly this answer suggesting to copying all the data to a custom mono behavior and remove the ConfigurableJoint). This will obviously work but I’d rather not reconstruct the joints every time the turret wakes up. That could end up having huge performance issues if rigid bodies are sleeping and waking up frequently (a definite possibility).

TLDR: Is there some way to keep the ConfigurableJoint asleep when it is stopped in a floating position?

Edit: I’m seeing that setting isKinematic = true might lead to a solution but I know from experimenting in the past this has been a finicky mechanic. We’ll see…

did you manage to fix this? If you make it kinematic joints do still get computed?