[ROM][5.0.2/LRX22G][AOSP][LINARO/OPTIMIZED] FML: Fork My Life (2015/01/08)

934 posts
Thanks Meter: 5,829
Post Reply Email Thread
Announcement from MWisBest: Try the Camera, I hear it's yummy.
The Tale of FML.
In mid-August of 2013, I decided to set out to improve the performance of my phone with a more optimized build. I had already begun building CyanogenMod 10.2 shortly after all the repositories were updated on GitHub, so I just started forking stuff on GitHub to improve what I could... 42 forks later I finally had a build that finished, booted, etc. And since 42 is 'the answer to the ultimate question of life, the universe, and everything', and the amount of times I was saying FML during this process, I thought the name 'Fork My Life' would be (in?)appropriate. Now I've finally brought all of the optimizations I was doing with CM-10.2 to CM-11.0 as well, and more recently settled on OmniROM.
Oh, and now there's these Lollipops I'm handing out. They are free as always, and they are very very delicious.

Why Should You Use FML? What's Different?!
To be honest, I don't necessarily care how many users or downloads my ROM has. What I do care about is people liking and enjoying their phone, if you try FML and you like it, great! I'm happy you enjoy it. If you don't, maybe leave some feedback on how I can improve it, and go try something else in the meantime. There are lots of ROMs to choose from, made by lots of talented developers, if you find something you like then I'm happy, regardless of whether or not it's FML. If you'd like to know what I've done that makes FML unique, here's a list:
- Lollipops. They are yummy.*
- Highly optimized, similar to (and in many ways, better than) Linaro, resulting in a smoother and faster Android.**
- Built with the latest GCC 4.9 toolchains from Linaro, with C++11 enabled.**
- Completely developed in the open, everything I do is right on my GitHub for anybody to use and improve upon.
- A (somewhat-)accurate ambient temperature sensor.*
- A unique kernel which attempts to balance features, stability, and of course, performance.
- Complete support for F2FS and EXT4, no 'conversions' required.*
*: Something that was done first by FML and later used and built-upon by other developers for their users to enjoy as well!
**: Something that I think is important yet is notably absent from many ROMs.

Also available is a custom TWRP recovery image (separate download, not in the ROM itself). Notable changes/improvements over official TWRP builds:
- Possibly improved speed. Most notable is the speed of decryption, other things are mostly limited by the speed of the eMMC instead though.
- Completely seamless support of both EXT4 and F2FS.
Lately the TWRP builds have fallen behind though. They will be updated as I get time.

Current Information
With all the stuff I do in FML, I don't think I can ever feel comfortable declaring it as stable. What I can say, is that I test everything I do on my personal device before it goes out to yours. There are some developers out there who feel that testing of their work is for their users, not them, and this is very unfortunate. This is not an attitude I see directly from the wonderful developers the Galaxy Nexus has working for it, but there's one major custom ROM project that screws up everything for itself and any other ROM that is based on it, due to a lack of review of their changes.

 * I am not responsible for bricked devices, dead SD cards, thermonuclear
 * war, or the current economic crisis caused by you following these
 * directions. YOU are choosing to make these modifications, and
 * if you point your finger at me for messing up your device, I will
 * laugh at you.
I need people testing and finding bugs if anything is going to be fixed. I might not have the Bluetooth devices you have, I might not use the camera as much as you, I might not use 4G LTE (or mobile data in general really) as much as you; you get the idea.

1st FML Flash:
1. Do a backup in recovery and (optionally) backup apps with Titanium Backup or something similar.
2. Factory Reset in recovery (wipe data (NOT /SDCARD THOUGH), dalvik-cache, cache)
3. Wipe /system in recovery.
4. Flash ROM in recovery.
5. Flash GApps in recovery.
6. Reboot, and be patient. First boot takes longer than others.

Subsequent FML Flashes, unless otherwise instructed:
1. Do a backup in recovery and (optionally) backup apps with Titanium Backup or something similar.
2. Wipe /system, cache, and dalvik-cache in recovery.
3. Flash ROM in recovery.
4. Flash GApps in recovery.
5. Reboot, and be patient. First boot takes a while.
NOTE: You can probably get away with just wiping the 2 caches without wiping /system, however if any issues occur please re-test with a /system wipe.

