ScpToolkit (XInput Wrapper aka ScpServer Reloaded)
(04-16-2016, 10:56 PM)Napster Wrote: Every time I restart my PC, I have to run Driver Installer otherwise the PS3 controller doesn't work. Can I somehow fix it?
Also, since I don't think my desktop has Bluetooth, can't I use the controller with wireless and without wire? Maybe with WiFi or something like that?

Last question, anyone knows if I can get banned on Dark Souls 3? I read on different websites that people were getting banned on Dark Souls 2 for using these kind of software for controllers (like MotioninJoy, DS4Tool etc). A lot of these programs had to be installed (or add a file in the game's directory) and since SCP doesn't require that, is it safe?

I've been using BetterDS3 for a while and then I found the SCP Drivers and stuff. I haven't had any issues regarding getting softbanned in Dark Souls 2 and I've played for over 200 hours. All this program does is pretend to be an Xbox controller. Nothing is injected to the game files or installed there. (At least I don't think so.)

Sponsored links

Use the latest Beta version - https://github.com/nefarius/ScpToolkit/releases . That's what fixed this problem for me
(04-16-2016, 10:56 PM)Napster Wrote: Every time I restart my PC, I have to run Driver Installer otherwise the PS3 controller doesn't work. Can I somehow fix it?
Also, since I don't think my desktop has Bluetooth, can't I use the controller with wireless and without wire? Maybe with WiFi or something like that?

Last question, anyone knows if I can get banned on Dark Souls 3? I read on different websites that people were getting banned on Dark Souls 2 for using these kind of software for controllers (like MotioninJoy, DS4Tool etc). A lot of these programs had to be installed (or add a file in the game's directory) and since SCP doesn't require that, is it safe?
(04-16-2016, 11:39 PM)killa4000 Wrote: I've been using BetterDS3 for a while and then I found the SCP Drivers and stuff. I haven't had any issues regarding getting softbanned in Dark Souls 2 and I've played for over 200 hours. All this program does is pretend to be an Xbox controller. Nothing is injected to the game files or installed there. (At least I don't think so.)

From my understanding, the SCP Toolkit just takes the PS3 controller driver and replaces it with the Xbox controller driver and makes sure the buttons are in the right spots (to mimic a Xbox controller) and then how these people manage to make that work over Bluetooth beats me but I'm glad its a thing lol. Nothing with SCP Toolkit will give false flags, as far as the operating system knows its a legit Xbox controller. People that complain about getting banned, for the most part are liars about why they got banned. In the first place its pretty immature to use hacks online for a advantage, but very few will admit to their use cuz they want to get unbanned if possible. Even if they installed a mod at one time and decided to not use it but left the files in the game folder, they can still be caught depending on the anti-cheat tech. Many people cried about being banned on GTA5 for using SweetFX or for using mods in single player. Basically they would either forget they left the mod enabled or left the files in the GTA5 directories.
Hello,
After I had motioninjoy installed, then uninstalled it and installed the SCPserver I now landed here.
In motioninjoy everything except the bluetooth went fine but that program is just annoying. When I first installed the scpserver, the USB connection worked, but also not the bluetooth. I somehow managed to use two controllers via bluetooth using zadig, but after a pc restart I could not get it to work again.
Now I am here, installed the ScpToolkit but the bluetooth (inbuild) device did not show up in the awesome driver install wizard and there is also no MAC address in the scpToolkit Server on the upper left when nothing is plugged in.
Does anyone have an easy solution for this? Otherwise I will just give up...
(04-16-2016, 10:56 PM)Napster Wrote: Every time I restart my PC, I have to run Driver Installer otherwise the PS3 controller doesn't work. Can I somehow fix it?
Also, since I don't think my desktop has Bluetooth, can't I use the controller with wireless and without wire? Maybe with WiFi or something like that?

