Here I will gather all info I can find out about the different force effects and their USB commands. All values seem to be little-endian. Also, general note, it seems like some effects are affected by the direction of the force, denoted by *** All values are examples of actual commands that I captured on the USB interface, not the only ones available. GENERAL: Playing: 60 00 - standard header 01 - ID 89 - playing options 01 - play 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Stopping/removing: (why are they rolled into one?) 60 00 - standard header 01 - ID 89 - playing options 00 - stop 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF_CONSTANT: Initialization: 60 00 - standard header 01 - ID 6a - new constant effect(?) fe ff - strength *** 00 00 - attack_length 00 00 - attack_level *** 00 00 - fade_length 00 00 - fade_level *** 00 4f - ? f7 17 - time in milliseconds, unsigned 00 00 07 00 - offset from start(?) 00 ff ff - end of new effect(?) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Modifying: (It may be possible to modify the effects all at once, not sure) (In any case, so far I only investigated the constant modifiers) Direction: n/a Constant force: 60 00 - standard header 01 - ID 0a - modify constant force 05 16 - constant force 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Envelope: 60 00 - standard header 01 - ID 31 - modify envelope 84 - ID of envelope attribute ( attack_level 82, attack_length 81, fade_level 88, fade_length 84 ) 63 04 - value attribute should be set to 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Duration: 60 00 - standard header 01 - ID 49 00 41 - modify timing? 6c 20 - length in milliseconds 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF_RAMP: (Why on earth is it this difficult to figure out how a fucking ramp works?) Init: 60 00 - standard header 01 - ID 6b - new ramp effect f6 7f - ? *** (these two have something in common but no idea what exactly yet) fe ff - ? 00 00 f7 17 - time? 00 80 - some kind of marker 00 00 - attack_length? f6 7f - attack_level? *** 00 00 - fade_length? f6 7f - fade_level? *** 04 - invert (going "down", 05, going "up", 04) 4f f7 17 - time again? 00 00 00 00 - offset 00 ff ff - end of init 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF_SPRING: Init: 60 00 - standard header 01 - ID 64 - new conditional effect fc 7f - positive coefficient (right?) fc 7f - negative coefficient (left?) fe ff - deadband (left?) (deadband + offset) (fe ff means no deadband) fe ff - deadband (right?) (deadband + offset) a6 6a a6 6a fe ff fe ff fe ff fe ff df 58 a6 6a 06- some weird hard-coded values to do with springs? 4f f7 17 - duration 00 00 00 00 - offset 00 ff ff - end of init 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF_DAMPER + FF_FRICTION + FF_INERTIA: Init: 60 00 - standard header 02 -ID 64 - new conditional effect fc 7f - positive coefficient (right?) fc 7f - negative coefficient (left?) fe ff - deadband (left?) (deadband + offset) (fe ff means no deadband) fe ff - deadband (right?) (deadband + offset) fc 7f fc 7f fe ff fe ff fe ff fe ff fc 7f fc 7f 07 - some weird hard-coded values to do with friction? 4f f7 17 - duration 00 00 00 00 - offset 00 ff ff - end of init 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF_PERIODIC: 60 00 - standard header 01 - ID 6b - new periodic effect 00 00 - magnitude *** fe ff - phase (left/right) 00 00 - offset of effect (forward/backward) e8 03 - period 00 80 00 00 - attack_length? 00 00 - attack_level? *** 00 00 - fade_length? 00 00 - fade_level? *** 01 - type of periodic ( square 01, sine 03, triangle 02, sawtooth down 05, sawtooth up 04 ) 4f f7 17 - duration 00 00 00 00 - offset 00 ff ff - end of init 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF_AUTOCENTER: 60 08 - header plus settings? 03 - set autocenter force 8f 02 - force (between ff ff and 00 00) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Rotation angle: 60 08 - header plus settings? 11 - set rotation angle 55 d5 - angle (between ff ff and 7b 09, one degree is roughly 3c) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00