Flashing the TWRP .img:
For this you can either use fastboot or the Flashify app, however I'm not going to delve into the details of that as it's really more deserving of a separate thread to fully explain.

Latest Build
KitKat/Stable: N/A
KitKat/Beta: omni-4.4.4-20141015-toroplus-FML.zip (162.13 MB)
Lollipop/Beta: FML-AOSP-5.0-20150108-toroplus.zip (195.53 MB)

USE THESE GAPPS: FML-GApps-5.0.x-20150101-tuna.zip (167.81 MB)
They are based on PA's GApps, huge thank you to them!
Known Issues
- Camera can be a little touchy, but it generally works.
Lollipop Changelogs can be found in the post below!

Beta builds are using updated GPU drivers (and an updated kernel to go with them) courtesy of @Ziyan, as well as being up to date with the latest stuff from OmniROM. NOTE: YOU CANNOT FLASH A DIFFERENT KERNEL WITH THESE BUILDS.
Currently broken with the new GPU drivers:
- Hardware Video Decoding FIXED 2014/10/06
- Hardware Video Encoding(?) FIXED 2014/10/08
- Camera (PARTIALLY) FIXED 2014/10/08
- The stock camera app (as well as Google Camera) has this weird quirk of crashing when pressing the shutter button to take a picture, however many different camera apps on the Play Store (in particular Camera ZOOM FX) work flawlessly. Video recording is generally OK, however I've been getting some reports of the audio and video being a little out of sync, so your mileage may vary...
See the Changelog post below for..... well..... changelogs.

I'm now recommending these GApps, thanks to PA for putting these together.
Personally, I'm using the 'Modular Mini' version, so if you have issues pertaining to GApps, please give that version a try.
Some GApps packages can be too large for DexOpting to /cache when using ART. As a result, I've added the option of enabling and disabling the 'DexOpt /system to /cache' feature. You can find this right next to the thing in Development Settings to change from/to Dalvik and ART. If you're using a larger, more fully-featured GApps package, and you want to use ART, make sure you uncheck this box before enabling ART. This setting should be persistent, meaning it will last between flashes, so you can just set it and forget it.
Soon I'll get an FML-specific GApps package going, because I haven't found a GApps package that contains a decent amount of stuff without breaking DexOpt /system to /cache.

Known Issues
- The screenrecord command does not work directly, however it does work via the Power menu.
- There can be a slight (noticeable, but not huge) delay when pressing the Recents or Home button.

Thank Yous
AOSP (and all its contributors), because without them we wouldn't have an Android like we do.
OmniROM (and all its contributors), because without them we wouldn't have the awesome bacon-topped AOSP they grill.
steven676 for helping the Galaxy Nexus community with some important KitKat fixes.
koush for the now go-to standard open-source Superuser.
ChainsDD for the original/classic Superuser and for serving our country.
Linaro (and all its contributors), they've done a good job of improving Android and with CM-11.0 I used some of their code.
metalspring for providing helpful code, advice, ideas, and just generally being a good person and developer.
DevVorteX for resolving most if not all of the issues with the VZW Galaxy Nexus RIL on Android versions 4.3 and higher.
Rushead for his long-time use and support of FML.
dbt816 for donating.
bothgoodandbad for donating.
rice923 for donating.
JD 11 for donating.
ulnevrwalkalone for donating.
sickboyy for donating.
mastertech007 for donating.
Shadow Death for donating.
skebner for donating.
CYoung234 for donating.
horeabeni for donating.
IL2 for donating.
Loureiro for donating.
bmbst3alth1 for donating.
Graeme M. for donating.
putzmcgee for donating.
royalchameleon for donating.
T.J. for donating.
KShion619 for donating.
hortonew for donating.
Other donators who have (thus far) chosen to remain anonymous.
And anybody else I may have missed!
NOTE: I sent a PM/e-mail thanking any donor and asking for their permission to list their name here. Having their name listed is 'opt-in', meaning unless I explicitly receive a reply granting permission their name is not listed here.