Last question, anyone knows if I can get banned on Dark Souls 3? I read on different websites that people were getting banned on Dark Souls 2 for using these kind of software for controllers (like MotioninJoy, DS4Tool etc). A lot of these programs had to be installed (or add a file in the game's directory) and since SCP doesn't require that, is it safe?

NONE of the programs you listed modify, connect, replace any files in game directories, the programs have nothing to do with games whatsoever. People that say that are usually just trolls and it shows by their basic lack of knowledge of how these programs even actually work. They have even gone so far as to tell me I have no Idea what I am talking about even though I am the developer of one of those applications.

First off the DS3 driver is simply because by default the DS3 tries to use a 2 part handshake that is not part of the Direct Input standard. This is why without the driver the controller is properly recognized, but inputs do not show up, because the handshake did not complete and the controller has not started sending input data. The replacement driver fixes this by spoofing the handshake. If trying to use the DS3 of BT, the reason the replacement BT driver is needed is because the standard windows BT libraries do not allow for sending a complete customized "packet" of data as is needed to spoof the handshake. If the default windows BT libraries would allow sending a complete packet, headers and all this would not be needed. None of this is anything that has anything to do with end user game, nor can the games even detect such things using Direct Input or Xinput libraries.

Next comes the spoofing of the 360 controller. The emulated controller is not "injected" into game files in any way as some people have suggested, doing this would mean we would have to de-compile and write contingents for every single game on the market... not going to happen... Instead what happens is something that is very common in windows in other applications. SCP drivers create a virtual USB bus, that is USB ports that exist in software only but are Picked up by windows as actual USB ports. With this virtual bus it is now a simple matter of connecting a virtual 360 controller and sending it data via the driver and driver wrapper. This means that as far as Windows is concerned there absolutely is a physical 360 controller actually plugged into a physical USB. This is how DS3Tool, DS4Tool, DS4Windows, IM are all able to be so compatible. Again since Windows sees this as a normal physically connected controller, so do the games.

So next time somebody tells you they got banned for using it, they are full of *****, IM has over 3 million downloads, and 60k registered forum users, if this were a real thing they would not have hesitated to bite my head off for it.
[Image: LogoBusiness3.png]
IM 2 Beta now supporting plugins and even more devices.

Website | Forum | Donate $2 and remove ads from the tool
hi i'm having a problem maybe someone can help me with? i was using the old version of scp fine with my ps3 controllers on usb. i bought a bluetooth dongle and tried to activate it but it kept giving me bluescreen errors in the scpvbus.sys. so i download this new one(latest 1.7.x) was on (1.6.2 working fine minus BT) and run the removal tool and reboot then run the new installer and follow all the steps it tells me everything is installed correctly and i hit finish but it never initializes the server/service. i open the monitor and it doesn't show the controllers. but if i open the legacy server app it shows both controllers and i can make them rumble. but the controllers don't show in windows or to the scp apps. i've rebooted and reinstalled several times but it doesn't seem to start the service.

*update* ok so i played around with it some more and it seems everything will work fine, USB and BLUETOOTH, if i manually start the scp server. all the controllers show in the monitor and profile manger. all the buttons work and the rumble works. but...windows still doesn't see the controllers so i can't actually play any games or do anything with them really. can anyone help me figure out this last part?


Attached Files
.zip   ScpToolkit_Log-Package_acme420_1460961840.zip (Size: 358,13 KB / Downloads: 371)
so i've been playing with this issue all night and opened a thread on the github. i've narrowed it down to windows thinks the scpvbus.sys is unsigned even though the certificate is valid.
PANHAI update from my side: I got it working wireless and with bluetooth. Smile

I apologize upfront as this is going to get a little technical .... but hopefully not too much!

I set up Wireshark with USBPCap in Windows and ran a capture of the bluetooth traffic by having it capture traffic on the USB bluetooth adapter itself, while attempting to connect the controller through bluetooth.

Then also used Wireshark with libpcap in Linux and did the same thing - captured traffic on the USB interface for the bluetooth adapter.

Using this I was able to determine exactly where they are different.  Because in Linux it had a lot of built in parsing, plus the libpcap is different than usbpcap used for windows, the output was a little different.  So I had to comb through quite a bit and spent about 3 hours analyzing the flow and the individual bytes to finally find where exactly they are different.

So in general different in these few places:

1) When L2CAP_Connection_Request is received, Linux sixad daemon only sends a single L2CAP_Connection_Response with "success" whereas in Windows ScpToolkit is sending 2 individual L2CAP_Connection_Response -- first a "pending" followed by a "success".
2) ScpToolkit L2CAP_Command is defaulting 2nd byte (buffer[1]) of the sent buffer to 0x20 if it is 0x00 ... in Linux sixad it doesn't do this, it always is sending 0x00 .. this is for all sending L2CAP commands
3) ScpToolkit L2CAP_Configuration_Request has hard-coded byte of 0x96 and 0x00 for bytes 11 and 12 (buffer[10] and buffer[11]) but I noticed in Linux sixad that it seemed to match DCID (e.g. for mine it was sending 0x40, 0x00) so I changed this to dcid[0] and dcid[1] so it would put the dest channel in these bytes instead of this hard-coded value 0x96, 0x00
4) ScpToolkit L2CAP_Configuration_Response in the 3rd byte (buffer[2]) I noticed in linux for me it was sending 0x0a here but ScpToolkit has this hard-coded at 0x06. For now I changed it to hard-coded 0x0a. From what I have poked around, this value could actually be coming from the controller itself when original HCI_Connection_Request or HCI_Accept_Connection_Request event occurs (on mine I am seeing this byte 0x0a coming across as the next byte after the command/event identifier)
5) Also in same method L2CAP_Configuration_Response, in linux sixad they have 4 extra bytes on the end of this buffer that do not exist in ScpToolkit.  They are: 0x01, 0x02, 0xa0, 0x02.  The origin of these 4 bytes could possibly be similar to last 4 bytes L2CAP_Configuration_Request and maybe especially this byte 0xa0 could be sent from the controller somewhere in the stream but I haven't found it as of yet.

