Updated/Fixed wifi calling for ICS rom users - HTC Amaze 4G

Hey guys when the latest RUU was released I pulled all the WiFi calling stuff out (well.. lots of bits and pieces) to update my fourth bar install... Figured I'd share it here. This will fix the increasing lag/delay with WiFi calling on all ICS sense based roms..
It shouldn't work on cm10 but i haven't tried it.I am pretty sure the movial implementation of WiFi calling requires many sense hooks though... But the interesting thing to me is that I have modified fourth bar quite a lot from the original to the point where there is practically no sensE stuff left whatsoever.. so it's either a modified telephony provider or it doesn't require sense at all... I haven't tested it much. Feel free to play around if you want.
Made this on the fly from my phone (and also is why I using DB) so let me know if it works if not I'll make one proper. Feel free to try on viper but if you do I'd suggest also.copying over htc frameworks.as well as telephony provider from a sense rom, just a suggestion!
You can tell.the update worked.because the WiFi calling active icon will be different. Oh and those using fourth.bar or speedrom..WiFi calling doesn't have to be permanent.. simply make a shortcut to the WiFi calling activity "wificall preferences" using apex or nova activity shortcuts.. you can also make shortcuts to the full IMS config including SIP reg server, auth info, protocol type, etc. I wouldn't mess with these.settings but could be useful to those porting. FLASH.THE ZIP.IN RECOVERY
LINK: http://db.tt/4B6tcCE1
(uHH... got a PM asking if it was odexed... these files are obviously deodexed..lol.. considering there's no .odex file... but yeah I mounted the system.img from the latest RUU, extracted it, deodexed the entire thing.. and pulled these out to make this zip. I've actually been combed through it with diff to the last RUU and there's really not a lot changed at all. Couple libs here and there, maybe a few other APKs... Not much at all!.. if you need it odexed, it's easy enough to reodex.. I actually prefer my phone to be odexed as well. Good tool to do this is called Dexo, The Universal Odexer.. you can find it on google. It's basically a couple of binaries and a script.. works like a DREAM and the basic script odexes your system apps as well as framework.. and it's easy enough to modify to odex data.. only thing with odexed data is you must delete the .odex file manually after you uninstall any apps because you'll get out of space etc errors if you do not... I find things are much MUCH faster on an odexed system, by far... matter of fact I'll go ahead and create another post with the Tool and a quick batch file I wrote for windows that makes the process very quick and easy.)

Good work :dance:

Just wondering, would there be anyway to get it to work with Miui

build.prop
might need to add this to the build prop if it isn't there
ro.ril.enable.ganlite=1
ro.ril.def.agps.feature=1

chevycowboyusa said:
might need to add this to the build prop if it isn't there
ro.ril.enable.ganlite=1
ro.ril.def.agps.feature=1
Click to expand...
Click to collapse
actually I think that's for the Kineto Gan implementation of Wifi calling, which uses a Userspace application (The one we tried to port over for Viper)
This is actually the Movial IMS implementation. Have you tried this implementation on viper perhaps? You would need some framework files, I think... but it's worth a shot honestly. I don't think it's as tightly hooked into Sense as a lot of us originally thought. I decompiled all of the APKs and I combed through it and I didn't really see any hooks into Sense.. I think that it more than likely depends on a modified telephony provider..
The Kineto Gan implementation used a bit of trickery with what's called a RIL switch, where it would (as the name implies) basically switch the RIL out on the fly between Kineto's RIL (for wifi calling) and the normal one. This implementation is a lot cleaner, and the configurations are included within the files themselves... It actually uses SIP. All the configuration info is actually easily found within the XMLs once the APKs are installed as system apps. The trickery is with the authentication. I've been running wireshark and capturing packets... between that and decompiling the APKs it appears that a basic SIP registration address is used for everyone, it's not unique. There's some kind of SIP address->mobile number translation that happens... the IMS project is open source, and the full source code is actually available on Google Code.. and it has even been updated for Jelly Bean. The interesting part is, I was able to compile the IMS Test App for ICS, take the configuration information I found.. entered it into the test App, and was able to establish half-way working service with the Test application. The thing is, even though it uses SIP, it's not your everyday run of the mill SIP. There's some wrapping and translation going on that uses info contained in the packets to determine where it's going (mobile number).. and don't even get me started on Text Messaging.... that looks like one giant hack-job...basically hijacking the SIP/RTP protocol for a proprietary implementation that just uses the base outline.
I tried to register with a regular SIP client using the configuration information I found (The password was TMO-VOIP-TRIAL) and i couldn't establish registration... and looking at the source I could definitely see why. There's a lot of stuff going on behind the scenes.
The good news is there's VERY LITTLE that appears to have been changed when it was updated for jellybean... what this means is... theoretically if someone was skilled enough they could take the DIFF's (which are freely available on google code) and update the IMS implementation for jellybean. It would take a good amount of time and effort, but I honestly think it's much more possible than a lot of people originally believed. It's the authentication part that's tricky..
But yeah, you might want to give it a shot on Viper! For a start I would probably move over ip-provider.apk, ims-service.apk, IPService.apk, WifiCall.apk (This is basically the on/off switch that Settings calls.. you can just use an activity shortcut to reach it though), and gba-service.apk
Push those all to /system/app
Then on the framework side I would move over javax.obex.jar, gba-service-lib.jar, and the other important one is going to be jsr-api.jar... I didn't know that it was related but it's clearly defined in the IMS source code (https://code.google.com/p/the-ims-open-source-project-for-android/source/browse/#git/jsr-api)
I would also copy over TelephonyProvider.apk and Phone.apk, for good measure. .. and see what happens.
You would need a way to trigger it ON, which can easily be done with Nova/Apex by making an activity shortcut to WIfiCall.apk, you can also make activity shortcuts to all the configuration options within the IMS-server itself but it comes preconfigured.
it's worth a shot... currently WiFi calling is working flawlessly for me on Fourth Bar and I have pretty much EVERYTHING htc related disabled. Including com.htc etc...
Could be in the HTC frameworks though.. or somewhere else... but it's def. worth a shot!

I think this is a awaresome job,although I don't know what's this...
Please do that!

Great work. I tried your file to no avail. Good catch on the other files. I read somewhere that phonesky is also required.
Biggest issue I had with the semi working one that I used is that it wouldn't read the SIM. I moved some files around and then it hung on connecting to the Wi-Fi due to a lack of server address
I'll follow your instructions tonight and see where I can get... I still am working on GPS and now vpn too. Last night I attempted a sense 3.6 venom build.
Wasn't pretty. Something kept failing in the updater script and I got too tired to pay with it..
**tried all the files and made the short cut..
No love.. It didn't work..
Still trying a few things
Any other ideas?

chevycowboyusa said:
Great work. I tried your file to no avail. Good catch on the other files. I read somewhere that phonesky is also required.
Biggest issue I had with the semi working one that I used is that it wouldn't read the SIM. I moved some files around and then it hung on connecting to the Wi-Fi due to a lack of server address
I'll follow your instructions tonight and see where I can get... I still am working on GPS and now vpn too. Last night I attempted a sense 3.6 venom build.
Wasn't pretty. Something kept failing in the updater script and I got too tired to pay with it..
**tried all the files and made the short cut..
No love.. It didn't work..
Still trying a few things
Any other ideas?
Click to expand...
Click to collapse
Hmm... there IS a build.prop entry that I actually just noticed
ro.ril.ims=1
I would try to add that.
Phonesky is just the updated google play market, I believe.
I would try that build.prop entry, then get a logcat if you can and post it. I'd try but currently can't really mess around with my phone as I need wifi calling for work stuff.
See what is going on in the logcat, or post it and I'll comb through it. See if there's API calls that are failing under something like Function does not exist or something or another.. that would seem to indicate some missing framework stuff that provides those functions. Then it might just be including said frameworks as well as altering the bootclasspath in the kernel (Pretty easy thing to do, just break the boot.img into parts with unpackbootimg, un-gzip the ramdisk with gzip and CPIO, edit the init.rc, recompress the ram disk with GZIP, then recompile the boot.img with mkbootimg) and I believe you'd also have to deodex the ROM itself, then if you wanted it odexed you'd have to odex it back with the correct BOOTCLASSPATH or else it will not boot. I'm not sure but I THINK deodexed APKs need to be built with the right bootclasspath.
There HAS to be a way to get it working on Viper. After all it's the same underlying android OS version.. The sensation guys got it worknig on CM9...

ok..
ericdjobs said:
Hmm... there IS a build.prop entry that I actually just noticed
ro.ril.ims=1
I would try to add that.
Phonesky is just the updated google play market, I believe.
I would try that build.prop entry, then get a logcat if you can and post it. I'd try but currently can't really mess around with my phone as I need wifi calling for work stuff.
See what is going on in the logcat, or post it and I'll comb through it. See if there's API calls that are failing under something like Function does not exist or something or another.. that would seem to indicate some missing framework stuff that provides those functions. Then it might just be including said frameworks as well as altering the bootclasspath in the kernel (Pretty easy thing to do, just break the boot.img into parts with unpackbootimg, un-gzip the ramdisk with gzip and CPIO, edit the init.rc, recompress the ram disk with GZIP, then recompile the boot.img with mkbootimg) and I believe you'd also have to deodex the ROM itself, then if you wanted it odexed you'd have to odex it back with the correct BOOTCLASSPATH or else it will not boot. I'm not sure but I THINK deodexed APKs need to be built with the right bootclasspath.
There HAS to be a way to get it working on Viper. After all it's the same underlying android OS version.. The sensation guys got it worknig on CM9...
Click to expand...
Click to collapse
I fixed VPN and I'm uploading it in a few. I think I noticed something as well. I went back to stock ota to see what was going on and noticed wifi calling isn't showing up in settings/more should be there with vpn/ wifi hotspot/ nfc etc....

ericdjobs said:
The trickery is with the authentication. I've been running wireshark and capturing packets... between that and decompiling the APKs it appears that a basic SIP registration address is used for everyone, it's not unique. There's some kind of SIP address->mobile number translation that happens... the IMS project is open source, and the full source code is actually available on Google Code.. and it has even been updated for Jelly Bean. The interesting part is, I was able to compile the IMS Test App for ICS, take the configuration information I found.. entered it into the test App, and was able to establish half-way working service with the Test application. The thing is, even though it uses SIP, it's not your everyday run of the mill SIP. There's some wrapping and translation going on that uses info contained in the packets to determine where it's going (mobile number).. and don't even get me started on Text Messaging.... that looks like one giant hack-job...basically hijacking the SIP/RTP protocol for a proprietary implementation that just uses the base outline.
I tried to register with a regular SIP client using the configuration information I found (The password was TMO-VOIP-TRIAL) and i couldn't establish registration... and looking at the source I could definitely see why. There's a lot of stuff going on behind the scenes.
Click to expand...
Click to collapse
How was the Test App half-way working for you? I didn't compile it, but I tried an apk I found a while back and it CLAIMED it was registered, but I couldn't make it call out. I tried random presence and subscribe options but I don't think they were taking and nothing happened when I called my mobile number from somewhere else. My guess is that I have to subscribe or set presence to something magic for my phone number. After not really finding what I should actually be doing from skimming the 4th or 5th spec, and noticing that the nexus 4 guys have a $1400 bounty and don't really have progress, I gave up.
Yeah there's a pile of authentication (on both sides) that IMS has over SIP. If I understand right, the first part of registration is similar, but then TMO's side says you're unauthorized along with a challenge that's supposed to be sent to the ISIM and part of a key for establishing an IPSec tunnel that everything else goes through. Can't tunnel, then use SIP because you need the key (and part of that probably comes from the ISIM too), and a regular SIP client will just think it failed.

Related

Scripts for XDA_UC

I've been trying for the last couple of days to solve an issue (it's not really a problem) that has been irritating me for a while. The issue is that everytime i flash a new rom i have to spent a coupe of hours after configuring everything again. Now, I use the 6.5.x tree of NRGZ28's energy rom series, specifically the standard variant and i want to create some scripts that will automatically setup things like my exchange server, hotmail, opera user-agent string and wifi. I already have a script that is supposed to work for exchange (not tested it yet) and one for the wifi. The wifi one just doesn't work but i've just done some reading and i think i know why (More on that in a mo). So, i was wondering, has anyone tried this already? If so do you have the scripts that are needed or know where i can find them?
Now, back to the wifi script. The reason i believe it doesn't work is because it would appear that the wifi has to be on for the WLAN driver to accept the new configuration. Now when you install a new rom, as most of you will know, the wifi is turned off and those of you familiar with the energy rom series will know that xda_uc runs right after first boot allowing no time for the wifi to be enabled manually. So, i was thinking, is it possible to write some code that will enable the wifi at first boot so the configuration script will successfully modify the wifi configuration?
Thanks for your thoughts in advance guys and girls.
Have a look in the FAQ for the ROM and there is post for sample scripts. I used them last night and got hotmail and exchange working. Here's the link:
http://forum.xda-developers.com/showpost.php?p=7333558&postcount=19477
Check the FAQ - each time I re-read it I figure something else out.
lol and there was me thinking it would be a lot harder. i always skip past the faq because 9 times out of 10 they are always filled with things like "How do i flash a rom" etc but i do still have a feeling it's not going to cover all my questions, things like can i write some code to enable the wifi at first boot or some other things i haven't meantioned like can i write a script that will automatically configure omarket with my login details.
I want to go all out on this and have it set up so i have to do as little manual configuration as possible so some code samples and/or further pointer would be really handy.
Just had another look at the faq and found i already had the xml generator listed in the energy addons page. One small problem... I have no idea what the hotmail server configuration is. Any clues? if not i will google it later.
Got my hotmail script. No idea if it works, guess i'll have to test it at some point.
I'm still looking for info on how to enable the wifi at first boot. Although at this point i am open to suggestions on different methods that could be used.
I am also a little disappointed. i thought this one had more legs to it. oh well, you can't always get everything you want i guess.
Just a litlle update. I got the wifi to take the settings without turning it on. Well i say i did it when really it just seemed to work. i think it might have somethig to do with some new drivers that were cooked into the rom i use.
I dropped the hotmail script because i do actually use windows live fair often and i ended up with 2 hotmail email accounts in the email tab but with a couple of tweaks i did get my exchange settings script to work like a dream.
I'm now looking into setting the phone identity using a reg file. I gave it a go using a script i picked up but instead of doing what it was supposed to it just stopped the windows and HTC sms clients from working correctly and i can't figure out why (it caused the phone to create several undeleteable sms messages). I'll post the code at the bottom. I'm also wondering if it is possbile to have a script that will copy files (ringtones specifically) to the right location. I think XDA_UC will do this if you create the directory structure in a folder in the XDA_UC folder on the sd card (hope you followed that one). Can anyone confirm that? I also created a script to configure quickgps but that didn't seem to work, i'll post the code for that too.
I'm still wondering if it would be possible to configure the opera user agent string using some form of script or reg file and it would be really nice if i could something similar with BSB tweaks, agps, HTC location service and pretty much everything else tbh. So if anyone has any scripts, reg files or cab files they wanna share i will certainly welcome them and i'm sure that many others will too.
Anyway, to posting those reg files:
Code:
[HKEY_LOCAL_MACHINE\Ident]
"Name"="Lucifer"
"Desc"="HTC HD2"
"OrigName"="Lucifer"
Code:
[HKEY_LOCAL_MACHINE\Software\HTC\QuickGPS]
"auto"=dword:00000001
"actSync"=dword:00000001
"ExpiredTime"=dword:00002760
"remind"=dword:00000001
Check this out for reference [XDA_UC][UC][SASHIMI][S4X] S4X_Auto & S4X_Backup [AUG.10.2010] XDA_UC Mods & Answers
id some looking up on the device name thing and found this: http://msdn.microsoft.com/en-us/library/aa924188.aspx seems my reg key was a little wrong.
I've also managed to create a cab file that will install my ringtones and then setthem with all related options as the defaults. I know it's not very impressive but it's a step in the right direction. I think i may have a look at exporting the bsb tweaks settings later and see how that goes.
Oh one question: i have been looking for an .reg to xml converter but my google results all seem a little vague and i don;t know if can trust the programs i'm finding. Has anyone got any suggestions?
M3PH said:
Oh one question: i have been looking for an .reg to xml converter but my google results all seem a little vague and i don;t know if can trust the programs i'm finding. Has anyone got any suggestions?
Click to expand...
Click to collapse
I don't think you need to convert reg to xml. Just leave the .reg files in the XDA_UC directory and it should run automatically.
darkblak said:
I don't think you need to convert reg to xml. Just leave the .reg files in the XDA_UC directory and it should run automatically.
Click to expand...
Click to collapse
No, you're right. I have no idea what i was thinking.
Another little update. I have working reg files for opera ua string and quickgps. I've decided not to bother with bsb tweaks because it's so easy to setup but being able to preconfigure windows live would be cool. Also being able to preconfigure agps would be nice

