Saturday, February 11, 2012

Nexus S 4G KANG to Epic 4G

Today I had an opportunity to purchase a Nexus S 4G with clean ESN from Craigslist at a bargain price of $140.  We wouldn't be able to buy dev phones like this if it were not for Epic community donations.  There is much we can learn from this very similar phone to improve Epic's ICS experience.  Their similarity helps us to be able to compare Epic's behavior, code and bugs to Google's leaked Android 4.0.4 and CM9 Android 4.0.3.

Below are a few thoughts after examining AOSP 4.0.4 and CM9 4.0.3 on how we can improve Epic CM9:
  • Sprint PRL and Profile update (and Activation?)
  • Auto-brightness more responsive than Epic.  It also seems to be more dim than Epic, saving extra battery.
  • Strength of haptic feedback is much weaker than Epic.  Onscreen keyboard seems to be 10% of Epic, just barely enough to feel it.  This points toward yet more opportunities to tune Epic for battery savings.
  • CM9 has built-in tuning options for the CPU governor.
  • CM9 has built-in tuning for Voodoo color.  It does however seem to suffer from the same ugly color gradients that happen on Epic when we tried a Voodoo color port.  The Epic CM team will need to determine if we can fix the Voodoo defaults to not be ugly, and decide if we want to later include Voodoo color in the default kernel.
    • CM9 Nexus S 4G includes overclocking.  The Epic CM team has not yet decided if we will include overclocking in the default kernel, because stability is our top priority.
    • CM9 Nexus S 4G uses the 3.0.17 kernel with Kernel samepage merging (KSM), with a convenient menu option to enable it in Settings > Performance > Memory management.  KSM frees up ~2-15MB of RAM but at a heavy cost, constantly scanning memory for pages to unify, eating battery and preventing the processor from sleeping.  Epic's kernel already appears to give ~11MB more RAM to userspace than Nexus S 4G.  We will probably have KSM as an option after Epic ports to a 3.x-based kernel, but we will not likely recommend its use.  There are other approaches like the CMA allocator or hardware accel blacklist that would save us a lot more memory without such heavy cost of CPU.
    • We need to port Epic's current 2.6.35-based kernel to 3.x.  It now appears that merging with KalimochoAz's crespo kernel would be a good idea.  jnadke is working on this general issue.
      If you appreciate our work, please consider supporting the Epic CM team.

      3 comments:

      1. Good stuff. Unfortunately ... over my head, but I certainly appreciate the opportunity to read and attempt to understand the thinking processes of a seasoned developer.

        ReplyDelete
      2. https://github.com/franciscofranco/Crespo-3.0

        There's a recent nexus kernel

        ReplyDelete
      3. I'm very impressed with this initiative to compare closely to a "stock ICS" phone to look for areas of improvement. You guys rock!

        ReplyDelete