Anyway with making those 5 changes to both BthDongle.Tasks.cs and BthDongle.L2cap.cs my PANHAI controllers are working perfectly over bluetooth.

I will try to roll back and maybe make each change one-at-a-time to see if there is one specifically that was the real key or not and post an update shortly Smile

Edit: Ok after trying everything off and on I actually found that only ONE of the above changes is needed and it gets the PANHAI working fine.

It is #5 above -- changing L2CAP_Configuration_Response from host to have 14 length payload instead of 10 with 0x01, 0x02, 0xa0, 0x02.  Not sure if each of these values can be hard-coded or if they need to depend on data sent back from the controller, but this should be the only change needed to get PANHAI controllers to connect.

I confirmed by taking a fresh copy of source and only modified BthDongle.L2cap.cs:L2CAP_Configuration_Response and it is working with only this change.
Link back to https://github.com/nefarius/ScpToolkit/issues/241

And screenshot of both PANHAI pads connected via bluetooth using this code modification  Smile

Also I have attached a modified ScpControll.dll zipped in this post if anyone has a PANHAI fake DS3 controller and has been desperately wanting it to work wirelessly for them while waiting on a permanent fix. Smile This was built against ScpToolkit-1.7.277.16103-BETA so you would probably need to use that same version with this file.

Edit: By request I also put in the same modification on the latest release version 1.6.238.16010 and built ScpControll.dll with this change as well.  I have attached that file to this post. 

Important:
The file "ScpControl-PANHAI-Bth.zip" is for if you have installed and are using ScpToolkit-1.7.277.16103-BETA
The file "ScpControl-PANHAI-Bth-1.6.238.16010.zip" is for if you have installed and are using ScpToolkit-1.6.238.16010


I have not tested the build for 1.6.238.16010 .. I do not have it installed anywhere. But I think it should work -- let me know if anyone tries it and it does not!


Attached Files Thumbnail(s)
   

.zip   ScpControl-PANHAI-Bth.zip (Size: 82,21 KB / Downloads: 1.993)
.zip   ScpControl-PANHAI-Bth-1.6.238.16010.zip (Size: 85,5 KB / Downloads: 31.305)
I don't know, if this is relevant, but at some point this proc is called immediately after it is done with Bluetooth

void enable_sixaxis(int csk)

{
char buf[128];
unsigned char enable[] = {
0x53, /* HIDP_TRANS_SET_REPORT | HIDP_DATA_RTYPE_FEATURE */
0xf4, 0x42, 0x03, 0x00, 0x00
};
/* enable reporting */
send(csk, enable, sizeof(enable), 0);
recv(csk, buf, sizeof(buf), 0);
}





joshg
I looked a little more last night and this morning.

It may not be that far off but probably Nefarius could know better than me Smile

I am kind of leaning to now the line in BthDongle.Tasks.cs:HicWorker under the case for HCI.Event.HCI_Remote_Name_Request_Complete_EV where it is running a connection = Add(...); ... Somewhere either immediately up to or during this might be where the breakdown is happening.  I have tried to do a few things to force the ScpServer to continue here but still no dice... including things like setting CanStartService=true in the constructor for BthDs3 as well as trying to manually send these same bytes as what the customized sixad in linux is doing but still getting the same result - disconnect/connect loop.

I also tried just commenting out the Remove() for HCI Disconnect event but that still does not work (the thinking was that maybe the remove command coming from the interface was bogus so what if we ignore it?).

The LEDs are flashing a little differently depending on how I tweak things (longer flash sometimes) and getting a few "parameter is incorrect" runtime errors but I am not sure if I am any closer with this or not as of yet unfortunately. :|
So I've downloaded scp well, everything, its installed fine but my problem lies with my controller not being recognized by windows, i've plugged it into multiple usb ports and a few of them say installing new device drivers or something along those lines, i hear a few beeps and then no lights flash up on my controller, like it doesnt even exist. can anyone help me with this, or did i post in the wrong thread?

Edit- The controller is showing up in devices and printers just fine. Still no battery charging lights and still not detected by scp dualshock 3 setup




Users browsing this thread: 5 Guest(s)