Related
Disclaimer: I am only a flasher. I do, however, contribute to the forums, donate to devs and also use the paid version of good apps.
My question is: How does Android work on our phones?
You have hardware (HTC Incredible); you have a carrier (Verizon, in my case); you have an OS (Android, obviously); you have a radio; you have a ROM; you have a kernel; you have themes, you have skins and you have apps. How do all these pieces interact? Just curious.
This is a really good question that should be answered in laymen's terms. I'm surprised it hasn't been answered yet.
I also thought it would have been answered by now. However, I think the developers (who would be the best folks to answer this question) are busy working with the Gingerbread source code to build new ROMs for us.
This is what I have figured out so far but I'm not sure if my analysis is correct:
After selecting your hardware and carrier, the OS is the most important element. Most of us are currently on Froyo (2.2). I have seen some screen shots showing the OS version to be "2.2.1" but I am not sure why. Google (I think) has released the source code for Gingerbread (2.3) and the developers ("devs") are hard at work producing new ROMs as I post this.
I gather that it is best to stay away from trying out different radios ("basebands"). Most of us are using 2.15.00.07.28.
I think the ROM takes the OS and re-works the user interface by adding, removing and changing the various screens and "features" of the OS. For example: the ROM can be written to take out the stock music player and substitute a music player that the ROM developer prefers. I think this is called "baking in an app". I believe the ROM developer can also create an overall "look and feel" that can be quite different from the stock OS. For instance, the ROM can be "colored" in black and red (rather than the stock green) and the stock font can be changed to something the developer prefers. In other words, the ROM is what you see and use on a daily basis.
Now this is where things get a little fuzzy: the kernel. I think this is kind of a behind the scenes element that governs the performance of a ROM. It greatly affects things like battery life, time to charge the battery and the "speed" of the phone. The kernel is where the phone can be "over-clocked" and "under-volted" should you want to do those things. I gather that once you select a ROM, you can try different kernels without changing what the various screens look like on the phone. I believe this is the way most people do it (pick a ROM and try different kernels with it). I don't think the other way really works (pick a kernel and try different ROMs with the kernel).
Next comes themes and skins which really only affect what you see on the various screens without do anything about battery life or the speed of the phone. I haven't played with these much.
Finally, I forgot to put WALLPAPER on the list in the original post. I believe this only appears as a background image on the home screens.
If any reader sees errors in my layman's analysis, please, by all means jump in and correct me. Per my disclaimer in Post #1, I am just an ordinary user and this analysis could be flawed or incorrect in whole or in part.
Everytime I try to answer a question like this, I get too complex about it and leave more questions than answers. Then someone comes along and says "It's like Windows or Linux or MacOS on a PC", and that's that. Well they're right. Those OS's tell the PC's that they are PC's and essentially all OS's do the same things.
Here's my simplified new list:
1) Hardware on phone :: meaningless without OS
-- (android OS - or any other OS)
2) Linux kernel understands hardware like touchscreen, radios, I/O (drivers/modules). Of course it also understands how to schedule processes and all those "kernel tasks".
3) Libraries provide APIs (Application programming interface) to userspace code (like APPS).
4) Userspace (apps, scripts, libraries) provide user control over the phone.
--
Together they work in harmony (we hope) to make the phone realize it is a phone and allow us to use it as such. (well, a smartphone, so many things other than a phone).
Here's a simple example: You touch the phone icon which is in userspace, and it brings up the userspace phone app. As soon (or before) as you touch some buttons, dial a number, it is using the API to the driver in the kernel that actually understands the phone hardware/radio. Also userspace controls GUI which is also requiring API to some form of OPENGL API that is requiring device drivers that get the touchscreen/LCD display. and so on.
--- Hashi
PS: I realize there are a thousand things wrong with this representation, but hey, it's a start. Feel free to fix it up if you're inclined.
FRX07.1 is here!!
This is a maintenance release - basically taking the newest components to make a completely up-to-date (as of Sept. 1).
Quite a lot has changed since FRX06 - the install process hasn't really, but be sure to read the changelog in the next post and the caveats in post #3!
<<<This is a link to the... FAQ Click it!!>>>
I have created a complete bundle of FroYo with a stable kernel from GIT (August 19 / 1348), and rootfs from GIT (Sept. 2).
Please, feel free to DONATE to the XDAndroid project!
Every little bit helps!
Directions:
1. Download the full bundle (zip). (Updated September 1 2011)
If instead you just want the system.ext2 (zip) (Updated July 15 2011) file by itself... Don't download this if you're not sure! Grab the full bundle!
2. Extract it. You’ll see a folder, FRX07.1, copy its contents to the root of your SD card. If you want to run Android from a folder instead of all the files on the root of the card, follow the steps below.
3. Go into the STARTUPS folder. Grab the appropriate startup.txt for your device (if you don't know what device you have, you should read the FAQ), and move it to the root of the card (or where you run haret.exe from. If you want to change the location of the build, put a rel_path= statement in the cmdline section of the startup.txt. Mine is located two folders deep on the SD, so my rel_path=Androids/TP2Ref)
4. Screen calibration - you have three choices:
Re-use an old ts-calibration file if you have it and you know it's good.
Download the ts-calibration.zip file and extract it to where you put the rest of the files (root of SD or in a folder - make sure it all stays together!)
Manually calibrate - boot with no ts-calibration file and watch the boot process - you'll be asked to hit 5 points to calibrate the screen. If you have issues calibrating, try an older kernel (1225 works well) Once you have the calibration file hold on to it (make 15 copies if it's a good one ), reboot & go back to the newest kernel!
6. Run haret.exe.. Profit!
Let it settle out on the first boot. Many have reported they had to reboot basically because it was so slow - if you let it sit for about 10 mins so the media scanner can go thru everything, etc. it will be much more pleasurable experience. If you want adb in and watch the processes via top, you'll see why the phone seems so slow - there's lots of background processes cranking because this is the first boot .
Troubleshooting:
Please read the... FAQ
If you have any issues with the kernel, feel free to change it:
There are some devices that are having issues with the newest kernels. Please see the kernel autobuild service to get archived kernels. Once you download a replacement kernel, go to where you run haret.exe from - remove your old zImage/modules-xxxxx.tar.gz. Take the new zImage/modules-xxxxx.tar.gz and replace the old ones, same folder - where you run haret.exe from. Make sure the ‘zImage’ is named just that. Do not rename the modules file, do not extract it - should be in .tar.gz format.
See Incremental Updates for more information on updating the kernel and other components.
Random issues can often be solved by forcing the system to create a new data.img. If you're worried about losing data (all user data is stored in the data.img!!), Titanium Backup works quite well. If you wish, you can rename the data.img to something else, and let the system create a new one - just to see if it resolves your problem.
Similarly, if you wish try formatting your SD card - I prefer to use the HP Tool - do a full format, FAT32.
Even though this build is considered fairly stable, you are more than likely going to run into issues. The next post will address issues particular to this build - PLEASE READ THESE before asking questions! Feel free to post questions in this thread, I will do my best to address them. Big thanks to stinebd for releasing the system image, and of course the other developers for their hard work on making these kernels available.
stinebd's Changelog:
stinebd said:
Here’s a new release for you, folks. This is a major release with a ton of changes, new features, and fixes. Our friend hyc/highlandsun did most of the heavy lifting for this release. Highlights include a rewritten RIL with support for world phones and greatly improved CDMA support; fixes for the media codecs; fixes for MMS on Sprint; increased security with the Superuser app.
A list of changes is included below. The FRX07 system image is available for download now, and will require the use of a new rootfs image, also available now. Additionally, we have a new bundle containing everything needed to enjoy a full FRX07 system.
Note: Due to the incredibly long list of changes, this is a somewhat condensed, terse changelog describing only the overall scope of the changes.
FRX07:
frameworks/base:
Major frameworks changes for CDMA/GSM dual-mode worldphone support. (hyc)
Fixes for data connection handling to improve startup time. (hyc)
Fixes for wifi handling to avoid issues on hanged drivers. (hyc)
Stagefreight (media codecs) fixes. (hyc/viruscrazy)
Fixes for Sprint’s wonky MMS markup structure. (hyc)
Fix MediaScanner not finding audio files (including ringtones) in system.ext2
hardware/libhardware_legacy:
Minor GPS driver fixes. (Alex[sp3dev])
Rename wifi interfaces to wlan0 on all devices (hyc)
hardware/xdandroid-ril: Major RIL refactoring for improved performance on all devices, and added CDMA/GSM dual-mode worldphone support. (hyc)
packages/apps/Gallery3D: Switched back to Gallery3D as the gallery app (closes bug #111)
packages/apps/Mms: Fixes for Sprint’s wonky MMS markup structure. (hyc)
packages/apps/Phone: Fixes for CDMA/GSM dual-mode worldphone support. (hyc)
packages/apps/Superuser: Added the Superuser package for authorizing su privileges. This, along with our signed builds, provides greatly increased security for the end user (mostly against malicious apps from the Market).
system/extras/su: Added as a dependency for the Superuser package
vendor/qcom/android-open: Include missing stagefright codec symbols. (hyc/viruscrazy)
To coincide with the FRX07 system image, the following rootfs changes have been made:
init.froyo.rc modifications...
Adjust wpa_supplicant service for the new abstraction provided by libhardware_legacy, as well as interface rename
Abstract the hciattach service to provide bluetooth support on both chipsets
Rename wifi interface to wlan0 on all devices
apns-conf.xml updated
keymaps completely reorganized, and RHOD end-call key has been remapped to be the Home key in Android.
default.prop: set ro.secure=1 to lock down the adb shell - su can be used with the Superuser app to authorize root access in adb if needed.
Click to expand...
Click to collapse
Layman's Changelog
(As in, the changelog I wrote )
FRX07.1 Changelog:
RHOD - all buttons on the front no longer wake the device. Only the power button wakes the device now.
Updated to the newest RIL
hyc's modified libs for video now baked in - *most* HQ YouTube videos (and other HQ videos) should finally work!
RHOD & TOPA - Userland (Android) now controls the LED by default now. If you need to debug sleep, you will have to change the behavior manually. See Detule's post on this topic.
Facebook sync should now work, out-of-box.
FRX07 Changelog:
Updated RIL (thanks hyc!) - this covers many different bugs that were in the old RIL - I'm only going to cover the major ones...
CDMA now works correctly (for the most part). force_cdma (and north_am_dialing) is now deprecated (not needed/ignored!)
You can boot with a SIM in on a CDMA device and choose your GSM or CDMA on the fly under Settings.
Location based on towers now works on CDMA.
1xRTT now displays correctly, but I never seem to get EVDO Rev.a... I always get 0. This is represented by a 3g icon, as this is what the Android framework provides.
Full MMS support! Please see this page for configuration instructions. Will need help fleshing out the list of carriers folks!
Spotty service, switching towers, etc should no longer cause the dreaded SoD (Sleep of Death) condition!
(Basic audio) 3.5mm support for RHOD400/500
Droidwall works out of the box now
Keyboard backlight now fades in/out
Gallery3D back in! Picasa Web Sync comes with it
A couple new apps added to AndroidApps folder:
rpierce99's app GetLogs
Titanium Backup
Caveats:
BT - works now! But audio doesn't route. See this thread if you're feeling adventurous and want to play with/don't mind using some unstable/incomplete code...
NOTE: BT must be disabled in WinMo before booting Android or else you'll run into all sorts of odd issues...
WEP on wifi doesn't work. I heard an app called 'wifi-ace' (on the Market) fixes WEP!
If auto-brightness is enabled, the keyboard/button lights will fail at random. See this post for more scant details .
Yay! No more "when is FRX07 coming out?" posts!
highlandsun said:
Yay! No more "when is FRX07 coming out?" posts!
Click to expand...
Click to collapse
And to that effect, I would like to personally apologize to everyone for how long it took. Life has been crazy busy the past couple months. Hopefully we'll get GRX01 out in a more timely manner.
Woooohooooo!!! Thanks to all of the dev's on this, Stine, Hyc, Emwe, Arrrghhh (for putting up with all the BS!), and anyone else involved.
Can't wait to try this out. Thanks to all who contributed =)
highlandsun said:
Yay! No more "when is FRX07 coming out?" posts!
Click to expand...
Click to collapse
Just to get a sense of things, is it too soon for a "when is FRX08 coming out" post?
Diam 500 endlessly repeats smd-tty buffer mismatch on first boot (same as last 2? Kernels). Thanks for your work on this aargh and xda team.
Sent from my LG-P999 using Tapatalk
bluenote73 said:
Diam 500 endlessly repeats smd-tty buffer mismatch on first boot (same as last 2? Kernels). Thanks for your work on this aargh and xda team.
Sent from my LG-P999 using Tapatalk
Click to expand...
Click to collapse
Ah yea... I need to test this on a RAPH800 I just got my hands on, thanks for reminding me!
Quick question. Prior to right now I've been running Hyc's 5/30 build very successfully and very happily. With that build, sound was working when recording a video. With the new FRX07, no sound comes when recording a video. Any ideas on how to get the sound to work with recording video on FRX07?
wmg316 said:
Quick question. Prior to right now I've been running Hyc's 5/30 build very successfully and very happily. With that build, sound was working when recording a video. With the new FRX07, no sound comes when recording a video. Any ideas on how to get the sound to work with recording video on FRX07?
Click to expand...
Click to collapse
His build has the new acoustic code seen here. It routes audio in a much better fashion, for sure... but it's not stable. Still needs some work, so it's not in FRX07...
arrrghhh said:
His build has the new acoustic code seen here. It routes audio in a much better fashion, for sure... but it's not stable. Still needs some work, so it's not in FRX07...
Click to expand...
Click to collapse
Thank you sir!
Big thanks to every one on the dev team for FRX07. You guys are awesome.
Just extracted FRX07 on to a newly formatted sdcard, copied startup & calib from FRX06 and when I launch haret, i get the following error.
"Error reading file. Expected 4096 got 0"
Anyone know what it means? Search did not turn up many useful hits.
webxplore said:
Big thanks to every one on the dev team for FRX07. You guys are awesome.
Just extracted FRX07 on to a newly formatted sdcard, copied startup & calib from FRX06 and when I launch haret, i get the following error.
"Error reading file. Expected 4096 got 0"
Anyone know what it means? Search did not turn up many useful hits.
Click to expand...
Click to collapse
Figured out...Had a corrupt zimage file. Able to launch now.
After a few hours of testing, great job!
The battery status actually tracks really close to where windows mobile says it should be. It also seems to go to sleep, and stay sleeping!
The only thing that's keeping me from using it full time is the phone and speaker phone have noticeable static that windows mobile doesn't have. Does the beta audio routing fix this, or are there some new settings I can try?
I also love the recent apps on end long press, fancy
First Impressions
Coming from FroyoB Hercules, this is a step up in my opinion. A HUGE step up.
I am running the Tilt2 with a 2GB Class 2 SD card and the provided FRX07 package .zip.
The build is running smooth and silky (making me have more faith in looped builds heh heh) with slight overclocking (633.600MHz). Had one hot reboot while accessing the Notification bar at the same time Market was updating Google apps, but after that the updates proceeded without issue. Everything else has yet to be tested, but I'm sure I won't run into anything major.
I'm 110% satisfied running the build. Accessing menus is quick and not laggy at all. To me, that's what's important: user functionality. You guys nailed it big time, and for that I thank you all very much. I won't be using CWM for a looong while
EDIT: Figured I'd list what is and isn't working for me. Again, I'm using all the default components like kernel and whatnot on the Tilt2 and have the phone overclocked to 710.400MHz now:
WiFi - Works
Data - Works (most stable I've experienced)
Bluetooth - Works (haven't tried headset)
WiFi HotSpot - Buggy; Turns on, but disabling keeps the notification icon and enabling again causes reboot. Different kernel doesn't fix.
USB Tethering - Works/Turns On (Don't have the driver to test quite yet )
Camera/Camcorder - Works (Camcorder doesn't record sound.. known issue?)
Phone - Works flawlessly
MMS - Incoming/Outgoing Works
maff1989 said:
Coming from FroyoB Hercules, this is a step up in my opinion. A HUGE step up.
I am running the Tilt2 with a 2GB Class 2 SD card and the provided FRX07 package .zip.
The build is running smooth and silky (making me have more faith in looped builds heh heh) with slight overclocking (633.600MHz). Had one hot reboot while accessing the Notification bar at the same time Market was updating Google apps, but after that the updates proceeded without issue. Everything else has yet to be tested, but I'm sure I won't run into anything major.
I'm 110% satisfied running the build. Accessing menus is quick and not laggy at all. To me, that's what's important: user functionality. You guys nailed it big time, and for that I thank you all very much. I won't be using CWM for a looong while
Click to expand...
Click to collapse
+1
Come from FroyoB Hercules v2.
Any possible to run FRX07 on CWM?
FRX07 on cwm is being worked on by Eodun,wich sadly yesterday released FRX06 for cwm
rtrip said:
After a few hours of testing, great job!
The battery status actually tracks really close to where windows mobile says it should be. It also seems to go to sleep, and stay sleeping!
The only thing that's keeping me from using it full time is the phone and speaker phone have noticeable static that windows mobile doesn't have. Does the beta audio routing fix this, or are there some new settings I can try?
I also love the recent apps on end long press, fancy
Click to expand...
Click to collapse
I would bet that the new audio routing stuff fixes the static problems. It definitely cleaned things up for me. But at this point I think we need a newer kernel in addition to the new audio libraries, the stuff in that audio routing thread is rather out of date at the moment.
I've been running most of this stuff for more than a month without issues. It's definitely going to be a lot more solid than any previous builds...
Due to the change in ICS that requires moving the camera driver from libcamera to libhardware (like GPS and other devices for Gingerbread), a new driver has to be written.
The problem with this is that many data structures have changed. I couldn't get a single one to compile with the ICS SDK. There are many fundamental changes in the way memory is shared for preview/pictures/video, so that will need to be addressed. I have addressed picture only functionality in the skeleton driver, which will show how to transfer a picture back to the HAL.
ICS Camera Driver Overview
The driver seems to be very generic to most Qualcomm SoCs, so either approach should work for many other devices.
New Driver
See CameraHal_Module.cpp from the ICS source code to see what functions needs to be implemented. It needs to be placed in /system/lib/hw/camera.<target_name_in_build.prop>.so and have the struct "camera_module_t HAL_MODULE_INFO_SYM" inside the code, which the HAL looks for before loading. Once it is loaded, you must implement a few dozen functions to get it to work.
Old Driver
The old drivers primary interface with Android is through libcamera. This loads liboemcamera, which sends commands to the camera kernel driver and the Snapdragon DSP. Liboemcamera is a propriatary library with no documentation apart from the source for QualcommCameraHardware.cpp (which compiles to libcamera.so). The actual Linux kernel module is just a simple I2C bridge to control the camera, and provides no real interface.
Current code/skeleton driver available:
http://forum.xda-developers.com/showpost.php?p=20281617&postcount=17
Please do not comment in this thread unless you are able to contribute to the actual development process.
Please keep this DEV only!
Thank you.
If you're having a problem with the autolocks not releasing when needed, just do the locking manually. It's definitely tedious, but doable. I would guess, however, it's going to be easier in the long run to just implement a proper CameraHal module. If structures that you're relying on have changed... it's almost certainly better to rewrite from scratch.
blarfiejandro said:
If you're having a problem with the autolocks not releasing when needed, just do the locking manually. It's definitely tedious, but doable. I would guess, however, it's going to be easier in the long run to just implement a proper CameraHal module. If structures that you're relying on have changed... it's almost certainly better to rewrite from scratch.
Click to expand...
Click to collapse
Unfortunately, I cannot recompile it with the current ICS source, as the structures the module uses have changed significantly. I could get the 2.3 source and compile against that, but then I might as well just re-write it as you have suggested.
Re-writing it based off of QualcommCameraHardware.cpp will involve the exact same hurdles. The previous driver (libcamera.so, which is compiled from QualcommCameraHardware.cpp) supplied only some functionality to Android, and passed numerous others to liboemcamera.so (completely closed source) via the same dlsym's. So there still wouldn't be a proper driver, just one less layer wrapper.
Ultimately, the only solution looks to be just to use the very core initialization methods from libcamera and find the proper ioctl calls to /dev/msm_camera/control0
I have tried to do that earlier, but liboemcamera.so has callbacks to libcamera.so (which may be passed back again to libcameraservice in Android), so its going to take some reverse engineering to figure out out.
I have been working on a skeleton camera HAL driver, but all callbacks to Android cause libcameraservice to crash (like autofocus finished event). Perhaps its an issue of the libcameraservice.so being distributed with the roms here, I will try it on an emulator.
zivan56 said:
Unfortunately, I cannot recompile it with the current ICS source, as the structures the module uses have changed significantly. I could get the 2.3 source and compile against that, but then I might as well just re-write it as you have suggested.
Re-writing it based off of QualcommCameraHardware.cpp will involve the exact same hurdles. The previous driver (libcamera.so, which is compiled from QualcommCameraHardware.cpp) supplied only some functionality to Android, and passed numerous others to liboemcamera.so (completely closed source) via the same dlsym's. So there still wouldn't be a proper driver, just one less layer wrapper.
Ultimately, the only solution looks to be just to use the very core initialization methods from libcamera and find the proper ioctl calls to /dev/msm_camera/control0
I have tried to do that earlier, but liboemcamera.so has callbacks to libcamera.so (which may be passed back again to libcameraservice in Android), so its going to take some reverse engineering to figure out out.
I have been working on a skeleton camera HAL driver, but all callbacks to Android cause libcameraservice to crash (like autofocus finished event). Perhaps its an issue of the libcameraservice.so being distributed with the roms here, I will try it on an emulator.
Click to expand...
Click to collapse
With the Optimus V, at least, there's a lot of logic in liboemcamera such that any IOCTLs you call on the device will more or less get ignored unless they're what liboemcamera is expecting. I wouldn't spend a lot of time trying to preserve the 2.3 shim.
blarfiejandro said:
With the Optimus V, at least, there's a lot of logic in liboemcamera such that any IOCTLs you call on the device will more or less get ignored unless they're what liboemcamera is expecting. I wouldn't spend a lot of time trying to preserve the 2.3 shim.
Click to expand...
Click to collapse
So that pretty much only leaves direct calls to liboemcamera basically. I don't see any easy way duplicate liboemcameras functionality, as it does lots of non-camera related hardware setup having to do with the DSP.
It might be easier to backport the old camera library instead to ICS if liboemcamera cannot be used.
Is it an option to simply port the gingerbread camera related AOSP code into use for ICS that way there is no trouble with the camera.
Sent from my HTC HD2 using Tapatalk
Its an option. The camera API presented to apps themselves doesn't appear to have changed, so it shouldn't affect the functionality of them. Hopefully only libcameraservice needs to be changed.
I will be giving calling liboemcamera a go again before trying that.
Just a small update (no progress on the HD2 itself)
I have a partially complete skeleton HAL driver written dealing with taking images (not panorama or video). I figured out how to deal with the various callbacks, and now have most major events handled (auto focus, take picture, transfer picture to Android)...it even returns a fake image to test memory operations. Will post it later if anybody is interested.
update: managed to get the camera HAL to negotiate the settings with the camera app and HD2 (i.e picture size, saturation, etc) and init the hardware. Now I am struggling with the preview stuff.
Seeing this error:
E/mm-camera 8x vfe( 69): vfe_util_updaterollofftbl: sensor doesn't support rolloff correction by VFE
When it tries to register memory for the camera to put images into. I will have to look through the kernel source and see what its tripping up on.
Next issue is I need /dev/pmem_smipool . Only some kernels provide this, so I will have to look for one that supports it.
Great work! I know this is developer only thread but I want to help. I do not know how to code however I can test.
Sent from my NexusHD2 using xda premium
I'm afraid unless you know how the pmem stuff works, you can't really.
The main problem now is that the driver (based off QualcommCameraHardware.cpp) and the kernel don't agree on where the shared memory is located (one of MSM_PMEM_OUTPUT1, MSM_PMEM_OUTPUT2 or MSM_PMEM_RAW_MAINIMG, MSM_PMEM_PREVIEW).
Now this depends on the 720p option being enabled/disabled in the kernel (which strangely enough, doesn't actually give 720p support for the HD2).
This is where it errors out:
E/mm-camera 8x-vfe snapshot( 69): vfe_snapshot_raw_axi_init: failed
(message comes from liboemcamera.so)
Kernel reports this:
msm_frame_axi_cfg 1293: pmem region lookup error
So it never transfers the picture/video/preview frames to the shared memory region
Likewise, the QSD8250 CPU has some very unique settings that other MSM devices do not. For example, its preview mode is just video capture mode. Whereas others have a dedicated preview mode.
So far what works:
- Init sensor, set effects, zoom, contrast, etc (and adjust on the fly)
- Take JPEG picture process and transfer to camera app (but only returns solid green due to the kernel not copying the picture into the proper pmem)
- Set video mode
zivan56 said:
MSM_PMEM_OUTPUT1, MSM_PMEM_OUTPUT2 or MSM_PMEM_RAW_MAINIMG, MSM_PMEM_PREVIEW
Click to expand...
Click to collapse
Would it be possible to physically assign a memory address for these variables within the kernal? I understand theirs probably not much I can do, but I'm more than happy to if something comes up I can do. (I can't wait to take programming in school soon)
Sent from my NexusHD2 using xda premium
If your finding yourself getting stuck at any point the best person I can recommend from past knowledge would be XDA member DZO (Martin) who had done alot of sensational work on porting android to nand onto a number of QVGA WinMo devices i.e. Kaiser, vogue, polaris... rewriting many of the drivers himself from scratch.
I hope he is still active here on XDA, his work will be greatly remembered, even more so for myself as I used to own a HTC Kaiser in the past...
If your interested here's a bit about him from an XDA Interview: http://www.xda-developers.com/android/developer-interview-dzo/
XDA Member Profile: http://forum.xda-developers.com/member.php?u=917443
(Looks like he's still active too xD)
Best Regards,
ST1Cl<^^aN
kylew1212 said:
Would it be possible to physically assign a memory address for these variables within the kernal? I understand theirs probably not much I can do, but I'm more than happy to if something comes up I can do. (I can't wait to take programming in school soon)
Sent from my NexusHD2 using xda premium
Click to expand...
Click to collapse
Unfortunately, it doesn't look possible. The kernel driver (msm_camera.c) needs a special type of memory that the DSP can write to. The userspace driver tells the kernel to set up the memory and passes the details back to the kernel driver which tells the hardware to write to this special shared memory. I can copy the data from this buffer to the camera HAL, that works fine...but there is no data in the memory obviously.
Stickman89 said:
If your finding yourself getting stuck at any point the best person I can recommend from past knowledge would be XDA member DZO (Martin) who had done alot of sensational work on porting android to nand onto a number of QVGA WinMo devices i.e. Kaiser, vogue, polaris... rewriting many of the drivers himself from scratch.
I hope he is still active here on XDA, his work will be greatly remembered, even more so for myself as I used to own a HTC Kaiser in the past...
If your interested here's a bit about him from an XDA Interview: http://www.xda-developers.com/android/developer-interview-dzo/
XDA Member Profile: http://forum.xda-developers.com/member.php?u=917443
(Looks like he's still active too xD)
Best Regards,
ST1Cl<^^aN
Click to expand...
Click to collapse
Thanks for the contact. As long as they are Qualcomm MSM/QSD devices, it should be really similar.
Since there were a number of requests for the current code, I am releasing the code for two things:
1. Skeleton.zip - A skeleton HAL which shows you how to do simple image transfers back to the HAL/setting negotiation. This should help with developing drivers for any device or if someone wants to start the HD2 driver from scratch. It will also complete the process of picture transfer back to the camera HAL (with a fixed picture of course)
2. libcamera3.zip - Progress so far on the HD2 driver. It will init the sensor, change/negotiate settings with the HAL.
It also implements notify/data callbacks which have changed significantly with ICS. There are scripts in there to help with getting the driver to the HD2 and chmod the devices so you dont have permission issues.
I used tytung's latest ICS build and the HD2 AOSP dev environment (http://forum.xda-developers.com/showthread.php?t=1361859) see post #3 how to set it up. You may need to pull binaries from the ICS build to the prebuilt folders in the SDK in order to link the driver properly.
The scripts assume the git repository above is in ~/ICS/ and the Android SDK (with adb) is in ~/android-sdk-linux/
Documentation is nonexistant, but it should be easy to figure out. I cannot help anyone with what QualcommCameraHardware.cpp does, I did not change it much apart from implementing the new callbacks and the ICS HAL wrapper.
I wont have much time to work on it, so hopefully someone else can get the ball rolling on getting the shared memory stuff to work properly. Likewise, set up a git repo somewhere for others to contribute.
thx
thanks for effort and work
how does the development continue ?
I am sure someone will pick it up. Its in the interest of owners of the Nexus One and a bunch of other Qualcomm Snapdragon based phone owners who want the camera working in ICS. If someone fixes the driver I was working on, it should support at least a couple more devices with very small changes in the code (or perhaps 1 driver that works on all of them by detecting the phone).
from ankuch ICS sd build: http://forum.xda-developers.com/showpost.php?p=20305195&postcount=677
ankuch said:
Yes. I got first image from camera
Click to expand...
Click to collapse
Edit: Sorry not a dev post
Hey folks,
This is a completely new build, with all the new changes baked in. We wanted to do a semi-official test release to collect bugs and hopefully do a formal official release with everything settled. The main pain point is the CSV files (see pre-install prep).
So a brief overview:
New acoustic routing code baked in. Should fix most if not all audio routing problems, and will provide more debugging if stuff does go wrong. Also allows for more granular tweaking, see the CSV files.
GPS fixes for GB - GPS not only works in GB now, but it doesn't kill sleep! I was able to use GPS, get a solid lock, and put the device to sleep no problem.
BT should work & well with the new acoustic code. Post results.
RHOD users now have a choice of kernels. .35+ all have the new acoustic - so .35, .39, 3.0 and 3.1 are all fair game now... This is bundled with .27!!
Keep in mind, autobuild .27 kernels will produce no audio in this build... Obviously the bundled kernel will work, and the absolute newest .27 autobuild kernel does work now - Feb.27 2012 or newer.
rootfs tweaks - first, it will detect which kernel you're on (.27 or .35+) and automatically apply the correct firmware. Second, is it will always copy/extract the modules... failures there were getting annoying, and this is surefire if brute-force...
Few Easter egg apk's...
Probably a lot I'm forgetting, this might change
Pre-Install Prep REQUIRED!!!
This step is crucial, and I forgot all about it! You must copy all of the *.CSV file from your WinMo ROM - these are in the \Windows\ directory. There's a very easy way to do this. It involves the Total Commander app for WinMo (Direct Link for the perpetually lazy...) (included in EnergyROM and others probably).
Now you're in Total Commander looking at your \Windows\ directory. Whew... lots of files. Fear not! Hit the "CTRL" button, then the green "Plus" button. This opens the Select/Unselect files dialog. Put in *.csv, press "select" and voila. All CSV files are selected. Now - File -> Copy/Move -> I want you to copy these (should be 10) files to the ROOT of your SD card. No folders!!! This is hardset right now, until we get it all implemented into the build properly. Thanks!
Install
Assuming you've done the pre-install prep; this is installed just like the other XDAndroid builds - grab your startup.txt (don't forget rel_path= if you don't have it at the root of the SD!), ts-calibration and boot!
Download
Caveat List
CDMA users might get a crash in phone.apk and no service on boot. If waiting doesn't resolve the issue, then reboot. Should come up fine...
BT might still be flaky
The CSV files from a RAPH100 are attached for the lazy. I'd like to gather CSV's from each RHOD, I'm curious if any ROM devs have changed them out either... This could get interesting. If you folks don't mind, post up your CSV's, point out differences with mine, etc... We're trying to figure out how to unify these, if possible! Thanks!
Please post back any issues, enjoy!
GBX0C Changelog
Camcorder: Now works (tested on rhodium).
Acoustic: Bug-fix : correct random loss of dual(rear)-mic.
MMS: Bug-fix: Slides with zero duration on Sprint.
Gps: Bug-fix: Init/de-init sequence fix (correct gps not starting up after being unchecked in Settings).
Gps: Bug-fix: End gps session with a correct rpc call (relevant to amss6125 devices).
Gps: Bug-fix: Don't send delayed position requests after session has ended (possibly relevant to Navigation issues).
Gps: New feature: Xtra (aGPS) -> verified to work on rhodium/cdma raph.
X1 specific: Screen rotation patch.
Added tytung's GPS injector app to AndroidApps\Other as well as updating/cleaning up some apps in AndroidApps.
Modified rootfs for newest apsta firmware & wifi firmware - wifi tethering now works flawlessly in the newest kernels! .27 is still bundled for the record...
Test device: RAPH100 running latest NRG build w/sencity
Using everything supplied in the previous posts above minus my ts-calib file; everything seems to work on my RAPH100 (I'm not sure it matters that it has the orange brand on the back cover). Also, this does include sound! I booted without a SIM (yes, this is a GSM version RAPH). The first time I booted, it rebooted to winmo; second time was the charm.
Additional info(statistical maybe?):
Time to boot animation: 3 minutes
Time from boot animation to home: N/A (after 3 minutes my device rebooted to winmo on first try)
(Second trial)
Time to boot animation: 1 - 1.5 minutes (maybe 2 minutes?)
Time from boot animation to home: S/A (same as above)
*Successful boot to lock screen after second boot* (I wonder should this be expected behavior?)
NOTES: Hard keys "Home" and "left arrow"/back key remain highlighted after activated but deactivate after playing around(for the lack of a better word) and/or screen times out. (My opinion)At the very least it doesn't go crazy like earlier froyo builds. Also note that wifi should be working (works on mine) with this build and kernel package (included with package). (I like)New power off boot menu (long press of power key brings this up while short press seems to turn off screen, as usual). "Silent mode" (as expected), "Airplane mode" (as expected), "Kexec" (not sure yet, seems to be the same as "Reboot" or probably vise versa?), "Reboot" brings you all the way back before boot animation and "Power Off" (as expected).
Still test driving (more to come!)
R^7Z said:
"Kexec" (not sure yet, seems to be the same as "Reboot" or probably vise versa?), "Reboot" brings you all the way back before boot animation and "Power Off" (as expected).
Click to expand...
Click to collapse
So reboot didn't work properly?
Let's focus on what's changed. Audio mainly... I do appreciate the report tho .
Kexec is for swapping kernels. This way you can swap kernels and not have to go back to WinMo... Goooogle it .
I ran it for a day, and had no audio problems
only had a few small problems:
it did reboot once
orientation is inverted but i never use auto rotate
market is kinda slow
Edit:
had another reboot during gps app, and i think previous reboot might also have been while gps app was opend
but audio seems to be perfect atm
Greetings
Jeroen
DIAM100
So I've been in the Windows Mobile for quite sometime, came back and noticed the new Gingerbread Build, and it runs fine thus far... I have two issues, no google maps or facebook (incompatible with this device)? Is this something new, or unique to gingerbread?
Problem Solved...
An update to my previous post... changing the DPI back to 240 in startup.txt has resolved the problem.
I really want to try this, as the FRX build lacked the ability to use Bluetooth. Only problem is, I have no .csv files in my WinMo directory. I am running the Energy Sense ROM 2.5 29017.
What do I do now? Do I really need those files?
EDIT: Never mind. I'm an idiot! But I do only have 5 .csv files.
I have it running now, but I get no audio from the phone. Also, bluetooth pairs but I get no audio from it either.
I have a RAPH800, BTW.
SkinsFan said:
I really want to try this, as the FRX build lacked the ability to use Bluetooth. Only problem is, I have no .csv files in my WinMo directory. I am running the Energy Sense ROM 2.5 29017.
What do I do now? Do I really need those files?
EDIT: Never mind. I'm an idiot! But I do only have 5 .csv files.
Click to expand...
Click to collapse
I've also only 5 .csv files in my windows folder:
AudioFilterTable.csv
AudioPara.csv
AudioPara3.csv
AudioPreProcessTable.csv
TIAGC.csv
In the second posting from arrrghhh you will find the *.csv for the RAPH100 in a zip archive (http://forum.xda-developers.com/showpost.php?p=20869601&postcount=2 - it contains only 4 .csv files).
I've tested this Release on my RAPH100 and it is running well.
- Phone works
- Audio works
- Wireless works
- Camera works
On my phone, the hardware buttons light up irregularly (without touching or pressing them - see attachement). The result is that the focus on the screen jumps back and forth. This happens at irregular intervals. Has anyone else this problem?
(I think) It's a design flaw by HTC. This has been a long standing bug even without Android (it's just not as apparent in winmo) and unless we can figure out how to either ignore the additional key pressing being picked up by the touchpad sensor or possibly ignore the touchpad altogether, we may just have to "deal" with it as is. However, I think this is starting to get away from the actual intent of the XDAndroid team's intent to find out about noting any audio irregularities with these files. I'm guessing we either need to start posting our csv files or figuring out what the differences in changing the values mean in terms of audio(or perhaps both?). I really haven't had the time to do much testing aside from describing my experience with loading the GB test bundle.
R^7Z said:
(I think) It's a design flaw by HTC. This has been a long standing bug even without Android (it's just not as apparent in winmo) and unless we can figure out how to either ignore the additional key pressing being picked up by the touchpad sensor or possibly ignore the touchpad altogether, we may just have to "deal" with it as is. However, I think this is starting to get away from the actual intent of the XDAndroid team's intent to find out about noting any audio irregularities with these files. I'm guessing we either need to start posting our csv files or figuring out what the differences in changing the values mean in terms of audio(or perhaps both?). I really haven't had the time to do much testing aside from describing my experience with loading the GB test bundle.
Click to expand...
Click to collapse
Eh, we really just want to know if there are any dramatic differences in the CSV's between devices - XDAndroid tries really hard to support WAY too many devices .
So this thread is mainly to find out if all our new changes dramatically break any one device. Doesn't seem like it... so the next step is to aggregate all the CSV's together (why I asked everyone to post theirs) and see if we can make a big mix of them, or if we'll have to do it similar to the keyboard layout where each device gets its own folder... then it gets into proper variant detection, etc. Hairy!
But yes, the touch panel issue has ALWAYS been present folks. Let's not rehash old bugs, that doesn't do anyone a darn bit of good. Thanks!!
arrrghhh said:
But yes, the touch panel issue has ALWAYS been present folks. Let's not rehash old bugs, that doesn't do anyone a darn bit of good. Thanks!!
Click to expand...
Click to collapse
I haven't heard from this issue before. So it is good to know that.
I've compared your 4 csv files with mine (RAPH 100 - running with Energy ROM 29022) and there is no difference between them.
I've one additional csv file in my windows folder (TIAGC.csv). If you need it I can upload it.
I have a RAPH800 (Sprint) and I was in the process of doing the Pre-install Prep with Total Commander to get the .csv files. However after copying the files to my SD card, I see only 5 files.
AudioFilterTable
AudioFilterTable_Raphael#C
AudioPara3
AudioPara3_Raphael#C
AudioPreProcessTable
I don't see the AudioPara file. Am I doing something wrong? What should I do?
Also I did a Beyond Compare comparison between the files from my phone and the downloaded RAPH100 files and the files are not the same.
ericdabbs said:
I have a RAPH800 (Sprint) and I was in the process of doing the Pre-install Prep with Total Commander to get the .csv files. However after copying the files to my SD card, I see only 5 files.
AudioFilterTable
AudioFilterTable_Raphael#C
AudioPara3
AudioPara3_Raphael#C
AudioPreProcessTable
I don't see the AudioPara file. Am I doing something wrong? What should I do?
Also I did a Beyond Compare comparison between the files from my phone and the downloaded RAPH100 files and the files are not the same.
Click to expand...
Click to collapse
Every phone model will probably have different files. You didn't do anything wrong. Just use the files for your device.
Hi guys,
do you see any kind of battery consumption improvement over FRX release?
shinden said:
Hi guys,
do you see any kind of battery consumption improvement over FRX release?
Click to expand...
Click to collapse
Not really no. Weren't really expecting one either, the only thing that changed was userland. Same kernel (for the most part).
Been running GBX0B 2.3.7 Build on Fuze since the 31st.
I didnt have 10 .csvs, so i just used the his zip. Took me 3 times to get a stable build, they kept self destructing.
Sound: Perfect
Gps: Faster than FRX07.1, when it worked. I justed stop using it
Data: Only used Wifi, works fine
I have a sim in the Fuze, but i have no service.
FRX07.1 would drain my battery over night even plugged in to the wall. GBX0B 2.3.7 fixed that.
I get alot longer battery life. I got maybe 5 (est) hours with FRX07.1, 8 - 10 (est) hours GBX0B 2.3.7
This is the BEST android build for fuze (and i have tried them all).
Smoother, little faster. GPS works alot better. I think we finally got a build we can run full time
popetorak said:
Been running GBX0B 2.3.7 Build on Fuze since the 31st.
I didnt have 10 .csvs, so i just used the his zip. Took me 3 times to get a stable build, they kept self destructing.
Sound: Perfect
Gps: Faster than FRX07.1, when it worked. I justed stop using it
Data: Only used Wifi, works fine
I have a sim in the Fuze, but i have no service.
FRX07.1 would drain my battery over night even plugged in to the wall. GBX0B 2.3.7 fixed that.
I get alot longer battery life. I got maybe 5 (est) hours with FRX07.1, 8 - 10 (est) hours GBX0B 2.3.7
This is the BEST android build for fuze (and i have tried them all).
Smoother, little faster. GPS works alot better. I think we finally got a build we can run full time
Click to expand...
Click to collapse
hmmmmmmm, on my RAPH100 battery discharges faster than on FRX07.1
drugusv said:
hmmmmmmm, on my RAPH100 battery discharges faster than on FRX07.1
Click to expand...
Click to collapse
Honestly the battery shouldn't be different at all. The kernel didn't change much at all in the battery saving or sucking department.
As always, if you use the device a lot - and use a lot of the hardware (GPS, wifi, etc) it will suck your battery dry.
There are many explanations that people will tell you to the answer to the "what is a kernel?" Like this great one from Omnicide
Spoiler
Omnicide said:
The best way i seen it put was, think of the kernel as the engine and the rom as the body of the car. The body of the car (rom) just makes the car look nice and user friendly. Now when we talk about the engine (kernel) simply put red lining the engine will get you to go fast but burn gas. Keeping the rev down low will make you run slower but saving lots of gas. Thats just one way to look at it, rpms being the cpu.
Click to expand...
Click to collapse
or this great one from androidcentral.com
Spoiler
What is a kernel? If you spend any time reading Android forums, blogs, how-to posts or online discussion you'll soon hear people talking about the kernel. A kernel isn't something unique to Android -- iOS and MacOS have one, Windows has one, BlackBerry's QNX has one, in fact all high level operating systems have one. The one we're interested in is Linux, as it's the one Android uses. Let's try to break down what it is and what it does.
Android devices use the Linux kernel, but it's not the exact same kernel other Linux-based operating systems use. There's a lot of Android specific code built in, and Google's Android kernel maintainers have their work cut out for them. OEMs have to contribute as well, because they need to develop hardware drivers for the parts they're using for the kernel version they're using. This is why it takes a while for independent Android developers and hackers to port new versions to older devices and get everything working. Drivers written to work with the Gingerbread kernel on a phone won't necessarily work with the Ice Cream Sandwich kernel. And that's important, because one of the kernel's main functions is to control the hardware. It's a whole lot of source code, with more options while building it than you can imagine, but in the end it's just the intermediary between the hardware and the software.
When software needs the hardware to do anything, it sends a request to the kernel. And when we say anything, we mean anything. From the brightness of the screen, to the volume level, to initiating a call through the radio, even what's drawn on the display is ultimately controlled by the kernel. For example --when you tap the search button on your phone, you tell the software to open the search application. What happens is that you touched a certain point on the digitizer, which tells the software that you've touched the screen at those coordinates. The software knows that when that particular spot is touched, the search dialog is supposed to open. The kernel is what tells the digitizer to look (or listen, events are "listened" for) for touches, helps figure out where you touched, and tells the system you touched it. In turn, when the system receives a touch event at a specific point from the kernel (through the driver) it knows what to draw on your screen. Both the hardware and the software communicate both ways with the kernel, and that's how your phone knows when to do something. Input from one side is sent as output to the other, whether it's you playing Angry Birds, or connecting to your car's Bluetooth.
It sounds complicated, and it is. But it's also pretty standard computer logic -- there's an action of some sort generated for every event. Without the kernel to accept and send information, developers would have to write code for every single event for every single piece of hardware in your device. With the kernel, all they have to do is communicate with it through the Android system API's, and hardware developers only have to make the device hardware communicate with the kernel. The good thing is that you don't need to know exactly how or why the kernel does what it does, just understanding that it's the go-between from software to hardware gives you a pretty good grasp of what's happening under the glass. Sort of gives a whole new outlook towards those fellows who stay up all night to work on kernels for your phone, doesn't it?
. You probably didn't get it at all, so let me tell you what a kernel is in about 17 words. A kernel is "what makes the phone work, and connects the hardware (camera, storage, etc.) And the software (the Rom)."
I don't want to be thanked for this, thank omnicide, and androidcentral.com for the great explanations.
~~~~~~~~~~~~~~~~~~~~~
Samsung galaxy s2
Rom: Jedi knight 6
kernel: Jedi kernel 2
~~~~~~~~~~~~~~~~~~~~~
And you thought celebrities weren't smart! =P
Kernel can correlate to brains function in the human body meaning the manager of the perishing body.
Or the manager of the resources available.
Or the manager of the body.
Sent from my SAMSUNG-SGH-T989 using xda premium
I flashed JB Jedi 2 which came packed with a rom while it works great I wonder what will happen if I want to switch back to a different Rom will it be compatible with the kernel it installed?
All roms install their own default kernel each time you flash them.
They are usually chosen by the rom's Dev for good reasons (usually stability) .
It's up to you if you then choose to replace the included kernel with one of your own choosing.
At that point you should think twice about posting glitches you encounter on the ROM developer's forum because you have now changed a fundamental component of his work which is not of his choosing. It would be kind of rude to clutter his thread with problems that may be caused by the replacement kernel.
Feel free to push the envelope, just make a backup first then post problems to the kernel's thread.
Ohh ok I really didnt know that as some roms I have downloaded are 90mb some are like 330mb does that mean they are all compressed in different ways?
davcohen said:
Ohh ok I really didnt know that as some roms I have downloaded are 90mb some are like 330mb does that mean they are all compressed in different ways?
Click to expand...
Click to collapse
No. Some ROMSs gave more data or bloat. Slim ROMs, are well, slim. Leaks, like, Jedi jelly, tend to be pretty big, due to all the bloat they have.
LoopDoGG79 said:
No. Some ROMSs gave more data or bloat. Slim ROMs, are well, slim. Leaks, like, Jedi jelly, tend to be pretty big, due to all the bloat they have.
Click to expand...
Click to collapse
Bloat = the stuff, APKs in this case, someone decided are not necessary.