I am now accepting donations. Previously I had felt that what I had done programming/code-wise with FML wasn't anything worthy of accepting donations as there's lots of people who could probably do that, however it has now come to a point where the time spent developing FML and the money I've spent on some hardware to help with developing FML is something that donations make sense for (along with some convincing from family and friends to accept donations).
To donate via PayPal, simply click the 'Donate To Me' button that appears on the left side of my posts.
UPDATE: If you can donate through Google Wallet, that would actually be better. PayPal takes some annoying fees with every donation, whereas Google Wallet does not. If you need help donating with Google Wallet, PM me and I'll guide you through it.

What the money received from donations will be used for is:
1. Hardware to help with FML development. Examples of what I have purchased for this are a nice internal Bluetooth 4.0 adapter to aid in testing and improving Bluetooth in FML, an MHL adapter, a USB OTG cable, micro USB cables (due to the locking mechanisms on them wearing out from constant use).
2. Saving for college. I'm not going to an expensive school, I'm being smart and trying to come out of college with as little debt as I can, e.x. currently I'm starting out at a 2 year technical college, so even a little bit of money puts a good dent into costs. Financial aid pays for almost all of my tuition, but it costs me $30/week in transportation.
3. Budgeting more time for FML. Let's be honest: money is a good motivator. It also helps to buy soda and snacks to give me the energy to keep going when I'm struggling figuring something out.
4. The cell phone bill. My dad has been extremely nice with paying for me to be on his plan for a number of years, and I'd like to be able to contribute towards the bill.
5. Whatever you would prefer. If you leave a note in the comment when donating stating how you'd like the money to be spent (e.x. '33% college, 33% cell bill, 33% soda/snacks') and I'll honor your request. You were nice enough to make a donation, the least I can do is spend it how you would most prefer.

XDA:DevDB Information
FML: Fork My Life, ROM for the Samsung Galaxy Nexus

Source Code: https://github.com/MWisBest/

ROM OS Version: 5.0.x Lollipop
ROM Kernel: Linux 3.0.x
Based On: AOSP

Version Information
Status: Beta
Beta Release Date: 2015-01-08

Created 2014-10-13
Last Updated 2015-01-08
Attached Thumbnails
Click image for larger version

Name:	Screenshot_2014-11-06-01-39-55.png
Views:	11638
Size:	90.4 KB
ID:	3003556  
The Following 18 Users Say Thank You to MWisBest For This Useful Post: [ View ] Gift MWisBest Ad-Free
13th October 2014, 03:34 AM |#2  
OP Inactive Recognized Developer
Flag Green Bay, WI
Thanks Meter: 5,829
Donate to Me
Changelog, News, Etc.

Lollipop Beta Changelogs:
- Updated the camera HAL.
This is going to be a little... fragile, at first, but in the long run it's needed. Stock camera app saves pictures now at least.
You may also notice that there's a 5.1MP resolution now (clear your camera app's data if you don't see it), despite our camera supposedly being 5.0MP all these years. Turns out the sensor's native resolution is indeed a whopping 16 pixels taller and 16 pixels wider than we've been using.

