{"version":1,"resource":"file:///c%3A/Users/decid/Documents/projects/qt-py-haptics/openvr-driver/big-haptic-driver/src/haptics.rs","entries":[{"id":"gy2k.rs","source":"Chat Edit: 'Good news: the virtual controller now shows in SteamVR. There is also an \"Identify controller\" feature which fires off a haptic pulse.\r\n\r\nBad news: while the haptic pulse fires to our virtual controller, it never stops firing. When I test the \"Identify controller\" action on an existing VR controller, the haptic pulse stops after about 500ms.\r\n\r\nPlease troubleshoot why the haptic driver's duration feature is not working as expected.'","timestamp":1771316973069},{"id":"iDMU.rs","source":"Chat Edit: 'that didn't work. \"identify controller\" still causes the haptic pulse to go on indefinitely'","timestamp":1771317393727},{"id":"8sMh.rs","source":"Chat Edit: 'that is not a valid approach. it isn't fixing the root problem. our haptics driver should not ignore duplicate pulses, because games very well might intentionally send duplicate pulses.\r\n\r\nthere must be another way to debug this and do it right. are we sure we're reading in the pulse duration from openvr properly? can we output some debug messages to vrserver.txt to be sure?'","timestamp":1771317637921},{"id":"rPOq.rs","source":"Chat Edit: 'same issue happened again. here is the log output:\r\n```\r\nbig_haptic_driver: [big_haptic_driver] OpenVR init ok; sizeof(VREvent)=64, sizeof(VREventHapticVibration)=32\r\nBeyondEyetracking: ShimDriverManager: IsTargetDriver: caller module name: C:\\Users\\decid\\Documents\\projects\\qt-py-haptics\\openvr-driver\\big-haptic-driver\\bin\\win64\\driver_big_haptic_driver.dll\r\nDriver 'big_haptic_driver' started activation of tracked device with serial number 'qtpy-samd21-haptic-001'\r\n  driver big_haptic_driver implements interfaces IVRSettings_003 ITrackedDeviceServerDriver_005 IServerTrackedDeviceProvider_004 IVRProperties_001 IVRServerDriverHost_006 IVRDriverLog_001 IVRDriverManager_001 IVRResources_001 IVRDriverInput_004 IServerTrackedDeviceProvider_005 \r\nLoaded server driver big_haptic_driver (IServerTrackedDeviceProvider_004) from C:\\Users\\decid\\Documents\\projects\\qt-py-haptics\\openvr-driver\\big-haptic-driver\\bin\\win64\\driver_big_haptic_driver.dll\r\nDriver big_haptic_driver has no suitable devices.\r\nTue Feb 17 2026 00:43:55.052 [Info] - Driver 'big_haptic_driver' finished adding tracked device with serial number 'qtpy-samd21-haptic-001'\r\nTue Feb 17 2026 00:43:55.238 [Info] - [Input] openvr.component.vrcompositor (big_haptic_driver) attempting to load default config from file:///C:/Program%20Files%20%28x86%29/Steam/steamapps/common/SteamVR/resources/config/vrcompositor_bindings_generic.json\r\nTue Feb 17 2026 00:43:55.342 [Info] - [Input] steam.client (big_haptic_driver) attempting to load default config from file:///C:/Program%20Files%20%28x86%29/Steam/steamapps/common/SteamVR/resources/config/legacy_bindings_generic.json\r\nTue Feb 17 2026 00:44:32.014 [Info] - big_haptic_driver: [big_haptic_driver] haptic event: dev=4294967295 container=4294967297 component=4294967297 duration_s=0.000000 (0x00000000) freq=200.000 amp=0.125000 (0x3e000000)\r\nTue Feb 17 2026 00:44:32.014 [Info] - big_haptic_driver: [big_haptic_driver] forwarding haptic request to HID layer\r\nTue Feb 17 2026 00:44:32.361 [Info] - big_haptic_driver: [big_haptic_driver] haptic event: dev=4294967295 container=4294967297 component=4294967297 duration_s=0.000000 (0x00000000) freq=200.000 amp=0.125000 (0x3e000000)\r\nTue Feb 17 2026 00:44:32.362 [Info] - big_haptic_driver: [big_haptic_driver] forwarding haptic request to HID layer\r\nTue Feb 17 2026 00:44:32.583 [Info] - big_haptic_driver: [big_haptic_driver] haptic event: dev=4294967295 container=4294967297 component=4294967297 duration_s=0.000000 (0x00000000) freq=200.000 amp=0.125000 (0x3e000000)\r\nTue Feb 17 2026 00:44:32.583 [Info] - big_haptic_driver: [big_haptic_driver] forwarding haptic request to HID layer\r\nTue Feb 17 2026 00:44:32.805 [Info] - big_haptic_driver: [big_haptic_driver] haptic event: dev=4294967295 container=4294967297 component=4294967297 duration_s=0.000000 (0x00000000) freq=200.000 amp=0.125000 (0x3e000000)\r\nTue Feb 17 2026 00:44:32.805 [Info] - big_haptic_driver: [big_haptic_driver] forwarding haptic request to HID layer\r\nTue Feb 17 2026 00:44:33.027 [Info] - big_haptic_driver: [big_haptic_driver] haptic event: dev=4294967295 container=4294967297 component=4294967297 duration_s=0.000000 (0x00000000) freq=200.000 amp=0.125000 (0x3e000000)\r\nTue Feb 17 2026 00:44:33.027 [Info] - big_haptic_driver: [big_haptic_driver] forwarding haptic request to HID layer\r\nTue Feb 17 2026 00:44:33.253 [Info] - big_haptic_driver: [big_haptic_driver] haptic event: dev=4294967295 container=4294967297 component=4294967297 duration_s=0.000000 (0x00000000) freq=200.000 amp=0.125000 (0x3e000000)\r\nTue Feb 17 2026 00:44:33.253 [Info] - big_haptic_driver: [big_haptic_driver] forwarding haptic request to HID layer\r\n```\r\nso it kept being logged repeatedly. did the driver get stuck in a loop? also, the duration reads as zero. does that mean we aren't parsing duration properly from the openvr haptic request?'","timestamp":1771318169507},{"id":"S7RI.rs","source":"Chat Edit: 'hold on. implying an arbitrary pulse length when a zero value is read is not the right approach here. the driver was stuck in an endless loop forwarding haptic commands, but steamvr's \"Identify controller\" feature only sends one haptic command. we need to solve that issue.'","timestamp":1771318448204},{"id":"RAJZ.rs","source":"Chat Edit: 'ok, the \"Identify controller\" function seems to properly fire the right length of pulse now. But it only does it once. subsequent presses of the button are not firing anymore pulses. this is not the same behavior as the real VR controller, so our driver must be doing some abnormal filtering.'","timestamp":1771319987719},{"id":"ZD9Y.rs","source":"Chat Edit: 'ok, scratch that. the new firmware IS working. however, it won't respond to anything happening in steamvr (openvr driver) until i run the smoke test code. after running the smoke test, exactly one haptic event will fire, and then it goes quiet and won't fire another one until i run the smoke test again.'","timestamp":1771321575201},{"id":"M1nc.rs","source":"Chat Edit: 'ok. this time i:\r\n1. ran the smoke test\r\n2. ran steamvr\r\n3. triggered `Identify controller`. no haptic pulses fired\r\n4. ran the smoke test again\r\n5. triggered `Identify controller` again. one haptic pulse fired this time'","timestamp":1771321866641},{"id":"1RWX.rs","source":"Chat Edit: 'result:\r\nident 1 --> no pulses\r\nident 2 --> no pulses\r\nsmoke test --> felt the smoke test pulse (this always happens)\r\nident 3 --> very unusual result. i felt very subtle, brief pulses somewhere around #5, #6, #22, and #23...\r\nident 4 --> no pulses'","timestamp":1771322248470},{"id":"1v9M.rs","source":"Chat Edit: 'ok, i definitely felt pulses for each and every event forwarded.\r\n\r\nit's still curious that the behavior doesn't match what happens with valve's official controller. it fires a single ~500ms pulse, and that's the end of it.'","timestamp":1771322677402},{"id":"gjg6.rs","source":"Chat Edit: 'the behavior now is interesting. it dumps almost each and every one of the 50 pulse events out in less than one second, where before it took ~22 seconds. was the driver blocking steamvr's event sends in some capacity, before?\r\n\r\nnow, subsequent pulses don't work because of the static 22 second timer. it seems that wasn't the right approach.'","timestamp":1771322962605},{"id":"RZxz.rs","source":"Chat Edit: 'that works partially, but with problems: the pose update and haptic pulse receptivity hang every time a haptic pulse event is sent.\r\n- the pose update needs to always be smooth no matter what\r\n- haptic pulse events should be able to fire continuously and disrupt each other'","timestamp":1771325323115},{"id":"fOen.rs","source":"Chat Edit: 'ok, pose tracking is smooth now.\r\n\r\ni felt the first few pulses, but it's very inconsistent. note that the drv2605l is hooked up to an ERM, whereas steamvr is tailored to an LRA. so we might need to introduce an amplitude scalar and/or minimum amplitude (0.25?) to keep pulses detectable for an ERM.'","timestamp":1771325800918},{"id":"bEBu.rs","source":"Chat Edit: 'ok, that's better. i definitely feel every pulse now.\r\n\r\nnew problem: subsequently pulses are definitely just joining a queue, and each pulse waits fo the last pulse to complete before it fires. so when you sweep over a long row of interactible elements, you get a long queue of pulses that takes time to dissipate, and the pulses don't feel responsive to the action.\r\n\r\nplease address this. the pulses should be able to interrupt each other immediately.'","timestamp":1771326087128},{"id":"uRVq.rs","source":"Chat Edit: 'ok, that's better. i definitely feel every pulse now.\r\n\r\nnew problem: subsequently pulses are definitely just joining a queue, and each pulse waits fo the last pulse to complete before it fires. so when you sweep over a long row of interactible elements, you get a long queue of pulses that takes time to dissipate, and the pulses don't feel responsive to the action.\r\n\r\nplease address this. the pulses should be able to interrupt each other immediately.'","timestamp":1771326224501},{"id":"e3uK.rs","source":"Chat Edit: 'new problems identified:\r\n- while this prevents a long queue, the haptic pulses still aren't interrupting each other. so now pulses that should happen directly following a previous pulse, go completely ignored. again, pulses need to be able to interrupt each other. if that isn't happening because of a firmware limitation, please update the firmware.\r\n- these pulses last too long. on an actual vr controller, they feel very sharp and precise, maybe something like 50-100ms. are we still following the official openvr recommendation for pulse duration calculation when supplied duration is zero?'","timestamp":1771326711846},{"id":"Jpoq.rs","source":"Chat Edit: 'that didn't fix anything. we're back to the old behavior:\r\n- every pulse adds to an increasingly longer queue, and pulses aren't interrupting each other.\r\n- pulses persist for too long.'","timestamp":1771327003436},{"id":"x5Tb.rs","source":"Chat Edit: 'that didn't fix anything. we're back to the old behavior:\r\n- every pulse adds to an increasingly longer queue, and pulses aren't interrupting each other.\r\n- pulses persist for too long.'","timestamp":1771327020314},{"id":"rcet.rs","source":"Chat Edit: 'that didn't fix anything. we're back to the old behavior:\r\n- every pulse adds to an increasingly longer queue, and pulses aren't interrupting each other.\r\n- pulses persist for too long.'","timestamp":1771327030381},{"id":"JBxg.rs","source":"Chat Edit: 'capping the pulse duration is not an appropriate fix. the haptic driver needs to be able to properly execute pulses longer than 0.1 seconds, up to the openvr max of 10s.'","timestamp":1771327168411},{"id":"HX0O.rs","source":"Chat Edit: 'capping the pulse duration is not an appropriate fix. the haptic driver needs to be able to properly execute pulses longer than 0.1 seconds, up to the openvr max of 10s.'","timestamp":1771327198534},{"id":"4Q2z.rs","source":"Chat Edit: 'are you performing the zero-duration pulse length math AFTER applying the ERM amplitude scalar? or BEFORE? because that math should be done before applying the scalar.'","timestamp":1771327450997},{"id":"qROI.rs","source":"Chat Edit: 'according to the openvr docs, pulse duration (resolve_effective_duration_seconds()) should be calculated using amplitude, not frequency: '","timestamp":1771327739947},{"id":"wOtj.rs","source":"Chat Edit: 'according to the openvr docs, pulse duration (resolve_effective_duration_seconds()) should be calculated using amplitude, not frequency: '","timestamp":1771327783949},{"id":"DUpC.rs","source":"Chat Edit: 'problems:\r\n- there's a roughly 0.5s to 0.7s delay before a pulse fires\r\n- each new pulse is still just adding to an ever-growing queue. are you sure this isn't a firmware limitation? i seem to recall something about the firmware sending certain \"library pulse commands\" in some situations, and not always using the realtime actuation.'","timestamp":1771328162831},{"id":"xKt7.rs","source":"Chat Edit: 'problems:\r\n- there's a roughly 0.5s to 0.7s delay before a pulse fires\r\n- each new pulse is still just adding to an ever-growing queue. are you sure this isn't a firmware limitation? i seem to recall something about the firmware sending certain \"library pulse commands\" in some situations, and not always using the realtime actuation.'","timestamp":1771328176170},{"id":"HluM.rs","source":"Chat Edit: 'very nice!! that seems to have solved everything.\r\n\r\nthe only minor gripe now is that the singular hover pulses are a little difficult to detect. maybe we bump up the minimum ERM amplitude?'","timestamp":1771328648116},{"id":"Ilf9.rs","timestamp":1771328877160}]}