You’ll have to pardon me while I go on a bit of rant here. Hopefully you’ll hang in there and at the end of this have a better understanding of “why” the Droid 3 is in the state it’s in and where it may be going next.
As most of Droid 3 owners are well aware by now, Motorola has officially crushed our hopes and dreams by saying “NO.” to any ICS upgrade.
Shocking? For many I would imagine, yes. The device is a spry 10 months old. But, over the last few months, I tried to warn people that I couldn’t see Motorola putting in the time to make ICS run correctly on the Droid 3. What exactly did I mean by that? Or perhaps I should just say “Why won’t Motorola be upgrading the Droid 3 to ICS”?
The answer is astonishingly simple: RAM.
Add to that, how the OMAP4 design has changed from Gingerbread to Ice Cream Sandiwch and it can provide a rather bleak picture of how difficult it has been to bring functions like HD codecs and full camera support to the device.
I know you’re seeing OMAP3 phones with something like hardware acceleration and usable codecs for viewing video and possibly a video camera running at 10fps. And you’re saying: Why not us? What have you been doing with the Droid 3? And why would having 1GB of RAM be so important anyway? Isn’t most of it wasted?
–
Let’s start with the RAM issue. Yes, most of it is waste… in Gingerbread. However, the way ICS is supposed to run on the device there is over 320MB of memory which is allocated by the OS for use by HD codecs, and graphic texture memory. Some quick napkin math = not enough left for the OS (would need about 250MB+ for a bare bootup in most cases).
What the hell happened to the RAM in ICS? Why so much? It all comes down to the initial source code provided by Texas Instruments. If you’re a company like Motorola, you take a look at what TI has done setting up OMAP4 devices for a specific version of Android. From there you pickout a nice starting point in their code (we’ll call this starting point: 4AI.5 which equates to ICS 4.0.4)
To use the 4AI.5 kernel source as it comes from TI, you need a device with 1GB of RAM. There are more than 3-4 places in the source which have hard-coded memory maps which make the assumption of 1GB of usable RAM. And it get’s worse. Not just the kernel is mapped for 1GB of RAM. There is a second set of source that is also provided by TI for compiling the binary which runs on the HD codec processor (called Ducati in our device). That source is ALSO mapped for 1GB of RAM.
Let me ask you a question? Have you seen *ANY* OMAP4 phones w/ 512MB running ICS yet? No. As a matter of fact, there is only 1 device in existence running an official version of ICS, and thats the Archos Gen9 80 tablet. And it’s unique in that Archos took the time to develop a completely custom way of running memory management in ICS to support 512MB of RAM. (I’ll bring this device up later).
With the current onslaught of phones and technology progression, MOST companies like Motorola just don’t have the time to redesign the 4AI.5 kernel to make it work with 512MB RAM. They have bigger fish to fry, and more devices to sell.
Q: So, we’ve established why in theory having 1GB RAM makes it easier for a company like Motorola to bring an ICS update to the device, but… that doesn’t really explain the lack of HD codecs and full camera support for the current ICS ports for Droid 3, Bionic, RAZR and Droid 4 that I’ve been working on. After all, we’re not using a true ICS kernel. We’re using the original Gingerbread kernel! Aha! We don’t *need* 1GB RAM for that!
A: Quite right. And the current Gingerbread HD codec binaries which get loaded onto the Ducati processor also don’t work with the ICS operating system .. at all. In general, the Gingerbread binaries work in Gingerbread structures called “overlays”. In Ice Cream Sandwich, the entire graphical sub system works on “native Window” structures instead. — Uh.. what?
This means you can’t use Gingerbread ducati binaries in ICS. They don’t talk the same language.
So how does the current camera hack work? It’s exactly just that. A hack. It uses a pre-compiled Gingerbread camera library to read from the Gingerbread ducati binary what the camera is viewing at that particular moment. And then it shoves it right on to the frame buffer, bypassing the entire OS. This also means stuff that uses the camera like bar code scanners, Google Goggles, etc. All will not work.
Q: So why does it seem like nothing has been happening over the last few months?
A: Simple. There really hasn’t been much happening.
That’s not to say I haven’t been looking at options or running tests on viable paths to take to get those features worked out. They just haven’t been working and/or end up being too much work for 1 guy like me to do.
Case in point: We’ve established that KEXEC can work on the Droid 3. That means we can load a new kernel. What would it take to get a kernel loaded that has support for all the “stuff” we’re missing from ICS? Answer: “A lot of work”. It took me 4 months of work to get a usable kernel (as it stands today) for the Kindle Fire. And it’s not even done. Imagine adding to that: a camera, a 3G modem, bluetooth, and other devices that the Kindle Fire doesn’t even have. It might take me 6-7 months to bring a full fledged ICS kernel to the Droid 3.
Q: But, perhaps, I don’t have to do a FULL ICS kernel. What about “back porting” just enough of the kernel to get Syslink 6.0 running so that we can load the necessary binaries to run HD codecs and camera?
A: Great idea! However, remember that whole 1GB RAM issue? There is only 1 ducati binary in existence (that I know of) that runs on 512MB and that’s from the Archos Tablet I mentioned before .. and it only has a 720p front-facing camera. So there’s a very good chance you can’t use it for full camera support and isn’t that 1/2 the reason for re-writing the kernel?!
The last option would be to hack in some kernel “modules” which are much smaller than a full kernel and somewhat easier to manage. And some of you may have seen me working from time to time on different versions of these.
To date: I’ve never been able to load any ducati binary on the Droid 3 using kernel modules. It’s a brutal process of ripping out routines and replacing them w/ Gingerbread counter parts and in the end, I don’t know if it will ever work.
But, since I’m just 1 guy and not a whole army of coders who work full-time on it, this last option is still probably the only viable option at the moment. And even then, I still *need* Texas Instruments to probably step up their support for 512MB devices and create a new ducati binary which we can run which has full camera support, etc.
Q: What *IS* the future of development for the Droid 3?
A: While I will continue to tinker with backporting enough function from the ICS kernel to make a usable ICS build … the truth is, we’re probably looking at CM 7.2 as a decent alternative where you can actually use the majority of the device’s functions.
Q: When will I start work on CM 7.2?
A: Probably as soon as things settle down w/ the RAZR and Droid 4 MotoICS leaks (few weeks).
And that’s it. /rant-off. I hope you can all keep in mind that I do this at night, on weekends, during holiday breaks and while I sleep sometimes.
I’ll try and do a better job of keeping everyone in the loop. :)
Hash, as a user of your kickass Fire kernel, I say thank you! This is too bad for the Droid 3 users, and it’s a shame that Moto wont do something about it (among other things…that we’re all well aware of). I’m on a Razr MAXX running an AOKP port based off of the official ICS leaks….it’s really a shame the D3 guys wont have that option :-/
Thanks a ton for all the hard work you have put in Hash. I hope everyone understands it is not your fault that ICS won’t work on D3, and most of us do. There will always be some people who will try to give you a hard time, but please know that we are thankful, and indeed awed by just the sheer amount of effort you put into these things and for free. You are a superman ;) Cheers!
Sad news. But certainly not from lack of effort. Sounds like you have given it your all, and explored every possible option. Thanks for the hard work!
Pingback: Novedades sobre ICS para el Droid3 by HashOfCodes | Foro Androide!
Man, I’ve been using one of the releases from back in March (i think), and it’s still working awesome. Yeah, some things like the qr scanner doesn’t work, but I can still use the camera and that’s really all that matters. Thanks so much for all your work. The ice cream I have is still delicious.
While this all sucks terribly, I for one cannot believe insufficient RAM to be enough to stop us. The frickin G1 has a working ICS port. No hwaccel is needed when u don’t even have a PUG granted, but that phone was never even supposed to run froyo. The RAM tricks included reclaiming system memory reserved for ETA updates, bootloader tricks, radios taking up less space (all not available to us), amazing compcache and swap techniques using a well formatted and high speed sd card (adata class 6 all the way, still have mine in this very d3 I’m using). This phone has gobs of memory outside of RAM. There must be something we can do.
You’ll note that I never used the word “impossible”.
You CAN get around the memory limits, but it requires more work and is easiest done with a full fledged 3.0.x kernel — that’s what I did for the Kindle Fire which also has 512MB of RAM. And that’s what I’m still attempting to do with the kernel modules that are in development — it just isn’t looking good.
While I agree that there are phones “running” ICS like the G1. The experience can’t be good. Our main problem is we have a stock version of Gingerbread where you get 1080p video recording and can watch movies w/o lag on netflix. We have 2 fully working cameras and can arguably play some of the best games that are out there for Android phones. I’m not sure the same can be said about the G1. The standards for a “working” ICS port for the Droid 3 are arguably higher. And that’s where the challenge lies.
I would ask: Why write a bad port of ICS? Why use a phone that doesn’t work well? W/o RenderScript(Chrome), HD Codecs, Video Recording, Face Unlock and all of the other ICS features we are struggling with.. is it still worth it? That gap will only increase over time, unless serious gains can be made via kernel modules, a kexec kernel or otherwise. We need updated PowerVR drivers and ICS compliant durcati binaries. Those are HUGE hurdles, and I’m trying to explain the “Why” of it all
Hell, it wouldn’t hurt to have another serious AOSP programmer to help out as well. Many phones have 2, 3 or even more devs working on source code to fix issues.
mainly because of the locked bootloader, i guess it’s a great way to scare developers off the device.
and partly because of the “early” release of the D4 (even though the D4 is not sold on GSM countries)
this sounds like a great way to unstuck from my wonky programming skills, and a load of fun, too bad there is too much going on for me right now to do this
regardless, id love to make my own device a beast, and i may eventually give you a hand on the d3
I remember watching you discuss getting the ducati binaries to work with 512mb of ram on the Fire in IRC. I remember you saying how difficult it was.
It’s funny, a lot of people want ICS for the sake of ICS, when in fact a fully matured CM7 rom would be much better.
Thanks Hash code. Your words mean more to me than I think I know. I am so sorry I can’t help develop and fix some of these problems. I know the only way to solve a problem is to put in the time. I have always felt guilty about the time its taken you to work on the D3. I fear the way in which we as a people do business, it comes with an increasing amount of fear too. No one wants their ideas stolen or used without permission. Its a fine line. They use to make cars so the owner could do their own repairs if they wanted. Now they make sure the owner can’t even change the oil. Laws are maybe the only way to turn this trend around. Looking forward to future D3 changes. Keep up the good work!
THANKS FOR ALL YOU HAVE DONE
I have been hoping that this phone would get ICS somehow. Based on these issues, thanks to TI (and motorola for not pushing them) we will never see a solid build of ICS for this phone. This is depressing, but I truly appreciate all the effort you have put in to this Hash. I am eagerly anticipating the new nexus devices google should be announcing at I/O, seems like jumping to one of those is a safer bet then trusting moto to fight for their customers to get device updates.
if you pick back up 7.2 will you continue to post nightlies on the cm9 core?
Losing my camera integration/netflix has affected me in insignificant ways but I love the new features that pop up, the fun “living on the edge” flashes
So if you pick back up cm7 please don’t stop what you do for cm9 ^_^
Keep up the good work! Love the product, and the love for a phone that was upstaged in 6 months, and declared dead @ 10
Pingback: Anonymous
I can not find enough words to thank you for your effort and hard work, thank you for all you have done for us.
From Brazil
My biggest question is why are the phones produced with so little RAM in the first place? It can’t be a space issue on the PCB can it? I’m not expecting a small 16GB ESX host in my pocket, however I would think they could put at least 2GB of RAM in the 2011 models.
I had some trouble with the D1 at times with it’s spec of RAM. I’ve got the D3 now and it’s not as much of a problem, however there are two apps I flip between for something I go to about once a week and about half the time it ends the app I just left. With what you mentioned for ICS on OMAP, I”m not getting the warm fuzzies for the D4 I ordered today (upcoming plan restructure and that it was free made me pull the trigger).
your ICS-Port for the droid 3 is great…thank you for all your hard work!
but I really would love to see cm7.2 for my droid 3. in my opinion is cm7 the better choice for the droid 1-3 :)
Hash,
You repeatedly talk about this 1GB issue, where everything is coded to work with 1GB, and that the only device out there with 512mb RAM and ICS is the Archos Gen9.
Well, what about the Nexus S? It has 512MB ram and ICS 4.0.4
Or is this just for OMAP4?
I’ve been happily using your ROMs since November 2011. Your work is impressive and I admire your dedication. It’s been great fun playing around with CM9 and especially AOKP. Thank you. Unfortunately, I finally switched back to a modded stock ROM this month because of (what else) the camera. I need it now more than ever, and that need overrides the grossness of Moto’s ROM.
I am eagerly awaiting a fully functional CM7. Moto’s ROM is indeed gross, even when tweaked and modded. It’s dirt-freaking-slow. Frustratingly slow. With horribly choppy animations. Little free memory. Touchscreen/keyboard input latency that can approach several seconds, assuming it doesn’t just drop inputs entirely, which is not uncommon. And Blur… :-O****** I’d forgotten, or maybe repressed, its awfulness.
I can’t believe they expect people to pay money for this. I would have thought the hardware was crap if I hadn’t used your ROMs, which suffer from none of these problems.
And I’m stuck with the thing for at least another year, so you can appreciate why I hot for a working port of CM7. And who needs ICS, anyway? Gingerbread looks nicer on phones. :)
(btw, I hear the Xperia Arc S runs ICS with 512MB of RAM. Just FYI.)
+1 !
Oh Men, thanks for all the effort and hard work!! Please keep doing this, and one day yes, we got ics in droid 3!
From Brazil
This post is great. It has a lot of insight. Thank you for saying something.
I’ve been following your blog– well more appropriately you for about six months. I am a mobile curious web dev already using Linux for work and home use. –Which is why the Droid3 with it’s super sexy keyboard with symbols is my device (for now).
(…debilitating sadness from the Droid 4 keyboard lack thereof– Well, the symbols functionality isn’t horrible. It is just that the Droid 3 FN + L -> { is so nice. Curly braces FTW?)
I will be looking at CM7 going forward. ICS meh. –It’s not that I don’t appreciate the valiant effort so far.
Also don’t get me wrong, I am angry that my device was built with such short sighted bungling (and f’ing $#%! camera software). But, I agree in that I don’t know that the juice is worth the squeeze for ICS on the D3. –Unless you have enough donations coming in to subsidize work you enjoy.
Thank you for putting in as much work as you have. I am ready to white flag it though. Because, were I in your shoes, I would be working on something that has a path of lesser resistance and a bigger scope.
Besides, I can keep a bluetooth keyboard in my car if need be.
I loaded your CM9 program and now my phone works like magic. No more lag on games, the camera works great and fast, and I love the new features of ICS which I now could not live without. I hope you will find a way to get everything working.
We appreciate your hard work on this and beg of you not to leave us in the dark like Motorola has chosen to do. Those of us who were duped into purchasing this Droid 3 phone deserve a working phone that doesn’t lag so badly that it can’t even answer phone calls.
Thanks hash for trying on the D3 I guess this means I got to upgrade to the D4 makes me sad though I love my D3… but thanks again
Hashcode you’re the man. The fact that you take all this time and effort to create a ROM that we can all use is more than appreciated. If only I had the knowledge you have, I would love to join in on your projects to try and relieve some of your work load, but sadly I don’t. All I can do is sincerely thank you for all your hard work, keep it up man.
Pingback: Motorola Droid3 / Milestone 3: Unlocken + Rooten + Loader + Custom Roms/Mods - Seite 6 - Android-Hilfe.de
Thanks for the hard work on this one Hash. Before I bought my d3, I did a quick check on XDA, saw that a ICS rom was in development and made the purchase. Little did I know it was a losing battle, but I am not too upset by it. CM7 is awesome, and I would love to see a fully implemented CM7 on my D3. I loved it on my OG Droid, but that little phone that could, was working a little hard to keep up. CM7 will sing on the D3. I believe a full CM7 would make MIUI components possible as well. I am not a huge fan of their launcher, but the drop menu toggles and underlying UI art is fantastic. Thanks again for your hard work. Now that we have a clear understanding of the D3′s limitations, coders can make it the best it can be.
Thanks for your work on the Droid3
I have a stock Droid3 with 5.6.890.XT862 and would love to get some kind of UI speed increase out of it.
Can someone tell me which Droid3 ROM has a working camera, video camera, barcode scanner and improved UI?
I don’t really need the front facing camera, just the regular one with flash.
Thanks
hash, thanks for the great work. You said you will work on CM7.2 for M3, so when should I expect this. Not a request, just to have an idea to when come back to download rom :) I have stock M3 from Motorola, just rooted. I’d like to install CM 7.2 as first custom rom.
thanks,
none
Thanks for the AWESOME work you made :)
i think it’s better for you to work on CM7.2 rather than spending time in something “useless”..
GO HASH GO… i cant waiiiiiiiiiit
So… can we just skip ICS and go to Jelly bean on D3? Would that be any easier? :) I would think that its more optimized to run more with less?
I’m not sure where else to ask this, but — is C7 still available? I’ve seen references to it, but can’t find it anywhere.
Hash thank you for your work and that you give us hope for a new update Droid 3, but not so on Moto.Vy a very strong man, once saddled with such labor on their shoulders! What I am very grateful to you, and I think all users of the Droid 3 in Ukraine.Ya very much hope that you will sooner or later dadelaete this assembly, and the owners will rejoice Droid 3.I ask all those who, sooner or later finds out about a new release of an update for the Droid 3 of Hash to tell on this blog, but rather share a link to download.
With great respect for the work of Alexandra from Ukraine.