- Added back some of the classic FML optimizations and more.
Built with -fstrict-aliasing flag, C++11, and the Linaro GCC 4.9 toolchain.
- Updated to AOSP "android-5.0.2_r1" tag.
As usual, the only real change was them bumping the version number.
- Improved flashing.
The speed of flashing the ROM zip is now much faster.
- Superuser is now built-in.
There's no need to flash SuperSU. You can find Superuser in the Settings app. You may have to enable the "Development Settings" menu to see it.
Some apps are a little sketchy with this Superuser though, most notably Titanium Backup. If you have issues, try flashing SuperSU.
- Video playback should be fixed.
YouTube in particular seems OK. If you have some weird format you're playing back locally I cannot make any guarantees though.
- The camera situation has improved and also regressed.
The stock camera is kinda back to the point of where it was with the KitKat Beta builds:
---- Preview works. Saving photos does not work. Video recording kinda works.
--- However:
---- The camera calibration is a little messed up. Long story, but it'll be fixed soon. So your white balance may look kinda funky, among other things.
- Audio quality is improved, with support for 192kHz FLAC as well.
This is possible thanks to a new audio resampler, which doesn't impose the same sample rate restrictions of the stock Android ones. It also has far better quality than the stock Android resamplers.
- WiiMotes can now be paired via Bluetooth.
I used to be a bit of a Wii hacking enthusiast... I think I still need to add some more stuff to make it useable as a gamepad or something, but yeah.
- Fixed location services issues.
- (toro) Fixed switching between 4G/LTE and 3G/CDMA network settings.
- Kernel changes:
Reclaimed 38MB of RAM from the carveout stuff.
Removed HDMI's framebuffer, saving an additional ~16MB of RAM. With Lollipop, MHL/HDMI out isn't working with our old HWComposer, so might as well save some RAM in the mean time.
Added overclocking support, as well as adjusted the stock frequencies a little.
Added the GPU kernel driver back into the kernel, rather than building it as a separate module.
Switched to LZO compression for the kernel. It results in a slightly larger size to the kernel, but it boots faster.
Added the "purple tint fix".
Added compiler flag to tune code for Cortex-A9 CPU.
Built with Linaro GCC 4.9 toolchain.

