Bluetooth Filter Driver for DS3-compatibility - research notes



  • @RDP be my guest, I've updated your permissions.



  • finally,the long awaited progress is here
    i hale thy for doing what everybody couldn't
    but seriously i am a follower since day one
    i think no one can deny the progress made in this month
    i hope i am not asking for much but if it's possible i wish i too can be a part of making a legendary milestone 🙂



  • @seiif you've been added to the flock. Enjoy the ride.



  • pali, reporting for duty with only a hint of snark 😛



  • Good luck with the testing! I've been following this for a while and can't wait to finally have a true replacement for SCP. I'm very excited with the progress you've posted. Thank you so much for your work on this.



  • The testing so far has been overwhelmingly good apart from some legacy SCP shenanigans ruining our fun with Shibari but that's a different topic and solvable.



  • Hi nefarius,

    I too have been reading your posts on a regular basis and have been getting much enjoyment out of them (even if some of it is so technical it may as well be Chinese to me 😊 ).
    While I'm not a hardcore coder, I love tinkering and would love to help out with testing. My machine is win 10 x64, soon to be 1903, with a Intel 9260 Bluetooth card, which hast had SCP installed on it. Currently have a Xbox 1 and ds4 controller paired to it and have two real ds3's to test with. Oh, and I also have a couple of no name bt adapters that I used to use with SCP that I could also use.



  • I wouldn't mind testing either if you're still looking for more people to help. I have access to two different Bluetooth adapters (this and this), an original DS4 controller, 2x original DS3 controllers, and 2x Xbox One controllers, as well as multiple computers I could use for testing (all Windows 10 1809 currently).

    I do desktop and server support for a living, so I'm comfortable modifying the registry and adding/removing drivers and all that. Not sure what all might be needed in this scenario, but I'll do whatever you may need. Just let me know.



  • @teeedubb @chaoticyeshua welcome to the flock then, I've adapted your permissions, have fun 😄



  • I'd like to test as well, here's my setup: original Sixaxis and DS3 with a Chinese clone. Bluetooth V4.0+EDR adapter (CSR8510). Had no success with AirBender. photo



  • If you are looking for any more beta testers please include me. I have 2 chinese DS3 controllers. and 2 bluetooth usb dongles (both bluetooth 4.0) and one bluetooth card built in to the laptop (bluetooth 4.2). I would love to help in anyway I can.



  • @ekze @Kue welcome aboard! 🚋



  • Hello, i have interest in beta testing too. I currently have two original DS3s that i use for playing with FireShock 1.3.1.0 via USB. Aditionally, i have a Bluetooth CSR2.1 USB adapter (VID_0A12&PID_0001). I've been reading this thread for a while and it's amazing the work you have been doing.



  • Hi! I am also interested in beta testing. I have a two real DS3s. This work is super exciting, I would love to hop on board!



  • Since test feedback has been very pleasing so far I'll cut back on recruitment today and implement the missing bits and pieces in the drivers and then throw them into the WHQL test bench. Will keep you updated.



  • Jo, it's WHQL-o-clock 😅

    586b0df3-e046-49ff-8470-fe347dae078d-image.png

    This time the filter is my primary test subject. Fingers crossed! ☠



  • Oh yes, give me more green! All the green tick marks! 😎

    vmware_8NifFZYSXJ.png



  • @tulio150 @ryantburke done, welcome!



  • @Poosaurus you too 😛



  • Dammit, almost... 👀

    vmware_ZKTaK1RimB.png

    What's going on here....

    STACK_TEXT:  
    nt!DbgBreakPoint
    Wdf01000!imp_WdfCollectionRemove+0x2d1 [d:\win8_ldr\minkernel\wdf\framework\kmdf\src\support\fxcollectionapi.cpp @ 270] 
    wdftester!wdftester_WdfCollectionRemove+0xfe
    BthPS3PSM!BthPS3PSM_EvtDeviceContextCleanup+0x103 [d:\development\git.vigem.org\bthps3\bthps3psm\device.c @ 372] 
    Wdf01000!FxObject::DisposeChildrenWorker+0x2fa [d:\win8_ldr\minkernel\wdf\framework\shared\object\fxobjectstatemachine.cpp @ 1188] 
    Wdf01000!FxObject::PerformDisposingDisposeChildrenLocked+0xbc [d:\win8_ldr\minkernel\wdf\framework\shared\object\fxobjectstatemachine.cpp @ 814] 
    Wdf01000!FxObject::PerformEarlyDisposeWorkerAndUnlock+0xfb [d:\win8_ldr\minkernel\wdf\framework\shared\object\fxobjectstatemachine.cpp @ 894] 
    Wdf01000!FxObject::EarlyDispose+0x117 [d:\win8_ldr\minkernel\wdf\framework\shared\object\fxobjectstatemachine.cpp @ 460] 
    Wdf01000!FxPkgPnp::PnpEventRemovedCommonCode+0x1e2 [d:\win8_ldr\minkernel\wdf\framework\shared\irphandlers\pnp\pnpstatemachine.cpp @ 2047] 
    Wdf01000!FxPkgFdo::PnpEventFdoRemovedOverload+0x9 [d:\win8_ldr\minkernel\wdf\framework\shared\irphandlers\pnp\fxpkgfdo.cpp @ 1244] 
    Wdf01000!FxPkgPnp::PnpEnterNewState+0x1a1 [d:\win8_ldr\minkernel\wdf\framework\shared\irphandlers\pnp\pnpstatemachine.cpp @ 1231] 
    Wdf01000!FxPkgPnp::PnpProcessEventInner+0x122 [d:\win8_ldr\minkernel\wdf\framework\shared\irphandlers\pnp\pnpstatemachine.cpp @ 1147] 
    Wdf01000!FxPkgPnp::PnpProcessEvent+0x18d [d:\win8_ldr\minkernel\wdf\framework\shared\irphandlers\pnp\pnpstatemachine.cpp @ 933] 
    Wdf01000!FxDevice::DeleteDeviceFromFailedCreateNoDelete+0x13e [d:\win8_ldr\minkernel\wdf\framework\kmdf\src\core\fxdevice.cpp @ 530] 
    Wdf01000!FxDriver::AddDevice+0x158 [d:\win8_ldr\minkernel\wdf\framework\kmdf\src\core\fxdriver.cpp @ 550] 
    nt!PpvUtilCallAddDevice+0x45
    nt!PnpCallAddDevice+0xd5
    nt!PipCallDriverAddDevice+0x661
    nt!PipProcessDevNodeTree+0x2b2
    nt!PiRestartDevice+0xc7
    nt!PnpDeviceActionWorker+0x313
    nt!ExpWorkerThread+0x111
    nt!PspSystemThreadStartup+0x194
    nt!KiStartSystemThread+0x16
    

    Alright, what went wrong there on device disposal...

    --- start of log ---
    1: FxIFRStart - FxIFR logging started
    2: LockVerifierSection - Increment Lock counter (2) for Verifier Paged Memory from  \REGISTRY\MACHINE\SYSTEM\ControlSet001\services\BthPS3PSM from driver globals FFFFFA8009A2B970
    3: FxVerifierLock::InitializeLockOrder - Object Type 0x1036 does not have a lock order defined in fx\inc\FxVerifierLock.hpp
    4: FxVerifierLock::InitializeLockOrder - Object Type 0x1036 does not have a lock order defined in fx\inc\FxVerifierLock.hpp
    5: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x0000057FF58B94E8 !devobj 0xFFFFFA800AD37C20 entering PnP State WdfDevStatePnpInit from WdfDevStatePnpObjectCreated
    6: FxDevice::DeleteDeviceFromFailedCreateNoDelete - WDFDEVICE 0000057FF58B94E8 !devobj FFFFFA800AD37C20 created, but EvtDriverDeviceAdd returned status 0xc0000001(STATUS_UNSUCCESSFUL) or failure in creation
    7: FxDevice::DeleteDeviceFromFailedCreateNoDelete - WDFDEVICE 0000057FF58B94E8, !devobj FFFFFA800AD37C20 is a filter, converting 0xc0000001(STATUS_UNSUCCESSFUL) to STATUS_SUCCESS
    8: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x0000057FF58B94E8 !devobj 0xFFFFFA800AD37C20 entering PnP State WdfDevStatePnpRemoved from WdfDevStatePnpInit
    9: FxChildList::NotifyDeviceRemove - WDFCHILDLIST 0000057FF597F388:  removing children
    10: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x0000057FF58B94E8 !devobj 0xFFFFFA800AD37C20 entering PnP State WdfDevStatePnpRemovedChildrenRemoved from WdfDevStatePnpRemoved
    11: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x0000057FF58B94E8 !devobj 0xFFFFFA800AD37C20 entering PnP State WdfDevStatePnpFdoRemoved from WdfDevStatePnpRemovedChildrenRemoved
    12: FxPkgIo::StopProcessingForPower - Perform FxIoStopProcessingForPowerPurgeNonManaged for all queues of WDFDEVICE 0x0000057FF58B94E8
    13: FxIoTarget::WaitForDisposeEvent - WDFIOTARGET 0000057FF59F0368, Waiting on Dispose event FFFFF880031B0AD0
    14: imp_WdfCollectionRemove - WDFOBJECT 0000057FF58B94E8 not in WDFCOLLECTION 0000057FF57BAF78, 0xc0000225(STATUS_NOT_FOUND)
    ---- end of log ----
    

    Oh 😐 How did I manage to provoke that. Well, back to fixing stuff 😅


Log in to reply