Jump to content


Photo

Fixing bluetooth audio routing for i900

* * * * * 2 votes

  • Please log in to reply
316 replies to this topic

#1
liads

liads

    Regular

  • Members
  • PipPip
  • 96 posts
  • Gender:Male
  • Location:Israel
  • Devices:Samsung Omnia i900
[Update, Feb 2010] Ock has made some progress with ironing the remaining issues. Check his thread.


I managed to get audio routing working for bluetooth mono headsets using drivers from the i908 ROM.
Took me about 2 weeks and 30 or so flashes to get it to the initial release :(
If you're interested in the process, check this thread.

Unfortunately, there is still one annoying problem that I'm aware of. Check the bottom of this post and decide whether it's serious for you or not.

Included files:
zylonite_wavedev2.dll - The i908 audio driver.
touch.dll - The i908 touch driver, required by the above audio driver for correct behavior.
speakerphone.dll - The i908 speakerphone driver, required for activating the speakerphone with the above audio driver. (Thanks, Khuanchai ! )
fmradio.dll - The i908 FM Radio driver, required for getting radio audio with the audio driver.
AudioGainControl.exe - Allows audio profile volume adjustments for the above audio driver. (replaces SoundTester.exe)
AudioGainControlStart.lnk - Shortcut for launching the AudioGainControl (the exe needs a "-start" argument to work).
*.rgu - Contains configuration made by AudioGainControl to lower the bluetooth routed digital audio volume. Otherwise, it's too loud and distorted.
Mini tutorial for AudioGainControl is here.

Since OEM drivers need to be replaced, the only way I was able to get this working is flashing the device with a custom ROM.

For ROM cooks:
1. Replace zylonite_wavedev2.dll, touch.dll, speakerphone.dll and fmradio.dll folders (modules) in OEMDrivers with the ones attached here.
2. Add the registry values from the attached rgu file into the OEMDrivers rgu.
3. Put the attached AudioGainControl.exe and AudioGainControlStart.lnk into OEMApps.
(if you publish your custom ROM, please give credit)

For others: (who are familiar with GrandPrix)
I created a simple custom ROM. Nothing is removed and only the above changes were made.
Named it "BTAR" (Bluetooth Audio Routing)
I only included the PDA and CSC parts for flashing using GrandPrix.
Use compatible Phone and EBoot parts with this. (If you already have them flashed, it's safer to flash just the PDA and CSC. Make sure you uncheck 'Phone Bootloader Update' when you do that)
ROM download links:
DXIA5-BTAR3 - http://www.sendspace.com/file/rjp1nn
DXIA2-BTAR3 - http://www.sendspace.com/file/ww1f7x
DXIA2-BTAR2 - http://www.sendspace.com/file/koyi48

Releases:
[1-Mar-2009] Release 3
Adds the FM Radio driver.
Known issues:
  • Device can only be woken up from suspend mode using the power button.
[24-Feb-2009] Release 2
Adds the speakerphone driver, fixing the speakerphone issue from the last release. (Thanks, Khuanchai ! )
Known issues:
  • Device can only be woken up from suspend mode using the power button. No matter how you set it up in control panel, no other button is able to wake up the device. (You might be able to get it to work momentarily, but once any audio is played, the issue will resume)
  • FM Radio doesn't play audio.
[22-Feb-2009] Initial release
Known issues:
  • Device can only be woken up from suspend mode using the power button. No matter how you set it up in control panel, no other button is able to wake up the device. (You might be able to get it to work momentarily, but once any audio is played, the issue will resume)
  • Speakerphone cannot be turned on while in a call, and it will lock the screen if you try (i.e. screen won't respond to touch). The screen will unlock when the call ends.

Attached Files


Edited by liads, 02 February 2010 - 06:51 PM.

  • 0

#2
bobobird

bobobird

    Addict

  • Members
  • PipPipPipPipPip
  • 881 posts
  • Devices:i900
Thanks for fixing this *major* issue with our phone.

Actually, using the power button to take a phone out of standby is not all that bad. Prevents accidental pushing of the dpad and takes away the need to install something like s2u etc.

The speakerphone issue is not much of an issue, for me at least.

Lets hope the other master chefs take this into their roms asap.

  • 0

#3
mashimus

mashimus

    Regular

  • Members
  • PipPip
  • 53 posts
  • Devices:Omnia
Hi,

In regards to issue no. 2:

"Speaker cannot be turned on while in a call, and it will lock the screen if you try (i.e. screen won't respond to touch). The screen will unlock when the call ends."

does this only happen when you have a BT headset connected? Or is it with any call...?

  • 0

#4
liads

liads

    Regular

  • Members
  • PipPip
  • 96 posts
  • Gender:Male
  • Location:Israel
  • Devices:Samsung Omnia i900
When the BT headset is connected, the "Speaker On" button is not available.
If you turn off the hands-free mode while in a call, the button will re-appear, and clicking it still causes the problem.
So it's basically with every call that allows you to turn the speakerphone on.

  • 0

#5
sector

sector

    Hardcore

  • Members
  • PipPipPipPipPipPip
  • 2,296 posts
  • Gender:Male
  • Devices:Samsung Omnia
Looking forward to minimal the errors on this :(. Great work mate.

Btw maybe you can replace the rom files with Resco Explorer.

Just click the properties on the selected file and untick ReadOnly. I managed to replace some some rom file by that! Good work though B)

Have u hexed any of those files or just extracted from i908 rom?

  • 0
If you like my work buy me a beer :) !
Posted Image
WM 6.5/6.1 roms, Themes, Taskbar etc... :D

#6
palah

palah

    Regular

  • Members
  • PipPip
  • 141 posts
  • Location:Sydney, Australia
  • Devices:Omnia was :) i900DTJ9/DTHJ9

I managed to get audio routing working for bluetooth mono headsets using drivers from the i908 ROM.
Took me about 2 weeks and 30 or so flashes to get it this far :(
If you're interested in the process, check this thread.

Unfortunately, there are still two annoying problems that I'm aware of. Check the bottom of this post and decide whether they're serious for you or not. (The second one I only noticed this morning)
I'm still working on these issues and will post updates to this thread



Hi Liads .... Great work, put my i900 on eBay due to this lack of feature but now put my price up :0) and if it does not sell with look forward to get voice over BT working. have so far resisted flashing with any rom but seeing you have done the hard work others may be able solve the two issues identified so far and release in their rom (of course giving you credit) so seeing you were the pioneer .... may you go down in i900 history as 'the BT over voice man' B)

  • 0
HTC Touch Pro 2
MVC 1.6UK
Garmin XT

#7
happy_joe

happy_joe

    Newbie

  • Members
  • Pip
  • 18 posts
  • Devices:Omnia

I managed to get audio routing working for bluetooth mono headsets using drivers from the i908 ROM.
Took me about 2 weeks and 30 or so flashes to get it this far :(
If you're interested in the process, check this thread.

Unfortunately, there are still two annoying problems that I'm aware of. Check the bottom of this post and decide whether they're serious for you or not. (The second one I only noticed this morning)
I'm still working on these issues and will post updates to this thread.

Included files:
zylonite_wavedev2.dll - The i908 audio driver.
touch.dll - The i908 touch driver, required by the above audio driver for correct behavior.
AudioGainControl.exe - Allows audio profile volume adjustments for the above audio driver. (replaces SoundTester.exe)
AudioGainControlStart.lnk - Shortcut for launching the AudioGainControl (the exe needs a "-start" command line argument to work).
*.rgu - Contains configuration made by AudioGainControl to lower the bluetooth routed digital audio volume. Otherwise, it's too loud and distorted.

Since OEM drivers need to be replaced, the only way I was able to get this working is flashing the device with a custom ROM.

For ROM cooks:
1. Replace zylonite_wavedev2.dll and touch.dll folders (modules) in OEMDrivers with the ones attached here.
2. Add the registry values from the attached rgu file into the OEMDrivers rgu.
3. Put the attached AudioGainControl.exe and AudioGainControlStart.lnk into OEMApps.
(if you publish your custom ROM, please give credit)

For others: (who are familiar with GrandPrix)
I created a simple custom ROM based on DXIA2. Nothing is removed and only the above changes were made.
Named it "BTAR1" (Bluetooth Audio Routing... 1)
I only included the PDA and CSC parts for flashing using GrandPrix.
Use secany's DXIA2 Phone and EBoot parts with this. (If you already have them flashed, it's safer to flash just the PDA and CSC. Make sure you uncheck 'Phone Bootloader Update' when you do that)
I didn't create an exe updater because testing it will require me to flash my eboot and phone parts, which I don't do more than when absolutely necessary B) . (my device was bought on ebay)
ROM download link: http://www.sendspace.com/file/myh1io