Older Builds:
- Fixed the RIL.
(I think, still unsure of toroplus's status.)
There were a few things that went into this, and I can't really take much credit for it other than being persistent in trying to fix it.
1. rild needed a little fix-up to somewhat return it to pre-Lollipop form. Basically Google is forcing Qualcomm's junk upon the world. @dhiru1602 pointed me in the direction of some commits from rmcc to hardware/ril that fixed this part of the problem.
2. The kernel needed a commit to support some new junk related to networking in Lollipop. @Ziyan linked me to the change in question.
- Updated to AOSP "android-5.0.0_r6" tag.
Really the only change is that the build number is bumped to LRX21T.
- Switched out a couple small proprietary binaries with a reverse-engineered open-source version.
Thanks to @stargo who has really been killin' it for the Motorola OMAP devices recently, we now have a reverse-engineered pvrsrvinit binary (the executable that fires up the GPU drivers on boot-up). This is especially important because the proprietary pvrsrvinit wasn't compiled as PIE (position-independent executable). With Lollipop, they're forcing everything to be PIE, which is good because PIE is better from a security stand-point. Previously I had been adding a workaround to enable support for non-PIE, which I now don't need.

- Switched back to the old OTA package format.
With Lollipop they're now, by default, flashing something similar to a system.img. I switched back to the old format. THIS IS CAUSING VERY LENGTHY FLASH TIMES NOW HOWEVER, I HOPE TO FIX THESE SOON.
- Changed the kernel to build with GCC 4.7.
With Lollipop, Google switched to GCC 4.8. GCC 4.8 has never been kind to the Galaxy Nexus kernel, I'm surprised it was booting at all in the first place.
- Added "Ambient Display".
Apparently I need to add a "pick-up" or "significant motion" sensor for it though, so it displays something when the phone is picked up.
- Fixed chromium crashing.
This fixes Browser crashing upon open, among other things. This fix has been in chromium itself for nearly 4 months now, I don't know what the heck Google is doing to AOSP to make it so FUBAR lately...
- Fixed lag in Recents menu.
Now it's smoother than KitKat's, in my opinion.
- Added back F2FS support.
F2FS is now supported again, HOWEVER, it is NOT supported on the /system partition. It really didn't do any good for /system anyway.
- Updated various icons.
The Dialer icon in particular was bothering me. Other things that aren't visible in the launcher, e.g. SettingsProvider, have been fixed as well.
- Fixed FLAC playback, among other media decoding issues.
Just needed a sync-up in the device tree with one thing that I think Google DID do a nice job of with Lollipop actually.
- Built the ROM with "WITH_DEXPREOPT := true" defined.
This basically has all the system apps compiled before flashing, to cut down on the initial boot-up time which is ridiculously long with ART.
- Changed the "Android is upgrading..." screen to prevent burn-in.
Instead of using the white Lollipop-like look, it now should show up as the old, darker theme.

KitKat Beta Changelogs:
- Cleaned up the kernel.
Ziyan went over all his work not long ago and cleaned up the commit history and whatnot. He's letting me do the task of merging in the GPU driver stuff, so I'm currently just getting the kernel to a "clean slate" of sorts for other kernel devs to fork and build off of. Basically this should hopefully be the new "stock" or "Google" kernel. As a result, there's some bells and whistles missing from this build. It does however include some new audio updates that weren't in the previous kernel, which leads me to this...
- Changed audio sampling rate to 48kHz.
Previously the sampling rate has been 44.1kHz. The Galaxy Nexus supports 48kHz though! Here's what mainly sparked this change: since KitKat, the UI audio effects (e.x. touch sounds) have been switching over to 48kHz. With the Galaxy Nexus still using 44.1kHz, UI sound playback became kinda sluggish, and this was a big contributor to it. The UI sounds use the "fast track" audio path (where it tries to do as little processing as it can to the audio in order to play it with a minimum amount of latency), however a requirement of using this is that no resampling (e.g. converting 48kHz to 44.1kHz, like it has been doing currently with KitKat) can be required on the audio being played. Therefore the UI sounds were taking the "deep buffer" audio path, which has a delay to it. In switching to 48kHz, the "fast track" path is actually even faster now than it has ever been previously, and the Galaxy Nexus was already TOP OF THE LINE when it comes to audio latency believe it or not!
Another thing about this is that there is now support for playback of 96kHz audio files.
- Some updates to the camera HAL.
This hasn't fixed the situation of stock and stock-based camera apps crashing when taking a picture, but it's a start on it though.

NOTICE: Poweramp (and probably most other media players that use their own native code for audio playback rather than straight-up using the built-in Android APIs) is being pissy about the sampling rate change. If you experience issues with music playing, especially things like popping or crackling, please try Play Music or Apollo and see if your issue is still present. I know the UIs for Play Music and Apollo are pretty awful, but I can't write my own media player because I'm dealing with this camera stuff!

KitKat Stable Changelogs:
The Following User Says Thank You to MWisBest For This Useful Post: [ View ] Gift MWisBest Ad-Free
13th October 2014, 03:34 AM |#3  
OP Inactive Recognized Developer
Flag Green Bay, WI
Thanks Meter: 5,829
Donate to Me
13th October 2014, 03:35 AM |#4  
OP Inactive Recognized Developer
Flag Green Bay, WI
Thanks Meter: 5,829
Donate to Me
13th October 2014, 03:40 AM |#5  
OP Inactive Recognized Developer
Flag Green Bay, WI
Thanks Meter: 5,829
Donate to Me
Finally got FML up for you toroplus guys! Sorry for the long delay.
The Following 6 Users Say Thank You to MWisBest For This Useful Post: [ View ] Gift MWisBest Ad-Free
13th October 2014, 04:14 AM |#6  
bush2088's Avatar
Senior Member
Flag Bowling Green
Thanks Meter: 17
Thumbs up
Awesome...thank you very much MW!!!!!
13th October 2014, 07:23 AM |#7  
Junior Member
Flag Manchester
Thanks Meter: 5
Currently uploading this to my server and will seed until a stable version is uploaded, then I will replace it. Thank you so much for bringing life into an otherwise fading device.

Donation sent.
The Following User Says Thank You to bmbst3alth1 For This Useful Post: [ View ] Gift bmbst3alth1 Ad-Free
13th October 2014, 08:26 AM |#8  
Junior Member
Thanks Meter: 0
Downloading. Will be my second rom I try;
13th October 2014, 03:47 PM |#9  
Junior Member
Thanks Meter: 0
Beeing the beginner that I am, I have a Maguro so i couldn't install this one.
13th October 2014, 05:18 PM |#10  
Junior Member
Thanks Meter: 0
Donate to Me
Originally Posted by BennyDS

Beeing the beginner that I am, I have a Maguro so i couldn't install this one.

Maguro Build is Here.
13th October 2014, 09:23 PM |#11  
Senior Member
Thanks Meter: 43
I've always wondered about this rom as I saw it on the toro thread... will give it a whirl
Post Reply Subscribe to Thread

Guest Quick Reply (no urls or BBcode)
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes