What Is Carrier IQ? Why Should We Care?
Put simply - and bluntly - Carrier IQ is a software package buried deep within Android by Samsung at the behest of Sprint. It has been in active use since the time of the Moment, if not before. The company that develops it, also known as
Carrier IQ, bills it as "Mobile Service Intelligence". In their own words,
[T]he combination of the MSIP and IQ Insight lets you move seamlessly from broad trend data across many users, through comparative groups down to diagnostic data from individual devices. Now, not only can you identify trends, you have the power to drill down to specific instances, giving you the insight your specialists need to make a difference.
On its own, that description can vary from harmless, to worrying, depending on how you look at it. It's not until one drills deep down into the system and ferrets out every piece of the software that one truly knows what it contains. As some of you might remember, ACS took the first steps toward disabling the Carrier IQ software with the release of SyndicateROM and Xtreme Kernel 1.0. That, however, didn't even scratch the surface.
Carrier IQ's native libraries are plainly visible - libiq_client.so and libiq_service.so in /system/lib. During every boot, this service is launched - you can see it in Settings > Applications > Running Services as "IQAgent Service". These native libraries are called by non-native (Android application) libraries located in ext.jar (the client) and framework.jar (the service). Removal of these (rather obviously-named) libraries alone, be it the .so files or the libraries in framework or ext, will, obviously, break boot. So I - k0nane - had to dig deeper. To make a long story short, reference to the IQ Service and IQ Client were littered across the deepest portions of the framework, and some of the most basic functions of the Android system as we know it.
Carrier IQ as a platform is designed to collect "metrics" at any scale. What I found it to hook into is far beyond the scope of anything a carrier needs - or should want - to be collecting. Carrier IQ sits in the middle of, and "checks" the data of, SMS and MMS messages. It listens for and receives every battery change notifications. It hooks into every web page you view, and every XML file your device reads. It receives
every press of the touch screen. It 'sees' what you type on the physical keyboard. It reads every number you press in the dialer. It can track which applications you use, what 'type' they are, how often, and for how long. It hooks into data sent and received.
I, and the rest of ACS, ask Samsung and Sprint - why do you want this information? Why do you need it? Why is the capability in place?
The only saving grace - if there is one - to this nasty, ten-legged mutant spider is that its logs are off by default. During the investigation process, I was able to enter its UI. Below are two screenshots of it.
That being said, the question still must be asked - why is the service even running? Why does Sprint and Samsung feel the need to leave a dormant monster in every one of its most loyal customers' phones?
Here's the most important part (tl;dr): the Carrier IQ service is a drain on battery life and performance. ACS noticed a significant rise in Smartbench scores and overall system 'snappiness' after Carrier IQ's removal. In addition, with it removed, ACS team lead rjmjr69 saw 30 hours of battery life, with heavy use, on the stock battery.
Credits
We would like to thank everyone below for their hard work, and for their valuable contributions, some of which we've included in this ROM. The entire Android Creative Syndicate thanks you!
- tanimn (ACS) - for the (continuing) hard work on the Twilight Zone kernel, THANK YOU!
- thomasskull666 (ACS) - contributions to the Twilight Zone kernel
- MysteryEmotionz (ACS) - theme porting from Shuriken, AM/PM mod, accurate battery framework, reboot mod, other theme assistance
- ZHkilla (ACS) - graphics, boot animation, theme porting from Shuriken, accurate battery images
- Dreamsforgotten (ACS) - theme assistance, theme porting from Shuriken
- jez2cool (ACS) - testing
- nanncee (ACS) - testing
- Konikub (ACS) - screenshot compilation above
- Shabbypenguin (ACS) - mirror hosting
- DevinXtreme (ACS) - original fixes in Xtreme Kernel
- geniusdog254 - original fixes in Xtreme Kernel
- nullghost - idle timer from 2.6.34 (kernel)
- mkasick - camera fix patch, Wired Tether updates, hardware keyboard fix patch
- Mammon88 and the Bonsai team - select initscripts, original network speed tweaks, tweaked libsqlite.so
- Dameon - Clockwork Mod Recovery 3.0.0.6, EXT4 portage
- Untermensch (Vibrant) - original 'battery full' tweaks, more
- theimpaler747 (ACS) and the XDA mod team
- the users - for patiently waiting for this release
If we've used something of yours or you've contributed in any way and we've not added your name above, we apologize! Please send k0nane or rjmjr69 a PM and we'll get you added as soon as possible.
Special thanks to rjmjr69, our team leader, without whom this ROM and the team behind it would not exist.
Userbars
ACS member Pseudoremora has created a set of userbars for all users! Please support our efforts, and this ROM, and add one to your signature.
Donations
SyndicateROM Frozen and any other ACS productions are not, and
will never be donationware. However, I (k0nane) and the rest of the Android Creative Syndicate have put many hours into the development of SyndicateROM Frozen, and will continue to do so for the forseeable future. Your generosity - if you feel like showing it - is deeply appreciated!
Please PM k0nane with your PayPal email address if you donate! We will list you anonymously if you wish.