Jump to content

[Development][ROM] Stock FROYO + 2.6.32 kernel


Guest pier11

Recommended Posts

Even though I'm having "froyo (frozen yogurt)" - frozen picture in camera with acidic yogurt colors, as before, I can see the front camera switch.

Had no chance yet to try that rom - but: if you put in compat-kernel, and add my cam libs/wrapper, you should get working camera (at least for pictures+preview, as I did on u8150-froyo).

As far as I remember, you would need to add:

libcamera.so

camera.so

libmmcamera.so

lib*qcamera-tgt.so (forgot exact name)

libmmjpeg.so

Edited by dr.flo
Link to comment
Share on other sites

I tried Camera.app (deodexed) on cm6-clean. It runs, can take pics and videos, but does not show camera switch button initially.

When adding

ro.config.hwcameraset=2

ro.config.hwfeature_slavecamera=yes

to build.prop (as found in build.prop of m840), the camera switch shows up. Touching it causes an FC.

W/System.err( 1604): java.lang.ClassNotFoundException: android.hardware.CameraSlave

It wants to call some stuff inside framework that we (on cm6) do not have.

So we may be more successful trying to put camera libs into m840 + compat kernel as proposed above. Of course, as long as we're without radio/wifi there is no point in doing so....

Since Anroid version differs (2.2.2 vs 2.2.1) I doubt any parts of the java framework can be exchanged between those roms.

Edited by dr.flo
Link to comment
Share on other sites

I tried Camera.app (deoxed) on cm6-clean. It runs, can take pics and videos, but does not show camera switch button initially.

When adding

ro.config.hwcameraset=2

ro.config.hwfeature_slavecamera=yes

to build.prop (as found in build.prop of m840), the camera switch shows up. Touching it causes an FC.

ro.config.hwcameraset=2

that is an interesting piece. It is not a number of cameras on board, but reference to some sort of configuration. I saw value of 63 on the internet for example.

likely worth to look inside the camera app for that.

Link to comment
Share on other sites

Can our eclair camera.app be made running/installing on froyo? Anyone tried? Simply installing it via file manager fails, but maybe something can be patched to make it install?

And... does our eclair have similar entries in build.prop?

Edited by dr.flo
Link to comment
Share on other sites

And... does our eclair have similar entries in build.prop?

Yes it does, but only single entry:

ro.config.hwcameraset=19

I searched strings in um840 build and figured that ro.config.hwcameraset is related to Camera.odex (predictable),

but ro.config.hwfeature_slavecamera were matched to libopencore_author.so

other roms didn't have both matches, like M860, u8150

EDIT:

U8110: ro.config.hwcameraset=8

Edited by pier11
Link to comment
Share on other sites

As far as I remember, you would need to add:

libcamera.so

camera.so

libmmcamera.so

lib*qcamera-tgt.so (forgot exact name)

libmmjpeg.so

Did that. Can take pictures on um840 roms with BOTH CAMERAS, camera switching works there!

Unmodified build.prop

