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 - *
Shared publiclyView activity