Showing posts with label ics. Show all posts
Showing posts with label ics. Show all posts

Thursday, November 1, 2012

Speakerphone Echo on the Samsung Fascinate

Some of you may recall a year or so ago when I released a hacked-up version of the Glitch kernel for CyanogenMod 7 on the Samsung Fascinate. In this kernel was my first of many successful shots at fixing that phone / ROM combination's abysmal in-call audio quality.  Some of you may also remember that the kernel I released made the phone unbearably loud.

Since then, I've released a few more patches, and they've found their way into most, if not all kernels for MTD ROMs for the Galaxy S line of products. The major improvement over that initial release is that the "boost levels" are configurable now.  Thanks to The Immortal JT1134, there is now on most ROMs a nice application to modify these parameters, allowing you to adjust them pretty much on-the-fly.

My In-Call Volume Settings
note the values for Speakerphone
One draw back, though, is that in some distributions, the default settings aren't ideal - especially when the Fascinate's speakerphone is used. This results in an unpleasant echo heard by the person on the other end of your conversation whenever they talk. I've posted to the forums dozens of times about this issue, yet it keeps coming up as a new question no-one can find the answer to.  Therefore, this post.

The speakerphone echo is caused by a combination of too high of a boost in the speakerphone call audio plus too high of a microphone gain in speakerphone mode. Both of these can be adjusted in a few places, but my preferred method is to use the Home Screen -> hit the menu button -> "System Settings" -> "Device Options" -> "In-Call Volume Controls" path.

Once you've got that open, adjust your "Speakerphone Volume" setting down to 1. Some people prefer 0. 2 will almost certainly cause echo. 3 will give you echo with severe distortion and probably melt your eardrums while causing a significant space-time anomaly in your fridge which will immediately consume all your beer, sending it back to 1955. You've been warned.

Next, adjust your speakerphone mic gain down some. I've found that 14 is a good value. Some may prefer slightly more or less. I've found that anything above 19 usually results in an echo. You'll just have to play with this one. If you have it above, say, 25, then you will almost certainly get some echo along with over-modulation, and the kernel will freak out and send an email to your parents and grandparents with your entire collection of nasty sheep porn attached. You've been warned.

Finally, make sure you hit OK, or all these settings will not be applied. They *should* stick after a reboot. Mine do.

Sunday, August 19, 2012

My Android Journey from ICS to JB (and back)

So, the other day I decided to upgrade the ROM on my trusty old Samsung Fascinate to the latest Jelly Bean offering from the AOKP crowd.  It turns out it was quite an ordeal, so I thought I'd detail the steps I took and the mistakes I made in the hope that someone might benefit. At the very least, maybe you can learn what NOT to do.
Challenge .. accepted.

So the first thing I did was download Steve Spear's latest test ROM, dated August 12.  Then I found a JB version of the google apps package on goo.im, and figured that would be safe, so I grabbed it, too.  Steve advised me to try the Devil's 1.1.3 kernel for JB, so I downloaded that as well.

I'm currently running AOKP Milestone 6, with the devil kernel and some of Steve's custom tweaks for Fascinate. So, I reboot into the TWRP recovery that comes with that and begin my journey.

The first thing I do, naively as it turns out, is set up a queue of 3 zip files to flash (in order): the ROM, the Google Apps package, and the kernel.  TWRP is supposed to be able to handle that sort of thing, so why not?

Because the JB ROM file apparently needs to re-partition your device when you flash it, that's why not. Also, apparently TWRP doesn't handle that very well, and leaves me in a recovery boot-loop with some error message flashing a big red exclamation point for about 1/5 of a second before rebooting. Just long enough that I realize I have no hope of actually reading it to find out what it thinks is wrong.

So, I load up Odin and nuke my phone all the way back to the stock, bloated, non-rooted Verizon EH03 Gingerbread ROM. This is the firmware you folks who don't believe in rooting your phones are currently stuck with, by the way.  So I let that boot and do its thing, which is basically a way to wipe the phone clean and start over with a clean slate. Whatever craziness was introduced by my previous error is now gone.

But, so are all the custom goodies I love so very much.  More importantly, so are the Gingerbread bootloaders required by most AOSP ROMs, so now I have to power off and Odin those separately.  At this  point, my only way back to AOSP goodness is via the ancient CWM 4 recovery with the CM7 fix. This particular file should be stored in the national archives. As old  as it is, it can still solve my problems most of the time. So I load that up and try flashing the AOKP JellyBean test ROM straight from that.

Oh hey!  Success!  Great!  Now I just have to get my google apps and the devil kernel on it.  So I reboot into the CWM-based recovery and flash the Google Apps package, reboot recovery, and flash the Devil-1.1.3 kernel, then reboot the system.

This is getting old..
The system comes up, and I sign into my google account, and everything seems good.  So I proceed to restore my apps from Titanium Backup.  Well, now .. where are my apps??  Opening TiBu, I only see system apps. None of my user-installed and paid apps are backed up!  The only place they are backed up is in the nandroid backup of my Milestone 6 install I had made before starting this little adventure .. which means I have to go back to that and run another FULL backup in TiBu.

But .. since the JB ROM re-partitioned my device again, I have to un-re-partition it to move back to Milestone 6. Which means Odin the ancient CWM recovery again, flash the old THS build 2 ICS ROM and let that boot.  Now I can put any ICS rom on my phone, so I flash the Milestone 6 ROM.  Once that boots, I have to reboot into TWRP recovery from there and restore my nandroid. 

Once that is back up, I open TiBu, and do a full backup.  Still with me?  Good.

At this point, I hadn't realized that I need to flash the JB ROM in the Ancient Recovery, so I encounter another recovery loop after trying to flash it in TWRP.  This time, though, instead of going back to stock, I Odin the Ancient Recovery and use that to flash the JB ROM.  After that, use the new JB recovery to flash Google Apps and Devil kernel.

Now, I launch TiBu again and restore all my apps, but without data.  This goes well.  But I have a few apps that I really have to preserve their data, so I restore only those (there are 5 of them out of 80+).  TiBu asks me for my encryption password to access the data, so I enter it.

TiBu - Y U NO LIKE
MY PASSWORD??
It doesn't work. I think maybe I used a different one .. so I try a few more of my standard passwords thinking surely one of them must be right.  But no. TiBu refuses to decrypt my data.  So, instead of restoring from the backup, I decide to try and restore the data from the nandroid I had made. I was thinking that maybe TiBu would be smart enough to handle this in a compatible way between the two ROMs, but I was wrong.  With their important data restored, every app in question now force-closes immediately on execution.  So .. back to MS6 .. again.

Once I had fully restored the MS6 nandroid, I decided to check the apps themselves and found out how useful OI ConvertCSV is.  It allows me to export the app data to the SD card in a format that the same apps can then re-import once I have them loaded in the new ROM. This should work .. and it does.

So, now I have a nice new Jelly Bean ROM running on my ancient Fascinate, and its AWESOME. It feels much faster than ICS. No lag in the UI, even with the bloated Apex Launcher I insist on using. Everything seems perfect, like this is what Android was meant to be all along.
Accepting defeat .. this time.

.. until it randomly reboots on me twice in a matter of hours.  And did I mention that the modem dies randomly without any warning or indication?  Yeah.  I'm not trying to detract from the awesome work the guys are doing with JB, but I personally can't deal with that level of instability. I have a wife and young child at home who need to be able to contact me reliably, and my Fascinate is the primary way for that to happen.

So .. Once again, I restore to my trusty old AOKP Milestone 6 nandroid, and quietly admit that this whole process was all for nothing.  For now.  You can bet I will revisit JB once the critical errors I mentioned above are ironed out.