Video recording doesn't work but that's another issue (video playback wouldn't work either, as on u8150 rom).

Link to comment
Share on other sites

Did that. Can take pictures on um840 roms with BOTH CAMERAS, camera switching works there!

That's what we are talking about!

"Unmodified build.prop" - unmodified from what? :) Because I modified it with that two camera entries (merged from rom's local build.prop)

Link to comment
Share on other sites

"Unmodified build.prop" - unmodified from what?

unmodified in the sense that it contains

ro.config.hwcameraset=2

ro.config.hwfeature_slavecamera=yes

like it did in your rom update-zip.

Link to comment
Share on other sites

I think we should put more effort into finding out what breaks RIL.

We now have three ROMS (u8150, ascend, um840) that boot nicely... Enabling RIL on them would be a big step forward.

If we cannot figure out what makes RIL work, maybe we can find out what breaks RIL...?

All RIL related stuff is assumed to be in the proprietary binaries we copy for CMx builds - or in some config files.

What if we compile - from exactly the same source - CM7 for both u8220 and u8150? The resulting roms should be very very similar and only differ where absolutely needed - and where specified in the device config.

Comparing these roms would be much easier than comparing pulse cm6 / cm7 / eclair with stock-u8150 froyo... And most files should be interchangeable between them because the environment they expect (dependencies and so on) are quite identical.

Of the remaining different files we could take one file at a time out of cm7-u8150 and put it into cm7-u8220. If RIL still works, the file wasn't relevant. This should narrow it down to all relevant files relatively quickly....

Link to comment
Share on other sites

Radio fix would be a major breakthrough.

Maybe less labor intensive approach is to merge u8220 into u8110 rom until it works (or vice versa).

Here I posted U8110 rom (I have similar build for u8220):

http://android.modac...ost__p__1883425

both run on nearly the same kernel - 2.6.29, the same android - 2.1-update1. So copy/paste should work between them.

Edited by pier11
Link to comment
Share on other sites

Radio fix would be a major breakthrough.

Maybe less labor intensive approach is to merge u8220 into u8110 rom until it works (or vice versa).

Here I posted U8110 rom (I have similar build for u8220):

http://android.modac...ost__p__1883425

both run on nearly the same kernel - 2.6.29, the same android - 2.1-update1. So copy/paste should work between them.

:) That was my initial idea. But during posting, I came to think that a freshly compiled CM7 might have even less differences than u8110 eclair vs. ours. And since we have no clue at all, each diff the we can get rid of is good for us. With the cm7 build, I expect most if not all binaries generated from source to be identical. In u8110/u8220 eclair, that's not the case. I quickly checked some binaries yesterday. System/lib completely (=each file) differs if I remember correctly.

I've started a cm7 build for u8150 from the sources I still have on disc. Should be straightforward as u8150 device tree is already integrated there. I simply modified "extract_files.sh" to copy files from your u8150-froyo zip instead of from phone...

I'll upload the build tomorrow - in case it finishes.... It should boot fine if we simply exchange boot.img.

Edited by dr.flo
Link to comment
Share on other sites

:) That was my initial idea. But during posting, I came to think that a freshly compiled CM7 might have even less differences than u8110 eclair vs. ours.

I support any activity to make ril working, one way or another :)

I know, that proprietary libs are not needed at all to build cm7 (likely true for camera-plug case). I originally compiled cm7 without extracting/copying any libs from phone. (Contrary to that, as I read, cm9 departed from there and started to require proprietary libs for build).

This is to point that u8220 and u8150 should have nearly identical code, only differentiated by settings in device config.

Link to comment
Share on other sites

This is to point that u8220 and u8150 should have nearly identical code, only differentiated by settings in device config.

That's what I like about it... Should help regarding wifi / bluetooth as well...

It's even not more labor than doing the same with u8110. We just have to wait a bit until the rom is compiled.

The fact that proprietary libs are not needed during build means that none of the binaries built from source are linked against the proprietary libs. The exception is libcamera.so which is needed to link against (when not building camera stub!).

Edited by dr.flo
Link to comment
Share on other sites

Starting from unzip-files.sh from CM6.1 device config, beginning from libril-qc-1.so specifically referenced in build.prop and having most dependencies, regarding only references to other proprietary libs, dependency tree looks like this (dependencies are in parenthesis):


## RIL

system/bin/qmuxd (-)

system/lib/libcm.so (liboncrpc.so, libdiag.so)

system/lib/libdiag.so (-)

system/lib/libdsm.so (libqueue.so)

system/lib/libdss.so (libqmi.so)

system/lib/libgsdi_exp.so (liboncrpc.so, libdiag.so)

system/lib/libgstk_exp.so (liboncrpc.so, libdiag.so)

system/lib/libmmgsdilib.so (liboncrpc.so, libdiag.so)

system/lib/libnv.so (liboncrpc.so, libdiag.so)

system/lib/liboem_rapi.so (liboncrpc.so, libdiag.so) ** not referenced itself from libs in this list

system/lib/liboncrpc.so (libdsm.so, libqueue.so)

system/lib/libqmi.so (-)

