Shared publicly  - 
The Saga of a CyanogenMod Exynos4 device maintainer - The SGH-I777 Touchwizz days

Well, here comes the second part of my saga, which started with .  I'm a little tired, and my memory is semi-vague in regards to this era, but it is the time when I started to see the truth of Samsung's developer friendliness.  I bought my Infuse, and the I777, based on the perception of developer friendliness put forth by Samsung's donation of I9100 units to the CyanogenMod team, and their hiring of Steve Kondik himself in August 2011.

Most of my time from those days on the I777 was a bit of a blur.  I primarily stuck to Touchwizz kernels back then, partly because CM7 on the I777 wasn't quite ready and I wasn't familiar enough with it to improve the maintenance situation, and partly because Touchwizz on Gingerbread was decent.

In November or so, I finally started looking into how to get I9100 firmwares running on the I777 - How similar were these devices in reality?  My inspiration came from LinuxBozo's Hellraiser for Infuse.  The good news is, it turned out not too difficult.  I just needed to swap out libaudio, and touchkey stuff.  Interestingly enough, if I added just one XML permissions file, NFC would work on ported I9100 firmwares!  (AT&T had forced Samsung to put in code to explicitly disable NFC if an I777 was detected in the Settings app.)

Most of my contact with the CM team consisted of occasionally shipping patches over to +Atin M and +Daniel Hillenbrand with fixes for bugs I had found, such as the fuel_alerted wakelocks in the MAX17042 driver (Which Samsung STILL hasn't fixed after more than a year, even though we've provided the patch to them multiple times...).  Atin also gave me critical information needed for Hellraiser.

In early November, AT&T announced the Galaxy S II Skyrocket.  Just a month after the I777, they announced yet another GSII with a completely different processor.  At that point I was NOT a fan of Qualcomm, as back then they did extremely poorly in terms of documenting their SoCs.  I actually called it the "shitrocket".  I still do, as I'm annoyed at Samsung and AT&T confusing the hell out of users by announcing two completely different devices with the SAME DAMN NAME.  As an aside, the Skyrocket/Hercules led to some...  Interesting things within XDA's RD program.  An RD (Melvin, I think?) had quite the fall from grace, by going from RD to banned in about 2 weeks over violations of donation-soliciting rules.  More on this later, as it was the start of some changes for XDA.

Around then is when the Galaxy Nexus, and Ice Cream Sandwich, was announced.  I wasn't too impressed with the hardware back then, as back then, hardware still mattered more than software.  However some of the ICS UI improvements were greatly anticipated.  Atin and Daniel started working on I9100 ICS, and I kind of stuck with TW Gingerbread - I knew there was no point on the I777 until I9100 ICS kernel source dropped.

Around here is when things started going downhill in terms of Samsung's developer relations...  They started doing things that were, simply put, nothing but antagonistic of the developer community.

In November, Samsung released XWKK5 for I9100 and UCKK6 for I777.  Bluetooth HID on these builds would not function with any source-built kernels - only with binaries associated with those builds.  Samsung never released another Gingerbread source update for the I9100, even though their binaries showed clear evidence of a functional change to the source.  Similarly, I777 UCKK6 source wasn't released until some unknown time in mid-2012 - I'm fairly certain not until after I9100 ICS was released at best.  That's right - Samsung was violating the GPL with I777 UCKK6 and every I9100 Gingerbread build from XWKK5 (November 2011) until they officially released I9100 ICS (March 2012) - Actually, technically they still are, as Gingerbread source corresponding to those kernels was never released, but it just doesn't really matter any more.  Throughout this time, I started spending more time in the I9100 forums, as it became clear exactly what was different for I777 and what from I9100 could be leveraged.  (I was a regular poster on the VillainROM thread, as that was my favorite firmware package for quite a while.)

