Update October 8, 2015: Android 5.1 (“Lollipop”) OTAs
My old Galaxy Nexus died so I had to get a new phone. I would have loved to have replaced it with a new Nexus 5, but it’s a work phone, and work is paying for it, and work has a contract with Verizon Wireless. So my options for a phone with a relatively stock version of Android were pretty limited—really just the Moto X. But I’ve had enough of the power-hungry AMOLED display of the Galaxy Nexus, and didn’t want to deal with that again in a Moto X, so I picked the HTC One (M8), knowing people on xda-developers have already ported the stock Google Play Edition (GPE) build of Android to it.
When I got the phone, the first thing I did was install the so-called “DigitalHigh” GPE build from xda-developers, but what I found was anything other than a stock Android experience. There were so many tweaks, options, customizations, and glaring security issues (chmod 755 everything!) that it just put me off. Really, the whole xda-developers community puts me off. And since this is a blog, let me go on a little rant:
xda-developers, probably the largest Android modification community, is a place full of advertisements and would-be hackers who call themselves “developers” just because they can compile the Linux kernel and put it up on a slow, ad-ridden file host. No one uses their real names, no one hosts their own files, no one releases source code for their work, and no one documents what they do. And that’s to say nothing about the users, who bring the community down in other ways, but for whom I feel, because I know I would hate to be stuck with the bloatware and skins the carriers and manufacturers collude to lock onto Android phones.
Clearly I don’t think xda-developers is a very pleasant place. The problem is some people on there actually do really good, really interesting work. So it’s an inescapable, conflicting, sometimes great, but usually frustrating source of information for Android.
That frustration led me to port the Google Play Edition build of Android to my new HTC One (M8) for Verizon myself, hopefully demonstrating the way I think Android modification should be done in the process. Some points:
- All of the modification is done in an automated way. I chose my favorite automation tool, Puppet, for the job, but shell scripts or Makefiles would work just the same. The point is to download, modify, and build everything required in a hands-off manner. Automation has the added benefit of doubling as a sort of documentation.
- All of the automation code is publicly available and version controlled.
- All of the code is committed with my real name, James Lee.
- Everything is hosted by me without ads, or is otherwise freely accessible—no file hosts.
- All modification is done with a light hand, only changing what absolutely must be changed. (Though I do make a concession to enable root access and the flashlight, but even that is done in a clean and transparent way that can be trivially disabled.)
I’m not going to pretend that this is novel, or innovative, or that it took some huge effort—it’s just modifying some configuration files. If you want to give credit somewhere, look at CyanogenMod. They’re doing Android right. They build from source and have a working version for the M8. Sadly, they’ll always be playing catch-up to Google. Still, I have a lot of respect for that team of (real) developers, and I based a number of modifications to the GPE build on their code, so thank you!
Sorry this post was more ranty than usual, but as you can see, I have strong opinions on this subject. If you made it this far, here is the result of my automation:
I leave this file here as a convenience to those who know exactly what to do with it and who are capable of using and understanding my automation tools, but simply don’t want to. If that is not you, then you probably shouldn’t be modifying your phone.
I’m looking forward to seeing how well this works when Android 5.0 drops.
Android 5.0 (“Lollipop”) has arrived and with a few small tweaks to my automation tools, I am pleased to provide a flashable image for the Verizon M8:
Compared to the 4.4.4 release, this build deviates even less from the official upstream image. In fact, the only modifications to what Google and HTC distribute are:
- Add the Verizon device ID to the Device Tree image for booting.
- Enable CDMA with two line changes in build.prop.
- Set an override flag on boot to allow screen casting to work—a feature that is more prominent in Android 5.0.
Compare that to the “DigitalHigh” release on XDA which disables important security mechanisms (SELinux, ADB security, file permissions), changes a whole lot of things that don’t need to be—and shouldn’t be—changed (like the I/O scheduler, data roaming, animation speeds, and various WiFi settings), and continues to deviate further as time passes, with inclusions like the HTC Sense camera. At this point, “DigitalHigh” can hardly be called the Google Play Edition, and many of the changes are downright harmful. I would strongly urge you not to use it.
With my automation tools, you can see exactly what modifications are required for Verizon support, and you can run it yourself so you know you’re getting a build that is as close as possible to the way Google intended it to be.
Android 5.1 was released for the GPE M8 a couple of days ago, and I already have a build of it ready for Verizon M8 devices.
Judging by the state of the Verizon M8 XDA forum, I believe I’m the first to have 5.1 on a Verizon M8. Another score for automation!
As some of you have noticed, some new OTAs have been pushed out for the Google Play Edition HTC M8. I’ve been on vacation so I haven’t had a chance until yesterday to look into them, but now I’ve been able to tweak my automation code to get these updates working on the Verizon M8. The nice thing about these changes is that I can now use the publicly available incremental updates directly from Google rather than having to rely on the community to produce dumps of their updated devices. Anyway, here are the updates, to be applied in succession on top of the LMY47O.H4 build from above:
Again, these files are provided as a convenience to those who know what they’re doing.
Nothing is more annoying on xda than needy users. Even on the GSM HTC One (M7 and M8) there are horribly hacked builds with some glaring security flaws and customizations they find on the internet that others have said helped. So it was hard to find an untouched GSM build. I ended up not loving everything about GPE so I went with CM on my M7. I may look into trying this on the m7 for someone.
It’s funny—I remember browsing the Galaxy Nexus forums on XDA and seeing “tiny4579” and thinking, “I know that guy!” You’re definitely one of the good guys.
Thank you very much sir. This is exactly what I was looking for.
I tried the new one (5.1 GPE) and it works great, except the message plus app on verizon won’t restore my messages. Is there a build prop edit I can do, or something?
I was going to try to compile a rom like you did, but even though it seems easy to you, it was over my head. I will have to do more reading. I sure appreciate you making these roms available without all the hacking, and security issues.
oops, well I got it to work. I just uninstalled it, reinstalled the(VZW message+ app), and let it do it’s thing with only the data and no wifi. Now it’s working. BTW this rom is notably faster than the 5.01 IMO.
There’s an OTA it’s trying to install. It downloads, but won’t install in custom recovery. Is there a way I can install it?
I have to build a new flashable image based on a new RUU image, but I’m on vacation now so I won’t be able to get to it until next week.
I’ve made new flashable images for the OTA updates available. Check the updated post for details.
I flashed this ROM on my HTC one m8 verizon phone. But, actually, I am using this phone in india.
So, my case is as follows:
1. After installing rom, it was showing me “No SIM” warning and as an obvious reason phone wasn’t registered in network.
2. I changed build property ‘ro.telephony.default_network’ to ‘4’ and rebooted phone. On reboot, phone was registered in network. But, data wasn’t working. Even APN menu wasn’t shown under settings.
Here, LTE isn’t available in CDMA network. Any guess, what will be the issue?
I’ve been using this rom for several versions now and love the ‘stockness’ of it. I am having an issue for this current and the previous update where I’ve been stuck in 3G and not getting to LTE. Any advice?
In settings, select “more” under the networks heading, choose “cellular networks,” open “preferred network type” and pick “LTE/GSM/UMTS,” wait for the wireless network to lose service, then reopen it and pick “Global.” It may not reconnect, but if you toggle airplane mode on and off, it should reconnect again in LTE mode.
I had tried that prior to posting, and just gave it another go with no luck. It’s right back to 3G. I also ran a speed test w/o WiFi to verify that the speeds are not at the LTE level. Thanks for the response! Any other ideas would be greatly appreciated.
First of all: thank you for your hard work.
Second. I tried to read all the forums about it, but this is unclear for me.
If I turn my verizon m8 into GPe, does it mean that it will unlock all the LTE bands?
Basically I using the m8 on ATT and I missing the LTE.
I already did some software modifications earlier on Sonys, Samsungs, Motorolas etc…
I am not a beginner (also I am not an expert), but this “hardware” thing is a bit far from me. (and this is my first experiment with htc – I had an htc diamond years ago 😛 )
It works well for me. Prior to install, I did the ruu back to stock, then installed all the updates in order. 4g, 3g, WiFi on all the time mostly, its fast, and gets good battery life.
It works really great thank you but I see that your updates dose not have the Android M update how can I get it or to do it as u did the others yourself thanks
Hi, I have a question, do you still have the original LMY47O.H9 to LMY47O.H10 OTA zip file? I’m trying to update to Android M but it fails because my M8 is om the H9 release. However, I never received the H10 OTA. I’m unable to find it as a download on the internet as well.
I think you will find the links you are looking for here.
Hi i tried to get the OTA update M with your code but after o get a lot of files i got this error
Error: Could not find command ‘/usr/bin/armv6j-hardfloat-linux-gnueabi-gcc’
Error: /Stage[main]/M8_gpe::Sqlite/Exec[compile-sqlite]/returns: change from notrun to 0 failed: Could not find command ‘/usr/bin/armv6j-hardfloat-linux-gnueabi-gcc’
Error: /Stage[main]/M8_gpe::Build/File[/home/muu/Videos/m8_gpe-master/build-ruu/tools/sqlite3]: Could not evaluate: Could not retrieve information from environment production source(s) file:/home/muu/Videos/m8_gpe-master/sqlite/sqlite3
Error: /Stage[main]/M8_gpe::Build/File[/home/muu/Videos/m8_gpe-master/build-ruu/system.img]: Could not evaluate: Could not retrieve information from environment production source(s) file:/home/muu/Videos/m8_gpe-master/ruu/system.img
Error: /Stage[main]/M8_gpe::Build/File[/home/muu/Videos/m8_gpe-master/build-ruu/META-INF/com/google/android/update-binary]: Could not evaluate: Could not retrieve information from environment production source(s) file:/home/muu/Videos/m8_gpe-master/cm/META-INF/com/google/android/update-binary
i dont know what is missing ? 🙁 i keep tring to figure it out but i cant
Hi, I was wondering if there is a Rom of the gpe for marshmallow? I need it for a Verizon HTC m8. Any news will be helpful, thank you
will your Automated Code is not working with the last OTA Android M as you have hosted files on your Server ”https://thestaticvoid.com/dist/m8_gpe/sources/” and the Last Update not working there is files must be added and edited in the manifests files
i guess im not sure but it seems to be but thanks for your great efforts
I install these zips ? as a normal zip stock ? what happened to the sd card and fastboot flash by ?
It is a m8 verizon S -off bootloader locked.
Do I need to install?
Thanks for all the great work! Quick question, what is the best way to update to Android 6.0, since I have gotten stumped while trying to use the OTA option and other methods for a few days now?
you sir are the man i have been trying to get this gpe to work for a week all other ruu did not work you sir are amazing