system/lib/libqueue.so (-)

system/lib/libril-qc-1.so (liboncrpc.so, libcm.so, libmmgsdilib.so, libgsdi_exp.so, libgstk_exp.so, libwms.so, libwmsts.so, libril-qcril-hook-oem.so, libdss.so, libqmi.so)

system/lib/libril-qcril-hook-oem.so (liboncrpc.so, libnv.so, libdiag.so)

system/lib/libwms.so (liboncrpc.so, libdiag.so)

system/lib/libwmsts.so (-)
To simply put, all the above libs are interconnected, as you rightly stated previously with ref to here. EDIT:
## u8110 RIL:

libril-qc-1.so (libcm.so libdss.so libgsdi_exp.so libgstk_exp.so libmmgsdilib.so libnv.so liboncrpc.so libqmi.so libril-qcril-hook-oem.so libwms.so libwmsts.so)

libcm.so (libdiag.so liboncrpc.so)

libdss.so (libdiag.so (?)libnetutils.so libqmi.so)

libgsdi_exp.so (libdiag.so liboncrpc.so)

libgstk_exp.so (libdiag.so liboncrpc.so)

libmmgsdilib.so (libdiag.so liboncrpc.so)

libnv.so (libdiag.so liboncrpc.so)

liboncrpc.so (libdiag.so libdsm.so libqueue.so)

libqmi.so (libdiag.so (?)libdll.so)

libril-qcril-hook-oem.so (libdiag.so libnv.so liboncrpc.so libpbmlib.so)

libwms.so (libdiag.so liboncrpc.so)

libwmsts.so (-)

libdiag.so (-)

libdsm.so (libdiag.so libqueue.so)

libqueue.so (-)

libdll.so (-)

libpbmlib.so (libdiag.so liboncrpc.so)

EDIT2:

also grep'-ed ramdisks on "ril" match, found ref only in init.rc. The latter is not different at all with regard to that small ril definitions among u8220, u8110 and u8150...

Edited by pier11
Link to comment
Share on other sites

Here is the matched pair of CM7 roms for comparison.

As expected, huge parts of the roms are identical... I noticed that all apks in system/app are different. This is for sure not related to RIL - seems to be some config option that toggles a specific feature inside android framework (maybe gpu presence/absence or something). Also, cm7 build process adds more audio files and a tts folder (also not related to RIL, just seems to be an option to save space for small system partitions - these sizes are part of board config).

Apart from that differences are minor. I'm at work now, will not have time to play with the roms before the weekend. But I believe we will be successful in the end.

What I've found already: build.prop differs also in regard to RIL.

Edited by dr.flo
Link to comment
Share on other sites

Here is the matched pair of CM7 roms for comparison.

As expected, huge parts of the roms are identical... I noticed that all apks in system/app are different. This is for sure not related to RIL - seems to be some config option that toggles a specific feature inside android framework (maybe gpu presence/absence or something).

Thanks for compiling all this! Downloaded.

Difference in apps are likely due to localization files present on nearly each apk. Our rom was not internationalized well per original Tom's config - only 5 languages vs. some dozens normally. To change that alter

small_base -> full_base in BoardConfig.mk (It will recompile fast in fact)

but it doesn't affect functionality, may be will just make apk files be identical as well.

EDIT: flashed u8220 build to check - works and ril too as expected.

Noticed .29 kernel inside. Curious - will u8150 ever run a top of it...

Edited by pier11
Link to comment
Share on other sites

small_base -> full_base in BoardConfig.mk (It will recompile fast in fact)

never thought of that - might well explain these differences...

Noticed .29 kernel inside. Curious - will u8150 ever run a top of it...

for u8150 we would have to take kernel .32 - we could also use that with u8220 rom - it just has the old kernel inside because I didn't modify the device tree to inlude the new kernel.

But even with kernel .32 u8150-cm7 does not run as stable as we're used to from u8150/ascend/etc froyo roms. Don't know why. Maybe I should have used tilal6991's device tree instead of the built-in one?

Link to comment
Share on other sites

