Jays2Kings/DS4Windows

Feature request: Audio through DS4 headphone jack

H3mul opened this issue Β· 224 comments

Please considering working in this direction at some point, if it is at all possible. Would be incredibly useful, especially over Bluetooth.

Seconded. This would be an excellent feature.

I hate to tell you, but I'm not sure it's possible since the DS4 audio is handled by the PS4 mostly (from what reverse-engineered data we have found so far). Either that, or it is handled through Bluetooth, and that would be very difficult since Bluetooth sucks for bandwidth.

It would be kind of silly too, since all computers have a 3.5mm headphone jack on them. Even if you wanted to use the controller from far away, there are wireless headsets too.

I don't know, I'd have to do more research and capture more packets from the DS4...

H3mul commented

Well, the PS4 clearly doesn't have bandwidth issues with using the DS4 bluetooth for both audio input/output streaming and controller events, according to user reviews (I dont own a PS4 myself).

As for reverse engineering, I found this: http://eleccelerator.com/wiki/index.php?title=DualShock_4
In the Bluetooth section, its mentioned that the controller advertises two devices, and uses one for audio. Hope this helps.

As vgturtle said, audio data is handled completely differently, and I don't have the tools to reverse engineer how it works. I can't say by myself that this feature will ever be added.

H3mul commented

Thanks for considering it anyway

@HeMu1 When I was talking about bandwidth, I was talking about the PC handling all of it, and that Windows Bluetooth stack doesn't really like that. The PS4 Bluetooth may be custom made, and be able to handle that while a PC might not.

Emulating two devices is tricky, especially with audio in the mix. You would have to dynamically analyze, convert, send, and receive audio data if it were to work just like the PS4.

With all that said, I have been looking at the controller dumps that people have made and I am currently trying to see if I can find out where audio is data is sent/kept/received/whatever.

This is all done in my free time though, which at this point in my life is very limited. But I am working on it.

+1

This feature would be awesome and add to those reasons for using a PS4 controller with a PC - and supporting software :)

I would certainly pay for this feature if it meant that I had one less wire to worry about..

Here's to hoping that this feature gains traction..

I can't seem to access the audio at all through my PC, it seems like the PS4 OS and drivers probably handle all that work. The Bluetooth seems standard, but the audio doesn't show up at all. I have tried everything I can think of.

Does anybody have any Bluetooth sniffers or anything?

Hi vgturtle127,
I know that Wireshark allows you to sniff many different Bluetooth profiles : https://www.wireshark.org/docs/dfref/#section_b
I would really enjoy it if there was a way to use the speaker on the DS4 and the earphone jack.
I don't know much about sniffing and what exactly would be needed to do this and help you, but if this could help further advance the development of these features and you are willing to; please tell us exactly what is needed.

Wireshark allows you to sniff compatible wireless adapters. I would need to get a compatible device, something like this:

https://www.cacetech.com/products/catalog/product_info.php?products_id=69

I have controllers, so all I would need is a Bluetooth sniffer and some time and patience. I have confidence I could figure something out, or at least get some idea of what is happening. I could probably at least dump some stuff that would help people figure it out.

Some information has been gathered, but most of it was through USB or reverse-engineering, I believe.

http://eleccelerator.com/wiki/index.php?title=DualShock_4

Here is some good info, but nothing that helps us at the moment...

What about using a rooted android device instead?
On Nov 12, 2015 04:20, "vgturtle127" notifications@github.com wrote:

Wireshark allows you to sniff compatible wireless adapters. I would need
to get a compatible device, something like this:

https://www.cacetech.com/products/catalog/product_info.php?products_id=69

I have controllers, so all I would need is a Bluetooth sniffer and some
time and patience. I have confidence I could figure something out, or at
least get some idea of what is happening. I could probably at least dump
some stuff that would help people figure it out.

Some information has been gathered, but most of it was through USB or
reverse-engineering, I believe.

β€”
Reply to this email directly or view it on GitHub
#17 (comment)
.

I'm not sure if that would work or not, but unfortunately I don't have an Android device to test. 😞

What's the thing with the android device?
Why is it needed?

It's not "needed". He was saying I could use an Android device as a Bluetooth sniffer.

I dont know if it's like that for everybody but i sometimes get the audiodevice listed as one that i would be able to connect to in my bluetooth settings on Win 10. I havent figured out when the device appears but i can try to reproduce it if someone thinks it would help. I have of course tried pairing with it without success.

Can you upload a screenshot here? That seems interesting. I would also like to know what Bluetooth stack and chipset you are using.

I don't know exactly how i did it but I'm messing around with it trying to get it to happen again :P could you ELI5 how to best give you info on stack and stuff, cause I'm a noob :) I know for sure that the audio device was from the DS4 though because i live far from people and it appeared and disappeared when i turned on and off controller :)

Well, what bluetooth adapter are you using? Are you using a USB dongle or built-in bluetooth?

I think Anoneom is talking about this, I was able to see two devices when attempting to pair the Dualshock 4 (and yes, this second audio device only appeared when the DS4 was on):

capture

capture2

Like Anoneom, I can't get it to pair. I'm on Windows 10 via Bootcamp on a 2015 15" MacBook Pro.

Is RECAM4AZJX02485 the device that comes up?

I can't find any information on the MacBook Bluetooth chipset or anything. 😞

If you could check the device manager and give me any information pertaining to the Bluetooth device that would be great.

Yes, RECA is the device that pops up along with the PS4 controller ("Wireless Controller"). You're not able to see it on your setup? You may have to be on Windows 10, or maybe you need an adapter with Bluetooth 4.0+ (since it offers increased bandwidth that may be necessary for carrying audio AND controller AND light bar data)... In any event, this is with a Broadcom BCM943602CS (AC WiFi, Bluetooth 4.1).

https://wikidevi.com/wiki/Broadcom_BCM943602CS

capture3

Let me know if I can be of further help!

I am on Windows 10, I just don't have any Bluetooth adapters or anything. I always use USB when I use my PS4 controller. πŸ˜„

Thanks for the information!

We definitely need Bluetooth 4.0, since that is what the PS4 has. The PS4 may use WiFi Direct or something for the light bar and audio data, or some proprietary equivalent. I kind of hope not since that would be much harder to sniff, but if I know Sony that spend a lot of time on security for stuff that doesn't really need it. πŸ˜ƒ

Now if we could only connect or sniff the traffic that was passed along by the PS4. I really need to get a Bluetooth sniffer, I am getting more interested since it appears we may be able to connect to it from within Windows...

I doubt the Dualshock 4 uses WiFi, I think it only has a Bluetooth radio, though admittedly good teardown information IDing the ICs is lacking on the Internet, but this might be useful:

http://mygaming.co.za/news/wp-content/uploads/2013/11/DualShock-4-PCB-bottom.png

The audio codec is on the controller's PCB, so audio processing is done on the controller, NOT on the PS4. This is good news (if you didn't have this information already).

A Bluetooth 4.0 USB adapter can be had for ~$15, and the BlueFruit Bluetooth 4.0 sniffer runs about $30, though Wireshark may work with one of those $15 adapters... You probably know more about that than I do. Anyway, is it a question of money? I'm a little surprised you don't have Bluetooth on your computer!

@jamesspinella Good find about the audio IC! I had no idea based on previous tear downs!

I knew it didn't have WiFi, I just didn't know if it had some weird proprietary wireless communications stuff going on, this seems increasingly likely.

I could get a low cost adapter and try it, and then I would also have the benefit of having Bluetooth on my PC. However, that Bluetooth sniffer is for Bluetooth LE, not regular Bluetooth devices. 😞

Wireshark actually works on most devices, at least as far as I have tested. However, I can never install WinPCap, so I can never run Wireshark. I have been meaning to go report the bug...

It is only sort of a question of money, I was recently laid off and don't have any spending money. Bluetooth adapters aren't expensive, but if I do get one, I want one that supports as many versions of Bluetooth as I can. I'm OK with paying if it means I get quality.