Around the same time, Samsung launched the Tab 7.0 Plus and Tab 7.7, both based on the same Exynos 4210 SoC found in the GS2.  These were highly attractive, and I nearly purchased one - but I saw things in the communities for those devices that were extremely disturbing.  These devices used an Atheros AR6000-series wifi chip.  Interestingly, Atheros provides source for these devices under a dual-license, GPL and BSD.  (As Atheros holds full copyright to all components of their reference driver, this is legal.)  Samsung chose the BSD license for this driver.  The end result is, when asked for wifi driver source (which was not present in the source drops for these devices), Samsung replied with "code is dual license GPL or BSD.  We choose BSD."  Translation:  HAHA FUCK YOU DEVELOPERS!  ENJOY SPENDING A YEAR GETTING WIFI TO WORK ON THIS THING!  (Wifi on these devices is STILL flaky, which is a major reason why CM still hasn't merged these two devices and kicked off nightlies.) - See for more details.

Oh, you might see my rant about SamsungJohn in the above post.  That's another frustration with Samsung - Unlike Sony, who puts their devrel guys who can actually do something (like KalleD) front and center, Samsung's publically-facing official devrel contact is just a PR weenie who does nothing but:  Cross-post promises of "something big" all over XDA and fail to deliver (look at his posting history), promise AGAIN that "something big" is coming and fail to deliver AGAIN, then claim that Samsung is going to sponsor 3 developers from XDA to go to a conference (and AGAIN fail to deliver - ) - All he does is tweet about OSRC releases 2-3 weeks after anyone who is remotely competent has already found them, and shuffle Google I/O Tab 10.1 owners to a special support email.

Around December, Sony announced they were providing an ICS alpha for their 2011 devices, which included kernel source - - The Samsung Infuse had been receiving leaks of Gingerbread builds for AT&T with working HDMI for a few months at this point, so I contacted John to see if it might be possible to get a source drop so that Infuse users could get working HDMI on Gingerbread.  No response.

In February, Samsung officially started delivering Gingerbread to users via OTA.  After about a week, the updates stopped due to issues with the update, however, as Samsung HAD officially provided binaries to users, they were obligated to provide kernel source for this build.  However, when contacted, their response was that as they had removed the update from their OTA system, they didn't have to provide source.  Sorry Samsung, it doesn't work this way - If you provide a binary to users, one that they cannot easily revert back from (thanks to Gingerbread requiring a bootloader update), you are obligated to provide source code to those users - even if you have stopped providing binaries to additional users, those who received the binaries officially must be provided kernel source code upon request.  ANOTHER GPL violation from Samsung.

Infuse users didn't see kernel source until March when another build went live.  Those who received UCKL2 never received corresponding source in compliance with the GPL.

Also, around February, ClockworkMod Touch was released, and bricked a bunch of Epic 4G Touches...  Little was known about why back then, and the developer community was as of yet unaware for the nightmare Samsung was about to put them through...  More on this in a later post.

Sometime around this time, XDA announced its Elite Recognized Developer program.  It was the result of discussion about the fact that there was a wide spectrum of skillsets within the RD community - from those who probably didn't deserve the RD title (like Melvin) to some top-notch kernel/hardware hackers.  Somehow, I was one of the 25 chosen - I believe due to my tendency to always document what I can do so that others can leverage my discoveries (important for open source AND especially for users of devices I don't own).  It was good timing, as the ERDs were going to receive a huge challenge (see previous paragraph...)

Eventually, in March, I9100 ICS went live.  A week later, kernel source showed up.  It was go-time for I777 users - we finally had hope of ICS, if I could figure out a way to get call audio to work without I777 libaudio.  Similarly, the CM guys could finally provide useful builds without hacked binary kernels due to kernel source (for the entirety of those months, CM9 on I9100 was in bad shape due to Samsung's blobs being highly nonstandard and failing to work with compatibility wrappers that worked fine on other devices.)  I don't remember much detail about the chronology of this, but I know I did another Hellraiser release for ICS, spent a week reverse engineering the fact that I9100/I777 had swapped microphones, and started coordinating very closely with +Atin M .  Everyone had a lot of work cut out for them, as it took a team of 4-5 kernel developers to fix Samsung's totally broken cpufreq code which led to a system hang any time the cpufreq policy limits were adjusted to be below the current CPU frequency (such as applying a screen-off frequency profile.)

With that...  This post is getting way too long.  Next up - The beginnings of my involvement with the CyanogenMod team.

*New installment posted - *
Sean Crago's profile photoAnanthasayanan Kandiah's profile photoKings Lee's profile photoSirko Brose's profile photo
Or you could have flashed your i777 with aokp which task650 has been supporting for the last year! Running jb 4.1.2 right at the moment!
+Charles Lipka Um, no...  AOKP for I777 has only existed since sometime in late march/April.  Definitely not the past year.  It didn't exist on I777 until CM9 nightlies for that device started.  (Except possibly some early hexedit-hacked-kernel releases based on my Baby Pacifier work.)  AOKP on I9100/I777/N7000 would not exist without the efforts of the CM Exynos maintainer team.
+Andrew Dodd I swear it was last year but I could be wrong but even if you look at official aokp the i777 is not even listed and task650 and ktoonsez are actually unofficial ports... again I could be wrong however I know once I went to aosp I could never go back to a touchwiz ROM!
Excellent reading material. Makes me think twice about my next android purchase. I am eyeing the new galaxy tab 7.7 plus mostly because its not exynos. Look forward to the next part of this saga!
Thanks for sharing. I've been running cm10 in my i777, and am very thankful for your work.
Woah! There are two Jeds With i777s that are running cm10? End of times shit right there!
+Charles Lipka It was this year when ICS was available. I had been using it until cm10 was available.
so well written and interesting to read. subscribe for next post.
Thank you for sharing your experiences. Reading all this makes it clear to anyone that you guys are really give up lots of personal time for making our phones work better. Thanks again! 
I had no clue that Samsung had turned into such a jerk company, makes me glad that the Nexus 4 isn't from them.
Waiting for part three :)

