Bluetooth SCO

Hi,

I’m working on the bluetooth profile driver to retrieve the voice data from the cellphone and then play the voice data in the laptop. The cellphone is connected with the laptop via bluetooth. Right now, the driver has already got the voice data from the SCO. I’m wondering how can I push the voice data to the speaker of the laptop or the Windows Audio Subsystem.

Thanks,
Marshal

Wave audio API is probably the simplest to use.

Thomas F. Divine
http://www.pcausa.com

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of
xxxxx@hotmail.com
Sent: Friday, March 15, 2013 7:36 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] Bluetooth SCO

Hi,

I’m working on the bluetooth profile driver to retrieve the voice data from
the cellphone and then play the voice data in the laptop. The cellphone is
connected with the laptop via bluetooth. Right now, the driver has already
got the voice data from the SCO. I’m wondering how can I push the voice data
to the speaker of the laptop or the Windows Audio Subsystem.

Thanks,
Marshal


NTDEV is sponsored by OSR

OSR is HIRING!! See http://www.osr.com/careers

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

There is no way to “push” the data to the speaker directly; there has to
be something running on the laptop to do this. The Wave Audio API would
be called from the user level to accomplish this. This suggests a
user-level app or a service.
joe

Wave audio API is probably the simplest to use.

Thomas F. Divine
http://www.pcausa.com

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of
xxxxx@hotmail.com
Sent: Friday, March 15, 2013 7:36 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] Bluetooth SCO

Hi,

I’m working on the bluetooth profile driver to retrieve the voice data
from
the cellphone and then play the voice data in the laptop. The cellphone is
connected with the laptop via bluetooth. Right now, the driver has already
got the voice data from the SCO. I’m wondering how can I push the voice
data
to the speaker of the laptop or the Windows Audio Subsystem.

Thanks,
Marshal


NTDEV is sponsored by OSR

OSR is HIRING!! See http://www.osr.com/careers

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

OSR is HIRING!! See http://www.osr.com/careers

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

Thanks for the information. However, the BT profile driver is running in kernel. How can I pass the kernel sound packet to the Wave Audio APIs?

Rather than that, can I implement this using the MSVAD? If so, similar question, how can I pass the sound packet to the virtual audio driver?

Thanks,
Marshall

This raises issues of synchronization with other apps which are using
audio. This is generally handled through the mixer rather than going
directly to the audio channel. I do not know if mixer functionality is
available in the kernel.
joe

Thanks for the information. However, the BT profile driver is running in
kernel. How can I pass the kernel sound packet to the Wave Audio APIs?

Rather than that, can I implement this using the MSVAD? If so, similar
question, how can I pass the sound packet to the virtual audio driver?

Thanks,
Marshall


NTDEV is sponsored by OSR

OSR is HIRING!! See http://www.osr.com/careers

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

Are you trying to implement HF role in windows?
Windows 8 already has inbox AG functions, so it’s not necessary to work on
a self-made AG module.


Danny

Hi,

What I’m trying to make is to have an application running in PC side. When the cellphone has incoming call, the application can hear the voice and talk.

I tried to connect the IPhone using the BT but I don’t see any audio devices are created. According to the MSDN, the audio profile driver should be implemented in kernel. That’s why we have a profile BT driver to capture the audio packet. Now the problem is how can I transfer the audio packet to the real sound card. Should I implement the virtual audio driver to capture the audio packet from the BT profile driver and push it to the physical sound card? Does it work?

Regards,
Marshall

xxxxx@hotmail.com wrote:

What I’m trying to make is to have an application running in PC side. When the cellphone has incoming call, the application can hear the voice and talk.

That’s a reasonable specification, but that’s not what you said at
first. At first, you said you wanted the DRIVER to route to the sound
card. That’s the wrong answer. Let the Bluetooth audio route to an
application. Let the application route to the sound card.

Now the problem is how can I transfer the audio packet to the real sound card. Should I implement the virtual audio driver to capture the audio packet from the BT profile driver and push it to the physical sound card?

