How the Romer came about...
Ok, now for a little background on the Romer, this will be a relatively dry read so feel free not to read it, I only post it to hopefully keep us from being redundant...it all started like this:
Several weeks ago, I downloaded and flashed Liberty for the D2 onto my D2G, just for fun. Right away, it was clear there were issues, no cellular anything, camera was inverted, video recording crashed completely, no bluetooth, no wifi, and the list goes on.
First problem to solve, Cellular signal...afterall this is a phone first and a nerd toy second (my wifes term not mine).
After a couple of google searches, I found that ril files were the "Radio Interface Layer" so...I swapped out anything in the /system/lib file with "ril" in the name. This got me 1x signal, but still no 3g. I went to the testing menu, set signal to CDMA auto prl, still no data. Thus began my build.prop research.
I then replaced the liberty build.prop with the fission build.prop and rebooted. BOOM! Data worked! Now to sort through all the build.prop code to find the one line that was the issue. I started by adding all the D2G code into the Liberty build.prop. I only added things that were actually missing, not things that were different. As that didn't solve it, I began to systematically change sections at a time, once I broke data again, I knew I had the right section. From their I narrowed it down to the #Additional properties# section at the very bottom and found, finally that D2 mounts the wrong usb Ril device (D2 is USB0 while D2G should be USB4)
So that fixed Cell/Data, but led me to issue two...the references in build.prop to the phone model tell the system which sensor files to use, since now the build.prop says D2G, sensors broke. I added back in D2G's /system/lib/hw files and was back in business but had the reboot issue we still have...
It was also at this point that I found that the keyboard was not correct (alt and shft cause the wrong characters to display).
I dug around and found the /system/usr file and grabbed the correct files out of keychars and keylayout. Now the keyboard works.
Now to tackle things like camera, etc.
I stared by parsing an "ls" command to a txt file starting in /system/lib. I then compared that list to Fissions /system/lib (which is actually stock /system/lib). No I didn't manually read the lists, I used a script to compare them, I then added all the stock D2G files that did not exist into Liberty /system/lib, set permissions, and rebooted...No effect. Then I decided to compare file sizes of files in the /lib folder that were the same. If the size was different I used the D2G file. This had some effect but I realized later was pointless. I knew all along that having the same name and file size did not mean it was actually the same file, I was just a jumping off point. About then I decided to Md5sum all the files and compare those.
This gave me a list of 60+ lib files that were unique to the D2G, I could start swapping them one by one, but that would take forever...copy, paste, set perms, reboot, repeat...So I started with files that looked like they dealt with my issues, like libcamera.so etc. That file alone didn't fix camera so I stated google searching and found that several files effected camera. After I replaced all of them, the camera and video started working. (I didn't know at the time, but if you dont have the D2G lights.droid2we.so file in /system/lib/hw, the camera inverts again so those .so files are tied to that sensor file).
When I stated this, I didn't realize that .so files were more phone specific than rom specific. At some point I md5sum compared D2 Fission with D2 Liberty and found that, for the most part, they had the same .so files. It was at that point that I decided to just use ALL of the D2G .so files...unfortunately this wont boot. IIRC, it bootlooped at the bootanimation. After some time, I narrowed it down to libandroid_runtime.so and libandroid_servers.so. I believe these two files are somehow tied to the frameworks in a way that makes them inseparable.
All that fixed just about everything except bluetooth and global data (and of course our sensor issue). At this point I decided to also carryover D2G /system/bin files into Liberty. This fixed bluetooth, global data, charge light and several other minor things.
I added the .so files, /hw files and /usr files to the Stock Liberty ROM, flashed, booted and worked pretty well. I tried that on Squidly...same thing, it worked!
WoZzy had permission from Squidly to release the ROM so we did.
Thats when I decided to put together the Romer. Why bother adding all the same files to each rom when we could just flash it over top and get to essentially the same place. WoZzy liked that idea so we released it as well.
The intended use was initially to get other people to look into the sensor issue, hence leaving them enabled by default. Then, when a few people didn't seem to mind the sensors, I decided to disable them by default. Either way I got my wish, people are interested in D2G development...some are even helping to fix the issues (xPhoenix777, 13th Angel, TinMan09, me, WoZ and I'm sure others I've either forgotten or that I don't know about)
So basically, the files found in Romer_v6 are unique to the D2G. It is possible that not swapping one of them would fix the problem, but...As I said earlier, the sensor issue was one of the first issues to come up. Yesterday I booted Liberty (stock) and swapped only the sensor files, renaming the D2G's to match the D2's. This one change immediately gave me the reset issue, which tells us something. The issue is probably related to a file we are not changing with the Romer, rather than one that we are changing.
My guesses, are similar to xPhoenix777, I think it is either something to do with:
- libandroid_runtime.so or libandroid_servers.so
- the D2 frameworks
- gestures.droid2.so
For anybody that is interested, I've got google docs (spreadsheets) that compare framework-res.apk from Fission D2G to Liberty D2, as well as a few other framework files.