psmoveservice / PSMoveService

A background service that communicates with the psmove and stores pose and button data.
Apache License 2.0
593 stars 147 forks source link

PSMoveService does not create registry values for controllers #756

Open catkraze3 opened 3 years ago

catkraze3 commented 3 years ago

I have been trying to pair my controllers for weeks now. I have tried everything I can think of. Originally I was using newer PS4 controllers, but those failed to work. Then I ordered older PS3 move controllers hoping that would fix the issue. The same issues were present with the older controllers. I have received a bunch of different error messages, I will post them in order of receiving them.

libusb: error [init_device] program assertion failed: device address collision with root hub
libusb: error [windows_get_device_list] program assertion failed - existing device should share parent

Then when I try to pair a controller, I get these messages:

[2021-01-14 09:55:41.762]: AsyncBluetoothPairDeviceRequest - Checking HID service
[2021-01-14 09:55:41.765]: AsyncBluetoothPairDeviceRequest - HID service not enabled, attempting to enable
[2021-01-14 09:55:44.807]: AsyncBluetoothPairDeviceRequest - Patching the registry ...
[2021-01-14 09:55:44.810]: AsyncBluetoothPairDeviceRequest - Failed to open registry key, it does not yet exist
[2021-01-14 09:55:44.814]: AsyncBluetoothPairDeviceRequest - Verification attempt 0 / 5
[2021-01-14 09:55:44.817]: AsyncBluetoothPairDeviceRequest - Device Remembered
[2021-01-14 09:55:44.818]: AsyncBluetoothPairDeviceRequest - HID service enabled
[2021-01-14 09:55:44.820]: AsyncBluetoothPairDeviceRequest - HID service not enabled
[2021-01-14 09:55:44.822]: AsyncBluetoothPairDeviceRequest - Verified failed. Re-establish connection

Those messages repeat until I remove the device from device manager. The device is listed as "Bluetooth HID Device" and it is under Human Interface Devices. Once I remove the device, the pairing process completes only to crash the moment I try to connect the controller again. Here are the error messages related to that:

[2021-01-14 09:56:51.431]: PSMoveController::getBTAddress - HID ERROR: The semaphore timeout period has expired.
[2021-01-14 09:56:51.436]: PSMoveController::open - Failed to get bluetooth address of PSMoveController(\\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002054c_pid&03d5&col01#8&b7d5e50&1&0000#{4d1e55b2-f16f-11cf-88cb-001111000030})
[2021-01-14 09:56:51.600]: testMagnetometer - Failed to open read initial controller state after 10 attempts.
[2021-01-14 09:56:51.601]: WorkerThread::start - Starting worker thread: PSMoveSensorProcessor
[2021-01-14 09:56:51.603]: DeviceTypeManager::update_connected_devices - Device device_id 0 (\\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002054c_pid&03d5&col01#8&b7d5e50&1&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}) failed to open!
[2021-01-14 09:56:51.614]: DeviceTypeManager::update_connected_devices - Closing device 0 (PSMove) since it's no longer in the device list.
[2021-01-14 09:56:51.620]: PSMoveController::close - Closing PSMoveController(\\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002054c_pid&03d5&col01#8&b7d5e50&1&0000#{4d1e55b2-f16f-11cf-88cb-001111000030})
[2021-01-14 09:56:51.626]: WorkerThread::stop - Stopping worker thread: PSMoveSensorProcessor
[2021-01-14 09:56:52.617]: WorkerThread::stop - Worker thread stopped: PSMoveSensorProcessor
libusb: error [init_device] program assertion failed: device address collision with root hub
libusb: error [windows_get_device_list] program assertion failed - existing device should share parent
libusb: error [windows_get_device_list] program assertion failed - existing device should share parent
libusb: error [windows_get_device_list] program assertion failed - existing device should share parent
libusb: error [windows_get_device_list] program assertion failed - existing device should share parent
libusb: error [windows_get_device_list] program assertion failed - existing device should share parent
libusb: error [windows_get_device_list] program assertion failed - existing device should share parent
libusb: error [windows_get_device_list] program assertion failed - existing device should share parent
libusb: error [windows_get_device_list] program assertion failed - existing device should share parent
[2021-01-14 09:56:52.718]: PSMoveController::open - Opening PSMoveController(\\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002054c_pid&03d5&col01#8&b7d5e50&1&0000#{4d1e55b2-f16f-11cf-88cb-001111000030})
[2021-01-14 09:56:52.726]: PSMoveController::open -   with serial_number: 0006f7de0991
[2021-01-14 09:56:56.202]: PSMoveController::getBTAddress - HID ERROR: The I/O operation has been aborted because of either a thread exit or an application request.
[2021-01-14 09:56:56.272]: PSMoveController::open - Failed to get bluetooth address of PSMoveController(\\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002054c_pid&03d5&col01#8&b7d5e50&1&0000#{4d1e55b2-f16f-11cf-88cb-001111000030})
[2021-01-14 09:56:56.428]: testMagnetometer - Failed to open read initial controller state after 10 attempts.
[2021-01-14 09:56:56.431]: WorkerThread::start - Starting worker thread: PSMoveSensorProcessor
[2021-01-14 09:56:56.433]: DeviceTypeManager::update_connected_devices - Device device_id 0 (\\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002054c_pid&03d5&col01#8&b7d5e50&1&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}) failed to open!
[2021-01-14 09:56:56.433]: PSMoveSensorProcessor::doWork - HID ERROR: The device is not connected.
[2021-01-14 09:56:56.444]: DeviceTypeManager::update_connected_devices - Closing device 0 (PSMove) since it's no longer in the device list.
[2021-01-14 09:56:56.447]: PSMoveController::close - Closing PSMoveController(\\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002054c_pid&03d5&col01#8&b7d5e50&1&0000#{4d1e55b2-f16f-11cf-88cb-001111000030})
[2021-01-14 09:56:56.453]: WorkerThread::stop - Stopping worker thread: PSMoveSensorProcessor
[2021-01-14 09:56:56.457]: WorkerThread::stop - Worker thread stopped: PSMoveSensorProcessor
libusb: error [init_device] program assertion failed: device address collision with root hub
libusb: error [windows_get_device_list] program assertion failed - existing device should share parent

I also tried a tool called psmove-pair-win. From that, I believe I was able to find the proper address of the registry value that corresponds to the controller. From that, I was able to check to see whether there actually was a registry value where it said there should be one. Alas, there was no such registry value. I tried manually creating one, but it didn't work. I also don't know whether the "(default)" as the name would even work, since I cannot find any information as to the structure of the registry values for PSMoveService. When I went back to check the registry after another attempt at connecting, the default value I created had vanished. Here are the messages I got when using the psmove-pair-win tool:

device #0: Move Motion Controller detected
radioInfo.address: 5cf3709f0e3e
deviceInfo.address: 0006f7cf4f81
sSubkey: SYSTEM\CurrentControlSet\Services\HidBth\Parameters\Devices\5cf3709f0e3e0006f7cf4f81
[ERROR 0x00000002] Failed to open registry key: The system cannot find the file specified.
- checking HID service
- enabling HID service
radioInfo.address: 5cf3709f0e3e
deviceInfo.address: 0006f7cf4f81
sSubkey: SYSTEM\CurrentControlSet\Services\HidBth\Parameters\Devices\5cf3709f0e3e0006f7cf4f81
[ERROR 0x00000002] Failed to open registry key: The system cannot find the file specified.
- verifying successful connection RE
radioInfo.address: 5cf3709f0e3e
deviceInfo.address: 0006f7cf4f81
sSubkey: SYSTEM\CurrentControlSet\Services\HidBth\Parameters\Devices\5cf3709f0e3e0006f7cf4f81
[ERROR 0x00000002] Failed to open registry key: The system cannot find the file specified.

I am at my wits end here. Nothing seems to fix this. I have tried different versions of PSMoveService. I have tried different controllers. I have tried different Bluetooth adapters. (The adapter I am using now is the proper Asus one). Nothing is working. I would greatly appreciate some help.

endasil commented 3 years ago

This is a known issue that has been fixed in the master repository but, the author of this project does not want to spend the time it takes to set up build, and test the code. You can however build the code yourself by following the instructions here. https://github.com/psmoveservice/PSMoveService/wiki/Building-from-source

Since I needed this myself I have built the code and I guess you could use my copy of the files if you want. Just download this, and unzip the files to replace the PSMoveService.exe and PSMoveServiceAdmin.exe in your folder. https://www.dropbox.com/s/8mw731itkvznqbj/psmovepatch.zip?dl=0

after this, you should no longer have an issue with the registry key.

If the controller exists in the list of Bluetooth devices i would recommend removing it before running this again, it seems like it can be registered in some faulty state. Press Windows key + K then click "Find other types of devices". In the list there, click on "Motion Controller" and then "remove".

catkraze3 commented 3 years ago

Thank you so much! I'll test this as soon as I get home. I greatly appreciate the help!

On Jan 17, 2021, at 10:29 AM, endasil notifications@github.com wrote:

 This is a known issue that has been fixed in the master repository but, the author of this project does not want to spend the time it takes to set up build, and test the code. You can however build the code yourself by following the instructions here. https://github.com/psmoveservice/PSMoveService/wiki/Building-from-source

Since I needed this myself I have built the code and I guess you could use my copy of the files if you want. Just download this, and unzip the files to replace the PSMoveService.exe and PSMoveServiceAdmin.exe in your folder. https://www.dropbox.com/s/8mw731itkvznqbj/psmovepatch.zip?dl=0

after this, you should no longer have an issue with the registry key.

If the controller exists in the list of Bluetooth devices i would recommend removing it before running this again, it seems like it can be registered in some faulty state. Press Windows key + K then click "Find other types of devices". In the list there, click on "Motion Controller" and then "remove".

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

tjxme commented 3 years ago

This is a known issue that has been fixed in the master repository but, the author of this project does not want to spend the time it takes to set up build, and test the code. You can however build the code yourself by following the instructions here. https://github.com/psmoveservice/PSMoveService/wiki/Building-from-source

Since I needed this myself I have built the code and I guess you could use my copy of the files if you want. Just download this, and unzip the files to replace the PSMoveService.exe and PSMoveServiceAdmin.exe in your folder. https://www.dropbox.com/s/8mw731itkvznqbj/psmovepatch.zip?dl=0

after this, you should no longer have an issue with the registry key.

If the controller exists in the list of Bluetooth devices i would recommend removing it before running this again, it seems like it can be registered in some faulty state. Press Windows key + K then click "Find other types of devices". In the list there, click on "Motion Controller" and then "remove".

this is the only one that works for me, thank you so much....