No. You should have a telephone application that connects to the Bt
audio profile driver, reads the packets, and routes them to the sound
card using the normal audio APIs.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

Hi Tim,

Is it the WASAPI you mentioned?

Do I need anything special to pass the audio packets from the bluetooth profile driver to the application? I plan to expose an interface to the application so that it can read the packets through calling ReadFile something. Is it the right way to go?

Thanks,
Marshall

xxxxx@hotmail.com wrote:

Is it the WASAPI you mentioned?

Ordinarily, I only use wasapi on my sushi. Sorry, I should have resisted.

WASAPI or DirectSound or waveIn – any audio technology should work.

Do I need anything special to pass the audio packets from the bluetooth profile driver to the application? I plan to expose an interface to the application so that it can read the packets through calling ReadFile something. Is it the right way to go?

No. If you have a genuine Bluetooth audio device with genuine A2DP
driver support, it will appear to the operating system as a normal audio
device, and you use the normal audio APIs to access it. No custom APIs
are required.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

Hi Tim,

The problem is that there is no such audio device is created when I connect to the IPhone from the laptop. I only see several BT services nodes under the BT device category in the device manager.

What should I do in this case? I have already made a SCO driver to retrieve the sound packets. How can I pass the packets to user mode audio APIs - WASAPI or DirectSound or waveIn?

Regards,
Marshall

xxxxx@hotmail.com wrote:

The problem is that there is no such audio device is created when I connect to the IPhone from the laptop. I only see several BT services nodes under the BT device category in the device manager.

I’m not surprised. The iPhone expects to be a Bluetooth master, not a
Bluetooth slave. You have two masters in that conversation.

What should I do in this case? I have already made a SCO driver to retrieve the sound packets. How can I pass the packets to user mode audio APIs - WASAPI or DirectSound or waveIn?

Are you saying you have a driver that actually does retrieve audio
packets from an iPhone? Or are you saying you have written a driver
that SHOULD retrieve audio packets, if the plumbing were present?


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

Hi Tim,

I mean I have written a driver to retrieve the auido packets from the cellphone.

Marshall

xxxxx@hotmail.com wrote:

I mean I have written a driver to retrieve the auido packets from the cellphone.

That’s not what I asked. I asked whether you have a driver that SHOULD
work, or if you have a driver that actually DOES work.

What protocol are you using to get the audio? And what audio are you
actually getting?


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

Hi Tim,

Sorry for late respond. I was actually busy in working the driver to retrieve the audio packets.

Actaully, so far my SCO profile driver can’t receive any audio packets after pick up the phone. Do you know how the driver can receive the audio packets after building up the phone connection. I have no idea about the protocol to get the audio. Can you give me more information about the approach? I’m new to BT and blocked here for almost one week.

Thanks,
Marshall

xxxxx@hotmail.com wrote:

Sorry for late respond. I was actually busy in working the driver to retrieve the audio packets.

Actaully, so far my SCO profile driver can’t receive any audio packets after pick up the phone. Do you know how the driver can receive the audio packets after building up the phone connection. I have no idea about the protocol to get the audio. Can you give me more information about the approach? I’m new to BT and blocked here for almost one week.

Remember SCO is not a profile – it’s just the connection that allows
access to profiles. To do audio, you need a profile driver that handles
HSP and/or HFP. Both of those have specification documents that tell
you how to access the audio channel.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

Hi Tim,

Thanks for the information about it. I’m a little clear about it now.

However, I checked out the entire WDK about the BT and saw no spec about the two profiles. Would you point me the right place to see how I can access the audio through these two profiles?

Thanks in advance,
Marshall

xxxxx@hotmail.com wrote:

Thanks for the information about it. I’m a little clear about it now.

However, I checked out the entire WDK about the BT and saw no spec about the two profiles. Would you point me the right place to see how I can access the audio through these two profiles?

As far as I know, there is nothing in the WDK that demonstrates this.
You would have to implement it yourself.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.