But even with kernel .32 u8150-cm7 does not run as stable as we're used to from u8150/ascend/etc froyo roms.

Did cm7 from u8150 ever worked for you? How did you do that.

I adopted quickly your cm-u8150 build to run on pulse:

- replaced kernel (zImage only) to our .32

- changed asserts to pulse in updater scripts;

- removed tts (text to speach) folder and PicoTts.apk

- remover RomManager

- removed fallback font (3.5MB)

- removed non-default ringtones

At the end Android boot animation stuck, and phone too waiting for don't know what forever...

I/ContactsUpgradeReceiver( 1706): Creating or opening contacts database

I/ContactsDatabaseHelper( 1706): Bootstrapping database

W/SharedBufferStack( 1434): waitForCondition(LockCondition) timed out (identity=1, status=0). CPU may be pegged. trying again.
Ho did you make cm-u8150 run on pulse? EDIT: on a positive note i see a lot of:
<4>[2505, rild] [  725.274698] do_exit: exit code=256

<4>[2506, rild] [  725.274781] do_exit: exit code=256

the same as with stock msm7225 froyo roms.

Edited by pier11
Link to comment
Share on other sites

Did cm7 from u8150 ever worked for you? How did you do that.

It never really ran for me too. I tried the following sequence:

- boot with boot.img from cm7-u8220 (kernel .29 - pulse ramdisk, from pulse rom I uploaded) -> stuck

- (wipe data/clear dalvik) boot with custom boot.img (kernel .32 - pulse ramdisk) -> boots, phone somewhat usable

- boot with custom boot.img (kernel .32 - ramdisk from cm7-u8150) -> stuck

-> gave up.

version #2 gave me best results for whatever reason. I could enter the phone, navigate thru settings and so on. But notification bar FCs... (and no connectivity of course, as expected)

I think before spending much time on this, I will first want to try building CM6 with tilal6991's device tree for u8150. Maybe froyo gives better results.

Edited by dr.flo
Link to comment
Share on other sites

right, #2 worked for me as well (no notification panel though).

I have a brave(or ridiculous) thought. If libs can be divided to (a) compiled from cm sources and (b) proprietary ones, and the former thankfully does not directly depend on latter, then it might make sense to just remove all proprietary libs (and some bin files) from u8150 and replace from ones from 8220.

As proprietary files are inter-linked, it might make sense to replace them in that huge batch fashion.

If it won't break a things much, the rest will be up to configs in like build.prop, /system/etc, ramdisk scripts...

Edited by pier11
Link to comment
Share on other sites

right, #2 worked for me as well (no notification panel though).

I have a brave(or ridiculous) thought. If libs can be divided to (a) compiled from cm sources and (B) proprietary ones, and the former thankfully does not directly depend on latter, then it might make sense to just remove all proprietary libs (and some bin files) from u8150 and replace from ones from 8220.

As proprietary files are inter-linked, it might make sense to replace them in that huge batch fashion.

If it won't break a things much, the rest will be up to configs in like build.prop, /system/etc, ramdisk scripts...

One could try applying a kind of "reverse extract_files" to u8150-froyo, then see if it still boots at all. I bet this approach would replace more files than actually needed, but as a first shot it might be worth trying.

Link to comment
Share on other sites

Some more inside on Pulse's proprietary lib/bin dependencies.

Point is that the second half of libs/bins starting from ## media-video ## section are NOT dependent on the first ril-related part and vice versa, and thus can(?) be exchanged independently.

## RIL (pulse/our CM6.1)

system/bin/qmuxd (-)

system/lib/libcm.so (liboncrpc.so, libdiag.so)

system/lib/libdiag.so (-)

system/lib/libdsm.so (libqueue.so)

system/lib/libdss.so (libqmi.so)

system/lib/libgsdi_exp.so (liboncrpc.so, libdiag.so)

system/lib/libgstk_exp.so (liboncrpc.so, libdiag.so)

system/lib/libmmgsdilib.so (liboncrpc.so, libdiag.so)

system/lib/libnv.so (liboncrpc.so, libdiag.so)