Releases:
[22-Feb-2009] Initial release
Known issues:

  • Device can only be woken up from suspend mode using the power button. No matter how you set it up in control panel, no other button is able to wake up the device. (You might be able to get it to work momentarily, but once any audio is played, the issue will resume)
  • Speaker cannot be turned on while in a call, and it will lock the screen if you try (i.e. screen won't respond to touch). The screen will unlock when the call ends.

Great Job mate!!!
Waiting for your "ultimate" solution with no bugs!

  • 0

#8
Chris64

Chris64

    Newbie

  • Members
  • Pip
  • 45 posts

Great Job mate!!!
Waiting for your "ultimate" solution with no bugs!


Thanks liads!

Edited by Chris64, 23 February 2009 - 09:45 AM.

  • 0

#9
jaguared

jaguared

    Newbie

  • Members
  • Pip
  • 4 posts
  • Devices:omnia
Thanks Liads you are the man this has been the biggest problem with the omnia since day one, why oh why does every wm phone have this problem wizard,hermes,kaiser all needed adapting to route audio basic function left out. Sorry rant over again many thanks it now does what i need i can use the phone via bluetooth when on my motorbike and i can route music to my headset fantastic Cheers Ed

  • 0

#10
liads

liads

    Regular

  • Members
  • PipPip
  • 96 posts
  • Gender:Male
  • Location:Israel
  • Devices:Samsung Omnia i900

Looking forward to minimal the errors on this :(. Great work mate.

Btw maybe you can replace the rom files with Resco Explorer.

Just click the properties on the selected file and untick ReadOnly. I managed to replace some some rom file by that! Good work though B)

Have u hexed any of those files or just extracted from i908 rom?

Thanks :P

I did use Resco Explorer in my initial attempts and managed to "overwrite" files from the rom, but the drivers are just not functioning that way. Even the boot up note didn't play.

The files posted here haven't been hexed (yet :D ). Just extracted from the i908 rom.
However, I'm beginning to think that the wakeup problem may only be able to be solved by modification of the audio driver.

Edited by liads, 23 February 2009 - 12:18 PM.

  • 0

#11
liads

liads

    Regular

  • Members
  • PipPip
  • 96 posts
  • Gender:Male
  • Location:Israel
  • Devices:Samsung Omnia i900
I'm glad the solution is still useful to some as it is.
I know I'm using it daily.

I hope to smooth out the last problems soon.

  • 0

#12
SpiritRC

SpiritRC

    Newbie

  • Members
  • Pip
  • 7 posts
  • Devices:Glofiish X500, SGH-i900 16Gb
WARNING!!!

Overwriting the touch.dll in your i900 with the one from this archive will make your touch screen dead and will require a hard reset to restore its functionality.
I didn't yet go the flashing way, but overwriting definitely doesn't work as liads said.

  • 0

#13
liads

liads

    Regular

  • Members
  • PipPip
  • 96 posts
  • Gender:Male
  • Location:Israel
  • Devices:Samsung Omnia i900
That's right :(
As I said, flashing is currently the only way to get it working (AFAIK).
I'm not sure what's causing these drivers to stop working when they're not part of the rom.
I even tried copying over the audio driver in another name and changing the registry reference to it, and it didn't work either.
There are other audio drivers hanging around in CAB installers, so it must be something in the drivers themselves.

Edited by liads, 23 February 2009 - 12:56 PM.

  • 0

#14
qbus

qbus

    Addict

  • Members
  • PipPipPipPipPip
  • 619 posts
  • Gender:Male
  • Devices:HTC One X

That's right :(
As I said, flashing is currently the only way to get it working (AFAIK).
I'm not sure what's causing these drivers to stop working when they're not part of the rom.
I even tried copying over the audio driver in another name and changing the registry reference to it, and it didn't work either.
There are other audio drivers hanging around in CAB installers, so it must be something in the drivers themselves.


I don't know why it is so important that driver should be in ROM memory, otherwise Windows fails to load it.
I think that this could be releated to security -> if it would be possible then some nasty apps could change let's say touch screen driver and pass clicks to the world...

  • 0

#15
Stevenh

Stevenh

    Enthusiast

  • Members
  • PipPipPip
  • 209 posts
Something I found when bulding my own ROMs was that the library may be different after the ROM is built than when doing a straight copy of the extracted file. e.g. I was trying to build a cab file from the extracted ROM files and although installing the cab worked and the application worked but occassionally got error messages. However, if I use the dll files etc from a running system and build the cab files it works fine. Not sure why though.
I'm also a little curious... did you not have to replace any of the bluetooth drivers?
I might try the i908 firmware later just to have a play around... I'm sure someone mentioned that the i900/i908 firmwares are interchangeable...

  • 0

#16
Khuanchai

Khuanchai

    Addict

  • Members
  • PipPipPipPipPip
  • 899 posts
  • Devices:Samsung Omnia

[22-Feb-2009] Initial release
Known issues:

  • Device can only be woken up from suspend mode using the power button. No matter how you set it up in control panel, no other button is able to wake up the device. (You might be able to get it to work momentarily, but once any audio is played, the issue will resume)
  • Speakerphone cannot be turned on while in a call, and it will lock the screen if you try (i.e. screen won't respond to touch). The screen will unlock when the call ends.


Regarding the #1 issue, changng the button wake up setting to "Any button" and then back to "Front button" will work. This is temporarily though.

Good job anyway, Liads!

Edited by Khuanchai, 23 February 2009 - 02:52 PM.

  • 0
Thanks to friends who donated. Click here if you want to help. :)

#17
Stevenh

Stevenh

    Enthusiast

  • Members
  • PipPipPip
  • 209 posts
Ok, I tried the i908ZHIB1 ROM, couldn't get the audio routing to my handsfree for VC, but then again mines a shitty headset that came with my old phone and doesn't support voice command anyway.... When you guys press the menu button on the phone and issue a voice command, does the response come back through your headset?
Regarding issue #2, even in the IB1 ROM, if you're in a call with the headset, speaker doesn't work, don't think there is a way to transfer call back to speaker unless it is a menu option...

Steven

  • 0

#18
jaguared

jaguared

    Newbie

  • Members
  • Pip
  • 4 posts
  • Devices:omnia
Hi I have been doing some testing and found some strange things happening using your fix and VC i can make calls using the headset by pressing the call button great unfortunatly the audio is not brilliant distorted and breaks up this is also true when routing music through the bluetooth, voice is reasonable but music awfull it is working which is a massive improvment just wanted to let you know my findings also when using my Parrot carkit it stops the call being initiated from the carkit itself yet i can start vc from it.I would like to try Cyberon but cannot find what to change to make the bluetooth button start Cyberon instead of MVC i know you are still working on it so maybe these things will be fixed in time many thanks for your work already samsung should employ you!!

Can you please explain the settings in your audiocontrol?

Cheers Ed

  • 0

#19
Chris64

Chris64

    Newbie

  • Members
  • Pip
  • 45 posts
I'm having trouble with the quality of the sound.

"Can you here me?"......"No"
"Can you here me now?"....."Yes"
"How about now?"....... "Well..."

Right now I'm going to wait for a while.

Thanks everybody!


BTW My headset is a "Sony Erricson HBH-IV840"

Edited by Chris64, 23 February 2009 - 10:23 PM.

  • 0

#20
liads

liads

    Regular

  • Members
  • PipPip
  • 96 posts
  • Gender:Male
  • Location:Israel
  • Devices:Samsung Omnia i900
The audio configuration might need some more tweaking. I've only changed the "not in call" digital audio volume for bluetooth to fit my headset (BlueAnt Z9i).
For this there is AudioGainControl. However, it's not very user-friendly and to use it you should have basic understanding of what a hexadecimal number is, and what's a bit-mask. Also, I can take no responsibility if anything bad happens as a result of using this tool. I have no idea if it can do any real damage, but you should still be really careful.

Start it using the AudioGainControlStart link in \Windows (if you used my files).
The main window has "List of Table" in the header and has two list boxes.
On the top one, choose the category you wish to edit: NotInCall, Incoming (ringing call), Calling (probably an outgoing call before it connects), Talking (in call).
Then on the bottom list you'll get the available "tables" for this category. Choose one of them.
Then you'll get a list of parts. You'll most likely find what you're looking for in the "Common Part".
After choosing a part, you'll get to the list of parameters which can be edited.
For example, the audio settings I edited were in "NotInCall" -> "NotInCall_Bluetooth" -> "Common Part" -> "DAC PGA Volume / Routing".
When you choose a parameter, you'll get a rather complex window. Most important are the "Mask" box and the "Value" box.
The "Mask" is a bit-mask telling which values are valid. You should never edit it, even though the tool allows it.
The "Value", is the current value of the parameter. It should not light bits that the mask doesn't allow.
For example: An "F" digit in the mask means the matching digit in the value can be from 0 to F. A "0" in the mask means the matching value digit must be "0". A "1" in the mask means "0" or "1".
If the mask digit isn't one of the above, use your calculator :( .
In certain parameters, if the "Value" is set to some known set of values, the bottom section of the window will enable itself to allow much easier editing. I just played with the values until that section became available in the parameter I edited.
Hit "Save" when you're done.

If you play with these settings and get an improved audio, please export the following key from your device registry and share with us:
HKEY_LOCAL_MACHINE\System\State\Samsung\Audio

Edited by liads, 24 February 2009 - 12:00 AM.

  • 0




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users