P.S. no rush, of course, I just thouht that you  might want to know ;)
I have no experience building ROMs or kernels, but my experience developing regular apps that would work properly on my Vibrant was quite bad enough. I have sworn of purchasing any more Samsung devices that aren't from a Nexus line in the future, and I'm hesitant to purchase even those now.

It's simply astounding to me that Google continues to support a company that seems hellbent on taking credit for Android itself, and screws over developers in the process.
+Andrew Dodd What is your xda developer user name? Just curious I was a long time Samsung Infuse owner (sadly stuck in contract) and lurked in both CM7, CM9, and CM10 threads all unofficial  Most notably through all the changes of developers going inactive, was Entropy's thread. Some amazing work he did keeping the community alive.

Once i got my SGS3 i ditched those threads, however i am curious how things are going. Never realized all the past the infuse had, pretty much just thought it was a fluke phone between GS and GSII that Samsung threw out cheap.

Really great article, looking forward to part 3.

Edit: facepalms Just realized you are Entropy. Wow that makes so much sense. Slightly embarrassed, but again thanks for this article. You were always quiet in the thread due to clutter, nice to hear the full story.
All I can say at this point is "preach it brother!". I had thought about writing something up re: the infuse that echoes some of these thoughts but am happy to live vicariously through you at this point. :-)
This is all really disappointing.  Like most, I mainly chose Samsung devices because of their supposed "developer-friendly" image.  Regardless, thank you +Andrew Dodd for all your hard work.  This series of posts are just a perfect example of why I'll follow quality developers and not manufacturers.  You're attention for detail is thorough and due to that, I'll be more interested in which devices you'll be working with.  I guess that makes me a Entropy fanboy, but I feel like manufacturers force me to think this way. 
New installment posted.  This post edited with a link at the end.

My apologies in advance for this one's disorganization...  That was an incredibly hectic time, with WAY too much going on at once.
So can you make a suggestion of a phone that has good hardware, and is likely to support most (if not all) mods out there?
+Bertus van Zyl You can't go wrong with a Nexus if you want modding. Sony has completely turned around its attitude towards the dev community in recent years, so if you don't want a nexus you could look at something Sony has.

If you are not sure it may be prudent to wait till a few months to see what the modding state is at, since pretty much only the Nexus line is a sure thing.
Is there a concise, smaller version of this for laymen? 
No, this is an incredibly complex topic, and oversimplifying it carries the risk that inaccurate information will be propagated.  (See, for example, the rash of news articles earlier this week with vastly oversimplified headlines...)
I am pretty sure someone with technological knowhow can find the line between complexity and gross oversimplication.
Basically Samsung lied over and over to it's user's, the dev community, shipped faulty hardware that could be easily bricked despite warnings from the dev community about how to avoid it etc. etc. Basically showed a huge level of incompetence as well as greed. One specific example of greed being wifi drivers being dual-licensed. One license you'd have to share any derivative works, another license you didn't have to. Samsung went with the latter license to screw over the dev community, and this goes against everything Samsung had been feed their users (they are open, they are in the spirit of open-source etc.)
Andrew, could you point me to details about cpufreq driver? I am running ODROID-U2 with Exynos4412. I had exact situation you described in the post. I moved from 2000Mhz to 1704Mhz and that completely hanged the system. I already suspected cpufreq driver, but didn't dig deep yet. Would be nice if I could see the patches/fixes for cpufreq done for Exynos 42xx.
That's odd, I'm 90% certain no 4412 kernel should have that old broken stuff in it.  I9300 didn't.

That said, hardkernel and insignal's stuff is demonstrably FUCKING ANCIENT so it could be that old broken crap.

The frequencies you mention are obvious overclocking, so it's probably just a busted OC implementation. - This was reimplemented in a somewhat cleaner fashion within I9100 Update7.
Add a comment...