[REF][3/31/11] GizmoDroid Braindump or "Ideas for a Fascinating Tomorrow"

Topics Covered in this Thread So Far (or "potential areas for investigation/improvement")
USB modes confusion, CD-ROM mounting bug, and how to make it useful
Hunting for buried treasure in system apk's
EFS backups
GPS
Wifi
Stuff About CDROM/USB Device Protocols
More Stuff About CDROM/USB Device Protocols
Stuff On EFS
Stuff On Hidden Options
GPS power toggle from Drop Down Menu
EVRC-B Phone Voice Codec
Background Noise Cancellation during call
Disabling of debugging stuff and additional code checking
PNG/ogg optimization and Zipaligning
libdvm.so Optimization
Battery Service Polling
RAM management
Disk Scheduler
A more complete nandroid solution
A better voodoo implementation
About scripting
Sleep of Death
Phone.apk mods
More EFS partition info
Info about other partition backups (backing up kernel and others)
Wakelocks/Timekeeping issues and fixing it at the kernel level
Partition mounting tweaks (noatime and such), power management, vm writeback time
More VM tweaks
SD card cache tweak
Reclaiming the Preinstall partition
So I'm going to be out of town for a week or so, and I know that with hacking, that means I could come back and nothing will have changed... or I could come back and everything will have changed (source, anyone?)
EDIT: I'm back... and everyone got thunderbolts! I swear, I leave for one week...
Unfortunately, I myself am a jack-of-all-trades (king of none, sadly), so I've got about 50 different little things I've been working on researching, and won't make much progress on if I keep on trying to do them all at once, since every single project requires that I learn an entirely new set of principles that I never knew about before. Because of this, I have decided to do a brain dump. Hopefully this is welcomed. Some of it will be stuff you already know, some will be dead leads that don't apply, but I hope that there are some nuggets of goodness that will inspire someone to investigate further.
Basically, I go hunting for things that catch my eye, and mark them to investigate later. Unfortunately, later on, I can't find it, so I have to find it again. Therefore, I'll try to present the most I can re-find about a given topic. Also, my memory is very shoddy, so beware of inaccuracies. I am not stating this as a gospel truth, but as a jump off point to maybe catch your interest to go investigate something further. I welcome any discussion, but if you take an idea and make it your own, feel free to start a new thread about it.
Part I:
USB modes confusion, CD-ROM mounting bug, and how to make it useful
Samsung integrates several different USB devices into that one little plug. I count the following:
1. UMS - Mass Storage Mode (looks like a jump drive)
2. MTP - For use with media players to transfer music/videos/pics (looks like a media player)
3. CDFS - Mounts an image onto a virtual device (looks like CD-ROM drive)
4. DUN - Used for Dial-up-networking (looks like a modem)
5. COM port - Used for programming using low level tools like QPST (looks like a serial port)
6. ADB bridge - communicate over adb to the phones through a terminal
With the possibility of TV-out over usb, USB On The Go, or USB Host, then there are probably more.
There is a lot of weirdities that happen because there are different parts of the phone that activates different "modes" which are usually a combination of the above. Try rebooting into CWM and then select to mount the USB. Depending on your set up, you will probably find your SD-drive mounted to the virtual CD-ROM device. Is it the kernel or recovery that's not set to the right usb mode? I don't know.
There are so many different areas that can change the USB device, so it can be confusing to know why you are seeing a certain thing, even though you have it set as something else from the menu. Just a few examples: In the Settings, you have Debugging, which will turn on UMS, CDFS and the ADB. Depending on what Settings.apk you use, there is an accessible Dial-up networking option to enable the modem. There are dialer codes that affect the enabled devices(**usbii which accesses the PhoneUtil.apk, **debug which allows you to change the port map, and toggle DUN). There is a persistent ADB property that can be stored in "/data/property/persist.service.adb.enable". There are system settings that can be added to the .prop files that load on boot, or set by "setprop somepropertyhere" using a terminal or script.
Have you ever plugged in your phone and gotten an autorun prompt that says something about verizon? On the stock roms, there is an ISO that is stored at "/system/etc/verizon_i500.iso". It contains the samsung usb drivers and a couple other things. When it works properly, this would let you install everything you need to get your phone connected to a new computer, without going through the hassle of finding the files. This is especially helpful if you only have internet access through your phone and cannot obtain the drivers elsewhere. All this seems to be handled by the kies service manager, which does really weird quirky things. For instance, you can manually mount the iso onto this virtual cd-rom device, but kies will unmount it after 15 seconds or so. This is why sometimes, if your sdcard gets mounted as a cd-rom, you can actually read the contents for a little while before it disappears.
Why does this matter to anyone? Well for one thing, it explains a lot of the bugs. There are so many different devices, that sometimes they get mixed up in scripts. This is especially true when porting from other software, or mixing and matching kernels and OS's and recoveries. If they aren't all in agreement, weird things will happen.
Secondly, it opens up a cool built in feature that could easily be utilized: emulated cd-rom drives! I haven't isolated the properties (but it doesn't seem too hard to figure out using the logs and such), but I have successfully mounted the memtest boot iso to the virtual CD-rom drive. Think about it: you have a 16gb sdcard in there. Throw on a live-linux iso, and if the computer was made in the last 5-10 years, it should be able to boot from it (not tested yet).
Right now, you can quickly verify this works by making a symlink from /system/etc/verizon_i500.iso to the iso on your sd card. Then, if you know how, enable the virtual cd-rom (I can't remember the exact variable but its as easy as "setprop cdfs.something enable"). There you go! Instant Virtual CD-ROM drive. You can use it to install stuff on your netbook that didn't come with one, or turn your local library PC into a hacking command center (that's a joke... don't do that).
Now obviously, this could be easily packaged up into a neat little apk that would enable the right USB mode, and then allow you to pick the ISO you want to mount. This would be the ultimate goal, not this dirty little demo. Even easier to implement would be to call it from a script, using a script shortcut program.
Part II
Hunting for buried treasure
There are a lot of things hidden in the OS. Almost all of the APK's, if decompiled, have things that are hidden. Sometimes, the full code is there, but the ability to access it has been removed. To make it visible, you may only need to add the info to the layout xml, or remove a line of smali code (look for things like "removePreference" and such).
Other times, it's just a stub of the information. The great thing is, there are so many variations of our phone, almost anything missing can be inserted again if you can find it another device's code. Sometimes, this is a huge pain, because the dependencies can be spread over multiple files, requiring quite a bit of persistence and dedication. Other times, it's as simple as copy and pasting a line, or an entire method.
The i9000, Mesmerize, Captivate and Vibrant seem to have lots of our missing goodies, but a lot of them need to have the code adjusted, and I don't know what to work on first, since some of the easy stuff is worthless, and some of the valuable stuff is impossible. Here are just a few of the screen shots I've taken (yes, I realize a lot of them are probably not portable, but just showing you how much stuff can be hidden in an APK):
http://www.dropbox.com/gallery/22143517/1/Settings?h=7cc415
There are a lot of little APK's that can only be accessed by dialer codes or through a shortcut program. The useful features sometimes are very small and could either be hacked into the main Settings.apk, or called from it, or added into SpareParts.apk. There are a lot of dangerous things in there ("You want me to format your phone and your SD card?" "Nnnn-" "FORMATTIN YO SDCARD YEAAAAAY") so be careful exploring.
Which brings me to another big issue: EFS backups.
One night, before going to bed, I was poking around in a hidden menu (yep). I don't remember actually changing anything, but I lost a setting. Of course, I have no idea what the correct settings are, so I didn't know what to look for, and for 12 hours straight, my data connection would connect and disconnect every minute. I learned a lot about how poorly the os/radio/kernel/something handles the data connection, but I also learned about the EFS partition, and how this could have easily been fixed if I had a backup, and also how it could have been much, much worse.
If you wander through the i9000 forums, there are multiple warnings to backup your efs folder before messing with any settings. If you corrupt certain files, your phone will lose the ability to regenerate its EFS data, and you will lose your IMEI number. Meaning, your phone will not be activate-able. Meaning, your phone will have to be shipped to Samsung to get it fixed, so... good luck with that. If you think you are smart enough to avoid this, if I remember right, supercurio lost a device to this while trying to figure out the secret audio settings stuff.
It's simple to backup the entire partition using your favorite terminal command (I used dd to copy the efs dev/block device to the sdcard, don't know if this is the best method or not). However, it is virtually impossible to get it back once it is gone, if you don't have a backup. (There is someone charging for this service for i9000 phones).
My theory is that i9000's being used on different carriers causes lots of more people to play around with the EFS data, causing more people to corrupt it. Since the Fascinate is mostly only getting used on Verizon, then there aren't as many cases. However, one mistake in a mounting script in a recovery/kernel/os, and you're toast. Not only that, if you have a working backup and you go messing with the radio settings, then you will always have a backup that doesn't require you to activate another phone and then reactivate your's in order to get your phone working again. (All the while, watching in horror as your logcat fills with a continuous stream of data connection failures).
This is something I'd love to hear more from by someone who knows about it, and if it's as valid of a concern as it is on the i9000, then I'd really like to see more publicity about it's importance.
Part III
Is supposed to be about GPS and wifi, but dang, that is a crazy amount of stuff to write. I hope that a little bit of info, along with a link dump will be okay. And to be honest, I'm getting tired of typing now. I keep thinking of more stuff, but I haven't even fully fleshed out what I've posted so far. Hopefully, I'll be able to do some more later (and even more hopefully, there comes some good from it).
GPS
Most promising is the Captivate GPS work. This thread is a little bit old, but it contains good info. There might be newer information available as well:
http://forum.xda-developers.com/showthread.php?t=881941
The i9000 GPS dev has some good posts as well, explaining it very well. Again, there might be newer information, but this is what I have bookmarked:
http://forum.xda-developers.com/showthread.php?t=842694
It talks about using the "LbsTestMode.apk" for testing. I have no idea if it works for actually configuring the files (I was told it doesn't), but I am providing it here for the possible testing it can do:
LbsTestMode.apk
http://dl.dropbox.com/u/22143517/Android/LbsTestMode.apk
This is just a quick (and not very entertaining) video of setting up a shortcut to access it instead of using a dialer code, then running through the menus real quick so you can see what is available.
http://dl.dropbox.com/u/22143517/Android/lbstestmodedemo.mp4
From a cold boot, in google maps, I can get a lock down to 2 meters in 3-5 seconds with wifi off and GPS standalone enabled when I'm outside. Inside, usually 10-20 meters at first, then drops to 5 after a few more seconds. So I don't know if it's something I've done, or if I just got lucky with a good chip, but I have a hard time testing GPS fixes because I don't have problems (but things can always be better, right?)
I highly recommend checking into the app "GPS aids" if you like the idea of assisted gps. I find that AGPS hinders my GPS performance, but after using GPS aids, it's about as good as normal. So for someone with bad standalone GPS performance, maybe it would help them out using AGPS.
Wifi
Oh boy... I don't know where to start with this. It completely ignores the system property wifi.supplicant_scan_interval. There are files spread across /system and /data that relate to wifi. The binary 'wpa_supplicant' is a source of hackery on other systems, but I don't know if anyone has attacked it on the Fascinate side of things. Want to see ad-hoc networks? This is the file that they usually hack to do that. Other devices have hacked the ability to enable infrastructure mode for wifi tethering. I don't know if this has been done yet for SF.
There are a lot of hidden wifi, wps, and tethering options in the Settings menu. Several system settings properties relating to wifi, several .conf files for the messing, wlan services for the playing, and a nice engineering mode when calling WlanTest.apk that says it's loading a different driver (I can't remember what all neat stuff is in that).
Stuff About CDROM/USB Device Protocols:
My thoughts exactly, the cdrom driver is useful, maybe more so.
The issue as to what starts when is configurable, Eclair had a hard limit of 2 usb modes at any given time, if I recall correctly Froyo supports 4 and that maybe a hard limit by the device. So what is running has to be carefully chosen, with mtp, virtcd, virtcom, ums, adb, acm, usb-otg, tvout, wired tether you hit 4 quick. This is an issue on my table but of low prority, as without a fully working kernel these amenities become mute.
I intend to make the cdrom driver configurable to select various isos from sd and switchable on command, I feel it would be more useful in that state, and I plan to give the user more control over what usb modes are selected using a sysfs setup, the defaults are in about 6 profiles that barely cover my needs without slowing me down.
Edit, More Stuff About CDROM/USB Device Protocols:
I have never tried to get all of the devices working simultaneously, but I do know that if you enable the virtual com port for EFS editing that DUN support is disabled, and that if you enable UMS(USB MassStorage)/SDcard that UMS/VirtCD is disabled, and if you enable UMS/VirtCD that UMS/SDcard is disabled, and I don't use MTP (think syncing your music from WindowsMediaPlayer to Android) so I'm not 100% sure about this one, but I think MTP is disabled if ADB is enabled. At least this is how stock is anyway.
Stuff On EFS:
The I9000 EFS stuff is a little out of my department, but I would love the ability to edit EFS reliably within the OS, unfortunately unlike with the I9000 our devices do not mount an EFS partition, and I have not ventured to attempt looking for it. I imagine it would be just as easy for us to edit it in device as it is for the I9000 people, however if it is due to the way the radios are handled this may not happen, as we are still trying to figure out where the Fascinate keeps it's modem, it would make sense that the EFS partition and the modem code would rest in the same area or partition, if we could only for certain identify it. I think the FSR and FSR_STL drivers obscure our view of it, no fear, I will be attempting to import Gingerbreads MTD work into the my WIP Froyo to hopefully solve this issue once I get the radio working reliably. If and once we do have access to EFS, we could technically copy and replace or edit our Verizon EFS information live, flash from one network to another, and update tower information possibly without even restarting the phone....that is IF we have access to the EFS partition, and logic says we should have access to it ( as every other CDMA Verizon and Alltel device I have used does have one ) and it is programmable from within the Samsung device setup APKs.
Stuff On Hidden Options:
As for the special hidden stuff....it just boggles my mind the amount of crap they hide (or did they forget about this stuff?!?) from us, most of it doesn't work, most of it has no warnings for the DANGEROUS stuff it can do without prompting for a confirmation (ie complete factory reset and yes sdcard formatting) I think this crap should have been jammed into a single engineering menu accessible via a fixed passcode rather than scattered from A to Z in 20 different APKs with little more indicator of what an option does than some cryptic function name and a report of what someone else may have experienced only after executing the command. At the very best it's an unorganized, inefficient, undocumented, unreliable, low level, factory device configuration menu set that even most experts do not know how to fully utilize.
SirGatez said:
My thoughts exactly, the cdrom driver is useful, maybe more so.
The issue as to what starts when is configurable, Eclair had a hard limit of 2 usb modes at any given time, if I recall correctly Froyo supports 4 and that maybe a hard limit by the device. So what is running has to be carefully chosen, with mtp, virtcd, virtcom, ums, adb, acm, usb-otg, tvout, wired tether you hit 4 quick. This is an issue on my table but of low prority, as without a fully working kernel these amenities become mute.
I intend to make the cdrom driver configurable to select various isos from sd and switchable on command, I feel it would be more useful in that state, and I plan to give the user more control over what usb modes are selected using a sysfs setup, the defaults are in about 6 profiles that barely cover my needs without slowing me down.
Click to expand...
Click to collapse
Glad to see you in here, as I think the whole issue is very much best implemented/fixed from the kernel with the OS just facilitating from there. Also interesting that someone else was thinking about this while I was. With the little amount of knowledge I have, trying to hack around the different usb profiles at the OS layer is a pain. ("let me mount this" "NO, STOP IT!" "come onnnn let me turn that on")
I know I personally have had UMS, CDFS, DUN, Serial, and ADB all showing up in windows device manager at the same time, by manually toggling them on. That was as far as my test went, so I have no idea if they were accessible at the same time. But it's interesting to watch the device ids change as it switches modes. I have very little driver knowledge, so actually doing much digging was over my head.
Ok, I think I'm done for the night. Sorry for the quality of info, I'll try to work on it more sometime soon.
I feel like we are all just holding our breath for froyo source, but a lot of profitable work can be done in the meantime. Really, a lot has already been done that we can just kang from other devices. We just need to look outward at our foreign cousins.
For instance, supercurio did a lot of work on hacking the sound before they had kernel access. Using his methods from back then might give us some improvements in the meantime.
Things like GPS and Wifi will probably continue to be an issue even after we have source, so they can be done without fear of being completely forgotten about as soon as source drops.
Lots of mods and tweaks that are widespread across other devices don't seem to be discussed. Build.prop hacks are cheap and easy things that don't get much action around here (though not all of them are applicable/or even helpful). Someone brought up the FuguTweaks thing the other day from the Captivate forum. More of these cross-device discussions would be awesome.
God, my brain just exploded.
This is actually quite interesting, though. Now, on Part II: certain Sammy .apk's have hidden usage? Could we combine that into a massive super-settings app?
Samsung Fascinate, Verizon
EB01 Superclean 2.4
Kenesis' TransMyst GBKB (EPIIIIIC)
Mob87's Honeycomb Theme
Stock Kernel
obsidianchao said:
God, my brain just exploded.
This is actually quite interesting, though. Now, on Part II: certain Sammy .apk's have hidden usage? Could we combine that into a massive super-settings app?
Click to expand...
Click to collapse
That's the idea. CM has a lot of this kind of thing, but we aren't there yet. There are also a bunch of testing apks that I didn't mention built right into the stock ROM.
There are even some super mega apps (some available on the market) that are somewhat compatible (be careful with these, especially for low level stuff). "Sysinfo" reveals a lot of... system info that you normally have to go digging around for. So does "Under the Hood". "Tuxility" doesn't really have much, but could be an easy start for the basis of a SF compatible utility. "SuperPower" gives a lot of control over power options. "SpareParts" from other Galaxy variants have had lots of options added. There are some other SGS specific tools that half work, as well, but their names are slipping me now. One allows you to flash a kernel from the OS. Also, I wonder if Development.apk from the emulator might have some use?
There are tons of things that could easily be added to the SpareParts app too, if you didn't want to add it to the Settings app.
So much stuff to kang.... so little time.
Dude. This is... amazing. Can you mentor me on this stuff? XD
Now, Spare Parts is that app in SC that shows the battery info and stuff, no?
Edit: and what all could you drag to spare parts? Could it access those hidden .apk's and utilize the secret functions?
This is so cool.
Samsung Fascinate, Verizon
EB01 Superclean 2.4
Kenesis' TransMyst GBKB (EPIIIIIC)
Mob87's Honeycomb Theme
Stock Kernel
Part 4
GPS power toggle from Drop Down Menu
The GPS option from the drop down menu is essentially broken and needs to be fixed. I recall a similar problem on a different device with the wifi. With that device, on observation, I noted that on powering up wifi from the settings menu, I would be connected within 5 seconds, but from the power widget, it would take a full minute. After doing some investigating, the power widget was basically trying to control the wifi device directly. I found a different widget that essentially emulated the same method used in the system settings menu, and it starting connecting immediately. My guess is that the GPS power code on the pull down menu could be modified using the same examination/modification needs to be adapted in the same way.
EVRC-B Phone Voice Codec
Switching to the EVRC-B codec improves call quality substantially, for both parties of the call. If anyone knows of a way to set it that doesn't involve going into service mode and manually changing it, then please let me know.
Background Noise Cancellation during call
Also, I'd love to find a fix for the mic during calling. It's a frequent occurrence for the person I'm calling to be like "Who are you talking to?" because they hear someone talking in the next room away from me. Or a very light sound on my end, elicits a response of "WHAT IS THAT NOOOISSSE??!" from the person I'm talking to. So obviously an issue of background noise cancellation. I'm hoping its a software fixable problem.
I've seen this build.prop edit to mess with the noise cancellation for disabling noise reduction for the voice recorder (Say you are trying to record something like music, or something at a concert, the noise filter would hinder your ability).
Code:
media.a1026.nsForVoiceRec=0
media.a1026.enableA1026=1
Two things about this:
1. I've only seen this kind of property on other devices that have two mics that work in combination for noise cancellation. I'm guessing the SF only has one, and any attempted noise cancellation is done at the hardware level or in software.
2. This would assume that the noise shield actually exists, but the stock Fascinate behavior is to not have it enabled for calling... which is pretty dumb. Given some of their other decisions, this may be true, but I have my doubts. If it's parameters are accessible, and it's merely only needing some tweaking, then I will be happy.
I wonder if supercurio knows much about the noise cancellation, since he's worked with so much of the sound stuff?
Disabling of debugging stuff and additional code checking
Debugging stuff is essential for figuring out problems, but for the 99% of the time, isn't it probably slowing us down? I don't know what would be the best way to easily disable any additional debugging routines that might be affect performance.
As for disabling code checking, I used to run these build.prop edits on an older device. I have no idea if they still apply:
Code:
ro.kernel.android.checkjni=0
dalvik.vm.checkjni=0
dalvik.vm.verify-bytecode=false
Maybe you are the kind of person that needs their phone fully stable at all times (no you're not, because you are on a forum that is made to push your device to the limits). I, however, keep everything backed up, so if disabling this extra "security" might slightly increase risk of data loss, then I'm okay with that (not saying that this is an actual danger, but just in general). The only problem I have is if the increase is negated by a large rise in errors that actually hinder performance, or if it becomes significantly more risky (doubt that's the case, but it's always a possibility).
Somewhat related, we currently keep the dalvik heapsize at 48mb's. Is this the best match for our device, or just the default?
PNG/ogg optimization and Zipaligning
I recently took a superclean rom, and dropped 16MB losslessly just from throwing the pngs through PNGOUTWIN and deflopt (didn't touch the *.9.png files). Free RAM right there. Not to mention that some of those APK's have ridiculous extra resources that can be reduced by cutting color depth or taken out entirely (giant HTML based tutorial files stored in the apk... why?) Also, all of the ogg files can be slammed down using a sox script or an equivalent.
In compression, it's also important to know when its a free and harmless, or when it will reduce stability. You can zip up an APK nice and tight... but aapt is a better method. The files might be bigger, but they will run better (also, learn how to treat *.9.png files, or don't touch them at all).
I've adapted the script from Bugless pete's automatic, on-phone zipaligning utility (just had to change a couple lines). A lot of times there are apk's that slip through the cracks in the ROM's that aren't zipaligned (especially in themes and patches). Again, just free performance that isn't hard to obtain.
libdvm.so Optimization
Has our libdvm.so been optimized to run on on our processor? I know this was a huge boon for older devices, but couldn't find any info on ours.
Battery Service Polling
Ever watched the logcat even when your device is nearly at idle? Ya... that battery is always updating. How do we change this habit? I often wonder how much extra juice would we gain by increasing the length in between battery polls.
GizmoDroid said:
Ok, I think I'm done for the night. Sorry for the quality of info, I'll try to work on it more sometime soon.
I feel like we are all just holding our breath for froyo source, but a lot of profitable work can be done in the meantime. Really, a lot has already been done that we can just kang from other devices. We just need to look outward at our foreign cousins.
For instance, supercurio did a lot of work on hacking the sound before they had kernel access. Using his methods from back then might give us some improvements in the meantime.
Things like GPS and Wifi will probably continue to be an issue even after we have source, so they can be done without fear of being completely forgotten about as soon as source drops.
Lots of mods and tweaks that are widespread across other devices don't seem to be discussed. Build.prop hacks are cheap and easy things that don't get much action around here (though not all of them are applicable/or even helpful). Someone brought up the FuguTweaks thing the other day from the Captivate forum. More of these cross-device discussions would be awesome.
Click to expand...
Click to collapse
Your gonna hold your breath a long time if you're waiting for froyo source.
If anyone needed proof that Quadrant scores aren't good indicators of real performance, this is a real, unedited screen shot from my phone running EB01:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
I dropped the link in IRC for giggles and a couple of people lost their minds, accusing me of lying. Sorry fellahs, I got better things to do.
You can boost your quadrant scores this high with a couple easy steps that provide absolutely no performance boost outside of quadrant (it's is similar to why voodoo enabled systems score so high, but only perform somewhat better). So for the hold-outs that still think that quadrant is a reliable benchmark... be aware of it's major flaw.
GizmoDroid said:
If anyone needed proof that Quadrant scores aren't good indicators of real performance, this is a real, unedited screen shot from my phone running EB01:
I dropped the link in IRC for giggles and a couple of people lost their minds, accusing me of lying. Sorry fellahs, I got better things to do.
You can boost your quadrant scores this high with a couple easy steps that provide absolutely no performance boost outside of quadrant (it's is similar to why voodoo enabled systems score so high, but only perform somewhat better). So for the hold-outs that still think that quadrant is a reliable benchmark... be aware of it's major flaw.
Click to expand...
Click to collapse
I have been trying to convince people of this flawed benchmark app for months when using Blazed Eclair, it scores almost normal but runs the same voodoo other kernels do plus lots of other tweaks on kernel side. Very few believed me and switched from Blazed JUST for higher quadrant benchmark scores
Sent from my SCH-I500 using Tapatalk
SirGatez said:
I have been trying to convince people of this flawed benchmark app for months when using Blazed Eclair, it scores almost normal but runs the same voodoo other kernels do plus lots of other tweaks on kernel side. Very few believed me and switched from Blazed JUST for higher quadrant benchmark scores
Click to expand...
Click to collapse
Maybe I should make a HOWTO tutorial on how to get ridiculously high quadrant scores on any OS/kernel, then people would be free from using it to influence their thinking and instead would base it on real world results.
The cynical side of me says that they would just find a new benchmark and do the same thing with it.
Meh, we know the truths, so sure make a howto, maybe quadrant will fix their flaws (yeah...i'm not sure about that one...) people on the otherhand will flock like you say without our intervention, but for the rest of us this could prove helpful in building roms/kernels that do not allow benchmarks to succumb to the same flaws that most current ones do
Sent from my SCH-I500 using Tapatalk
SirGatez said:
Meh, we know the truths, so sure make a howto
Click to expand...
Click to collapse
[HowTo] Release the most downloaded ROM of all time:
Take stock rom.
Insert the following line into a boot script:
Code:
mount -o rw -t tmpfs tmpfs /data/data/com.aurorasoftworks.quadrant.ui.standard
Upload ROM to host of your choice.
Post screenshots of Quadrant scores with download link.
Great Success.
There are lots of ways to inflate quadrant scores... but this is the funniest method because it makes it ridiculously obvious how voodoo can achieve inflated quadrant scores without gaining a similar amount of performance (they both write cache to memory, therefore inflating the I/O scores ridiculously high).
Adding more to the noise cancellation issue, I found some more info out tonight:
Jamezelle pointed out a property that is set in res/values/bool.xml in the Phone.apk "has_noise_suppression" and it's set to false. After digging around, I found that this shows up in the PhoneUtils class if you decompile Phone.apk. It reveals two options: "noise_suppression=auto" and "noise_suppression=off". Some realworld testing needs to be done, but if the fascinate has the noise surpression ability and its just turned off, then this could be turned on again by adding to build.prop, or by modding the options menu to have this show up as an option.
Its very possible that it's hidden because it's not implemented, but other Galaxy S phones have some type of noise cancellation, so it might just not be implemented in the software.
Don't know if you were still looking for how to change EVRC to EVRC-B, but dial **72, the spc code is 000000, press down on the directional button arrow until you see Svc mode nam 1 end of basic nam exit. Press the right directional key once, you will see EXIT change to more, hit enter, press down once and you will see HomePage VoiceSO and EVRC, push the right button to change to EVRC-B. Hit ok and phone will reboot. Sorry for the sloppiness, at work and trying to be quick.
Edit: Ah, nevermind, you didn't want service mode, sorry!
Sent from my SCH-I500 using XDA Premium App
Dread This Day said:
Don't know if you were still looking for how to change EVRC to EVRC-B, but dial **72, the spc code is 000000, press down on the directional button arrow until you see Svc mode nam 1 end of basic nam exit. Press the right directional key once, you will see EXIT change to more, hit enter, press down once and you will see HomePage VoiceSO and EVRC, push the right button to change to EVRC-B. Hit ok and phone will reboot. Sorry for the sloppiness, at work and trying to be quick.
Edit: Ah, nevermind, you didn't want service mode, sorry!
Sent from my SCH-I500 using XDA Premium App
Click to expand...
Click to collapse
Yeah, this way does work, and I have used it multiple times. But it resets itself every time you reactivate, and its near dangerous settings, so its not something I would recommend to newbies.
If there was a less dangerous way to set it (say from a script or an apk) then this could lead to it being more widely recommended. It really does provide substantial improvement of call quality.
If my gf calls using her bluetooth headset, which has mediocre sound quality, the further compression of EVRC makes her very hard to understand. With EVRC-B, I can understand her plain as day.
Dread This Day said:
Don't know if you were still looking for how to change EVRC to EVRC-B, but dial **72, the spc code is 000000, press down on the directional button arrow until you see Svc mode nam 1 end of basic nam exit. Press the right directional key once, you will see EXIT change to more, hit enter, press down once and you will see HomePage VoiceSO and EVRC, push the right button to change to EVRC-B. Hit ok and phone will reboot. Sorry for the sloppiness, at work and trying to be quick.
Edit: Ah, nevermind, you didn't want service mode, sorry!
Sent from my SCH-I500 using XDA Premium App
Click to expand...
Click to collapse
Thanks, working great! But you posted incorrect dial code. Let me correct you. **772

[Q] Why has AOSP corrupted my SMS/Mms .db? Works on AOSP not Samsung though?

I have tried the search button have anything relatively close nor the right type of people already commenting them...further to that those that are key with understanding in this area have "not contactable by PM or email" in their profiles
Anyway, it seems that searching via Google shows that I am not the only one that is suffering from a related issue??
http://techie-buzz.com/how-to/how-to-open-db-files.html
Here too http://forum.xda-developers.com/showthread.php?t=521248
Read comments here....and we all know .db files are not unique to android alone, however the being able (or should I say not able) to assess the .db file in anything but android IS!
I have been running CM9/Oncecosmic and several other iterations of AOSP ICS early January. I keep a nearly all of my SMS/ Mms, its habit and I like to be able to access the information should it be needed. I have gone from Samsung -> to AOSP -> and now "trying" to go back again.
I have since migrated to SGSII (from SGS1) and have realised that the Mms .db will only open in an AOSP apk? If I attempt to open the .db file in Samsung it force closes. I am have been forced to run a hacked ROM now as I want to be back on Samsung based ROM, so I have gone about hacking the services.jar to bypass signature checking of apks just in order to run an AOSP app so that I can access and continue to use my Mms.
I don't want to wipe and refuse to believe that this is the only answer and that these isn't some kind of fix for it?
If someone is able to shed any light on this subject and as to why the Mms is corrupt when only viewed in anything but AOSP apps and/or a fix to be able to make this .db work again inside of Samsung I will happily send a donation. I donate to a lot of people on this forum, and am very appreciate of developers time as well as of this community as a whole.
Thanks,
James
Edit: Yes I have tried to clear caches and so forth, I am no n00b....save the condescending replies
26 views and no replies
Surely someone out there understands the complexities of the Mms .db? I can't even view any content inside of it outside of Android its self. I am used to a PC and a keyboard and SQL DB and its just f*%#ed on a phone, not to mention totally different syntax to what I am used to. Does anyone know of any application that can view this data? Anything SQLite DB viewer on Source forge doesn’t work.
Jesus Freak where are you? I'm jokin, you probably get hit up about a million posts a day hense your set to not contactable. Anyone with as much knowledge that is willing to help feel free to respond.

About Android MMS Stagefright exploit

How can Android system be hacked just by one MMS? I heard from news sites that there was found an exploit for 95% of Android phones (Android 2.3+) that can take control of the whole device just for one MMS and without letting you know. How can it be possible and how I can prevent it?
P.S.: I don't want to hack nobody's phone as I have no friends. Just curious.
Sent from my GT-I9301I using XDA Forums Pro.
mihai.apostu98 said:
How can Android system be hacked just by one MMS? I heard from news sites that there was found an exploit for 95% of Android phones (Android 2.3+) that can take control of the whole device just for one MMS and without letting you know. How can it be possible and how I can prevent it?
P.S.: I don't want to hack nobody's phone as I have no friends. Just curious.
Sent from my GT-I9301I using XDA Forums Pro.
Click to expand...
Click to collapse
Heres some useful info:
http://www.cnet.com/news/researcher-finds-mother-of-all-android-vulnerabilities/
That's some info, but not really anything useful. Does this mean Google has a patch, will they be pushing that our or will there be ways to patch custom ROMs sooner even? These are all unanswered, though would be nice to know...
"As soon as the malicious text is received, features built into Stagefright to reduce lag time for viewing videos process the video to prepare it for viewing. That processing apparently is enough for bad guys to get their hooks into the platform and take control." - cnet
I see it like this:
1. MMS with video arrives
2. Messaging app loads the video in Stagefright where it will processed for better playback.
3. Video is ready for playing.
As I figure out from Google's Android site about Stagefright, it is a service that take care of video/audio/other media related stuff offline and local.
How can hackers connect with Stagefright if Stagefright is an offline service? And anyway how can an media service recive code to execute as an remote command execution for whole system?
Sorry but I just don't get it at all.
mihai.apostu98 said:
How can Android system be hacked just by one MMS? I heard from news sites that there was found an exploit for 95% of Android phones (Android 2.3+) that can take control of the whole device just for one MMS and without letting you know. How can it be possible and how I can prevent it?
P.S.: I don't want to hack nobody's phone as I have no friends. Just curious.
Click to expand...
Click to collapse
Here's further info. Google has apparently already sent the patches, 7 in all, to the various phone manufacturers.
Because of fragmentation, though, some of them may never send out these fixes. Since these have assumedly been committed to the source code online, they should theoretically be available for download at some point as well. However, you'd (likely) need to be rooted to apply them.
In the meantime, go into your SMS application (usually Hangouts these days) and turn off automatic MMS retrieval. Then, do not accept any photos or videos from anyone you don't know. I am not sure, but I worry it's also possible you might get it from someone do know who is already infected, so just operate with an abundance of caution overall, I guess. And keep an eye out for news here, because it will probably be one of the first places they become available.
mihai.apostu98 said:
"As soon as the malicious text is received, features built into Stagefright to reduce lag time for viewing videos process the video to prepare it for viewing. That processing apparently is enough for bad guys to get their hooks into the platform and take control." - cnet
I see it like this:
1. MMS with video arrives
2. Messaging app loads the video in Stagefright where it will processed for better playback.
3. Video is ready for playing.
As I figure out from Google's Android site about Stagefright, it is a service that take care of video/audio/other media related stuff offline and local.
How can hackers connect with Stagefright if Stagefright is an offline service? And anyway how can an media service recive code to execute as an remote command execution for whole system?
Sorry but I just don't get it at all.
Click to expand...
Click to collapse
People connect with Stagefright by sending you the malicious code contained within the MMS. Once that code gets (usually automatically) processed by the Stagefright service already locally present, it exploits security vulnerabilities to hand control of your device over to whomever is waiting on the other end. As for a media service being able to control the whole system, think of how Flash (a media service) and Microsoft had those zero-day UaE bugs that would allow someone to take over your PC. The logistics may be different, but the concept is the same.
If I remember correctly, there are ways to turn stagefright on/off by editing your build.prop file (easily found on XDA). I don't know if there is another subservice or what that could be running, and I haven't devved since Android 4 dropped, so don't get your hopes up.
Hope that helps.
I gather that Google has a patch. Has it been pushed out to Nexus devices?
pomeroythomas said:
If I remember correctly, there are ways to turn stagefright on/off by editing your build.prop file (easily found on XDA). I don't know if there is another subservice or what that could be running, and I haven't devved since Android 4 dropped, so don't get your hopes up.
Click to expand...
Click to collapse
Excellent idea, +thanks. Et voilà, what appears to b-e in my KitKat:
media.stagefright.enable-player=false
media.stagefright.enable-meta=false
media.stagefright.enable-scan=false
media.stagefright.enable-http=false
media.stagefright.enable-rtsp=false
media.stagefright.enable-record=false​
Now, this can break all kinds of things if you don't know what you're doing. Use a build.prop editor from the Play Store.
I don't know that they all need to be false to plug this hole. But those are the relevant lines.*
UPDATE [10 Aug 2015]: This doesn't affect what the Zimperium scanner says is vulnerable, which may indicate the edit won't protect you. It's unclear at this point.... read the latest posts in this thread for possible info. You can turn off auto-retrieve in MMS, but SF exists at other levels of the operating system. I suppose it couldn't hurt to do the build.prop, but don't rely on it.
voxluna said:
Excellent idea, +thanks. Et voilà:
media.stagefright.enable-player=false
media.stagefright.enable-meta=false
media.stagefright.enable-scan=false
media.stagefright.enable-http=false
media.stagefright.enable-rtsp=false
media.stagefright.enable-record=false​
Now, this will probably break all kinds of things, and I don't know that they all need to be false to plug this hole. But those are the relevant lines.
Click to expand...
Click to collapse
Thanks for the thanks!
You probably won't break much of anything; 90% of today's phones are powerful enough that you don't REALLY need Stagefright handling the media unless you're playing very intensive games on your device. The most you'll likely experience is not-quite-as-good benchmarking numbers.
pomeroythomas said:
Thanks for the thanks!
You probably won't break much of anything; 90% of today's phones are powerful enough that you don't REALLY need Stagefright handling the media unless you're playing very intensive games on your device. The most you'll likely experience is not-quite-as-good benchmarking numbers.
Click to expand...
Click to collapse
I had honestly never heard of StageFright, and I've been using Android since the very first device came out. But if it's possible to run all the usual media, just with a performance penalty, I'm going to change it right now (I did, and this happened).
Also, I just read an article claiming that fragmentation is not so much of an issue these days, because Google Play Services is mandatory. I wonder if it can proactively change something like this, on its own?
voxluna said:
I had honestly never heard of StageFright, and I've been using Android since the very first device came out. But if it's possible to run all the usual media, just with a performance penalty, I'm going to change it right now.
Click to expand...
Click to collapse
The only reason I even know about Stagefright is because my very first, 550MHz, resistive touchscreen Kyocera Zio shipped with Stagefright disabled by default. Haha.
Also, I just read an article claiming that fragmentation is not so much of an issue these days, because Google Play Services is mandatory. I wonder if it can proactively change something like this, on its own?
Click to expand...
Click to collapse
I would assume it's possible (this is just an arbitrary code execution issue, I think), but having had that vulnerability built into pretty much every ROM for the last 5 years could be a problem in that I'm not 100% sure that Google Play Services has the access to shut down the Stagefright service (no root access, etc), so I'm pretty sure Google Play Services would be less of a fix than a piece of software that actively tries to mitigate the breach.
I could be wrong, though; I'm basically guessing as I haven't looked into the malicious code.
Xposed Android will no doubt have either a module for this or existing bugfix modules will be updated to include this vulnerability in the coming days, and due to the nature of Xposed modules taking over services the ROM is trying to run without actually messing with your ROM, I'm sure it'll be a universal fix.
Personally, I just shut off the Stagefright service using my build.prop and am patiently awaiting someone more skilled than I to create a fix.
i could see this as a useful root method for lollipop, and other versions that don't have root methods yet.
Morlok8k said:
i could see this as a useful root method for lollipop, and other versions that don't have root methods yet.
Click to expand...
Click to collapse
Here's hoping!
Morlok8k said:
i could see this as a useful root method for lollipop, and other versions that don't have root methods yet.
Click to expand...
Click to collapse
pomeroythomas said:
I'm not 100% sure that Google Play Services has the access to shut down the Stagefright service (no root access, etc), so I'm pretty sure Google Play Services would be less of a fix than a piece of software that actively tries to mitigate the breach.
Click to expand...
Click to collapse
Come to think of it, if this exploit allows any kind of root, I suppose it'd be possible for Services itself to use that hole, and therefore be able to patch StageFright. A weird workaround, but entirely possible. Something tells me they won't use it, though, as technically feasable as it may be. I'm really hoping for that Xposed fix, just like GravityBox can patch FakeID. Which, indeed, Services eventually mitigated (for the most part).
commits on android.googlesource.com
Has anyone tracked any commits in android.googlesource.com related to stagefright?
Is this really a viable fix for this? I copied it from another website
If you turn off the following settings in your messaging app/apps on your device:
Auto-retrieve MMS. Check to automatically retrieve multimedia messages that you receive. If auto-retrieve is unchecked in your Messenger MMS settings, you must touch Download to view the message.
Roaming auto-retrieve. Check to automatically retrieve multimedia messages while roaming.
Then when you receive the text with this exploit it will not download to your phone unless you hit the download button. So looks like this can be turned off without a patch but patches are needed cause not everyone is smart enough to turn these off.
iverson3-1 said:
Is this really a viable fix for this? I copied it from another website
Auto-retrieve MMS. Check to automatically retrieve multimedia messages that you receive. If auto-retrieve is unchecked in your Messenger MMS settings, you must touch Download to view the message.
Roaming auto-retrieve. Check to automatically retrieve multimedia messages while roaming.
Then when you receive the text with this exploit it will not download to your phone unless you hit the download button. So looks like this can be turned off without a patch but patches are needed cause not everyone is smart enough to turn these off.
Click to expand...
Click to collapse
That should be one way to disable the hack. It's unclear from what I've read if it only affects Hangouts, or all SMS clients. What I've done is disable any auto MMS retrieve in my own messaging app, which in my case is mySMS. I suppose it couldn't hurt to do it in Hangouts as well.
This should cover it, but I think you still run the risk of someone you know sending (probably without their knowledge) an infected video -- much like trojans that take over a PC, and use the internal contact list to send mail as though they were your friend, they could exploit your trust.
Patching the build.prop theoretically protects from this, which I've personally done, but it's not for the faint of heart. If you screw it up, you could render your phone a mess. I wish I knew more about app development, because I would write something that did all this stuff automagically.
voxluna said:
Patching the build.prop theoretically protects from this, which I've personally done, but it's not for the faint of heart. If you screw it up, you could render your phone a mess.
Click to expand...
Click to collapse
Aaaaaand that's what I just did. I'm in a boot loop after changing the build.prop file. This is going to be really fun with an encrypted data partition that holds the backup I just made.
Be warned.
UPDATE: I had to reflash the ROM, and the entire experience took about 2.5 hours because I couldn't get a KDZ to work. I decided that since it was going to be a full wipe, at least I would upgrade to Lollipop, but I'll have to set up the entire phone all over again. I suspect the problem was that I didn't pay attention to the permissions of that file when I edited and transferred it from another machine. Ugh. I just went back and put warnings on all my posts about the build.prop lines.... and it would be better to just wait for patches, IMO. This thread is progressing quickly now.
i tried tracking the fix on android source repo. but the only recent commit against libstagefright is on July 7th.
Fix global-buffer-overflow in voAWB_Copy.
Copy() in frameworks/av/media/libstagefright/codecs/amrwbenc/src/util.c always
overreads the buffer by 4 bytes to the right, which, if we are very unlucky,
can even hit an unmapped memory page (in this case it is just a global
variable).
Click to expand...
Click to collapse
Hi all,
in my case, as I plainly don't use the MMS feature, I simpl deleted the MMS apn. Is this a possible workaround for this problem (at least, until it gets fixed somehow)?

[ROM][Development] Started work on G530W CM 12.1 Custom ROM

EDIT: Please direct any development questions, queries, etc. to the new thread in the Development Forum, concerning all development-y things.
http://forum.xda-developers.com/grand-prime/development/unofficial-cyanogenmod-12-1-g530w-t3424761
============================================================
I've recently started working on a custom ROM for the Samsung Grand Prime G530W [gprimeltevl/gprimeltecan], and so far I have built a somewhat working ROM (without any radio/wireless capability or audio for now).
If there is interest in this project (which I think there is; the lack of any kind of love shown for the G530W is annoying), I'll continue hacking away at it until I (hopefully) have a working ROM.
I'm new to Android ROM building in general, and there have been several bumps along the way, so any help would be appreciated.
Thanks.
I will be uploading images daily to my Drive storage, in folders named by date (if the date today is not there, then the image had not been built or uploaded yet), and will be compressing the system.tar images with either gzip or xz to reduce the image size.
I will also be updating this area with issues and fixes as necessary.
What I have managed to get working so far (23/07/2016)
Limited mobile connectivity [ sending/receiving texts ].
- Calls can be received or made but there is no audio (speaker or microphone).
- Mobile data is not working.
- Currently the system does not show the mobile connection as active, but texts can still be sent and received.
Bluetooth is working
Audio is working (microphone, speaker)
Multimedia playback working
GPS is working
Wifi is working
Screen brightness controls working
Sensors are working (magnetic, rotation/gyro,proximity)
App installation is now working
Camera is kinda working - only back camera works, and the image is distorted.
Issues
Radio [ modem ] is not working properly
NFC is not working
MTP is not working
Cameras are not working
Here is a link to the system.tar, boot.tar and recovery.tar flashable by ODIN or fastboot (when unpacked).
https://drive.google.com/open?id=0B-bYwctD_MoDaWJGcUQ4eWtzRTQ
Project GitHub Repositories:
https://github.com/vince2678/android_device_samsung_gprimeltecan
https://github.com/vince2678/android_vendor_samsung_gprimeltecan
If there are any other issues I missed, let me know.
Great effort
vince2678 said:
I managed to compile and get an image working for the G530W.
What I have managed to get working so far
Bluetooth is working
Audio is working (microphone, speaker)
Multimedia playback working
GPS is working
Sensors are working (magnetic, rotation/gyro,proximity)
Issues
Device fails to unlock and heats up [only once, so far]
Wifi is not working
Radio [ modem ] is not working
User interface crashes periodically
Screen brightness controls not working
MTP is not working
Cameras are not working
Here is a link to the system.tar, boot.tar and recovery.tar flashable by ODIN or fastboot (when unpacked).
https://drive.google.com/folderview?id=0B-bYwctD_MoDVzd0eS1aaDV6RW8&usp=sharing
I'll be working at it to get at least the Wifi working, if there are any other issues I missed, let me know.
Click to expand...
Click to collapse
Good work so far!
I recently purchased a g530w and I would love to boot the stock ROM.
However, I am still busy researching and reading up on this device before I attempt to flash anything. Actually, I did create an update zip file to remove Skype and tried applying it while not rooted but it failed because it was not properly signed.
Anyway, I will watch your progress with keen interest!
Zippy Dufus said:
Good work so far!
I recently purchased a g530w and I would love to boot the stock ROM.
However, I am still busy researching and reading up on this device before I attempt to flash anything. Actually, I did create an update zip file to remove Skype and tried applying it while not rooted but it failed because it was not properly signed.
Anyway, I will watch your progress with keen interest!
Click to expand...
Click to collapse
Sounds interesting. Did you try rooting your phone and using Link2SSD to remove the app(s)? It works pretty well, and you don't have to go through the whole effort of packing and unpacking the ROM.
vince2678 said:
Sounds interesting. Did you try rooting your phone and using Link2SSD to remove the app(s)? It works pretty well, and you don't have to go through the whole effort of packing and unpacking the ROM.
Click to expand...
Click to collapse
Here's my plan for my new phone:
Reading and research (in progress)
Setting up Odin on a virtual machine (I am a Linux user) and testing a restore of the stock ROM. Do you have a good link to such a ROM? I briefly looked at http://www.sammobile.com/firmwares/ and this site looks a little sketchy to me.
Root the device. I believe the method described in this G530T thread has worked for our G530W.
Debloat the crapware. Surprisingly, there is not all that much on the device - mostly some Micro$oft crap, Skype, and an old, old version of Chrome which I cannot uninstall. As root, I'll just go in and delete the unwanted stuff from /system/app using a terminal emulator.
Once it get this far, I can probably live with stock Lollipop. Question, if you are learning how to port a ROM, have you considered starting with Marshmallow? I'm keen to move up.
Build the ROM myself and then attempt to build it with my Linaro toolchain which I built from scratch myself.
Questions, with what you know so far, will the G530H ROM in this thread work on our phone? Is this what you started from? What differences between the 2 devices what preclude it from working on ours - different hardware? software - i.e. different bootloader?, etc?
Zippy Dufus said:
Here's my plan for my new phone:
Reading and research (in progress)
Setting up Odin on a virtual machine (I am a Linux user) and testing a restore of the stock ROM. Do you have a good link to such a ROM? I briefly looked at http://www.sammobile.com/firmwares/ and this site looks a little sketchy to me.
Root the device. I believe the method described in this G530T thread has worked for our G530W.
Debloat the crapware. Surprisingly, there is not all that much on the device - mostly some Micro$oft crap, Skype, and an old, old version of Chrome which I cannot uninstall. As root, I'll just go in and delete the unwanted stuff from /system/app using a terminal emulator.
Once it get this far, I can probably live with stock Lollipop. Question, if you are learning how to port a ROM, have you considered starting with Marshmallow? I'm keen to move up.
Build the ROM myself and then attempt to build it with my Linaro toolchain which I built from scratch myself.
Questions, with what you know so far, will the G530H ROM in this thread work on our phone? Is this what you started from? What differences between the 2 devices what preclude it from working on ours - different hardware? software - i.e. different bootloader?, etc?
Click to expand...
Click to collapse
Hey Zippy,
That sounds like a good idea.
That website does seem kinda sketchy, and their downloads take millenia, but it's the only option available and their images actually work (just make sure to get the correct one).
Setting up a virtual machine is a good idea, because heimdall doesn't work with this device and I'm not keen on bricking my device trying to force it.
Rebooting between builds to test firmwares because of a lack of a good recovery was becoming a pain. (CyanogenMod Recovery is still missing critical features but it's better than stock).
You can use CF-Auto-Root to root the device (so simple) at:
https://download.chainfire.eu/774/C...uto-Root-gprimeltecan-gprimeltevl-smg530w.zip
Yup, debloating is good, i wanted to do so at first but I wanted to be done away with KNOX and have an su binary which worked flawlessly for good so I decided to start from scratch.
I've considered starting from M, but that will be a task for later. It is troublesome to start from a fimware above what your device is at when you're porting, because the vendor libraries and binaries you copy might not work in the newer version of Android because of linking errors.
You can copy the binaries fine but obscure errors due to missing references will pop up in the logs which will stop the modules from loading or binaries from running.
I'm having these issues with a build ID that is just a few apart from the one used on the stock ROM - LMY49J on the cm build versus LMY47X on the stock).
My Git repos are above - you can get yourself a cm12.1 source tree, pull my device_ and vendor_ trees, pull proprietary files using the scripts in the vendor tree, build from source and then flash the resultant images to your device.
The G530H ROM might, in theory flash without issue and actually boot, but whether it will be usable is another thing.
The thing that differs between the devices, as far as I'm aware, is mostly the baseband, some other device hardware (e.g the G530W has 1.5GB RAM instead of 1GB as most G530 devices), and the device bootloader. As such, the kernels and modules used might differ slightly in terms of modules compiled in, even though they're built from the same kernel source.
And yes, indeed, I started from a G530 device and vendor tree, though whether it was that one, or perhaps one for the G530FZ, I don't remember (though I think it's the G530FZ, it's the device closest to the G530W).
Finally something for this variant, I've been waiting for ages. Huge thumbs up dude, from a thankful Canadian. I don't use this phone as my daily driver so I'll be flashing this without delay. Mind if I trouble you for the order of operations? I've never used Odin to flash a custom ROM before.
Some more questions ...
Hi again @vince2678, I have more questions:
Do you have a local_manifest.xml that drives your build? ... I have a single-purpose Fedora24 virtual machine which I use to build android ROMs.
Does your build actually produce a CM12.1 zip installation package? ... And do you simply harvest the system.img, etc afterwards to put into a flashable this tar file?
What is the command line that do you use to create the flashable tar files? ... I'm just curious.
What version of the firmware does your device have? ... Mine has G530WVLU1AOFB. Apparently, this is the Tanzanian version! WTF? I purchased my phone from a Costco in Oakville, Ontario, Canada. It was purported to be unlocked for all Canadian carriers. My carrier is Virgin Mobile (owned by Bell) and it works fine. But, my understanding is that device actually locks to your SIM card upon first use so you can't use it for other SIM cards, but I haven't proven this yet. BTW, I got over half of the stock ROM DL'ed from SamMobile before it stopped due to a "network error". Yeah right! I'll try again later.
Have you (or are you) cherry-picking patches from the G530H CM12.1 ROM? ... android_device_samsung_fortuna3g I suggest DL'ing their key files and comparing them to yours. They appear to be in the final exhilarating phase of perfecting their ROM.
So you have totally removed the KNOX software without in deleterious consequences? ... I thought that I read in an XDA thread where somebody did this and then had issues such as connecting to WIFI, etc. It appeared that there may be a dependency in the BIOS.
Did you trip the KNOX e-fuse hence void the warranty? ... Not that I care about the warranty, I only worry about bricking the device.
Unlike @Pbotelho, this is my daily driver so I will be proceeding slowly and cautiously and look forward to his experience flashing it.
Pbotelho said:
Finally something for this variant, I've been waiting for ages. Huge thumbs up dude, from a thankful Canadian. I don't use this phone as my daily driver so I'll be flashing this without delay. Mind if I trouble you for the order of operations? I've never used Odin to flash a custom ROM before.
Click to expand...
Click to collapse
Hi Pbotelho, thanks man. You will have to enable Developer Mode on your phone and unlock the bootloader from the settings. I don't remember what exactly in the settings that option is, but it should be in the Debugging area for sure.
Once done, reboot into Download Mode [Press Power+Volume Down+Home].
Once you've done that, grab the boot.tar, system.tar.xz and recovery.tar from the links above. Extract the system.tar.xz with 7zip or `xz -d system.tar.xz` if under Linux to get a system.tar file, and flash the recovery, boot, and system, one after the other, in whatever order, by booting into download mode as soon as it is done flashing a file.
You will need to wipe your cache and data partitions, which can be done by rebooting into recovery [Power+Volume Up+Home].
The button options are built into the hardware so they can be used at any point after the phone is on.
When all that is done, you can report any problems here [or on the github page] and post logcats and I'll look at them if there's any issue I've missed.
Zippy Dufus said:
Hi again @vince2678, I have more questions:
Do you have a local_manifest.xml that drives your build? ... I have a single-purpose Fedora24 virtual machine which I use to build android ROMs.
Does your build actually produce a CM12.1 zip installation package? ... And do you simply harvest the system.img, etc afterwards to put into a flashable this tar file?
What is the command line that do you use to create the flashable tar files? ... I'm just curious.
What version of the firmware does your device have? ... Mine has G530WVLU1AOFB. Apparently, this is the Tanzanian version! WTF? I purchased my phone from a Costco in Oakville, Ontario, Canada. It was purported to be unlocked for all Canadian carriers. My carrier is Virgin Mobile (owned by Bell) and it works fine. But, my understanding is that device actually locks to your SIM card upon first use so you can't use it for other SIM cards, but I haven't proven this yet. BTW, I got over half of the stock ROM DL'ed from SamMobile before it stopped due to a "network error". Yeah right! I'll try again later.
Have you (or are you) cherry-picking patches from the G530H CM12.1 ROM? ... android_device_samsung_fortuna3g I suggest DL'ing their key files and comparing them to yours. They appear to be in the final exhilarating phase of perfecting their ROM.
So you have totally removed the KNOX software without in deleterious consequences? ... I thought that I read in an XDA thread where somebody did this and then had issues such as connecting to WIFI, etc. It appeared that there may be a dependency in the BIOS.
Did you trip the KNOX e-fuse hence void the warranty? ... Not that I care about the warranty, I only worry about bricking the device.
Unlike @Pbotelho, this is my daily driver so I will be proceeding slowly and cautiously and look forward to his experience flashing it.
Click to expand...
Click to collapse
Hi Zippy,
I do not have a local_manifest, if you want you can just manually pull the device and vendor trees into your build area, or you can make one yourself if you wish.
I will probably make one though, because the build has dependencies on some qcom sources.
I just use 'make -j8' to build everything, though you can use 'make otapackage' to build a flashable zip [You'll need the CMR recovery from here though, the images can't be flashed by stock recovery]
For creating flashable tar files, you can just use `tar`. You don't need to make .md5 verifiable archives, those are just to ensure a download wasn't corrupted [I provide md5sums for checking].
The system.img in the output directory will have to be renamed to 'system.img.ext4' and then archived, as so:
Code:
cd out/target/product/gprimeltecan
ln system.img system.img.ext4
tar cf system.tar system.img.ext4
tar cf boot.tar boot.img
tar cf recovery.tar recovery.img
Then you can move the files wherever and flash them with Odin.
Yes the gprimeltevl/gprimeltecan baseband is indeed G530WVLU1AOFB, though this should work with all G530WXXXXXXXs (not sure how many different ones are out there].
I'm not sure about the SIM locking thing, I cannot confirm this, someone might have to try to check.
I did consider sourcing from that repository, though ultimately i ended up using another one [I don't remember the name]. I might take a look at their source to see what I can do about mine though.
I did trip KNOX, though that was back when I was still trying to root my phone with CF-Root, so I'm not sure if flashing this will trip KNOX. And yes, KNOX is completely gone from this device, with no problems from the phone.
vince2678 said:
Hi Pbotelho, thanks man. You will have to enable Developer Mode on your phone and unlock the bootloader from the settings. I don't remember what exactly in the settings that option is, but it should be in the Debugging area for sure.
Once done, reboot into Download Mode [Press Power+Volume Down+Home].
Once you've done that, grab the boot.tar, system.tar.xz and recovery.tar from the links above. Extract the system.tar.xz with 7zip or `xz -d system.tar.xz` if under Linux to get a system.tar file, and flash the recovery, boot, and system, one after the other, in whatever order, by booting into download mode as soon as it is done flashing a file.
You will need to wipe your cache and data partitions, which can be done by rebooting into recovery [Power+Volume Up+Home].
The button options are built into the hardware so they can be used at any point after the phone is on.
When all that is done, you can report any problems here [or on the github page] and post logcats and I'll look at them if there's any issue I've missed.
Click to expand...
Click to collapse
I got impatient with it so I took a gamble and inferred with some background knowledge. Got it up and running several hours ago. Performance wise, it seems dead on perfect. There's no lag, no force closing of apps. Everything runs as snappy as it should. Its fast as f***. Now I even installed xposed framework and added in a few modules, one of those being the Android N-ify project, and it works really well with it, so kudos on this area. I'll be sure to uninstall xposed when it comes to error reporting and logcats.
The only issues I'm seeing besides the ones you've already outlined are graphical in nature. I'm not home at the moment but I'll upload some logcats when I get the chance.
1) What I'm seeing is a blackout out lock screen. I have a theme installed and used it to apply a custom lock wallpaper to test this out. The wallpaper only shows once you've accessed the Pattern input by swiping up. Haven't tried it with a pin. If you're only using swipe, it'll stay black until unlocked.
2) When unlocked and swiping down to access the notifications panel and quick settings, the same blackout effect is present. This is present only while you're looking at your notifications or tiles, and returns to normal when swiped back up.
3) The first half of this part is only noticed when using the material glass theme. When swiping down to access the notification panel without notifications, the "no notifications" text will be present as it should be, however, when swiped down again to access the quicksettings tiles, the "no notifications" text isn't cleared away. It sits behind the brightness slider. This isn't noticeable on the stock theme because its opaque, while material glass features transparency as their main selling card. If using the battery saver, the text from this persistent notification will appear instead.
Edit: Upon further analysis, it seems that the notification content is linked to the bottom of the header instead of the bottom of the quicksettings tiles, and that's why it works this way. When expanding or shrinking the header, the notification also moves directly with it.
Second half: whether on the stock theme or not, the "no notifications" text will continue to stick and be viewable on the lockscreen, retaining its position that is viewed in the notification panel. It sits directly above the clock. The persistent battery saver notification works the same way. I'm no expert, but I believe that since the notification panel and lockscreen both go to black, that this might be linked in some way.
4) Sometimes when using the stock theme and toggling options in the quick settings tiles, it'll glitch out and turn into what I can only describe as a zombie menu. The pixels of the status bar are replaced by that proportionate area of the quick settings menu, and when swiping down to use the menu, access is disabled (it can't be touched) and it closes itself when attempted. Only way I've been able to fix it was to toggle the theme to material glass and all was restored, still subject to the above three points.
Edit: 5) when using kernel adiutor to try to adjust the CPU frequencies, the only option that comes up for both minimum and maximum is 0MHz. The button seems to work as well, bringing the clock max speed down to 0 for a split second before it reverts to a a maximum of 200MHz. Adjusting the governor after the fact won't restore the maximum, seems only a reboot will get it done. I'm slightly amazed to be honest as before on Touchwiz, it was impossible to get it to hold onto a lower maximum. It would jump all over the place as it pleased.
Edit: 6) The recents hardware button is disabled. Touching it, holding it, nor double tapping brings up a function. It also isn't present in settings when trying to map the button functions. Its the only one that's missing. Power, home, back, and volume are all there.
That's all I got for the moment, I tried to be as descriptive as possible as I won't be able to get the logcats up for awhile. Let me know if you have any questions about what I've said here.
And also, are you taking feature requests?
Pbotelho said:
I got impatient with it so I took a gamble and inferred with some background knowledge. Got it up and running several hours ago. Performance wise, it seems dead on perfect. There's no lag, no force closing of apps. Everything runs as snappy as it should. Its fast as f***. Now I even installed xposed framework and added in a few modules, one of those being the Android N-ify project, and it works really well with it, so kudos on this area. I'll be sure to uninstall xposed when it comes to error reporting and logcats.
The only issues I'm seeing besides the ones you've already outlined are graphical in nature. I'm not home at the moment but I'll upload some logcats when I get the chance.
1) What I'm seeing is a blackout out lock screen. I have a theme installed and used it to apply a custom lock wallpaper to test this out. The wallpaper only shows once you've accessed the Pattern input by swiping up. Haven't tried it with a pin. If you're only using swipe, it'll stay black until unlocked.
2) When unlocked and swiping down to access the notifications panel and quick settings, the same blackout effect is present. This is present only while you're looking at your notifications or tiles, and returns to normal when swiped back up.
3) The first half of this part is only noticed when using the material glass theme. When swiping down to access the notification panel without notifications, the "no notifications" text will be present as it should be, however, when swiped down again to access the quicksettings tiles, the "no notifications" text isn't cleared away. It sits behind the brightness slider. This isn't noticeable on the stock theme because its opaque, while material glass features transparency as their main selling card. If using the battery saver, the text from this persistent notification will appear instead.
Click to expand...
Click to collapse
Hi Pbotelho,
I'll try to answer everything as completely as I can.
The blackout lock screen thing seems to be an issue with Trebuchet. I found that using a different lock screen app solves this issue.
As for the blackout on the notification area, I'm not sure what exactly is causing this, though I think this may be a problem with the cm-12.1 source and not necessarily the device port itself.
Second half: whether on the stock theme or not, the "no notifications" text will continue to stick and be viewable on the lockscreen, retaining its position that is viewed in the notification panel. It sits directly above the clock. The persistent battery saver notification works the same way. I'm no expert, but I believe that since the notification panel and lockscreen both go to black, that this might be linked in some way.
Click to expand...
Click to collapse
This seems to be an issue with Trebuchet again, and using a different lock application fixes this.
Sometimes when using the stock theme and toggling options in the quick settings tiles, it'll glitch out and turn into what I can only describe as a zombie menu. The pixels of the status bar are replaced by that proportionate area of the quick settings menu, and when swiping down to use the menu, access is disabled (it can't be touched) and it closes itself when attempted. Only way I've been able to fix it was to toggle the theme to material glass and all was restored, still subject to the above three points.
Click to expand...
Click to collapse
I'm aware of this one, for now you can fix this by disabling Brightness Control in the settings ( Settings->Status Bar->Brightness Control).
This again might be an issue with the cm-12.1 source, though it'll need some checking to confirm.
Edit: when using kernel adiutor to try to adjust the CPU frequencies, the only option that comes up for both minimum and maximum is 0MHz. The button seems to work as well, bringing the clock max speed down to 0 for a split second before it reverts to a a maximum of 200MHz. Adjusting the governor after the fact won't restore the maximum, seems only a reboot will get it done. I'm slightly amazed to be honest as before on Touchwiz, it was impossible to get it to hold onto a lower maximum. It would jump all over the place as it pleased.
Click to expand...
Click to collapse
I'm using Kernel Adiutor and frequency setting is fine. Did you try using a tunable governor like interactive? That may be the issue.
Edit: 6) The recents hardware button is disabled. Touching it, holding it, nor double tapping brings up a function. It also isn't present in settings when trying to map the button functions. Its the only one that's missing. Power, home, back, and volume are all there.
Click to expand...
Click to collapse
I'm aware of this, you can blame this on my bad arithmetic skills . I had set the wrong bit field mask for the button settings in the device frameworks.
I'll be pushing a fix addressing this shortly.
And also, are you taking feature requests?
Click to expand...
Click to collapse
That depends on what the features are, if they're reasonable and within my capabilities, then yeah .
PS: I would appreciate any help I can get, and if you have any coding skills and time to compile builds, you can help me polish up the device port.
Thanks!
vince2678 said:
Hi Pbotelho,
I'll try to answer everything as completely as I can.
The blackout lock screen thing seems to be an issue with Trebuchet. I found that using a different lock screen app solves this issue.
As for the blackout on the notification area, I'm not sure what exactly is causing this, though I think this may be a problem with the cm-12.1 source and not necessarily the device port itself.
This seems to be an issue with Trebuchet again, and using a different lock application fixes this.
I'm aware of this one, for now you can fix this by disabling Brightness Control in the settings ( Settings->Status Bar->Brightness Control).
This again might be an issue with the cm-12.1 source, though it'll need some checking to confirm.
I'm using Kernel Adiutor and frequency setting is fine. Did you try using a tunable governor like interactive? That may be the issue.
I'm aware of this, you can blame this on my bad arithmetic skills . I had set the wrong bit field mask for the button settings in the device frameworks.
I'll be pushing a fix addressing this shortly.
That depends on what the features are, if they're reasonable and within my capabilities, then yeah .
PS: I would appreciate any help I can get, and if you have any coding skills and time to compile builds, you can help me polish up the device port.
Thanks!
Click to expand...
Click to collapse
1) Aww man I love using Trebuchet, I like to keep my install as small as possible so I'm not one for installing additional apps. I'm a resource junkie though, so its just a matter of personal preference.
2) Again, I'm not an expert, but I suspect it might be the device port. Previously, I've had an unofficial version of CM12.1 installed on a Galaxy Tab 3 as well as a CM12.1 based Pac-rom installed on a Galaxy S4. I'm not sure if this is something those developers corrected on their own or not when building their ROMs, so it could be the source. That's the best of my knowledge on the topic.
3) Will do for the brightness slider, but again, it isn't something I experienced on the other devices with CM12.1 and the sister project.
4) Yeah I played around with the governors and tried all of them. They all list 0MHz as the only option. Maybe its a CPU hotplug issue? I didn't try playing around with those so I'll have to get back to you on that one.
5) Look forward to the update I have a question regarding it though. I'm really familiar with updating custom ROMs through recovery using the zip file format, but this is the first time I'm using Odin to do the job. Will flashing an update with Odin this way cause a factory reset? Or will it update as expected?
6) A couple more graphical hiccups I remembered. The blackout also happens when going to About Phone>Status. In About Phone, the device field says unknown (doesn't bother me, I just don't know if its significant or not), the illumination for the hardware buttons isn't working (I usually keep them off to save battery anyways, but someone out there probably uses it). And finally, when switching recents by holding the home button, only the title bars of the individual apps are viewable. The content of the windows themselves is completely transparent so it looks like a series of floating title bars.
(Apologies if some of these features are already included, I didn't get the opportunity to check, I just think they're awesome)
Feature requests:
1) When phone is off and charging, percentage is displayed inside battery symbol.
2) CPU and GPU undervolting built into the kernel. These custom ROMs are much better than the stock ROM in terms of functionality, but the battery life on the stock Samsung experience is no joke.
3) If possible, more steps for CPU frequency adjustments, every 100MHz or so. I remember the stock ROM had limited options. My S4 is the example I'm going to use here, it has a step for every 108MHz.
4) USB fast charging, aka setting USB to "charge only".
5) Wakelock Blocker. Its built into the latest Resurrection Remix for the S4, not sure if that could be of viable use to you. It'll certainly help out with battery improvements.
6) Boot Manager. Decide which apps get to start at boot. Its built into Marshmallow and an xposed module also exists for this purpose, so really low priority on this one, for me at least.
7) This one is a doozy. Absolutely the one I care most about, but most likely asking for too much. USB tethering. Already exists, I know, but not the way I hope it to. I have an old WRT54G router with DD-WRT installed. My goal is basically this: Phone's network connection>USB Tether>Micro-USB-LAN adapter>WAN port of router. In this sense, the phone would be acting as the modem in a regular home network. I know its possible to do this if the router has a USB port, but mine doesn't, and I also know its possible if you have an intermediate device that bridges the connections for you. Like a laptop, PC, or raspberry pi. Cost efficiency as a student is what I'm working towards though, so this one is a wishlist request.
Ps. The only coding skills I have are from high school's Visual Basic and HTML, truly beginner stuff, and that was about 10 years ago. I'm running Ubuntu on a core i5-2500k with 16GB of RAM and about a terabyte of space though, so compiling is definitely a possibility with some instructions.
Pbotelho said:
5) Look forward to the update I have a question regarding it though. I'm really familiar with updating custom ROMs through recovery using the zip file format, but this is the first time I'm using Odin to do the job. Will flashing an update with Odin this way cause a factory reset? Or will it update as expected?
Click to expand...
Click to collapse
Nope, this should be pretty much the same as flashing a zip from recovery. If you modified the system partition though (like by flashing GApps for example) your changes will be lost.
Pbotelho said:
6) A couple more graphical hiccups I remembered. The blackout also happens when going to About Phone>Status. In About Phone, the device field says unknown (doesn't bother me, I just don't know if its significant or not), the illumination for the hardware buttons isn't working (I usually keep them off to save battery anyways, but someone out there probably uses it). And finally, when switching recents by holding the home button, only the title bars of the individual apps are viewable. The content of the windows themselves is completely transparent so it looks like a series of floating title bars.
Click to expand...
Click to collapse
I fixed this in the device tree, once I've built a new image this should be corrected.
Pbotelho said:
(Apologies if some of these features are already included, I didn't get the opportunity to check, I just think they're awesome)
Feature requests:
1) When phone is off and charging, percentage is displayed inside battery symbol.
Click to expand...
Click to collapse
I'll be looking into this one.
Pbotelho said:
2) CPU and GPU undervolting built into the kernel. These custom ROMs are much better than the stock ROM in terms of functionality, but the battery life on the stock Samsung experience is no joke.
Click to expand...
Click to collapse
I'm still using the stock kernel in my builds, once the builds are stable I'll start compiling the kernel from source and I'll see if I can do something about this.
Pbotelho said:
3) If possible, more steps for CPU frequency adjustments, every 100MHz or so. I remember the stock ROM had limited options. My S4 is the example I'm going to use here, it has a step for every 108MHz.
Click to expand...
Click to collapse
According to the configurations, this is already how it is.
PS: I changed the governor under Kernel Adiutor to performance from interactive and switched back, and became unable to change the frequencies (like you were experiencing). I'll need to play around more with this to see why.
Pbotelho said:
4) USB fast charging, aka setting USB to "charge only".
Click to expand...
Click to collapse
This is already available under the Settings->Storage->USB Computer Connection menu
Pbotelho said:
5) Wakelock Blocker. Its built into the latest Resurrection Remix for the S4, not sure if that could be of viable use to you. It'll certainly help out with battery improvements.
6) Boot Manager. Decide which apps get to start at boot. Its built into Marshmallow and an xposed module also exists for this purpose, so really low priority on this one, for me at least.
Click to expand...
Click to collapse
Not sure I could do this, I'll check.
Pbotelho said:
7) This one is a doozy. Absolutely the one I care most about, but most likely asking for too much. USB tethering. Already exists, I know, but not the way I hope it to. I have an old WRT54G router with DD-WRT installed. My goal is basically this: Phone's network connection>USB Tether>Micro-USB-LAN adapter>WAN port of router. In this sense, the phone would be acting as the modem in a regular home network. I know its possible to do this if the router has a USB port, but mine doesn't, and I also know its possible if you have an intermediate device that bridges the connections for you. Like a laptop, PC, or raspberry pi. Cost efficiency as a student is what I'm working towards though, so this one is a wishlist request.
Click to expand...
Click to collapse
I don't quite understand what you mean by this, how does it differ from the normal USB tethering?
Pbotelho said:
Ps. The only coding skills I have are from high school's Visual Basic and HTML, truly beginner stuff, and that was about 10 years ago. I'm running Ubuntu on a core i5-2500k with 16GB of RAM and about a terabyte of space though, so compiling is definitely a possibility with some instructions.
Click to expand...
Click to collapse
If you can't code, that's fine, you could set up a build environment on your computer for creating images from the source.
vince2678 said:
Nope, this should be pretty much the same as flashing a zip from recovery. If you modified the system partition though (like by flashing GApps for example) your changes will be lost.
I fixed this in the device tree, once I've built a new image this should be corrected.
I'll be looking into this one.
I'm still using the stock kernel in my builds, once the builds are stable I'll start compiling the kernel from source and I'll see if I can do something about this.
According to the configurations, this is already how it is.
PS: I changed the governor under Kernel Adiutor to performance from interactive and switched back, and became unable to change the frequencies (like you were experiencing). I'll need to play around more with this to see why.
This is already available under the Settings->Storage->USB Computer Connection menu
Not sure I could do this, I'll check.
I don't quite understand what you mean by this, how does it differ from the normal USB tethering?
If you can't code, that's fine, you could set up a build environment on your computer for creating images from the source.
Click to expand...
Click to collapse
Sounds awesome, I'll flash it as soon as possible and continue testing it for you.
I uploaded a logcat to the other thread in development. The performance governor is set up as the default for me so I'm set up with that situation from the get go.
It technically isn't different from regular USB tethering, but it seems that no one has done it successfully before. There are adapters that you can use to provide a wired Ethernet connection to an android device over micro USB, but no one has been able to do it the other way around. Google results don't turn up any answers.
And I'm willing to learn how to code, but I fear that I may slow you down with this project as I get past the learning curve. That being said, I can definitely set up a build environment and compile it from source for you. That'll be a learning experience on its own. Just point me towards a noob guide and I'll get it done.
Pbotelho said:
Sounds awesome, I'll flash it as soon as possible and continue testing it for you.
I uploaded a logcat to the other thread in development. The performance governor is set up as the default for me so I'm set up with that situation from the get go.
It technically isn't different from regular USB tethering, but it seems that no one has done it successfully before. There are adapters that you can use to provide a wired Ethernet connection to an android device over micro USB, but no one has been able to do it the other way around. Google results don't turn up any answers.
And I'm willing to learn how to code, but I fear that I may slow you down with this project as I get past the learning curve. That being said, I can definitely set up a build environment and compile it from source for you. That'll be a learning experience on its own. Just point me towards a noob guide and I'll get it done.
Click to expand...
Click to collapse
The USB tethering thing sounds interesting, though I would need to have one of the adapters to test that, and time at hand as well.
As for the build environment, the best source of information is the CM wiki. You can look at these links below on how to get started:
https://wiki.cyanogenmod.org/w/Development#Learning_To_Build_CM
https://wiki.cyanogenmod.org/w/Doc:_Building_Basics
https://docs.omnirom.org/Setting_Up_A_Compile_Environment
https://wiki.cyanogenmod.org/w/Build_for_captivatemtd
http://jira.omnirom.org/browse/OMNI-1263
http://forum.xda-developers.com/showthread.php?t=2329228​
The guides above are just outlines to detail the general build process - you will need to do things slightly differently from the steps above to get the proper source and device trees.
The attached local_manifest can be used with repo when obtaining the cm-12.1 source.
Remember you'll be getting the cm-12.1 source - not anything else.
vince2678 said:
The attached local_manifest can be used with repo when obtaining the cm-12.1 source.
Remember you'll be getting the cm-12.1 source - not anything else.
Click to expand...
Click to collapse
So if I add in your device tree and provide a toolchain, I should be good to go? (I think so.)
Thanks!!
EDIT: Not so fast! I'll have to find a kernel as well.
Pbotelho said:
Edit: 5) when using kernel adiutor to try to adjust the CPU frequencies, the only option that comes up for both minimum and maximum is 0MHz. The button seems to work as well, bringing the clock max speed down to 0 for a split second before it reverts to a a maximum of 200MHz. Adjusting the governor after the fact won't restore the maximum, seems only a reboot will get it done. I'm slightly amazed to be honest as before on Touchwiz, it was impossible to get it to hold onto a lower maximum. It would jump all over the place as it pleased.
Click to expand...
Click to collapse
I've test Kernel Adiutor and I too got the O MHz only window for both as the only option. Though Now I wonder if it is because I used the latest beta Kernel Adiutor, I'll further check with the normal stable version. Pretty sure it'll fix it if it worked normally for Vinc. --- Update; As strange as it might look while re opening kernel adi to take a screenshot, the list of normal MHz values is there and working properly.. Strange.. Magic? Huh technology, you're so unpredictable.
Zippy Dufus said:
So if I add in your device tree and provide a toolchain, I should be good to go? (I think so.)
Thanks!!
EDIT: Not so fast! I'll have to find a kernel as well.
Click to expand...
Click to collapse
Hi Zippy,
The kernel source was included there as well (it's just a dummy source so that the build can get the necessary source files for libraries which need them). The build still uses the default prebuilt kernel though.
vince2678 said:
Hi Zippy,
The kernel source was included there as well (it's just a dummy source so that the build can get the necessary source files for libraries which need them). The build still uses the default prebuilt kernel though.
Click to expand...
Click to collapse
As an experiment, why don't you try downloading the G530H ROM, unzip, take the boot.img, and flash it over top of your stock kernel? See if it boots and how it performs.
Meanwhile, I plan to hack at putting together complete manifest, possibly with the G530H kernel and my Linaro 4.9 toolchain and see if I can build a complete ROM.
Have you extracted the firmware?
However, I don't want to flash anything until I see your ROM's modem working because it is my daily driver. But I'm keen though!!
I've managed to download the stock ROM from SamMobile but I'm now thinking of going straight to your ROM once it is a bit more complete and stable.

Categories

Resources