Bluetooth Hands-free (again): understanding the architecture - Windows Mobile Development and Hacking General

I'm hoping to start discussion on the internals of the bluetooth stack on the Blue Angel and possibly other devices!
There's two high-level elements to this:
- The Microsoft stuff
- The Widcomm (Broadcom) stuff
Knowing what software managed what part of the process would be useful . I'm starting to piece it together, but I might be wrong...
The headset (HS) sends commands to the PocketPC (known as an AG - audio gateway) using simple AT commands. For example, pushing the button twice on my Nokia HDW-3 causes last number redial, so I'm guessing that the HS sends AT+BLDN and the bluetooth app acts on this appropriately.
AT+BVRA is the command that I think we're interested in - this enables /disables voice dialing.
When I push and hold the HS button, the notification icon changes in the top bar, and it appears that I get noise through the headset (tho not the PocketPC output!), and that the mic is connected too (tho the phone mic, NOT the pocketPC mic - tried recording using voice notes, and didn't get anywhere from the headet). This indicates that the AT+BVRA is being received and processed, but no application is being kicked off.
I *think* that the hfpui.exe program is responsible for the icon, but I might be wrong. I've had a quick peek through the binary, and there's a lot of text in there which looks familiar, but it's a pain in the neck reading wide characters
What is so frustrating is that the push for voice dial is being recognised, but nothing is being kicked off.
The MS bluetooth registry settings (HKLM\SW\Microsoft\Bluetooth) has two interesting entries, both of which reference btagsvc.dll.
There's a load of stuff in HKLM\SW\Widcomm. Most interesting is probably the Plugin\Handsfree area, which autoloads \\windows\hfpui.exe, and provides a controlpanel (internal to the BT Manager) which is hfpcontrolpanel.dll. I assume this is
BTAGSVC has an entry in the HKLM\services key, as does "HandsFree". HandsFree uses the HandsFree_DLL.dll, apparently...
There *must* be a way to correct this. My guess is that we can either change something in the BTHFP dll, or the HFPUI, or one of the apps, we will be in good stead to move forward.
Anyone got any Cunning Ideas how to take this forward, or any more info on the workings of the stack to share?

Just had a resource editor on HFPUI.exe
It contains the notification icons for the top bar. Seems to point that it is responsible for processing the commands - or is that a wrong assumption?

Understand Architecture
I hope this goes, I cant be much help but am very interested. Keep it up

Related

RECORDING CALLS, DTMF SEND, PHONE S/W MOD - CODERS REQUIRED

Hi on my older phones like siemens there was an option to send dtmf tones which i used a lot.
EG.
1) I call 0800 CALLING CARD number and get a dialtone from the callco
2) I quickly go into my contacts and pull out the relevant contact and send the number as a dtmf tone
3) I get through to the contact
I really need to be able to send dtmf tones asap!
[PLEASE READ POST 8 FOR DETAILS ABOUT RECORDING CALLS AND MODIFYING PHONE SOFTWARE]
seems to be some software which does it but if any other ideas or software please let me know.
http://www.mobidial.com/mD/
Try dialDTMF at http://sourceforge.net/projects/dialdtmf
On my Jam it works flawlessly.
--------------
i-Mate Jam
ROM: 1.12.00 WWE
ROM Date: 05/28/05
Radio Ver. 1.13.00
Protocol Ver. 1337.43
ExtRom Ver. 1.12.128 WWE
Hi there thank you for the pointer!
I am about to try it out later today but have been reading about dialDTMF on here:
http://dialdtmf.sourceforge.net/
It sounds like it is designed before pocket pc's became phones simply to send a dtmf tone through to another phone by holding the pocket pc over the mic of the other phone. In this sense I would describe it as "Emitting DTMF tones" as oppose to "Sending DTMF tones".
This is different in the sense I would like to call a freephone number on the magician and then send the tones on the magician from my contacts. This is what I am calling "Sending DTMF tones".
Im hoping that even though it is designed to *emit* DTMF tones the sound is loud enough to go through to the freephone calling card company!!
Fingers crossed.
If anyone knows of a "Send DTMF tones" solution for the HTC Typhoon - SPV C500 / Sp3 please also post it, thank you!
Hi All,
I'm the developer of dialDTMF, Glad to hear it works out for some people,
As for cell phone support, you are correct it does not send DTMF's using the cell phone api it just makes sounds. You could try upping the volume and hope the mic picks it up like sainthalo mentioned.
The alternative would be to take the source code and update it to send the DTMF tone rather than play it. This would fairly easy for a cell phone developer to do (I don't have time or a cell phone that runs wm2003), should just be a couple of new functions. I'm happy to discuss (via email) though if some one wants to try, The source code is freely available. You could also check out http://artax.karlin.mff.cuni.cz/~jsyk7570/Xialer/ but it doesn't really handle calling cards.
I've a potentiall silly question: Are 0800 numbers free to call from mobile phones in the UK now? The last time I was over there they weren't (only from landlines). It maybe that using a calling card won't save any money.
Chris
Hi there clach04,
Thanks for signing up to these forums to help in this quest!
DialDTMF works as it is designed - as a Pocket PC DTMF tone generator but not to send DTMF tones down the Magician phoneline.
Okay, i'm sad to report that it does not work because it is not using the api and so is a "DTMF Emitter" rather than a "DTMF Sender".
There are several coders around here who are very active so god willing one of them will be along to help although it's something like this which gives the real urge to learn how to code. DO you have any advice for me (links, tools, etc) if I were to try and achieve this myself?
As for the 0800 codes there are some tarriffs left in the UK where you are entitled to call 0800 numbers to come off free minutes or simply as genuine free phone calls - thankfully I have one of these older contracts and therefore I can use calling card services.
Best regards
sainthalo
Guys, I would love to help out but with my upcoming nuptials it might be difficult.
However, I'm thinking thus:
Emitting DTMF is easy, play it out of the speaker.
Sending dtmf will require interfacing with the Phone part of the PDA; you should be aware that our PDA Phones are actually two semi-independant devices, phone and PDA; have you noticed you can switch off the PDA and still continue with a call? The two devices communicate through a virtual COM port:- this is done through AT commands and/or RIL. This is not an area of the PDA I have had much experience with yet, but what I understand so far is that it is very difficult to send data through to the Phone part of the PDA, from the PDA part.
This sounds absurd, and I may be absurdly wrong, but I suspect it is a similar problem to the existing issue about recording in-progress telephone calls. We don't yet know how, or if it is possible at all to interface directly into that part of the PDA and interact with the data, and so recording both sides of a phone calls is currently considered impossible.
I know user Pai has done a lot of work on Cell ID and other interfacing on that side of things. I suggest giving him a bell (no pun intended!) and asking his opinion.
I'll try to monitor this thread though.
clach04 - Do you have any further thoughts on this?
V
EDIT: Guys, I just had a thought. In the very old modem days school, we used to dial using at commands AT P (for pulse dialling, or AT T for tone)
eg AT P 123 would dial 123
It would do this by generating DTMF tones!
It should be possible I presume to send DTMF tones in this way as discussed above (RIL/AT). Anyone concur? This can be tested I presume with a terminal program, or just find COM code on this board. I'll try to find it if I get a chance.
V
Hey thanks Vijay, i'll keep my fingers crossed you come back to think about this in the future!
I have had another thought following Vijay's post and realised that a few other bugbears which many people find a tad annoying and would like to circumvent are possibly linked to this case. I have read on here people would like to play a recording/song from the Magician to a caller they are speaking to. I have done this many times on a Siemens SL45i but not on HTC Typhoon or Magician.
Im guessing the inability to play a Magician located recording/song down the Magician phoneline is down to the same reason that the dtmfDialer will not make a noise during a call - something is blocking out use of the speaker by PPC based software. Im assuming it is the PHONE software which locks out other PPC software.
If we can hack the PHONE calling software so that it allows other software to operate as normal it may well impact/solve the following problems:
Recording both sides of voice calls clearly
Sending DTMF tones
Playing recordings/music to other side of call
The dtmfDialer definitely does something during a call and I think i can hear some suppressed clicking when attempting to send a dtmfDialer tone during a phone call but sadly no audible tones. This possibly confirms my theory that the PHONE CALL SOFTWARE is blocking use of the speaker.
Well what do you all think? Possibly an awesome fix to many problems if the phone dialer can be hacked...
Saint, with regard to recording calls, there are other threads on this issue where much better men than I have said it's impossible, at least right now.
As I understand it, there's no direct connection between the phone and the pda bit, so playing something out of the speaker isn't playing it down the line - so the best we've got is "emission" rather then send.
This isn't a limitation by the caller program, it's a hardware limitation caused by the way our PDA phones are hacked together.
However, I think the AT P commands should crack this. I'll look into it at some point, if I can find example code.
V
Saint, with regard to recording calls, there are other threads on this issue where much better men than I have said it's impossible, at least right now.
As I understand it, there's no direct connection between the phone and the pda bit, so playing something out of the speaker isn't playing it down the line - so the best we've got is "emission" rather then send.
This isn't a limitation by the caller program, it's a hardware limitation caused by the way our PDA phones are hacked together.
However, I think the AT P commands should crack this. I'll look into it at some point, if I can find example code.
V
vijay555 said:
you should be aware that our PDA Phones are actually two semi-independant devices, phone and PDA;
....
The two devices communicate through a virtual COM port:- this is done through AT commands and/or RIL.
..
clach04 - Do you have any further thoughts on this?
Click to expand...
Click to collapse
Not really, my comments about how easy it would be to extend dialDTMF were from the dialDTMF contacts plugin perspective. It sounds like the SDK/api for these devices (for phone use) is pretty thin :-( If you do find that a modem AT style dial works you can replace the dtmf player in dialDTMF with a dial-string generator - the hard bit will be the interface to the phone. The dialing rules library I put into dialDTMF actually has a demo program that dumps dial strings to stdout (when ran on the desktop) - but until the phone api is resolved that is only midly interesting/useful now.
The AT style dial string approach sounds workable from the description.
sainthalo said:
DO you have any advice for me (links, tools, etc) if I were to try and achieve this myself?
Click to expand...
Click to collapse
That's one of those open ended questions that are really tricky to answer, I suspect this forum you are on is the best place to start as I suspect they have links to everything you will need:
You need a Cross compiler for WinCE:
http://www.microsoft.com/downloads/...3D-50D1-41B2-A107-FA75AE960856&displaylang=en
I guess youwill need a phone sdk:
http://www.microsoft.com/downloads/...99-EC5C-427C-807C-4C0F96765A81&displaylang=en
I'm not clear from reading the comments that this is for your device though..
.
If you nead to learn C then your learning curve will be pretty steep, try http://www.cyberdiem.com/vin/learn.html as a starting point
http://www.cs.virginia.edu/~lcc-win32/ is a nice small system and has tutorials to get you started with simple desktop programs
As for the actual phone SDK/api - I've no idea (and no phone) sorry I can't be of more help. Once the basic how to send DTMF's through the phone is solved converting dialDTMF will be pretty straight forward and I can point people in the right direction with that,
Chris
clach - I agree it should be very easy to converter over your DTMF code to AT or equivalent once someone hacks in AT commands.
General:
see here:
http://forum.xda-developers.com/viewtopic.php?t=19866&highlight=commands
There's code here: http://forum.xda-developers.com/vie...start=25&sid=3e4fdf4cec07bfe39e806da375db69c3
that I'm going to look into for CellID at some point. However, if you look through you can see how they're sending standard AT commands.
Hope that points someone somewhere!
Re: learning c++. I've only been using it for < 1 month, and it is a steep learning curve, but there are some things that can only be done in C++ and EVB isn't worth touching generally IMHO. So, steep learning curve it is. I'll be on the beach with C++ for Dummies :wink:
V
Guys i need some help with a programe
Something fun
1, Phone captures the UPC barcode/ISBN number (manually/scanning/etc)
2, Software converts UPC to ISBN (this is done via a simple formula)
3, Software converts ISBN to DTMF (or touch tone)
4, Software ready to accept new UPC barcode/ISBN number
(manually/scanning/etc) :roll:
Let me know if anyone wants to take on this project
[email protected]
RIL (Radio Interface Layer)
I got this from google - it may be the key. I've not looked into it yet but thought I'd post it to see if anyone has gone down the RIL road yet and if they've got any ideas:
"
how to send DTMF on smartphone?
I found RIL_SendDTMF function of RIL API
but I don't know how to use it?
May I LoadLibrary of RILGSM.dll and GetProcAddress of RIL_SendDTMF function
to realize send DTMF?
or have another simply method?
Thanks£¡
-
Best IE Helper Object: Ai.RoboForm
http://roboform.go.51.net
http://www.roboform.com/dist/affs/AiRoboForm-win32.exe
Siber Oct 19, 4:13 am show options
Newsgroups: microsoft.public.pocketpc.developer
From: "Siber" <[email protected]> - Find messages by this author
Date: Wed, 19 Oct 2005 12:13:21 +0800
Local: Wed, Oct 19 2005 4:13 am
Subject: Re: how to send DTMF on smartphone?
Reply | Reply to Author | Forward | Print | Individual Message | Show original | Report Abuse
I Got iT
lineGenerateDigits()
"
Anyone using C# to use this?
Pat
RIL
FYI:
RILGSM.dll can also be known as RIL.dll

Quick app request: Enabling BT Voice Command for all

I'm familiar with developing Windows apps (Win32/MFC) but I haven't worked with that stuff for years and I also am not familiar with Windows CE.
I'm looking for someone to help try and put together an app to do the following:
* Call the app BTAudioOff.exe
* Call the app BTAudioOn.exe
* Call the app VoiceCmd.exe
The BTAudio apps are the ones posted by someone on here and VoiceCMD is the executable from Microsoft's VC.
I did some testing and if I run these apps in this order Voice Command over BT works every single time with no issues and with excellent clarity since you are manually opening the BT audio gateway and calling VC.
I was looking to create a batch or script file but couldn't find if Windows CE supports it. By having one .exe or script that runs them in this order, we can have the BT button launch that app (registry change) which in turn would allow MS VC to be used over BT on all BT headsets repeatedly.
I'm doing this for myself and others in the community who are looking for this solution. I'd really appreciate any help people could provide on this.
Thanks.
Check out VJVolubilis.
It will be updated to script in the Voice Command registry hack, but if you do the voice command registry hack yourself, just opening the Audio gateway (-AGon) works for most of us.
V
vijay555 said:
Check out VJVolubilis.
It will be updated to script in the Voice Command registry hack, but if you do the voice command registry hack yourself, just opening the Audio gateway (-AGon) works for most of us.
V
Click to expand...
Click to collapse
Hey Vijay, nice website and tools. Looks nice.
AGON would work but how do I execute VoiceCMD.exe from the same line.
i.e. I want to have a single executable or command that will both turn on the audio gateway AND run Voicecommand.
Can your application accept a parameter for an executable to run???
i.e.
vjvolubilis.exe -agon voicecmd.exe
This would turn on the audio gateway and then execute voicecommand.
Not sure if it's coming across clearly what I want to do.
hopfully someone will know how to get this idea rolling.
- Jason
I'm pledged to a round of new updates to VJVolubilis that will hopefully address some of the VC stuff; if you read through the VJVolubilis thread you'll see what they're on about.
However, for now, use MortScript. It's excellent for scripting anything.
V
AWESOME. I have a solution working using MortScript. Need to test it a little bit and then I'll post it..as easy as pie!!
Crap...ran across a problem. When I run the MortScript manually through either Resco Explorer/File Manager it opens the BT audio and brings up VoiceCommand every single time.
However when I changed the registery so that instead of pointing to voicecmd.exe it points to my .mscr script it doesn't seem to work and I can't understand why.
I think it probably has to do with the Cyberon software opening closing the BT channel before launching the exe.
Hmmmmm....working on it still...any tips would be appreciated.
Well I give up for now. It seems hitting the BT headset button launches a mini Cyberon invisible app that sets up the BT audio gateway and then launches what's referred to in the registry
For whatever reason no matter what I tried, I couldn't get it to run a .mscr script either by directly pointing to the script or pointing to MortScript.exe and passing the script as a command line parameter.
All in all, it works 100% when you run the .mscr manually but getting it to execute through the BT headset button thing is much more difficult than I had anticipated.
Hopefully somoene can help resolve this on here and/or this will be resolved with MS Voice Command 2.0 if it ever comes out.
mobilehavoc said:
However when I changed the registery so that instead of pointing to voicecmd.exe it points to my .mscr script it doesn't seem to work and I can't understand why.
Click to expand...
Click to collapse
The Registry might not point to something except an ".exe"...
You may use the "autorun" function of MortScript
(copy "Autorun.exe" from the "Windows" folder to the folder where your script is located and rename it the same as the script, e.c. "myscript.mscr" and "myscript.exe")
Thanks Vlad! It worked...need to do some more testing with a BT headset that was having trouble with it tonight.
Thanks though.
Where there is a will there is a way!!!
Can't wait to see if you can fix this mobilehavoc!
See you on the forums!
This will make lives easier, guranteed!
Cheers! If you were closer I'd buy you a beer, heck a case!
Where there is a will there is a way!!!
Can't wait to see if you can fix this mobilehavoc!
See you on the forums!
This will make lives easier, guranteed!
Cheers! If you were closer I'd buy you a beer, heck a case!
this sounds promising.
I do not have any issues with triggering VC via my BT headset
I DO have issues with triggering VC via my Nokia BT carkit (after a while VC just does not react anymore)
Well after much testing and whatnot, it is not currently possible to do...it's a problem with voice command as everyone knows...specifically that since it wasn't designed for BT, it does NOT close the audio gateway so the next time you press the button on your BT headset, it does not respond.
This works with certain headsets like the HS850 because for whatever reason, a subsequent press of the BT headset button turns the audio gateway off and then the next one turns it on. This is why certain headsets work but require 2 presses to work.
The ONLY way to get this to work currently is to have an app (MortScript almost did it) that can wait until VoiceCmd has executed and completed, then close the audio gateway. Problem with that is VoiceCmd may lead to a phone call or god knows what else so it's tricky.
I'm sure there's a way to do it...in the end, again...ALL THAT IS NEEDED is for some way to close the BT audio gateway once VoiceCmd finishes...then all will be right with the world. I give up because I don't have the expertise or time and my HS850 works fine with it...
Hopefully someone else can give it a shot sometime.

Audible Clock available on WM5?

Hi. I posted an inquiry about a clock program that could be linked to a bluetooth headset, but there wasn't a response so I figured it wasn't available. A few weeks later, I was informed that Voice Command allows one to get the time by giving a vocal command. However, I didn't see that function listed on the Microsoft website. It got me wondering if there was a program that gives the time through the speakers (audible clock)? It would be nice to get the time quickly without having to pull my phone out of the holster to see the time (I don't like wearing my watch). This would only work if one could map it to one of the buttons and have it turn on even in standby mode.
MS Voice command (VC) can tell you the time. You need to 'ask' for the time. It is not 100% accurate (70%), and it is definately much faster to look at it rather to push the button to activate VC, 'ask' for the time, wait for it to recognise what you are saying, and listen carefuuuuly what it said (if you are lucky that it recognise what you are saying).
There is an app that tells you the time at a specific intervals (I don't think it does on-demand-time-telling), not a full blown stable release though. Do a serach in this forum.
I would like my phone to fetch my letters from the box when they arrives. Anyone with that software?
Thanks for the reply. Is the accuracy problem based on coming out of standby? I noticed that it takes a brief moment to adjust the time when coming out of standby. When I performed a search on this forum, I didn't see such a program, but I might have restricted the search to only the Wizard forum. Perhaps I need to expand that search. Certainly, a Google search did not yield what I wanted.
The accuracy I meant was, whether it will do what you told it to do. Example, if you asked for the time, 30% (depending on your surrounding noise level), it may not recognise the command, or probably dial a number for you
Hmm.. I must admit, it is much difficult to search for that application that I've mentioned. I'll try and let you know if I got it.
found this... not the one that I'm looking for.. it is not free.. and rather heavy
http://vitotechnology.com/en/products/voicereminder.html
Thanks for looking. Yeah, you were right. It isn't quite what I'm looking for. It looks as if Voice Command is the only program that has the feature I'm looking for. Thanks again.
Long shot.. but this seems to do what you want
http://software.pocketpcthoughts.com/product.asp?id=10422
again, not free (not the one I remmebered)
Thanks for looking. I found an audible clock!!! And it's free.
http://www.grapefruitopia.com/smartphone/clock.shtml
It works for WM5 phones and it has to be installed in the storage card. I had it link up to the bluetooth through the Voice Speed Dial function on the Settings menu. I had to create a shortcut and paste the shortcut to the windows/programs folder.
The clock is audible. I haven't figured out how to make it go through the Bluetooth headset yet. I tried to toggle the headset with BTAudio, but when I use the headset to get the time, the headset will toggle back off. If there was a way to keep the headset on for about 3 seconds after the device receives the voice input, then I would be able to hear the time on the headset. This feature would be get for crowded areas when one can't hear the speaker.
Anyone know of a registry hack that might be able to keep on the headset for a few seconds while the time is being announced?
Thanks.
Okay. Got it working. For those who would like to use the BT headset to get the time, here is a way. Download and install the SpeakingClock program (link above) into the storage card. Download and install BTAudio (Toggle version). Download and install MortScript. Write a script to batch both programs to run in sequence.
Example:
#MortScript BT and SpeakingClock
Sleep (500)
Run ("\Program Files\BTAudio\BTAudioToggle.exe")
Sleep (1000)
Run ("\Storage Card\clock\SpeakingClock.exe")
Sleep (3000)
Run ("\Program Files\BTAudio\BTAudioToggle.exe")
Save as a .mscr file and place it in the MortScript folder. Create a shortcut of the script to the \Windows\Start Menu\Program Files folder. Use Voice Speed Dial on the Setting Menu to link a voice command to the script and you have a free speaking clock through your BT headset.
Of course, I guess it would be easier to wear a watch...but, I don't wear one.
- Cheap watch - $10
- Bluetooth head set - $40
- PDA Phone - $400
- Able to tell the time with your PDA through your bluetooth head set without looking at your watch (if you have one) - priceless

Bluetooth Audio Gateway Control

Application is designed to control BAG (Bluetooth Audio Control) service state on Windows Mobile systems. It can enable/disable audio/microphone routing to Bluetooth headset, set volume and microphone gain, enable/disable voice command launch application.
Writing this little piece of code was inspired by inability of AGEphone Mobile (ver 2.71) to collaborate with Bluetooth headset.
Really it can be used for other purposes as well. You can make some useful shortcuts or use it in some scripting language.
It is “command line” application (no GUI). Command line switches controls application behavior.
There are two working modes: “keep resident” (default: able to save and restore all settings) and “on fly” - for quick change.
Application itself and documentation with samples in attached file.
Thanks alot i'm downloading now!
gui in next ver?
Thank you very much for writing this! Your utility goes alone perfectly with AGEphone Mobile and is perfect for anyone who wants to use a BT headset AND voice command - highly recommended vs. the standard "BTAudioToggle" !
I'm trying to get this to launch via startup to see if it will work with my bt headset and voice command.
I'm just using "\Windows\bagctrl.exe /O"
as my shortcut link but it gives me an error the app isnt signed..I assume I'm probably just an idiot and not making my shortcut right..Can anyone help me please?
vidmabal said:
Application is designed to control BAG (Bluetooth Audio Control) service state on Windows Mobile systems. It can enable/disable audio/microphone routing to Bluetooth headset, set volume and microphone gain, enable/disable voice command launch application.
Writing this little piece of code was inspired by inability of AGEphone Mobile (ver 2.71) to collaborate with Bluetooth headset.
Really it can be used for other purposes as well. You can make some useful shortcuts or use it in some scripting language.
It is “command line” application (no GUI). Command line switches controls application behavior.
There are two working modes: “keep resident” (default: able to save and restore all settings) and “on fly” - for quick change.
Application itself and documentation with samples in attached file.
Click to expand...
Click to collapse
Many thanks, vidmabal - it works like a dream and does exactly what I was looking for!
MrDSL said:
I'm trying to get this to launch via startup to see if it will work with my bt headset and voice command.
I'm just using "\Windows\bagctrl.exe /O"
as my shortcut link but it gives me an error the app isnt signed..I assume I'm probably just an idiot and not making my shortcut right..Can anyone help me please?
Click to expand...
Click to collapse
Yes, application is not digitally signed.
If you want to use it you first must enable not signed applications (but there are plenty of them around).
To do this you can use "Advanced Config" or alternatively set registry value with some registry editor. "Total Commander" or "Resco explorer" can help you performing this task.
Registry key is "HKLM\Security\Policies\Policies" value name is "0000101a" (if not exists create new DWORD value) and must be set to 1.
P.s. I really don't know why you want to run it on startup and expecially with /O key
eazy2001x said:
gui in next ver?
Click to expand...
Click to collapse
Really not.
Application is designed to run without user intervention.
That’s why even all errors are silently ignored: no MessageBox for invalid keys or some other errors.
Even I don't see what GUI can be helpful. Except maybe for microphone gain changing. Volume normally has control keys on Bluetooth device itself.
Of course you can use it with Mortscript or some other scripting language and make some interface in here. Error codes returned (not present in attached document)
0 - No error (all OK)
128 (0x80) - Error redirecting audio (normally occurs if Bluetooth device is not connected)
129 (0x81) - BAG0: device not found
130 (0x82) - Invalid command line parameters
since u coded this, ive got a small question. do u think there is any chance to disable a remote microphone and use the internal one instead?
im asking this because the mic from my car radio totaly fails its job (JVC KD-BT11) and the internal from my phone (x1) is far supirior to it.
Nice work man, just find my bt headset behind the microwave oven (my girlfriend didn't know anything)
I'm going to write a small mortscript to controll the commnd line.
vidmabal said:
Yes, application is not digitally signed.
If you want to use it you first must enable not signed applications (but there are plenty of them around).
To do this you can use "Advanced Config" or alternatively set registry value with some registry editor. "Total Commander" or "Resco explorer" can help you performing this task.
Registry key is "HKLM\Security\Policies\Policies" value name is "0000101a" (if not exists create new DWORD value) and must be set to 1.
P.s. I really don't know why you want to run it on startup and expecially with /O key
Click to expand...
Click to collapse
I'll have to look into it more but I already have advanc config to run unsigned apps..
achmed20 said:
since u coded this, ive got a small question. do u think there is any chance to disable a remote microphone and use the internal one instead?
im asking this because the mic from my car radio totaly fails its job (JVC KD-BT11) and the internal from my phone (x1) is far supirior to it.
Click to expand...
Click to collapse
The application has nothing common with Bluetooth transport. Really it only send control codes to BAG service (Bluetooth Audio Gateway). This one is coded by Microsoft. I think other BT stack providers (for compatibility reasons) also supports such service.
According to documentation there is no such control code to enable only audio and leave microphone untouched. (Maybe there is, but undocumented, as M$ like to do).
Also it depends on BT profiles your device support. Maybe it has some "stereo headset" without mic?
Here i made a mortscript gui for this tool:
just extract to \Program Files\BTAGC
all files are included
Now make a shortcut of config.mscr in your start menu
vidmabal said:
The application has nothing common with Bluetooth transport. Really it only send control codes to BAG service (Bluetooth Audio Gateway). This one is coded by Microsoft. I think other BT stack providers (for compatibility reasons) also supports such service.
According to documentation there is no such control code to enable only audio and leave microphone untouched. (Maybe there is, but undocumented, as M$ like to do).
Also it depends on BT profiles your device support. Maybe it has some "stereo headset" without mic?
Click to expand...
Click to collapse
The radio itself offers "Bluetooth Headset" and "freespeech".
i tried to disable the freespeech (bluetooth settings in winmo) but somehow my phone still uses the radio as microphone.
guess i have to get my soldering iron and make some hardware mods to my radio. looks like disabling a bluetooth mic isnt going to work.
PS: but thx
old post i know, but do you know if there is a way to display the error msgs on screen somehow ? I think im getting errors.
Pytte said:
old post i know, but do you know if there is a way to display the error msgs on screen somehow ? I think im getting errors.
Click to expand...
Click to collapse
Really there is no much error processing here. But you can try to start app from say Mortscript and examine return code. See message #8 for return codes.
Thanks for your effort put into this.
Could you please confirm if/how is it possible to do just one thing:
1. Cyberon Voice Speed Dialer installed on phone.
2. BT button does not invoke it (audio route opened, and dialer screen opened, but no Speed Dialer. Reg Key exists)
3. Can this program help do it? (which mode resident/on fly, which extension to exe file and how to launch it (start-up or something else))
Many thanks in advance!
Thanks
Thanks a lot vidmabal, this is what I was looking for.
Cheers
Will this program work on an HD2 which i think uses a widcomm bluetooth stack??
dino_Donis said:
Will this program work on an HD2 which i think uses a widcomm bluetooth stack??
Click to expand...
Click to collapse
Really I don't know.
I am operating with service "BAG0:" ("Bluetooth Audio Gateway") - you can check if it is present in your system.
1. Launch Fdsoft Task Manager
2. Go into "Services" page.
3. Check that you have started service BAG0:
Alternatively you can check it in registry:
HKEY_LOCAL_MACHINE\Services\BTAGSVC
(Service name can differ, but "Prefix" value must be "BAG" and "Index" must be 0, "IsEnabled" value must be 1)

New audio switch program for skype and others.

This program is an evolution of the first I made. It will route the audio to the earpiece when an certain program is running.
I put the program here because I have test it in wizard, if people test this in others phones and it works, please post here and maybe move this this thread to an more "generic" forum.
the program MUST be under "\($program files)\audioswitch" folder, you must unzip the contents to this folder.
the configuration file (command.txt) is under this format:
1000
skype
fring
etc
the first line is the delay(in miliseconds) in witch the program will "look" if a program in the list is in the top level window, faster phone, smaller delays, I recommend 1000 ms.
the next 20 lines are the programs you want the audio to be routed to the earpiece(max 20 lines for now).
Again the program is under the "do it on your own risk" and "I am not responsible for anything" licence. And,of course, it is free!! Do not sell it!
It is manly intended for little expert users, as it is still in "beta" fase, hehehe.
How it works:
the program runs in an eternal loop and look for the title of the current window that is displayed for the user in a time interval.
When the program mach the title window with one of the names user configured it it will switch the audio, when the program is not running anymore, the audio will swich back.
Do not launch two or more instances of the program at the same time, could really mess things up. -- se the forum (thanks tucahara)
To stop the program, u must use a process manager.
it would be good if someone could make a cab to install it. -- done see the forum (thanks tucahara)
this is still a beta, I intend to make ajustments as people give feedback.
Thanks,
hope u like.
-----first update---
now, an file called "audioswitch_error.txt" in the root directory will hold the error messages.
------------ List - Working ------------
wizard - I tested
P3301 or P3300 - I tested
att tilt - I tested
touch 3452 and 3450
touch dual
touch cruise
touch HD
Sony Ericsson Xperia X1
BenQ E72
Titan --> see the forum
------------ List - NOT working ------------
T-Mobile Diamond
HTC Touch by Sprint
Samsung SGH-i780
------------------------------------------------------------------------------------
check the new thread at:
http://forum.xda-developers.com/showthread.php?t=502361
new aproach to do the switch and now open source, even with an class that others can improve and put in other apps...
Some people complain about me not openning the source of the app, I have just made this way because there was proprietary code inside and I had no time to rewrite it without the proprietary code.
I have made the best I could, and now I had some time and rewrite the app in open source, to those who only complain about it, get the code and make it better instead of complaining!
Thanks for all that encourage me to continue the work and helped the development.
will retire this project for while...
thanks u all.
Audioswitch for Skype
On HTC Touch by Sprint (CDMA, also known as Vogue), audioswitch does switch the audio in the Skype 2.5 windows mobile PPC from external speaker to handset. Unfortunately, the microphone is then also disabled. I hope you'll be able to tweak your audioswitch to resolve this.
Thank you so much for developing this wonderful applet. I'm sure you will have the gratitude of many frustrated Skype windows mobile users.
What really happens is that when the sound output is switched in some phones, the microphone gain changes too. This happens because the phone thinks it is a "normal call".
Most of the times the mic gain increases, but in your phone it must be decreasing. Try to figure out in registry where the mic gain controls are recorded and chage all of then to the same value. I had this issue with my P3301 and solved this way, but there is quite a time now and I do not remenber where are the reg keys to change, but I have found the information here in the forum.
I will try to figure out for other "hack" to solve this issue... thanks for reply.
doesn't work at T-Mobile Compact IV (aka Diamond)
Sound went to loudspeaker....
PS: fring last version working fine with sound at mine phone (without any additional programms). Sound is going to correct destination automatically
I just tried the latest version of Fring, which automatically switches audio to earpiece when call is connected.
The same issue occurs with the new Fring as I described above with your audioswitch program: I can hear audio through earpiece, but microphone doesn't work (or is inaudible).
I couldn't find a tweak or registry hack to correct this. Any help would be greatly appreciated.
MarceloFB said:
This program is an evolution of the first I made. It will route the audio to the earpiece when an certain program is running.
I put the program here because I have test it in wizard, if people test this in others phones and it works, please post here and maybe move this this thread to an more "generic" forum.
the program MUST be under "\($program files)\audioswitch" folder, you must unzip the contents to this folder.
the configuration file (command.txt) is under this format:
1000
skype
fring
etc
the first line is the delay(in miliseconds) in witch the program will "look" if a program in the list is in the top level window, faster phone, smaller delays, I recommend 1000 ms.
the next 20 lines are the programs you want the audio to be routed to the earpiece(max 20 lines for now).
Again the program is under the "do it on your own risk" and "I am not responsible for anything" licence. And,of course, it is free!! Do not sell it!
It is manly intended for little expert users, as it is still in "beta" fase, hehehe.
How it works:
the program runs in an eternal loop and look for the title of the current window that is displayed for the user in a time interval.
When the program mach the title window with one of the names user configured it it will switch the audio, when the program is not running anymore, the audio will swich back.
it would be good if someone could make a cab to install it.
this is still a beta, I intend to make ajustments as people give feedback.
If someone like this program and wants to make an donation...
https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=4WLQVA6LTKWSL&lc=GB&item_name=marcelofb&item_number=marcelofbxdadonations&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG_global%2egif%3aNonHosted
Thanks,
hope u like.
Click to expand...
Click to collapse
I have an idea. Rather than regularly polling to see what the current windows is, why not use a windows hook to monitor windows messages. When you see a message indicating a window has come to the foreground test it against your list of windows and enable/disable audio switch as necessary. Use SetWindowsHookEx and hook for WH_CBT messages. If you are unfamiliar with using SetWindowsHookEx I could supply you with the hooking code and all you would need to do is insert the code to check the window names, enable the audio switch, and disable the audio switch. Or you could send me the enable/disable routines.
Another tip, I noticed that skype places an icon in the notification area during a call. If there is someway of detecting the notification icon that could be another great way to trigger the switch.
Great program though. Works beautifully.
OOOH
If this program works on the new BenQ E72 I'm getting in a couple of days I'll certainly donate!
THANKYOUTHANKYOUTHANKYOU
hello,
it does not work on hermes (tytn).
by the way "troca2" does work on hermes! - maybe you guys want to work together?
baal_zebub said:
hello,
it does not work on hermes (tytn).
by the way "troca2" does work on hermes! - maybe you guys want to work together?
Click to expand...
Click to collapse
hehhehe, I made troca2, I will see if the switch code is the same or if I have made some mistake...
are u sure you have put the program in the correct directory?? I will make some modifications to have an error feedback. So u can see if something is wrong...
JKingDev said:
I have an idea. Rather than regularly polling to see what the current windows is, why not use a windows hook to monitor windows messages. When you see a message indicating a window has come to the foreground test it against your list of windows and enable/disable audio switch as necessary. Use SetWindowsHookEx and hook for WH_CBT messages. If you are unfamiliar with using SetWindowsHookEx I could supply you with the hooking code and all you would need to do is insert the code to check the window names, enable the audio switch, and disable the audio switch. Or you could send me the enable/disable routines.
Another tip, I noticed that skype places an icon in the notification area during a call. If there is someway of detecting the notification icon that could be another great way to trigger the switch.
Great program though. Works beautifully.
Click to expand...
Click to collapse
It is a good idea to use hook, I have not think of it!
I use a proprietary code included in a lib at the company I work for to make the "switch" but it is not different of what u find here in the forum.
Maybe we can make an effort to re-make it with hooks...
so this program must run all the time? after every softreset you have to start it?
is it not easier with mortscript (for example) to make an shortcut that opens skype as well as the audioswitch program? and closes the audioswithc program when you close skype?
I am using it right now and it seems to work perfect:
i used this script after installing mortscript (http://www.sto-helit.de/):
run( "\Windows\SkypeSoundSwitch.exe" )
runwait( "\Program Files\Skype\Skype.exe" )
close( "troca2" )
(see that in my case i downloaded your original program and renamed it to skypesoundswitch.exe and put it in the windows map)
I renamed it so i could remember what the purpose the file had.. changed nothing but the name!
Thanks for the program by the way! it always worked perfect!!
so to sum up the way i have it now (most files included) on my xperia x1:
1) installed skype
2) installed mortscript
3) add skypesoundswitch to \windows\....
3) add skype.mscr to \.... (root)
4) overwrite skype.lnk with the new skype.lnk in \windows\start menu\programs\..
in the way whenever i open skype(.lnk), it opens skype.mscr, this opens skypesoundswitch.exe and than skype.exe... when you close skype.exe it closes skypesoundswitch.exe...
it seems to work perfect.. but hey maybe i am doing something totally wrong here.. than just shout!
by the way, the .mscr and the .lnk files are offcourse edit-able .. so you can put the files everywhere you like..
madhijs said:
so this program must run all the time? after every softreset you have to start it?
is it not easier with mortscript (for example) to make an shortcut that opens skype as well as the audioswitch program? and closes the audioswithc program when you close skype?
I am using it right now and it seems to work perfect:
i used this script after installing mortscript (http://www.sto-helit.de/):
run( "\Windows\SkypeSoundSwitch.exe" )
runwait( "\Program Files\Skype\Skype.exe" )
close( "troca2" )
(see that in my case i downloaded your original program and renamed it to skypesoundswitch.exe and put it in the windows map)
I renamed it so i could remember what the purpose the file had.. changed nothing but the name!
Thanks for the program by the way! it always worked perfect!!
Click to expand...
Click to collapse
That works great too. The advantage of this new program is that it will only reroute the audio when skype is in the foreground. You could minimize skype and leave it running, and audioswitch will automatically restore your sound. Get a call and open up skype and your sound goes back to the earpiece.
I will create the code to do it with a windows hook when I get a chance MarceloFB. Please pm me your email address. All you will have to do is insert the code to read the config file, check the window names, and when necessary enable or disable the switch. Or please show me where to find details on how to code this myself. Thanks!
Hat off to both of you and really glad that we will have a much improved solution.
JKingDev said:
That works great too. The advantage of this new program is that it will only reroute the audio when skype is in the foreground. You could minimize skype and leave it running, and audioswitch will automatically restore your sound. Get a call and open up skype and your sound goes back to the earpiece.
I will create the code to do it with a windows hook when I get a chance MarceloFB. Please pm me your email address. All you have to do is insert the code to read the config file, check the window names, and when necessary enable or disable the switch.
Click to expand...
Click to collapse
okay! I only used skype to make calls and than get offline so this way did the trick for me! but i have to admit it would be much better when i can keep skype online!
this new program does the trick indeed! it changes the output back when i minimize skype!
But still my question above, you have to start this program on every startup isn't it? what does it do with the battery?
madhijs said:
okay! I only used skype to make calls and than get offline so this way did the trick for me! but i have to admit it would be much better when i can keep skype online!
this new program does the trick indeed! it changes the output back when i minimize skype!
But still my question above, you have to start this program on every startup isn't it? what does it do with the battery?
Click to expand...
Click to collapse
Yes it must be run at startup but placing a link in your startup folder will make everything transparent to the user. I don't think there will be an effect at startup. In it's current form it must check every second (or whatever you set the timeout to), but its only a little bit of code. I am not really sure if that will really have an effect. The more often it checks the faster it will switch when you open skype, but also the more processor use. Check less often and it uses less processor, but there might be a delay in switching the audio. I proposed doing it by hooks though because this would use even less processor. The app will only check when a new window takes focus, rather than just periodically checking. This way it only checks when it needs to and will always switch instantly.
I am glad u liked the program.
I will try to answer most of the questions...
1- JKingDev:
I have though in your idea of using hooks, but if I use a hook, the program will have a loop anyway to check for the messages(hidden loop ;-) ), and it would have to have an "fake window" or something to process the messages. This way we have only one loop, in a very simple command line program with high optimization, so we have to think what is really the best way of doing it... I will pm u as soon I have any time to "program" again. hehe
2- people that uses mortscript with the old "troca2"
I will try to make a way to make this program work the same way as troca2, maybe with an "argc argv", wait the next update.
3- the battery life??
if u notice any battery life decreasing with the usage of the program, configure a bigger delay, maybe 5000ms, it is a matter of adjust the "timming" for each processor. Post your results here so others can find the optimum value for the delay in their phones.
4- have to start the program every reset?
yes, just put it in the startup folder.
maybe someone can make an cab that put the program in the right place and a link in the startup, it would be cool! I dont have an easy program to deal with cabs, and the vs projects for cabs.... I really cant make that thing work!!
well it is only the batterylife i was worried about. but i'll try running the phone this weekend with the program running and doing some skype.. lets see how it turns out!
For folks who have issues of mic on using this program, there is a quick solution for this problem. You can try sjphone. It provides a internal mic volume control. However, the major setback is that it's only working in wm5.
my 2 cents
weekendli said:
For folks who have issues of mic on using this program, there is a quick solution for this problem. You can try sjphone. It provides a internal mic volume control. However, the major setback is that it's only working in wm5.
my 2 cents
Click to expand...
Click to collapse
will check this, but people reported that worked in xperia... and it is running in my P3301... anyway, will check and post an wm6 build if it is the case... check the error file and see if it tells anything.
Other thing, this program uses low level api`s, so your windows MUST be fully unlocked for it to work in wm6.

Categories

Resources