system/lib/liboncrpc.so (libdsm.so, libqueue.so)

system/lib/libqmi.so (-)

system/lib/libqueue.so (-)

system/lib/libril-qc-1.so (liboncrpc.so, libcm.so, libmmgsdilib.so, libgsdi_exp.so, libgstk_exp.so, libwms.so, libwmsts.so, libril-qcril-hook-oem.so, libdss.so, libqmi.so)

system/lib/libril-qcril-hook-oem.so (liboncrpc.so, libnv.so, libdiag.so)

system/lib/libwms.so (liboncrpc.so, libdiag.so)

system/lib/libwmsts.so (-)

system/bin/hci_qcomm_init (libdiag.so libnv.so liboncrpc.so) ## bluetooth-related ##+

system/bin/oem_rpc_svc (libhwrpc.so liboem_rapi.so liboncrpc.so)+

system/lib/libhwrpc.so (liboncrpc.so)+

system/lib/liboem_rapi.so (liboncrpc.so, libdiag.so)+

system/etc/init.qcom.bt.sh (N/A)+

## media-video ##+

system/lib/libOmxH264Dec.so (libmm-adspsvc.so)+

system/lib/libOmxMpeg4Dec.so (libmm-adspsvc.so)+

system/lib/libOmxVidEnc.so (libmm-adspsvc.so)+

system/lib/libmm-adspsvc.so (-)+

## camera ##

system/lib/libcamera.so (libmmcamera.so libmm-qcamera-tgt.so)

system/lib/libmm-qcamera-tgt.so (libmmipl.so)+

system/lib/libmmcamera.so (libmmjpeg.so)+

system/lib/libmmipl.so (-)+

system/lib/libmmjpeg.so (-)+

## gps ##

system/lib/libloc_api-rpc.so (-)

system/lib/libloc_api.so (libloc_api-rpc.so)

## misc ##+

system/bin/akmd2 (-) ## sensors-related ##+

system/etc/AudioFilter.csv (N/A)+

system/etc/AudioPreProcess.csv (N/A)+

system/lib/egl/libGLES_qcom.so (-)+

system/lib/hw/sensors.default.so (?)+

## wifi ##+

system/wifi/ar6000.ko+ ## kernel module ##

system/wifi/artagent (-)+

system/wifi/iwconfig (-)+

system/wifi/iwlist (-)+

system/wifi/udp_server (-)+

## wifi firmware ##+

system/wifi/athtcmd_ram.bin+

system/wifi/athwlan.bin.z77+

system/wifi/caldata.bin.ar6002+

system/wifi/caldata.bin.ar6102+

system/wifi/data.patch.hw2_0.bin.ar6002+

system/wifi/data.patch.hw2_0.bin.ar6102+

system/wifi/device.bin+

Color coding:

green - can be deleted without breaking ril and phone.

Edited by pier11
Link to comment
Share on other sites

Some more inside on Pulse's proprietary lib/bin dependencies.

Point is that the second half of libs/bins starting from ## media-video ## section are NOT dependent on the first ril-related part and vice versa, and thus can(?) be exchanged independently.

Very nice overview! In theory, implanting the RIL part into another rom should port RIL?

edit: in practice - it doesn't do the trick for u8150-froyo. Phone still boots with all those files exchanged, but logcat shows rild crashing. Exchaning rild also doesn't make a difference.

Edited by dr.flo
Link to comment
Share on other sites

Very nice overview! In theory, implanting the RIL part into another rom should port RIL?

edit: in practice - it doesn't do the trick for u8150-froyo. Phone still boots with all those files exchanged, but logcat shows rild crashing. Exchaning rild also doesn't make a difference.

there is also libril.so in between that we are compiling from sources on CMx. Crashing is likely due to some binary incompatibility...

Well that RIL related libs of course also depend on core libs like libc.so, libstdc++.so etc., which we again compiling from sources on CMx.

EDIT:

such dependency exist on CM6.1:

rild -> libril.so -> libhardware_legacy.so -> libloc_api.so, libwpa_client.so

Edited by pier11
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.