I understand your surprise, I figured most motherboards would have support by now. Mine was a budget board, and so was my wireless adapter. So no Bluetooth for me! 😝

I have a spare Bluetooth USB adapter, but it's Bluetooth 2.1, so I doubt that would work for you... But is there anything else I can do to help with this effort? (FYI I don't actually have a PS4 anymore)

Ah, that sounds like a solid choice. I have a Targus dongle (http://targus.com/us/usb-bluetooth-adapter), but again, it's Bluetooth 2.1 (+EDR!).

@jamesspinella Actually, I may pick that one up too, since I don't know if I can do EDR on a Bluetooth 4.0 adapter.

EDR just means enhanced data rate, it allowed for faster link speeds versus 2.0, and so technically is "included" in any Bluetooth 3.0 and 4.0 device. Kind of like MIMO, only some Wireless "G" devices have it, but anything N and newer has it.

@jamesspinella Oh, OK. Good to know. Thanks, James! Bluetooth isn't my favorite thing in the world, if you couldn't tell. πŸ˜„

Is there anything I can do to help you out with this effort? I noticed that on my Alienware Alpha, which uses an Intel 3160 Bluetooth 4.0 card, on initial pairing, I see "Wireless Controller" and "Audio Device" as opposed to RECA.... I wasn't able to pair with it, either. This is also on Windows 10.

Uh, maybe dump the info for that chipset too?

Is there anyway to dump any data from the "Audio device"? Does anything appear in control panel, etc.?

@vgturtle127 :

Any update on this one? Did you get yourself a Bluetooth adapter now?

Maybe some more people should ask for it on Twitter:

https://twitter.com/GI_FTW/status/686148538959532032

πŸ˜‰

@kq01526 No, I still don't have the funds necessary.

The second I do I will start doing research, though.

I know Sony won't do anything official on PC, that would be very uncharacteristic of them. Microsoft has a history with the PC, so that makes sense.

If somebody were to give me a Bluetooth adapter for a late Christmas present, it would probably be this one: πŸ˜„

http://www.amazon.com/Plugable-Bluetooth-Adapter-Raspberry-Compatible/dp/B009ZIILLI/ref=sr_1_8?ie=UTF8&qid=1448850789&sr=8-8&keywords=bluetooth+usb+adapter

Plugable says it will work with pretty much any Bluetooth device, and it supports all the weird technical specifications. It also works on Linux and Raspberry Pi, which is a bonus for me! πŸ˜‰

I am not expecting anybody to do this, but I am posting it here just FYI.

Where are you from? Im planning to buy some stuff on Amazon on next week, i might buy one of those bluetooth devices for you to continue this feature development.

And which kind of funding do you need for this to happen?

BTW, i know this is off topic but i bought the Bluetooth recommended on the mainpage http://www.amazon.com/gp/product/B004LNXO28/ref=oh_aui_search_detailpage?ie=UTF8&psc=1

And sometimes the Delay is > 52MS and the controller light turns red and then suddenly it becomes disconnected.

@darkndream Regarding the delay. I had the same problem with a similar adapter: http://www.amazon.com/Kinivo-Btd-400-Bluetooth-4-0-USB/dp/B007Q45EF4

So, the trick was to not connect it directly to my usb port but plug it to a USB extender cable (like this: https://en.wikipedia.org/wiki/Extension_cord#/media/File:USB_extender_cable.jpg). It seems that there was some sort of interference with my computer case or maybe the usb 3.0 controller. Now I can use the gamepad from the other side of the room which was not possible before and it is not because the adapter is placed more conveniently or anything like that. Overall everything works perfectly and reliably now.

@darkndream I'm from the US (you can check my GitHub page), and any kind of "funding" would be good, really. πŸ˜†

I would only need the amount for the dongle, so even if you wanted to buy a gift card and email me the code or something that would work (for maintaining your privacy and what not).

I would of course give you credit in any commits or anything I create using this adapter. πŸ˜„

Thanks for even considering it, by the way. πŸ˜ƒ

@michlord I would have thought having an extension would have been the cause of it not working. That or interference with nearby WiFi devices or other Bluetooth devices.

One benefit to having a Bluetooth dongle is I could also reverse-engineer the PS3 controller. πŸ˜„

Hey if you need a few dollars for support i'd pitch in. I'd like to see this feature!

@cooperate Sure, I'd take the help. If you want, you can email me and we can work something out. Just make sure to tell me who you are in the email, and make the subject easy to understand.

I'm currently trying to get some money together to upgrade my computer and fix some of my stuff that is broken, but I do want to get this adapter bought so I can not only debug this issue but all the other issues people are having (with Bluetooth-related devices and connecting them easily).

I just had something very interesting happen. After some strange bug, my controller became unresponsive, so I reset it by quickly tapping the reset button on the bottom. When trying to reconnect, a wireless headset showed up in my list of bluetooth devices. Connecting with this headset is not possible.

When I started my controller again, I was shown with a Nokia CK-7W in my list of bluetooth devices. This persisted long enough for me to connect (using 0000 as the code) and it even showed up in my list of audio devices.

Unfortunately, it was disabled and the connection seemed to get lost soon afterwards.

It also seems possible to have it connect in a different mode, by connecting the DS4 to the PC with bluetooth, then pressing the reset button and then just the round play button.

image

imge

That's interesting, the Nokia CK-7W is a hands-free car kit product. Wouldn't surprise me if Sony and Nokia repurposed that same technology/chipset for the DualShock 4.

@vgturtle147, unfortunately I don't have access to a DualShock 4 for the time being, and haven't been able to provide that information you requested. Maybe @Stardidi can?

For me in windows 8.1 the headset was showing most of the time but in windows 10 it doesn't show anymore
I've tried connecting with it but it didn't work

After more experimenting, I've been unable to get the Nokia module to show up again. Something interesting to note though: The Nokia module reported a different Address from the 'Wireless Headset' This might just be packets being read differently, or something else interesting going on.

@jamesspinella @vgturtle127 What information are you talking about?

Btw, I'm running windows 10, with a Sitecom USB bluetooth dongle.

BlueSoleil always shows the headset but without a name, it only shows the address

@Stardidi Very interesting, I am looking at some datasheets and related materials for that Nokia device now to see if I can spot anything interesting.

@jamesspinella It's OK, I really appreciate you trying!

@Laur3nt1u Weird, that could be a change in the Bluetooth stack, driver-related, etc. Unsure, I'd have to know more about the device/OS/Bluetooth stack you are using to connect.

@Stardidi When you say address, do you mean the MAC address? Or do you mean the device ID and that kind of info? The information was what I posted here:

#17 (comment)

@Laur3nt1u "BlueSoleil"? What is the address you see?

@vgturtle127
I have a laptop with intel wireless bluetooth 7260 v4+hs, windows 10 and bluesoleil 10.0.492.1 that I just downloaded to see if I could connect with the headset

the gamepad address: A4:15:66:72:13:37
the headset address: 00:3C:7F:F0:F0:0A

bluesoleil has this thing where you can change how bt devices see your bt (desktop, laptop, headset, printer) maybe audio works only if it detects a ps4

@Laur3nt1u Thanks for the MAC addresses. Bluesoleil costs money, otherwise I would love to try it when I get my Bluetooth adapter.

There are only a few Bluetooth stacks that I know of:

  1. Broadcom
  2. Toshiba
  3. Microsoft

If anybody is using a different stack, please let me know. If you are using something that identifies as a different stack, keep in mind they can license out stacks or fork them if they are open-source, so it may just be one of the three I mentioned, but they modified it for their use.

@vgturtle127 I was talking about MAC addresses, which are visible in the screenshot I posted above.

Unfortunately, I'm unable to connect again, so the device doesn't show up anywhere.

@Stardidi Oh, OK. Thanks, that will help when I test.

It's weird the device shows up and then disappears from everybody's computer...

@vgturtle127 Hey i have been trying to contact you via email but there is no answer from you!

@darkndream Sorry, I have been busy. I am checking it now.

I'm actually looking into the same thing for linux, and would hope we could pool our efforts on this. Does anyone have a list of real PS4 bluetooth mac addresses?

@ntzrmtthihu777 Linux may actually be better for this. Why do you ask about the MAC addresses?

well... I was thinking perhaps if I had a DS4 that 'knew' it belonged to a given PS4, I could spoof said mac and make the DS4 'think' it was talking to a PS4. I personally have never seen the dual devices you guys show.

My bt dongle is:

ID 0b05:17cb ASUSTek Computer, Inc. Broadcom BCM20702A0 Bluetooth

@ntzrmtthihu777 I see, that actually makes sense. I wish I could run Linux on my PS4, then I could test it on that.

Are you aware of any methods to extract information from the dualshock4 itself? Either usb or bluetooth/hidraw, I can get a handle on it via python-pyusb or python-hidapi (using the hidraw backend)

@ntzrmtthihu777 Other than dumping some HID info and stuff, no. Not on Windows, at least.

Let me see if I can get the USB descriptor info dumped again...

Information for device Wireless Controller (VID=0x054C PID=0x05C4):

Connection Information:

Connection status: Device connected
Device actual bus speed: FullSpeed
Device supports USB 1.1 specification
Device supports USB 2.0 specification
Device is hub: No
Device address: 0x0002
Current configuration value: 0x01
Number of open pipes: 2

Device Descriptor:

0x12 bLength
0x01 bDescriptorType
0x0200 bcdUSB
0x00 bDeviceClass
0x00 bDeviceSubClass
0x00 bDeviceProtocol
0x40 bMaxPacketSize0 (64 Bytes)
0x054C idVendor
0x05C4 idProduct
0x0100 bcdDevice
0x01 iManufacturer "Sony Computer Entertainment"
0x02 iProduct "Wireless Controller"
0x00 iSerialNumber
0x01 bNumConfigurations
Hex dump:
0x12 0x01 0x00 0x02 0x00 0x00 0x00 0x40 0x4C 0x05
0xC4 0x05 0x00 0x01 0x01 0x02 0x00 0x01

Configuration Descriptor:

0x09 bLength
0x02 bDescriptorType
0x0029 wTotalLength (41 Bytes)
0x01 bNumInterfaces
0x01 bConfigurationValue
0x00 iConfiguration
0xC0 bmAttributes (Self-powered Device)
0xFA bMaxPower (500 mA)
Hex dump:
0x09 0x02 0x29 0x00 0x01 0x01 0x00 0xC0 0xFA

Interface Descriptor:

0x09 bLength
0x04 bDescriptorType
0x00 bInterfaceNumber
0x00 bAlternateSetting
0x02 bNumEndPoints
0x03 bInterfaceClass (Human Interface Device Class)
0x00 bInterfaceSubClass
0x00 bInterfaceProtocol
0x00 iInterface
Hex dump:
0x09 0x04 0x00 0x00 0x02 0x03 0x00 0x00 0x00

HID Descriptor:

0x09 bLength
0x21 bDescriptorType
0x0111 bcdHID
0x00 bCountryCode
0x01 bNumDescriptors
0x22 bDescriptorType (Report descriptor)
0x01E3 bDescriptorLength
Hex dump:
0x09 0x21 0x11 0x01 0x00 0x01 0x22 0xE3 0x01

Endpoint Descriptor:

0x07 bLength
0x05 bDescriptorType
0x84 bEndpointAddress (IN Endpoint)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0040 wMaxPacketSize (64 Bytes)
0x05 bInterval
Hex dump:
0x07 0x05 0x84 0x03 0x40 0x00 0x05

Endpoint Descriptor:

0x07 bLength
0x05 bDescriptorType
0x03 bEndpointAddress (OUT Endpoint)
0x03 bmAttributes (Transfer: Interrupt / Synch: None / Usage: Data)
0x0040 wMaxPacketSize (64 Bytes)
0x05 bInterval
Hex dump:
0x07 0x05 0x03 0x03 0x40 0x00 0x05

Microsoft OS Descriptor is not available. Error code: 0x0000001F

String Descriptor Table

Index LANGID String
0x00 0x0000 0x0409
Hex dump:
0x04 0x03 0x09 0x04

0x01 0x0409 "Sony Computer Entertainment"
Hex dump:
0x38 0x03 0x53 0x00 0x6F 0x00 0x6E 0x00 0x79 0x00
0x20 0x00 0x43 0x00 0x6F 0x00 0x6D 0x00 0x70 0x00
0x75 0x00 0x74 0x00 0x65 0x00 0x72 0x00 0x20 0x00
0x45 0x00 0x6E 0x00 0x74 0x00 0x65 0x00 0x72 0x00
0x74 0x00 0x61 0x00 0x69 0x00 0x6E 0x00 0x6D 0x00
0x65 0x00 0x6E 0x00 0x74 0x00

0x02 0x0409 "Wireless Controller"
Hex dump:
0x28 0x03 0x57 0x00 0x69 0x00 0x72 0x00 0x65 0x00
0x6C 0x00 0x65 0x00 0x73 0x00 0x73 0x00 0x20 0x00
0x43 0x00 0x6F 0x00 0x6E 0x00 0x74 0x00 0x72 0x00
0x6F 0x00 0x6C 0x00 0x6C 0x00 0x65 0x00 0x72 0x00


Whole Device Descriptor as hex dump:
0x12, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x4C, 0x05,
0xC4, 0x05, 0x00, 0x01, 0x01, 0x02, 0x00, 0x01

Whole Configuration Descriptor as hex dump:
0x09, 0x02, 0x29, 0x00, 0x01, 0x01, 0x00, 0xC0, 0xFA, 0x09,
0x04, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x09, 0x21,
0x11, 0x01, 0x00, 0x01, 0x22, 0xE3, 0x01, 0x07, 0x05, 0x84,
0x03, 0x40, 0x00, 0x05, 0x07, 0x05, 0x03, 0x03, 0x40, 0x00,
0x05


Running on: Windows 10 or greater

That's what I got from the descriptor dump...

Interesting. For the sake of record I'm running arch linux on kernel 4.4.1 (which has built-in support for the DS4 and some other sony things via the hid-sony kernel module). I was more talking about volatile information, like what its paired to and whatnot.

Do you have access to any sort of usb sniffer? Apparently the DS4 pairs with the PS4 via usb, but I don't have one to test with. I think using the pairing mode (share+ps) wrecks its ability to do both audio and controllers, so if we can get that info to the ds4 over usb first it may just do something nifty.

@ntzrmtthihu777 No, all I have is an old wireless adapter unfortunately. And I'm using that to connect to the internet. πŸ˜†

Good idea about the pairing mode. The only problem is that I think audio may be entirely through Bluetooth. If audio could be carried over USB, it would have recognized the controller as a Bluetooth audio device as well. In a usable way, I mean. Not 100% sure, but I think that's how it works.

Not what I meant. I just mean that the initial ps4/ds4 pairing is done over usb, so if we mimic that, maybe something cool could happen.

@ntzrmtthihu777 Gotcha. Sorry. πŸ˜†

It would make sense from a Sony perspective, I suppose.

I'm unsure of how to approach that, though. Do you have any ideas?

I just messaged a guy on reddit that has a beagle usb analyzer and a ps4/ds4, asking him to snoop that process. if it can be replicated with pyusb/hidapi then we can do cool things :)

and never mind. he no longer posesses access to it (new job) so that lead is gone. I have access to a friend with a PS4 but no beagle thingie.

@ntzrmtthihu777 I have multiple uses for a USB analyzer, and Bluetooth sniffer as well. I really want both, I can think of many projects that would be so much easier with both. πŸ˜„

I have a PS4, DS4, and even games and stuff. I just don't have any way to figure out more about the controller. 😞

Actually hold the phone, I think I've found something of interest.... Wait till I get off work, I have an idea

@ntzrmtthihu777 Anxiously awaiting. πŸ˜„

@vgturtle127 nope... Idea did not do the trick. It's tricky when you don't actually have a ps4 to compare with

@ntzrmtthihu777 Darn, that sucks. Let me try some things on my end.

@ntzrmtthihu777 @darkndream @Stardidi @Laur3nt1u @jimmyco2008 @kq01526 @michlord @Anoneom @OscBacon @HeMu1 @IanM-56 @buzzcut2k15 @MrPTFMoose @cooperate

So good news, I was able to pool some of my own money together and a Bluetooth adapter should be here tomorrow! πŸ˜„

adem commented

So glad to see effort put into this subject, not to mention that it's an interesting technical challenge. If only I wasn't within my exam period. Let me know if I can help with any information, I have access to a PS4 and two DS4's.

@adem When I get my Bluetooth adapter, I will see if you guys can help me test anything I make if I have some breakthrough or something.

I have some arduino boards and a bt module which I can configure. I would like to make the bt module seem like a ps4 to see if the controller would show the audio device and connect to it but I don't have a ps4 so I need some info about the bt. Here's what I can change http://www.instructables.com/files/orig/FKY/Z0UT/HX7OYY7I/FKYZ0UTHX7OYY7I.pdf

I just noticed something @Stardidi and I posted the MAC address of the headset device and apparently is the same 00:3C:7F:F0:F0:0A so the ps4 might automatically try to connect to the headset device, which is hidden, by address

@vgturtle127 For me the audio device only started showing up after I preformed a reset of the DS4. Try pressing the reset button and then just the play button. It can be a bit finicky to get show up.

@Stardidi Confirmed, on Windows 7 at least. It does stop showing up again though after connecting to the controller.

@Laur3nt1u @Stardidi @timvisee

Thanks, guys. That actually helped. I got it to show up on Windows 10. Something having to do with resetting allowed me to get it to show up. Now I am going to use a Bluetooth sniffing software to see if I can get some dumps...

I can confirm the MAC address is in fact "00:3C:7F:F0:F0:0A".

The device is also called "audio headset", which makes me believe that this is the DS4 audio.

The controller is in fact trying to do an authentication handshake with nearby Bluetooth devices!

The MAC address is also hidden, which is both frustrating and really cool all at the same time.

(Thanks, @Laur3nt1u ! )

More dumping incoming...

Some more information, apparently when any non-approved device tries to connect you get an WSAETIMEDOUT 10060 error, which usually means that the Bluetooth radio timed out. That obviously isn't the case.

I also reset my DS4 again, and this time I got some more information in my Bluetooth dumper:

84:17:66:dc:a2:7c MAC address
"Peripheral Gamepad"
Made by Weifang GoerTek Electronics Co., Ltd

This is somewhat crucial, as these are manufacturers of consumer audio hardware!

I tried to force a connect with this device as well, but got the same result. 😞

The device is broadcasting the audio device without power, so it must be internally powered.

I would use a PIC microcontroller or an Arduino or something to dump everything I could, but I don't want to risk any damage to my only DS4, and I use my DS4 for PC games and emulation all the time. I have grown very attached to it. πŸ˜‰

mirh commented

Just copy pasting info you might have not seen in the above reference in ScpToolkit issue

Audio is only handled in PS4 mode (which means already paired?), but it disappear soon because it expects to be already paired in the first place.

Assumed this problem was overcome (ideally requires a real ps4 to spoof), sound should shouldn't be hard to get through normal headset profile.
Since HSP reportedly only supports CVSD (monophonic and just crappy for general audio) and PCM (too much bandwidth intensive afaik) though, I wonder if A2DP couldn't still be involved.

Everything about spoofing is already documented.

@mirh I did not see that! I will look into that. I'm starting to think the hardware may have hardcoded values, so spoofing would be necessary...

Perhaps if we could do the usb pair with both the real DS4 and the audio sub device prior to activating bluetooth...

mirh commented

@vgturtle127 I'm not sure though this project is the best place to tinker with audio passthrough.
I mean.. Personally I don't own one, but if "PS4 mode" in DS4 is any similar to.. well, just "normal mode" in DS3 (which is the only one it has btw) you are really going to need something more than just stock Windows drivers (whence DS4Windows depends, right?)

ScpToolkit seems way better as "infrastructure" imo.
You may want to get in touch with @nefarius then, considering it seems there might be reasons Windows default usb interface couldn't even be enough.

@ntzrmtthihu777 Check my last two links, and spoofing is going to be as easy as pieing.

@mirh I suppose I hadn't looked that far into it since I am still doing all the reverse-engineering myself.

You may be right, but until the work is done to make the audio usable on the DS4, I probably won't add it to any of the controller applications. I still have to get the Bluetooth to consistently work without issue, for instance. For now, the Bluetooth seemingly shuts off when it wants to.

Maybe @nefarius and @Jays2Kings can both use a sort of "helper application" that I code myself? Not sure, again I haven't thought about it.

Spoofing is actually harder than people think. You have to keep a keep alive Bluetooth packet sending, and you have to stay 100% authentic to the Sony specification, otherwise it denies the connection outright.

I wish I could get an AirPCap, but those are $700. 😭

I still have to get the Bluetooth to consistently work without issue, for instance. For now, the Bluetooth seemingly shuts off when it wants to.

@vgturtle127 there was a testing on other website about various bluetooth adapters. You definately need to buy an ASUS BT400 usb dongle. Almost all the other ones will disconnect / dodgy connection.

I say that since having the exact same problem - and just as the other website people found in their testing: ASUS BT400 is what solved it.

[EDIT] Sorry that model number was not quite right. Meant to say ASUS BT400

Source: http://cronusmax.com/bluetooth-adapters/

As stated on page ^^ above, there is also a ConusMax branded dongle. Which appears to be same as the ASUS. Yet Cronusmax is not generally available apart from US. If you happen to live there, they might be $2 cheaper than ASUS branded or something.

My previous BT dongle was a cheap CSR 4.0 from china... would disconnect constantly, all the time. After only a few seconds.

mirh commented

Isn't Cambridge Silicon Radio ===> Qualcomm which in turns <==== atheros? Which in turn is used by Asus?
Ok, sorry. I just realized now the asus chip is just a rebranded BCM20702.

Anyway, the point is that you can't just normally connect to the dongle. So I'd see as better, one with a bigger open source support, rather than just windows driver quality.

thanks @mirh. That will let be check the chipset it against my other BRIX box, which has a built-in Bluetooth.

I currently have two ASUS BT400 dongles available at home, which I'm using for a year already with my PS4 controller, and I can confirm that indeed, the connection is really solid.

Although, is it possible to spoof or sniff using this dongle? The bluetooth software is quite a mess, especially with the implementation of Windows 7.

Tim VisΓ©e

@timvisee @dreamcat4 @mirh I think you guys misunderstood me, I mean I need to get the Bluetooth pairing process to work 100%. πŸ˜„

It should be possible to sniff any device, spoofing would have to be done either via packet injection with an AirPCap or specially coded software/drivers.

Control of audio is a dump could be done using any sniffer tool bluetooth and so reverse engineer or understand why it appears when reset control over not connect? There is hope: P

Pnuky commented

http://gaming.stackexchange.com/questions/188314/bluetooth-audio-streaming-from-mac-pc-to-dualshock-4

I noticed that - if you pair "Wireless Controler" then "Bluetooth audio device" will dissapear.
This same will happen if you connect first to "Bluetooth audio device" then "Wireless Controler" will hide.

@PunkyPL Yeah, it behaves extremely weird. Common with Sony hardware to act weird, though. πŸ˜„

So i have a PS4 controller but no ps4 and would like to be able to make this happen. What can I help with.

@nuiofrd Well, do you have a Bluetooth adapter?

I have a laptop with native Bluetooth 4.0 i use it to play games all of the time.

@vgturtle127 ^ i forgot to add your name

@nuiofrd You can edit comments, by the way. Anyway, if you can use your laptop to connect to the controller and see what MAC address it uses, I would like additional confirmation that the MAC address is always the same. I have a feeling it will be, but it doesn't hurt to be through.

After that, I would like to know what Bluetooth adapter you are using so I can look up the chipset.