I noticed that 2nd init is broken on Gingerbread. For the sake of those on international Atrix or other phones that may not get unlocked, here's a fix. My changes are trivial: I move the location of injected_code_address to a 'fudge' offset from the end of the code segment, instead of the start of the heap, where it used to be. Why? Look:
Froyo: cat /proc/1/maps
Code:
00008000-00022000 r-xp 00000000 00:01 483 /init
00022000-00024000 rwxp 0001a000 00:01 483 /init
00024000-00042000 rwxp 00000000 00:00 0 [heap]
Gingerbread: cat /proc/1/maps
Code:
00008000-0001e000 r-xp 00000000 00:01 481 /init
0001e000-0001f000 rw-p 00016000 00:01 481 /init
0001f000-00038000 rw-p 00000000 00:00 0 [heap]
Our heap (and stack too) are no longer executable on GB! (Why were they on Froyo to begin with??) So when regs.ARM_pc finds itself in the heap on GB: not good. But long as you avoid interfering with execve(), you can clobber the code segment instead.
Thanks to Edgan and Brandon15811 for sluething this out with me, and to [mbm] for helping me understanding certain bits of the code, and of course, to Skrilax_CZ for this very cool piece of work to begin with!
(And again to Edgan for getting 2nd-init via taskset working on dual-core to begin with! If you're itching to donate, please hit him up with a few bucks to help him recover some hardware investments he made before the bootloader unlock...)
Hope this very simple fix helps someone out there... It's backwards compatible, and should work on Froyo.
Since GB builds seem to use mount_ext3.sh differently, I've attached an example 'remountpds' one might use instead to modify init.rc (on a locked Atrix with Gingerbread.)
PS. I would really really really appreciate it if replies to this post could be kept on topic and dev-related. Thanks.
Great work eval. You figured out the crux of this problem.
Brilliant. Hopefully, they'll get unlocked, too. If not, this ain't bad at all. Good job eval-!
PS: I donated a couple bucks to Edgan a while back. If you can help at all, please help him buy back the cost of his developer Atrix!
kennethpenn said:
Brilliant. Hopefully, they'll get unlocked, too. If not, this ain't bad at all. Good job eval-!
PS: I donated a couple bucks to Edgan a while back. If you can help at all, please help him buy back the cost of his developer Atrix!
Click to expand...
Click to collapse
I hope Chuck Norris listen to you bro I want unlocked bootloader too
Alejandrissimo said:
I hope Chuck Norris listen to you bro I want unlocked bootloader too
Click to expand...
Click to collapse
Bootloader is unlocked. There are like a million posts on this.
mrnicotra said:
Bootloader is unlocked. There are like a million posts on this.
Click to expand...
Click to collapse
I assume he was speaking about one of the Canadian or Australian devices that does not have an unlocked bootloader quite yet.
Would it be possible to load an AT&T sbf using 2nd-init, then unlock the bootloader from there?
IrshaadH said:
Would it be possible to load an AT&T sbf using 2nd-init, then unlock the bootloader from there?
Click to expand...
Click to collapse
Short answer: no
Long answer: That is not exactly how it works. It does not touch the boot partition.
http://forum.xda-developers.com/showpost.php?p=13445414&postcount=56
http://forum.xda-developers.com/showpost.php?p=13447743&postcount=59
http://forum.xda-developers.com/showpost.php?p=13450012&postcount=61
So I follow all of this feat and your posting eval, much thanks to what Skrilax did, but I'm really curious and I'd like a little elaboration for developments sake. I follow the whole thing up until here,
"But long as you avoid interfering with execve(), you can clobber the code segment instead."
At that point, I cannot be sure of what you mean by clobber the code segment, my understanding of what was written was that they changed the permissions for the 2nd init process as we had it setup for froyo, which was sort of an accessibility hole in the boot process. From what you wrote, you changed the location from where it executes now, but that doesn't make sense from what I understand of it, so if you could elaborate, much thanks! I especially do not follow the "clobber the code segment instead". Does that mean modify the string somehow? I thought we couldn't?
Much thanks you guys are brilliant. Where's your day job?
crashingout said:
"But long as you avoid interfering with execve(), you can clobber the code segment instead."
At that point, I cannot be sure of what you mean by clobber the code segment, my understanding of what was written was that they changed the permissions for the 2nd init process as we had it setup for froyo, which was sort of an accessibility hole in the boot process. From what you wrote, you changed the location from where it executes now, but that doesn't make sense from what I understand of it, so if you could elaborate, much thanks! I especially do not follow the "clobber the code segment instead". Does that mean modify the string somehow? I thought we couldn't?
Click to expand...
Click to collapse
No, they changed system-wide process's memory space permissions. Having the stack and heap memory pages executable was a big security risk (but not the real reason why 2nd-init works.) Really, only the 'text' (code) segment needs to be executable, as it has the actual machine code. See here for some ideas about memory mappings. The only "hole" in the boot process is that we can overwrite an executable (in /system/bin/ somewhere) called by normal /init and then use some tricks to get our own /init running instead.
2nd-init essentially forces /init to execve("/init"), replacing itself in memory with a new version of itself loaded from disk, and the trick is in-between we have replaced /init or /init.rc (and default.prop ) on disk. 2nd-init accomplishes this by finding execve() in the code segment of the currently running /init, and then creating an injected_code with the machine code instructions to actually set up registers 0,1,2 as execve() expects it, after copying the necessary env variables from the previous /init, and then finally branch to execve(). See lines 244-270 here. (This is the real awesomeness of 2nd-init, I highly recommend digesting the code)
Finally, this code+args&envs has to be pushed into the memory of the original /init process, using ptrace(PTRACE_POKEDATA, before it can ptrace(PTRACE_SETREGS the PC (program counter) to the address of the "injected_code" in the original /init, and detach, telling it to respawn itself. For safety, you probably do not want to overwrite execve() (or anything it requires) in memory, since you want to branch to that address and run it right after! If execve() is corrupted, the trick fails. So Skrilax_CZ's original get_free_address() used the heap, which is safe. However, since the heap is no longer executable on GB, once you detach the ptrace, an exception is triggered and the system reboots. My very simple fix is to move the injected_code_address to a part of the memory that is still executable (code segment, see original post) but is also not important for execve() to work. Fortunately, Skrilax's program tells us where we find execve() so we can change the 'fudge' if ever necessary (perhaps I should have made this an input argument?)
You might notice that the code segment is not writeable! So how can we POKEDATA the injected_code there? The answer is that when the kernel page fault exception handler gets the interrupt for the unallowed access, it basically gives ptrace a pass. Otherwise debugging would be much more difficult to implement, if I understand [mbm] correctly. I can only recommend his blog and talking to him directly in IRC, he is the major reason I understand the little I do.
Very interesting and well written explanation, thank you;
It makes me think, especially since my interest in this is from a cracking and systems security standpoint, about our activities here at XDA. You write that
"the stack and heap memory pages executable was a big security risk (but not the real reason why 2nd-init works.)"
Why were they executable in Froyo to begin with is what I'm wondering, my old information about the efuse stemming from a certain thread so long and old I think ButtGears himself started it(50-60 pages about bootloader chains and fuses) is that they use 2nd init to bypass the fuse for OTA updates or other engineering purposes.
Which brings us to my question of why were they executable, couldn't this easily be used for malice, for example either brick a phone or insert the mechanisms necessary to run some nasty programming later in the boot without the users knowledge.
To bring up even more interesting thoughts even if I'm incorrect, was Motorolas change of this process in Gingerbread either a result of them discovering and removing their mistake made in their hasty engineering and release to market of the phone, or, discovering that we (XDA) have discovered this flaw and Motorola is reacting to it, or they have simply discovered and fixed this little flaw during their transition to Gingerbread perhaps during an audit of system permissions and accessibilities - WITHOUT knowledge of our somewhat recent activities of 2nd init, which would explain how you guys were able to fix 2nd init successfully with 2.3.4
All of this is very curious, because I'm certain that XDA is watched by Moto, maybe less so now that the horse is completely out of the barn if you know what I mean, but they almost have an obligation to watch us because we spend all day here trying to crack their safe, the Atrix. If we are discovering flaws in Motorolas platforms, their solid security reputation is at risk, perhaps they yielded to our actions because they saw the chinks in their armor, and decided rather than look stupid, insecure, and bad, lets play this to our(Moto's) advantage.
I don't write any of this without some precedent. While I was hanging out with some Nvidia Tegra high ups, I was showing them my heavily modified atrix and laptop, 1080p no tethering or ads etc. They were very interested in how much I had sped up webtop and other things. But they all had Atrix's! Even the head of Tegra app development had an Atrix. A very highly placed man at Nvidia who also had an Atrix was also showing me the official Gingerbread build for the G2X he also owned, but this was June 2nd.
When I talked to this high up man, he said he had ginger blur on his Atrix at home, not the latest, but nonetheless I've linked him to XDA before, and told him what I think of their work and XDA's efforts. He knows about you guys very much so, he might even be a member(I figured he was, but I didn't ask because he's probably a lurker ).
So consider this an interesting thing to contemplate, we are being watched, more than likely due to the fact that knowing Motorola they would consider it irresponsible to their customers(if their corporate board is intact since the bankruptcy, these guys should be old guard...) if they didn't pay attention to the guys trying to crack their premier, newest, and imho coolest, safe.(Atrix)
If this really is the case, maybe we should thoroughly vet the people who watch these types of threads in the [DEV]only section, whereby the more security related threads have another layer of security/monitoring? This might be foolhardy, the internet is such a slippery tricky place, I could be a Motorola agent for all you guys know.
Can anyone give me a quick and easily gotten definition of what a 2nd Init is?
:O
Pizza4Breakfast said:
Can anyone give me a quick and easily gotten definition of what a 2nd Init is?
:O
Click to expand...
Click to collapse
This isn't the place to ask buddy, but here are some pointers:
http://forum.xda-developers.com/showthread.php?t=1109287
We got the idea for a 2nd init exploit because the Korean Motorola Defy owners put I think CM7 on theirs through this feat. I bet if you google 2nd init defy you will probably get a good explanation. But now, back to hardcore dev talk........
Edgan please reply to my pm please ot anyone else who knows about this subject. I need help to fix last piece of the puzzle thanks
Sent from my MB860 using XDA Premium App
I'll say several words here:
Motorola's only security measure on their Android phones, which affects us, is that phones with locked bootloader require signed boot / recovery image. That's all. Everything else that you read or hear is pure hype. The reason why they do it is not relevant to customer security (when you have root access, all kinds of security in the OS (not radio) are gone) despite whatever the managers write, it's to reduce warranty returns with botched software. So whenever some kind of hack doesn't work, the reason behind it is not Motorola's security.
When it comes to 2nd-init, it was written as an improvement of init hijack for CM for Motorola Milestone (originally, it ran another "init" from "init", freezing the original one with pid 1 and the child one being executive, which is potentially volatile). I wrote 2nd-init for Motorola Milestone running on 2.6.32.9 kernel and didn't really pay attention to potential issues on another kernels. That's why it has to be adjusted a bit when porting it.
First, to OP: Have you tried setting PC (on execve) and R1, R2, R3 directly via ptrace?
Let me point out several potential issues that may come in the future:
A) ptrace will fail on tracing init
-> kernel has received a patch to prevent ptracing init (probably easiest solution here is to patch it with module)
B) cannot locate execve
-> signature of execve inside init has changed (update it)
C) zombie processes
-> instead of execve to another init, execve to an application which will proprely terminate all processes and then execve init (or patch custom init directly)
You're joking, right..?
Sent from my Motorola Olympus using XDA Premium App.
Related
Process
From Wikipedia, the free encyclopedia
Process or processing typically describes the act of taking something through an established and usually routine set of procedures to convert it from one form to another, as a manufacturing or administrative procedure, such as processing milk into cheese, or processing paperwork to grant a mortgage loan, or converting computer data from one form to another.
Ok first off I'm the biggest noob at all things root as could be. I have managed to make some custom clocks for my old LG voyager way back in the day and have even jailbroke some Ipod touch's so I was able to load bootleg games and apps.
But this root thing has got my brain traped in a vortex and I really want to not just know how to root my droid (That info is everywhere) but I want to know how it all works. What terms like kernel mean and how they relate to clock speed. What is the difference between all the custom rom's? What happens when I root my phone and can't figure out what rom I should use? Do I have to reset all my apps and preferences every time i want to try a new rom?
I understand the how-to's I'm sure when I try to root my phone that I will not have much trouble doing so. But there are so many things I want to learn and know before I do anything.
I would like to say I'm not looking for links to tech reports on rom's that I will not understand I'm looking for alink (or someone who knows the things I wish to learn,) something that will explain the terms what they mean, how they relate to my phone and what outcome I should expect from loading custom rom's.
I understand that most users of this forum fall into one of two category's ONE ether super wonder techs that know exactly what they are doing and know how things work, TWO people who can read follow directions and root there phones while trying NOT to sound like noob's when they ask for help.
And then there's me I'm a number two, now I know that kinda makes me sound like **** but I really want to be a number ONE
So who want's to teach me ? Who's got some time to kill or link's to post? I'm even willing to go buy a android programmers book if there's one that would be recommended reading to help me understand the OS better.
I want to learn from the masters and this is where they all live. So will someone apprentice me ?
To close my rant out I would like to say I'm a 37 year old man with a masters in chemistry 119 IQ and ex-stream case of OCD that drive's my compulsive need to learn how things work, So I make for a good student
Thanx
ö
Thank you so much, I was hoping to be able to reply first, (this sh*t is my crack)
Ok, First off, the kernel is the basic system that controls how the cpu reacts, as well as how programs interact with the hardware on your phone, such as the screen, wifi and bluetooth modules, accelerometer, gps, ambient light and the battery. When a dev wants to overclock their android, add a module for EXT, or TUN, or add wifi support, this is where the magic happens. this is probably the most important part of the firmware. It also controls battery life via voltage, as well as cpu speed.( the average droid can be overclocked to 1200-ish, depending on the randomness of processors, though I've heard of a ridiculous version called OMAP Ti39 or something that could be stable at 2ghz, even 2.3. As I think you may know, Fat32 doesn't support file transfers of more than about 4 gigs at a time, which is why add in ext support is so important, especially since someone made a video player that reads matroska video files (blu-ray) Ive tried it, its beautiful, (V player - on the market) after kernels is framework, the framework is what renders the gui, basically everything that you see on the screen is thanks to the framework-res. We edit it either manually, or through the use of an app called metamorph, which swaps the xml files the framework uses with edited ones, such as one I recently used to give my droid a circular battery, however these xml files can change anything you could need them to visually about your droid, you just have to find what you need. Now on to shell. shell is the engine that is accesible through command prompt and terminal using the android sdk and adb, more on that can be found easily on the google android homepage. however, much use is made through devs and an app called terminal emulator that is basically a straight to shell terminal screen app. Uses for shell may include but are basically limitless, include moving any app to your sd-card to conserve rom (rom is the phones total system memory, apps usually go in there, but before froyo, and ext partition could be used, and with froyo stock support for most apps was allotted, and without the need of an ext partition.) Ram is basically ram, if you use a rom that originally came with a larger ram supported device, something called a swap partition must be implemented, otherwise it won't boot, there is an app or two that will do that for you, manual swap creation is also possible. Swap basically creates virtual ram on the sd-card. Root access, which can be acheived manually through the recovery flashing of specific zip files, or via free apps that do it with one click, basically allows you to flash kernels, change the framework, or allow tethering which I will cover next, is possible because the kernel the phone uses is linux, the unlocking of which is called granting super user access, in ubuntu a linux distribution, typing su, and your admin password will give you access to your computers system files, much in the same way we apply it to android. (However, it is unlikely you would try to flash an alternate kernel to your desktop, as it runs on either ie36 or x64 architecture, whereas phones run altogether seperate architectures , for instance android runs on ARM, and that is the base and primary reason your phone won't run windows.) Since android is free (open-source) there is an x86 version of android, including a froyo port that you can use on laptops and desktops. (Really quickly I would like to interject that recovery is an option on all phones android based that is usually accessible by holding volume up while booting, however the droid requires you press x while booting to get to recovery, which btw is what you flash a custom version of after rooting that allows you to flash roms and kernels. It also allows for backing up all of your phones firmware and data in the event of a problem. Basically its your new best friend, get familiar.) Also there is another form of booting called bootloader, it allows you to flash specific system files that are normally untouched, a guide to using that and a program called rsd lite will help you if you've bricked your phone ( Bricked- term used to describe the state of a phone that is unable to be recovered to an earlier condition and is essentially a brick or "expensive paperweight".) by allowing you to flash a completely untouched sbf (firmware) file. note that you can also use it to change your boring m boot logo with any image that fits 480x182 bytes through a slightly difficult, but fun proccess, a guide to which ,can be found here at xda, including a file that allows for the flashing of just the logo, whereas previously you had to reactivate your phone (you just have to follow the instructions on the phone) reroot, and restore the rom you previously backed up. Now on to tethering, the most important feature available to root users, which, if carriers have anything to do with it, would normally cost an extra 10 dollars a month. (Tethering- using shell or an app with the proper kernel to allow the use of your phones mobile network via usb connection, or the creation of a wifi hotspot with your desktop or laptop.) However thanks to devs who believe that what you pay for should be used how you want, most roms will tether, even in the settings, without carriers any the wiser. Windows 7 and almost all linux will automatically tether, vista is the most difficult, and xp has a quick install init file that works like a charm. The only reason we root is because we believe in the freedom to change our phones to fit us personally, and lets face it, because we can, because its fun, because its not illegal, and it brings a sense of satisfaction and pride in pushing the limits of technology. (P.S. I tried not to take to long so I couldn't really look it over, so sorry for grammatical or vocabulary based errors.)
(P.P.S. I recommend any book to do with android programming, but you'll need programming experience in linux, especially eclipse.)
Oh, and I'm a 17 year old junior with a vocabulary skill level of 139, just in case you wondered.
There are plenty of applications on the market where you can backup apps and data once you root, I personally use titanium, but I never restore system data if I'm flashing roms, only apps n data that comes with apps. Youre gonna have to search around other forums and whatnot to find the right roms.
Sent from my ADR6300 using XDA App
OK, this is a little strange, but I think the idea is useful for people that want to mod the ramdisk but don't want to fiddle with compilers and such. It requires a kernel, so I'm including a proof of concept here. However, once the basic support is in a kernel, you can change anything about the ramdisk and the boot process WITHOUT changing your kernel!
For example, say you want to change init.rc... You can do that, and if it fails to boot, if you stored it on your external SD card, just pop out the card and boot up, the change won't be able to copy over at boot, so you are back where you started. No odin, no kernel mod.
The basic idea is simple. It runs init.d style scripts (if found) BEFORE the android init process starts up. This allows you to change literally anything in the ramdisk without the hassle of building a kernel. You can replace the /sbin/init binary if you want to, whatever.
This also means you could install and/or upgrade a lagfix, even voodoo, by copying a single file to /system/etc/init.d and rebooting.
This is more useful for devs I think than for end users, but perhaps users will find it useful.
NOTE: This is DANGEROUS STUFF. If you store your files in a world-writable location like /sdcard, ANY app could change your ramdisk! As it is, any root app can do it with this change. Anything run in the pre-init scripts is, by definition, run as root. So watch your permissions and don't store stuff used by the pre-init scripts in a FAT filesystem. EXT2/3/4 and RFS will work fine if you set them to root-write only. If in doubt, use "chmod 700 <file>". All of this should be obvious to most people here, but I think it's important to point out just in case.
This is based on Unhelpful's 1.7 kernel. It runs great on my Vibrant. There is one known bug, it reverts the locale to en_GB on boot, which is mildly irritating. I can't figure out why this happens. If someone knows, please post. I did write a simple app that switches it back to en_US using MoreLocale 2 (market) on boot, if people want it.
Credit to Unhelpful (kernel source and nice build scripts), JAC and Supercurio (examples for setting up the ramdisk properly for this sort of thing).
All the init scripts live in /system/etc/init.d. P*** are pre-init scripts. E*** are early-init scripts run before /data and /dbdata are mounted, allowing you to override mount options and such at that point, S*** are standard init scripts that launch right before the Android OS starts up, so the full environment is available to them. So you now have 3 hooks to start init scripts up. The boot process will wait for them to complete, so don't do anything that takes a long time if you don't have to, or start it in the background with "cmd &" or similar.
http://www.tabbal.net/files/t959-ttabbal-v1.0.tar
Flash with Odin. I'll consider putting up a ZIP later. Please, be at a computer with Odin and a known good kernel when you do this, this should be considered beta at best. Hardware locked phones should probably avoid this as well. Also, disable voodoo before messing with this, it does not include the voodoo script. If you really want to try it, you should be able to copy it to the init.d directory, but it would be better to wait a bit.
If it works well, hopefully other kernel devs will include the framework. I may also start posting updates from Unhelpful's git tree if there is interest as well now that I have a decent environment set up. See his thread in the Captivate forum for details on what changes have been done. OC/UV is supported, but I haven't worked with it much. You have to enable it by creating a config file and putting it on the phone. I'd recommend the external SD card in case you have a problem with a bad config, so you can pull the card and boot without clock changes. The OC/UV config can also be changed at runtime.
There is no need to pre-flash anything, and init.d need not exist or have any scripts in it. The system will boot fine without them.
If you try it, please post your thoughts. I'd like to see if there is interest for this line of work. If you don't understand a thing I said above, please don't install it.
Updates:
http://www.tabbal.net/files/Kernel-ttabbal-v1.2.zip
http://www.tabbal.net/files/Kernel-ttabbal-v1.4.zip
http://www.tabbal.net/files/z4mod-ttabbal-v1.1.zip
Wow, I am afraid to mess with this today. (expecting an important phone call)
I will flash it tomorrow morning however. And post some results, I have an idea about what to do with this.
Thanks Travis!
I hope you find it useful! I forgot to note one thing. If you want to see what your pre-init scripts are up to, there's some info in /init.log. Not a ton, but you can at least see if your script was started and such from there.
Also, if anyone cares, it works on Frankin-Twiz Final. I decided to check it out once I got this little project working.
I'm curious to see what people come up with, I've seen some complaints about not being able to edit the ramdisk without building a kernel. So now they can.
ttabbal said:
I hope you find it useful! I forgot to note one thing. If you want to see what your pre-init scripts are up to, there's some info in /init.log. Not a ton, but you can at least see if your script was started and such from there.
Also, if anyone cares, it works on Frankin-Twiz Final. I decided to check it out once I got this little project working.
I'm curious to see what people come up with, I've seen some complaints about not being able to edit the ramdisk without building a kernel. So now they can.
Click to expand...
Click to collapse
You mind sharing your init setup. I am familiar with Unhelpfuls method and just want to see what you have changed from his.
I stayed away from his method with Voodoo as it was causing issues at diff points of development and went with the run-parts solution. But it may be in better shape now that you have gone over it.
Most users will only need one hook but options are always good.
I've always been one the fence about the runtime OC/UV. Most people are looking for a stable voltage file that will work with their phones in the thread, but it is def awesome for those that are familiar with what they are doing.
justanothercrowd said:
You mind sharing your init setup. I am familiar with Unhelpfuls method and just want to see what you have changed from his.
I stayed away from his method with Voodoo as it was causing issues at diff points of development and went with the run-parts solution. But it may be in better shape now that you have gone over it.
Most users will only need one hook but options are always good.
I've always been one the fence about the runtime OC/UV. Most people are looking for a stable voltage file that will work with their phones in the thread, but it is def awesome for those that are familiar with what they are doing.
Click to expand...
Click to collapse
Talk to braka, we been hi-jacking the init for a bit, I've been working on getting a Desire pport working on are rom.. ( Well, barak has been hi-jacking the init ) I just build kernels.
justanothercrowd said:
You mind sharing your init setup. I am familiar with Unhelpfuls method and just want to see what you have changed from his.
I stayed away from his method with Voodoo as it was causing issues at diff points of development and went with the run-parts solution. But it may be in better shape now that you have gone over it.
Most users will only need one hook but options are always good.
I've always been one the fence about the runtime OC/UV. Most people are looking for a stable voltage file that will work with their phones in the thread, but it is def awesome for those that are familiar with what they are doing.
Click to expand...
Click to collapse
The whole ramdisk is here:
http://github.com/travistabbal/linux-galaxy/tree/ttabbal-v1.0/usr/initrd_files_t959/
The pre-init stuff is in /init.sh.
The basic stuff is the same as his really, I just put the sync hooks in to stall the boot based on an older version of his stuff. The current version didn't seem to work for me. The boot didn't wait, and I couldn't see any reason it would, so I just used the property setting style.
As I said, I haven't tried voodoo with it yet, but I don't see any reason it wouldn't work. You might want to pull the "exec /sbin/init" out if you want more pre-init scripts available, but other than that, it should work fine. A fair bit of the ramdisk came from your voodoo release, useful stuff in there.
If you see any issues with the init.d stuff, let me know and I'll look into them and if I can fix them, send a pull request over to Unhelpful.
Yeah, 3 hooks is overkill, but I figured there might be some use for them all. Most scripts can run in the "standard" hook and work just fine.
I kept the runtime OC/UV stuff just because it was more work to take it out. If you have a nice stable file, I'm happy to include it in the downloads as a default. I'm sure I could pull at least older versions from your github, I honestly haven't messed with it much beyond adding the 600Mhz step and seeing that the phone would use it. I honestly don't see much call for changing that stuff constantly at runtime, but it's nice for experimenting. If it crashes due to low voltage, just reboot and no harm done.
As I'm sure someone will ask, no I won't test it with voodoo. I can't, my phone has the extra NAND so it's not compatible with voodoo. When Beta5 comes out, I'll test it though.
I'm uploading a 1.1 now. The only big change is that I've fixed the backlight notification patch from Unhelpful's tree so it works with Vibrant now! Install the kernel, then copy lights.default.so to /system/lib/hw to get apps able to use it. Anything that can do LED notifications now turns on the button backlights instead.
See the other BLN threads for Q&A's, etc.. The big one, no, we can't flash/fade the LEDs. It would require changes to the binary firmware and nobody wants to try writing it.
http://www.tabbal.net/files/t959-ttabbal-v1.1.tar
http://www.tabbal.net/files/lights.default.so
This has been tested on my phone running Bionix 1.7 and worked with the MMS and GMail apps. I haven't tested the others.
Again, it's an Odin tar file. Put it in the PDA section and flash. If people ask for an update.zip, I'll put one together.
The warning above applies. This flashes a kernel, so it will overwrite whatever you have now. So if you have voodoo, disable it or add the voodoo script to init.d with an E prefix ie. "Evoodoo".
Thanks
I've been looking forward for a way to use the backlight buttons as notification since the phone came out and the idea was hatched a few days later. I'm admittedly new to all this so I have no idea what else this is capable of but I am VERY thankful for the button lights. Also there is another xda thread up with many replies and people offering up some rewards for making this work.
Can this be applied to eugenes froyo ?
Sent from my SGH-T959 using XDA App
dzeinz said:
I've been looking forward for a way to use the backlight buttons as notification since the phone came out and the idea was hatched a few days later. I'm admittedly new to all this so I have no idea what else this is capable of but I am VERY thankful for the button lights. Also there is another xda thread up with many replies and people offering up some rewards for making this work.
Click to expand...
Click to collapse
Rewards? Heh... I had no idea people were that interested in it. Hope it helps. My github has source, so I hope other kernel devs for vibrant add it.
skater991 said:
Can this be applied to eugenes froyo ?
Sent from my SGH-T959 using XDA App
Click to expand...
Click to collapse
Not sure. Froyo usually needs a different kernel. If JAC or KK kernels work, this one should. At worst, it will boot loop and you will have to flash a compatible kernel in download mode. So make sure you can get into download mode before trying it.
Thanks for this. It's working great, and I'm so glad to finally have backlight notifications.
Definitely would like an update.zip, just not comfortable doing it through odin...but I would love to have this
The cake is a lie!
metalfan78 said:
Definitely would like an update.zip, just not comfortable doing it through odin...but I would love to have this
Click to expand...
Click to collapse
Well, since you asked nicely.
http://www.tabbal.net/files/Kernel-ttabbal-v1.1.zip
MD5: 606a1ecaa934f97bd26f0bfb617b23b8
Tested just now via Clockwork. It even installs the library for you, so the button notification should work out of the box.
Running great for me on Bionix 1.9.1.
Wow...thanks, ill give it a go. So just flash through clockwork and good to go?
The cake is a lie!
metalfan78 said:
Wow...thanks, ill give it a go. So just flash through clockwork and good to go?
Click to expand...
Click to collapse
Yup.
Let me know what you think.
Is this ready for overclocking like JAC's OC/UV kernels? If so, any chance of posting a demo script for the OC/UV settings?
Also, can we add a user-script to enable AOSP bootanimation.zip files, or is support still commented out in this kernel?
Thanks for your time and hard work, cheers, =)
I have been wanting button notification since i got the phone. Can you choose which button lights up based on what the notification is?
for example menu = txt, home = missed call, etc....that would be awesome!
s0niqu3 said:
Is this ready for overclocking like JAC's OC/UV kernels? If so, any chance of posting a demo script for the OC/UV settings?
Also, can we add a user-script to enable AOSP bootanimation.zip files, or is support still commented out in this kernel?
Thanks for your time and hard work, cheers, =)
Click to expand...
Click to collapse
It's based on Unhelpful's way of doing OC/UV, you have to modify a file and push it to the phone to enable it, then set up the min/max settings with a script or SetCPU. There's a lot of detail over in Unhelpful's thread on the Captivate forum, so it's probably better to point you over there. They have scripts and such for it as well.
Not sure on the boot animation. I'll see if I can find it.
d_bot said:
I have been wanting button notification since i got the phone. Can you choose which button lights up based on what the notification is?
for example menu = txt, home = missed call, etc....that would be awesome!
Click to expand...
Click to collapse
That would be awesome, but it's not that complex. It's all of them for a notification. The Android API wouldn't really be able to deal with that level, but perhaps we could assign the buttons colors and use the color that the app requested? Maybe, but I'm not sure we can turn on just one of them from the code we have right now. The code looks to make a somewhat simple call that turns them all on at the same time. Hopefully as more people look into things, we will learn how to do stuff like that.
i was just downloading the newest CM7 release.. my anti-virus kept saying there were viruses in the zip... is that normal ?
false positive i got the samething too, only thing is my antivirus took all the files and kill the zip so i had to redownload in a safe enviroment
also sometimes when I'm just reading android forums , my anti virus kicks in too. do android files just get recognized as virus on a windows computer?
ilostchild said:
false positive i got the samething too, only thing is my antivirus took all the files and kill the zip so i had to redownload in a safe enviroment
Click to expand...
Click to collapse
They are not viruses. What anti virus are you using?
Sent from space
it "disinfected" the cm7 zip... virus name is trojan-sms.androidos.jifake.a and also deleted some files in the zip.
koopakid08 said:
They are not viruses. What anti virus are you using?
Sent from space
Click to expand...
Click to collapse
optimusv45 said:
i was just downloading the newest CM7 release.. my anti-virus kept saying there were viruses in the zip... is that normal ?
Click to expand...
Click to collapse
Where did you download it from? I would stick to well-known sources for anything. If you got the file from CyanogenMod directly, I wouldn't worry.
Here, in the android development.
bobstro said:
Where did you download it from? I would stick to well-known sources for anything. If you got the file from CyanogenMod directly, I wouldn't worry.
Click to expand...
Click to collapse
Kaspersky internet security.
koopakid08 said:
They are not viruses. What anti virus are you using?
Sent from space
Click to expand...
Click to collapse
optimusv45 said:
Kaspersky internet security.
Click to expand...
Click to collapse
In my opinion thats one of the best antivirus out there. I would have not figured. Still it is one known to give false positives.
Sent from my NookColor using XDA App
I am pretty intense about checking what i put on my device, and I haven't had any problems with the ROMS posted here. (Unfortunately, apps are more likely to be the work of a single individual and are therefore less reliable).
Can you be more specific about which ROM you downloaded? If it was an official release, then so may eyes have been through that code, you basicallybhavebto have had a false positive. I would like to see the offending file, is there a way to quarantine and save the "disinfected" file through kapersky?
i downloaded the ROM from this http://forum.xda-developers.com/showthread.php?t=1344873 My anti virus give me very little freedom as far as modifying identified virus. i can only give location of the "virus" in the zip. on the report it shows "encore cm72-mirage-01262012.zip//system/framework/android.policy.jar//classes.dex" second one" encore cm72-mirage-01262012.zip//system/app/phone.apk//classes.dex"
mateorod said:
I am pretty intense about checking what i put on my device, and I haven't had any problems with the ROMS posted here. (Unfortunately, apps are more likely to be the work of a single individual and are therefore less reliable).
Can you be more specific about which ROM you downloaded? If it was an official release, then so may eyes have been through that code, you basicallybhavebto have had a false positive. I would like to see the offending file, is there a way to quarantine and save the "disinfected" file through kapersky?
Click to expand...
Click to collapse
Okay, i pulled the two classes files out of the zip. I ran them through a couple custom scans on some standard antivirus software and they came back clean. I expect that they are.
I have found problems hidden in classes.dex files before, but those were with user apps. It was easy to see the traffic they were sending (in those specific cases it was packets to ad sites and bogus http sites for keystroke capturing). Any traffic that could be sent through the associated .jar and .apk files would show up in my firewall/packet monitors as coming from the kernel or root (i believe, if anyone knows better on any of this, please chime in) which has traffic, especially in the kernel's case, coming from multiple sources. It would just be hard to pinpoint what, if anything, these specific packages are associated with.
/deep breath
However, I personally am insane and totally paranoid. A week or two ago i posted screenshots showing my kernel was communicating with an IP associated with Amazon, basically going straight down the rabbit hole. The person who responded just pointed out that it was Amazon Web Services and that the traffic could be anything and was nothing to worry about. I accept that to be almost certainly true, but it doesn't solve my curiosity. So i intend to take it out on your presumptive false positives.
To be clear: You are almost certainly fine. I do these things driven by mental illness!
I am going to attempt to run both classes.dex files through a dexdump Java script on Terminal IDE and repost the output. I then hope to have the data interpreted by some indulging soul familiar with the Jasmine syntax the program will hopefully output.
This is something that is far far beyond the skills I bring to the table, and has every chance of failing. If anyone out there knows an easier and/or softer way, feel free to stop me before i hurt myself. I only have access to the nook itself, hence all the hoop jumping, but i believe it is possible. Feel free to disabuse me of that in public or private.
At the very least, i hope i can learn something.
lol i have no idea what you are talking about but thanks !!
mateorod said:
Okay, i pulled the two classes files out of the zip. I ran them through a couple custom scans on some standard antivirus software and they came back clean. I expect that they are.
I have found problems hidden in classes.dex files before, but those were with user apps. It was easy to see the traffic they were sending (in those specific cases it was packets to ad sites and bogus http sites for keystroke capturing). Any traffic that could be sent through the associated .jar and .apk files would show up in my firewall/packet monitors as coming from the kernel or root (i believe, if anyone knows better on any of this, please chime in) which has traffic, especially in the kernel's case, coming from multiple sources. It would just be hard to pinpoint what, if anything, these specific packages are associated with.
/deep breath
However, I personally am insane and totally paranoid. A week or two ago i posted screenshots showing my kernel was communicating with an IP associated with Amazon, basically going straight down the rabbit hole. The person who responded just pointed out that it was Amazon Web Services and that the traffic could be anything and was nothing to worry about. I accept that to be almost certainly true, but it doesn't solve my curiosity. So i intend to take it out on your presumptive false positives.
To be clear: You are almost certainly fine. I do these things driven by mental illness!
I am going to attempt to run both classes.dex files through a dexdump Java script on Terminal IDE and repost the output. I then hope to have the data interpreted by some indulging soul familiar with the Jasmine syntax the program will hopefully output.
This is something that is far far beyond the skills I bring to the table, and has every chance of failing. If anyone out there knows an easier and/or softer way, feel free to stop me before i hurt myself. I only have access to the nook itself, hence all the hoop jumping, but i believe it is possible. Feel free to disabuse me of that in public or private.
At the very least, i hope i can learn something.
Click to expand...
Click to collapse
mateorod: another thing you might try is to upload those files to virustotal . com - that way you'd see what 40 or so A/V programs think of them.
Prob unrelated, but I've have gotten popups on the Cyanogen forums for supposed Javascript malware, alway seemed like a false positive. Running OS/X, Sophos for Mac, Firefox 10...
Ralf
I might try that. Currently, I am trying to use the smali editor to decompile the jar files through Terminal IDE, which has the Java toolset. When I try and run the command line, I get an I/o exception error, which is beyond my powers to diagnose/repair. I have sent the error to a couple people who may be able to help me figure out what my issue is. In the past, I have gotten that error set with apps that need internet access and cannot get it for some reason or another. I don't know why or how that would apply with this situation, but I am still looking at it. For something I consider to be a simple intellectual exercise, it has taken quite a bit of effort, but I haven't quit on it yet.
The objective of this thread is to answer the commonly asked questions, give the newbies a little head-start, protect them from getting flamed and keep this forum focused on more important things
1 > What is root?
If you’re an Administrator on a Windows machine, you have access to the entire operating system and you can do whatever you like. That’s essentially what happens if you root your Android device. With root access, you can get around any restrictions that your manufacturer or carrier may have applied. You can run more apps; you can customize your device to a greater degree; and you can potentially speed it up in a variety of ways.
Click to expand...
Click to collapse
Basically, Rooting a phone grants you the permission to do stuff you normally aren't. Remember that the process of Rooting itself will not change anything on your phone or make your your faster. It is what you do 'after' rooting that makes a difference. Rooting just allows you to make changes that were previously not allowed.
2 > Why to Root?
One of the most obvious incentives to root your Android device is to rid yourself of the bloatware (apps that come pre-installed with your phone) that’s impossible to uninstall. You’ll be able to set up wireless tethering, even if it has been disabled by default. You can also access your entire file system, install special apps that require a root, and flash custom ROMs, which can add extra features and streamline your phone or tablet’s performance. A lot of people are tempted by the ability to completely customize the look of their phones. You can also manually accept or deny app permissions.
Click to expand...
Click to collapse
You can also get the latest android version before HTC releases it. For example we have Jellybean (4.1.2). HTC has not officially released it for our phone. Mostly they never will! You can also overclock (increase the speed of your CPU) your phone!
3 > Why not to root?
There are essentially three potential cons to rooting your Android.
Voiding your warranty: Some manufacturers or carriers will use rooting as an excuse to void your warranty. It’s worth keeping in mind that you can always unroot. If you need to send the device back for repair, simply flash the original backup ROM you made and no one will ever know that it was rooted.
Bricking your phone: Whenever you tamper too much, you run at least a small risk of bricking your device. This is the big fear everyone has. The obvious way to avoid it happening is to follow instructions carefully. Make sure that the guide you are following works for your device and that any custom ROM you flash is designed specifically for it. If you do your research and pay attention to feedback from others, bricking should never occur.
Security risks: Rooting may introduce some security risks. Depending on what services or apps you use on your device, rooting could create a security vulnerability. For example, Google refuses to support the Google Wallet service for rooted devices.
Click to expand...
Click to collapse
You must be willing to compromise with these factors before you decide to root. Personally, I haven't regretted my decision of rooting even for a second! I'm sure most of the guys on this forum feel the same way. However it is your choice.
4 > How do I root my phone?
You can either use this step by step guide
Or use this All-in-one Toolkit
5 > What is Recovery?
A recovery is a small distinct environment separate from Android that allows diagnostic updates, and the ability to perform factory resets. The main purpose of this is to provide a way to reset an Android device when it may be impossible to boot into it.
The Android stock recovery is very basic and controlled via the volume keys and power button at the top of the device.
Custom Recoveries perform the same tasks as the stock-Android recovery with a few addition features, such as the ability to make full system backups, as well as flash custom roms. It is important to note that custom recoveries are recommended to those users with rooted devices, however a rooted device is not required. Anyone with an unlocked bootloader can install a custom recovery on their device.
Click to expand...
Click to collapse
Basically, Recovery saves your ass when you screw up! But it has many other important features.
6 > What are the different Recoveries available for HTC Desire C?
Currently there are two recoveries available for HTC Desire C.
Team Win Recovery
Clockwork Mod Recovery
7 > How do I install a recovery?
Follow Step 3 of this thread. But instead of the link provided there, use one of the two links I posted in the previous question.
8 > Which recovery is better?
I use TWRP because I find it user friendly and it has got more functions.But CWM is more famous and widely supported. You can choose what you like.
9 > What is a Custom ROM?
A stock ROM is the version of the phone's operating system that comes with your phone when you buy it.
A custom ROM is a fully standalone version of the OS, including the kernel (which makes everything run), apps, services, etc - everything you need to operate the device, except it's customized by someone in some way.
So what does the "customized" part mean? Since Android is open source, developers are free to take stock ROMs, modify them, strip them of garbage, optimize them, add things, and pretty much do whatever their imagination and skills allow.
Click to expand...
Click to collapse
My definition - A Custom ROM is a developer's idea of what the phone 'should have been like'. He takes the stock rom and modifies it to improve performance, looks, animations, battery life etc.
10 > Why to install a Custom ROM?
Updated versions: You can load the latest and available Android versions which can make your old phone look new.
Great number of feature filled custom ROMs: It will be a chaotic task for you to find the apt one as there are bunches of great custom ROMs available for different devices.
Personalization: There are a number of features that can be customized to suit your taste and working environment. For instance, Custom themes can bring a new look and feel to your device.
Improve performance: The custom ROMs allow its users to find out the unnecessary apps they have on their device and helps them to get rid of them, thus increases the speed of processing and improves battery life.
Install Apps on SD card: This is currently not possible with stock ROMs. If your phone ran out of space occasionally when install new apps this is a killer feature to have.
Better signal and quality: Custom ROMs help you to improve your base-band which in turn increases the signal and quality of your phone call.
Click to expand...
Click to collapse
Other reasons that you won't find on Google - "The thrill factor involved", "To show off to your friends" and "Because you can!"
11 > Why not to install a Custom rom?
Bricking: This is one of the main reason why people hesitate to root their devices. Some devices after the rooting process may become useless and the only option left with you is to get a new one as the manufacturer will cancel the warranty if they find any attempts of rooting.
Loss of all Data: When you install a new custom ROM, it will clean up your system and therefore you will loss all your installed apps and data.
Risk Factor: Most of the apps will be open source and the trust you have on developers may cause a potential risk to you in the future.
Reboot: If the rooting is not successfully done, the device may enter to an infinite loop of booting.
Click to expand...
Click to collapse
Even though this may seem concerning, it will happen only if you don't follow instructions correctly or do something extremely stupid. As of now, there is no way to completely brick an HTC Desire C! You can fix 'Loss of Data' by taking a backup and you can fix reboot by using the Recovery mode we discussed earlier.
12 > What are the different Custom ROMs available for HTC Desire C?
Look HERE. Take your pick!
13 > Which is the Best ROM for this phone?
NEVER EVER ASK THIS QUESTION!! This is a very subjective question. It differs from person to person. It takes a lot of time/energy/efforts to build a custom ROM and asking this question is a very big insult to the makers of these ROMs! Try out different ROMs and choose what you like.
14 > What is a Kernel?
The central module of an operating system. It is the part of the operating system that loads first, and it remains in main memory. Because it stays in memory, it is important for the kernel to be as small as possible while still providing all the essential services required by other parts of the operating system and applications. Typically, the kernel is responsible for memory management, process and task management, and disk management.
Click to expand...
Click to collapse
If our phone was a movie, the Kernel would be the director! It is the brain of our phone. And even though it is the most important part of our phone, it is just a single (.IMG) file and only a couple of MBs!
15 > What are the benefits of a custom Kernel?
Adjust CPU frequencies and set profiles like OnDemand, Battery Saving, etc.
Underclock and overclock CPU speeds
Underclock and overclock GPU speeds
Adjust voltage
Adjust touch screen sensitivity
Equip your phone with BLN (backlight notifications)
Custom recovery that allows backups and restorations of entire ROMs as well as installation of .zip files
Minimum screen brightness pushed past the limitations of stock kernel
Conserve battery (with the right settings)
Click to expand...
Click to collapse
There are a lot of Technical advantages of a good coded custom kernel. Fortunately, you don't have to worry about all that. Most of the work is done by the developer himself.
16 > How to flash (install) a custom kernel? OR How to flash boot.img?
You can either use this Auto Boot.img Flasher
Or read this
17 > Which is the best Kernel for this phone?
NEVER EVER ASK THIS QUESTION!! This is a very subjective question. It differs from person to person. It takes a lot of time/energy/efforts to build a Kernel and asking this question is a very big insult to the makers of these Kernels! And remember, not all Kernels are compatible with all roms.
REMEMBER - Use Sense Kernel with Sense ROMs. Use CM10 Kernel with Cm10 based ROMs. It can't get much simpler.
18 > How to overclock my phone?
You cannot overclock with a stock kernel. You MUST have a custom kernel to overclock your phone. Once you have a custom kernel you must install either 'SetCPU app' or 'NoFrillsCPU app'. You need any one of these to control the CPU speeds.
19 > Is it safe to overclock my phone?
I will not say this is completely safe. But i have yet to come across somebody who actually screwed up his phone just by overclocking. So use at your own risk. Also remember that all phones have a different capacity to overclock. If you try to overclock it higher than that, it will go into a 'reboot loop'. But you can fix that by flashing a lower frequency Kernel. It is not a problem.
Miscellaneous Questions > What is GAPPS?
Gapps is short for Google Apps. These are apps made by google like Google Maps, Playstore, Gmail, Google search etc. They are available to download in the Play Store and can also be flashed as a zip in recovery mode. For a complete list of apps click HERE. Not all Gapps are available in all countries.
> How to increase battery life? OR How to save battery?
Read THIS (Not only read it but apply it too! ) . If nothing else works, buy a better battery.
> Task Managers - Good or Bad?
Long story short - If you don't know what you are doing, Stay away from task killers. If you think that constantly killing apps will free more RAM and therefore speed up your device, you are mistaken. The app that you kill will restart itself and this will cause you more of your phone's resources than you think you saved. In fact, task managers do more harm than good. A lot of Developers agree with this. Android itself does a very fine job of managing tasks so that you don't have to mess with it.
Read this in-depth article on task managers HERE
> What is Clean Flash? What is Dirty Flash?
Clean Flash is wiping cache, dalvik cache and data before flashing a zip or installing a ROM through recovery.
Dirty Flash is wiping cache and dalvik cache only
Clean flash is much recommended and causes less problems down the road. If the instructions specifically ask to to clean flash, you must do so. You will lose all your data when you will clean flash. But dont worry, clean flash will not affect your internal or external memory card. You will lose your apps and settings and game data. Your phone will act like it is just out of the box.
You can Dirty flash when flashing small modification zip files. Or perhaps a minor update to the rom (unless the instructions ask you to clean flash). You will not lose any data while Dirty flash. But sometimes, you are more likely to face problems like apps closing which could have been prevented by Clean flashing.
Personally, i always clean flash when installing a new Rom. It is a good habit to follow in the long run.
> What is ADB?
ADB stands for Android Debug Bridge. It is a very useful tool. Using ADB, we can control our android phone using our PC. We can copy or delete files, install or uninstall apps, take a logcat, reboot our phone and a lot of other functions. Here is a really cool guide to ADB.
Here is the list of the common adb commands :
adb devices – lists which devices are currently attached to your computer
adb install – lets you install an Android application on your phone
adb remount – Remounts your system in write mode – this lets you alter system files on your phone using ADB
adb push – lets you upload files to your phones filesystem
adb pull – lets you download files off your phones filesystem
adb logcat – starts dumping debugging info from your handset to the console – useful for debugging apps
adb shell – drops you into a basic linux command shell on your phone with no parameters, or lets you run commands directly
> How to get a logcat?
There are basically 3 ways to get a Logcat:
Using an app (Catlog ; aLogcat ; Logcat Extreme)
Using terminal emulator
Using ADB
I personally use ADB whenever I have to take a logcat. Also, it is the only method where it is possible to take logcat when the phone boots (bootanimation).
For Method 3, connect your phone to the PC, open command window, navigate to C:\Program Files\Android\android-sdk\platform-tools
Then type
Code:
adb logcat > (any name).txt
Wait for some time as the logcat builds. Then press Ctrl+C to stop taking logcat. You fill find a .txt file in the platform-tools folder. That is your logcat! Now upload it to a site like Dropbox and post a link when required.
Make sure you have USB Debugging enabled when doing this.
> How does the thanks meter fill up?
ngoralph said:
1st bar - 26
2nd bar - 51
3rd bar - 101
4th bar - 201
bug here, never gets to 5 bars, probably 501 if fixed.
6th bar - 1001
7th bar - 2001
8th bar - 5001
9th bar - 8001
Maxed! - 10000
Click to expand...
Click to collapse
> User Titles on XDA
ngoralph said:
- Junior Member - New members with less than 30 posts.
- Member - Members with more than 30 but less than 100 posts.
- Senior Member - Members with 100+ posts.
- Recognized Contributor - A title given to members who have helped people with various problems. You can apply for this position or ask a Forum Moderator, Senior Moderator, Recognized Contributor to nominate you. They don't give it away for free though; you have to meet some requirements.
- Recognized Themer - A member who's known for original themes. You can apply to the Senior Moderators yourself, or ask a Recognized Contributor to nominate you.
- Recognized Developer - A title given to a member for his/her work in his/her device-specific development. You can apply to the Senior Moderators yourself. I don't think anyone can nominate you here. The developer committee assesses your overall activity and decides whether you're eligible for this position.
- Elite Recognized Developer - This title is given to Recognized Developers who have provided outstanding work, way beyond the knowledge of us mere mortals. A Recognized Developer is re-assessed by the developer committee before being given that title.
- Forum Moderator - This title is given to Recognized Contributors who are responsible enough to handle a forum on their own with some other such members of course. They have to fill out an application (which is no longer available now) and then the moderator committee approves of them.
- Senior Moderator - Senior Moderators are in charge of the whole site-wide support for Forum Moderators and nitty-gritty business that Forum Moderators cannot look after.
- Administrators - Next comes the admins who are responsible for everything as a whole. Each look after a specific part of XDA.
- MikeChannon's the dude behind all this. He's the Forum Administrator.
Other titles you may come across are
- Moderator Committee - sits on the Mod Committee
- Developer Committee - as above, but for Developer Committee
- XDA Newswriter - publishes articles for the Portal (front page)
- Retired xxxx - have since officially 'left' their XDA position
Click to expand...
Click to collapse
Thread Layout Tips (by me4488)
Here are some basic Layout tips that will make your thread look more appealing, and pleasant to read.
1 > You need to have all of the basic 5 stepping-stones for every thread you create.
ROMS: Features, Requirements, How-to, Screenshots, Download links. (Optional: Notes/Warnings you may add)
KERNELS: Features, How-to, Download links. (Optional: Benchmarks)
THEMES, APPS AND MODS: Features, How to, Download links, Screenshots. (Optional: Play store links.)
GUIDES: FAQs, Credits, Links, Explanations. (Optional: Personal comments.)
2 > Optional but highly recommended.
Some of you guys let this pass over your head, but i cannot emphasize enough how much you need to have those.
CREDITS - Thank the people who helped you during your hard work. It really helps you establish some good allies and prevent arguments. Not to mention the warm sensation in an assistants tummy when he sees his name in a thread that exploded.
CHANGELOGS - Please add every single change you make when you update your work. Its really frustrating sometimes, to wait for a big update and then have to go through everything to figure out what it did. Also it helps yourself to stay organized and aware of the changes you make, because let's admit. We all forget.
3 > Follow the rules.
Stealing, swearing, and blaming in an OP will get you banned.
Remember to set up a github where all the changes to your work are made. Its against the rules to not do so. Don't abuse caps, big fonts, colors, styles, etc. It just makes people want to report your thread.
4 > Cosmetics
Use colors and [Bold] to separate the different points of your thread(Headers/Sub-Titles). For example the basic 5 points should be in bold and a different color so that readers can easily make out what they are going to get information on. This thread itself is an example on good cosmetics.
5 > Optional stuff
Regular updates on the working process are greatly appreciated by the users. It shows that you are interested in providing updates and communicating.
Mirrors to your work are really helpful, you might upload them yourself or you may let other people do so, but either way, it ensures that everyone has access to your work at any point of time.
Videos showcasing the work you are presenting. Its always nice to have a visual demonstration of what you are offering, even though it may be a little hard to execute.
6 > Some tips:
Have the headers centered and use bigger fonts on them.
Don't use bright or hard to read colors like cyan, yellow or pink, it irritates the eyes and makes it less appealing to people that are willing to read.
Follow the example you started with. If you decide to make your layout in a specific manner don't go changing it mid-way.
If in doubt, reference other threads for examples.
Get creative, use your imagination, think outside the box. Innovation is good.
Examples of threads that have great layouts, and a basic template.
Great Layouts: Example #1 ; Example #2 ; Example #3
Everything is well organized here and cannot be criticised.
Note: Example #1 is missing the changelogs because the dev just helped us out. Support is up to us.
Good/Mediocre Layouts
Example #1 - The layout itself is very well structured but those little details like the bright yellow and the monotone text size/style.
Example #2 - Not the best way to post a thread. Most times 2 posts are unnecessary. Features list missing. Also i am a little against the excessive urging for people to thank/donate to you.
Bad layouts - Any thread missing the 5 important stepping stones, or not following common sense.
Experiment with your own styles, and use common sense, asking yourself “Jee, will this look good if I did this and that?”
P.S. The examples given were chosen based on my sense of giving examples and are completely randomly chosen.
Proper Forum Manners (by aashay960)Being a member here on XDA, you are expected to behave in a manner that will not cause any inconvenience to your fellow members. People are here because they choose to be here, because they like being here and helping out. They do not owe you in any way. They can choose not to help you if they find your manners disrespectful. You are here because you need their help. Disrespecting any one member or not following rules can leave a negative impression on the other members about you and they might choose to ignore you.
XDA Forum Rules <-- Read this
Here are some points to help you follow proper forum manners/etiquette.
1 > I have a Question, What should I do?
The first thing you should do is use the ‘Search’. Xda has an excellent and organised searching mechanism. You can search within a particular thread, a particular forum or search the entire website at once. It is very likely that you are not the first person to encounter this problem. If searching on XDA does not satisfy you, Search on Google.
From my personal experience I can tell that searching is indeed the best way to solve your problem. More often than not, I find the answer by searching rather than asking on a thread.
If you still cant find the solution, post your query in the Q and A section.
Don't Post vague titles like “HELP!”, “EMERGENCY!” It will not attract more people to your thread to help you. In fact, it irritates people. Xda members will try their best to help you with all kinds of problems - small or big. It would be much more appreciated if you name your thread clearly like [Q][NAME OF PROBLEM][WHAT ROM]. And avoid posting things like “HELP!!” or “pls halp!” in your posts as well. Doing so will not be any help.
2 > I am excited about the release of the next version of this rom. What should I do?
Never ask things like “When will you release the next version?” “How much more time to the next release?” “Please release the next version soon”. This is called asking for ETA and this is not welcomed here. The developers pursue this as a hobby and do so in their free time. They will release the Rom when they feel it is ready to be released. Trust me, they have no gain keeping it to themselves. They WILL share it with you.
Also, do not post things like “Waiting for the ROM” or “Excited about the next release”. They do nothing to help others and just add to the clutter.
One rule to follow before posting anything is to ask yourself - Will this make a difference? If the answer is no, don’t post it.
3 > I am facing a bug with the Rom. What should i do?
Be descriptive about your problem. Try to give as much information as you can about it rather than writing “pls help”. Mention the name of the rom, name of the kernel. Provide screenshots if you think they might help. Also mention what you did ‘before’ you found the bug/problem. It is often the last thing you do that messes up your ROM.
Also, Learn how to take a logcat. There are hundred of guides showing you how to do it. Use the Search box. It’s not Rocket science..
4 > I really like somebody’s work and would like to share it. What do I do?
Make sure you ask permission from the original maker of the guide/rom/kernel/app you want to share. And make sure you mention his username in your thread and thank him for doing his work. It is also recommended to provide a link to the original thread.
5 > I really like somebody’s work. I want to tell him that I appreciate it. What do I do?
This is pretty obvious but, HIT THE THANKS BUTTON. The developers feel really happy when you press the thanks button. It encourages them to keep working hard.
The thanks button is enough to show your gratitude. You don’t need to post things like “thank you” or “i really like your work” or “Great job”. This will increase the clutter in the forums. This is what the thanks button was made for.
Some developers also give you the option to donate money to them. If you would really like to show your appreciation, you can click on the “Donate to Me” button in the signature, or under their profile picture.
6 > Another user is disrespecting me or disobeying the rules. What should i do?
Use the “Report Post” button (the exclamation mark on top of the post). DONT fall down to his level and start disrespecting or abusing him. That could result in both of the users getting banned.
Wanna learn more?
[Lists]Guide Ride-From a Newbie to a Dev, Get all you need here
[READ FIRST] [REF] Dictionary for n00b - What is.../What does ...mean?
This thread will always be a 'Work in Progress'. Please post any suggestions/questions/additions/feedback
I suggest making it sticky.
Great work , much appreciated :good:
Added - What is GAPPS?
Great job on this topic. Just 2 things: Undervolt is most commonly used. Also " therefor " has an e at the end( Therefore ).
Code:
therefor: adv. for that [thing]; for that, for it
Ex. I will give you my pocket knife if you will give me your watch therefor.
therefore: adv.consequently, hence
Ex. I think, therefore I am. I was afraid; therefore I ran.
me4488 said:
Great job on this topic. Just 2 things: Undervolt is most commonly used. Also " therefor " has an e at the end( Therefore ).
Code:
therefor: adv. for that [thing]; for that, for it
Ex. I will give you my pocket knife if you will give me your watch therefor.
therefore: adv.consequently, hence
Ex. I think, therefore I am. I was afraid; therefore I ran.
Click to expand...
Click to collapse
1) If I'm not mistaken, our phone does not have a kernel with undervolt support right?
2) I know the meaning/spelling of therefore. Must be a typing mistake. Haha
aashay960 said:
1) If I'm not mistaken, our phone does not have a kernel with underclock support right?
2) I know the meaning/spelling of therefore. Must be a typing mistake. Haha
Click to expand...
Click to collapse
Thanks for taking that in mind man <3 I'm just a grammar nazi, sorry bout that. And I undervolted it to 75 MHz.
me4488 said:
Thanks for taking that in mind man <3 I'm just a grammar nazi, sorry bout that. And I undervolted it to 75 MHz.
Click to expand...
Click to collapse
I think there is a misunderstanding between us. There s a difference between underclock and undervolt. What you are talking about is underclock. Undervolt has got to do with how much voltage the battery is supplying. We can reduce it to save battery but it causes stability issues.
PS - I'm all for correct grammar too And Congratulations on becoming a senior member! :good:
Added - How to save battery?
aashay960 said:
Added - How to save battery?
Click to expand...
Click to collapse
http://forum.xda-developers.com/showthread.php?t=991276( save battery+performance).
aashay960 said:
I think there is a misunderstanding between us. There s a difference between underclock and undervolt. What you are talking about is underclock. Undervolt has got to do with how much voltage the battery is supplying. We can reduce it to save battery but it causes stability issues.
PS - I'm all for correct grammar too And Congratulations on becoming a senior member! :good:
Click to expand...
Click to collapse
I am a senior member? Wow xD Thanks for actually telling me, i dont pay attention to that stuff. If you dont mind, im going to look for some more stuff that you can add here so we can make this more helpfull. For example, you can dedicate a little paragraph for task killers. Here is the link Cons (and no pros)
me4488 said:
I am a senior member? Wow xD Thanks for actually telling me, i dont pay attention to that stuff. If you dont mind, im going to look for some more stuff that you can add here so we can make this more helpfull. For example, you can dedicate a little paragraph for task killers. Here is the link Cons (and no pros)
Click to expand...
Click to collapse
Thanks bro. Any help would be appreciated. My college started today so I'm gonna be super busy. My college is 1 and a half hour away from my home!
But I will still continue to give my time and effort for this forum because i love it and the people here.
Ohh I have already read that article before!. But everyone seems to have a different view about task killers. I myself don't use it. So honestly I don't know what to believe..
aashay960 said:
Ohh I have already read that article before!. But everyone seems to have a different view about task killers. I myself don't use it. So honestly I don't know what to believe..
Click to expand...
Click to collapse
Ive seen recognized developers talk about how bad task killers are. I would rather believe them than the people who download task killers to have more ram which is actually unimportant. Like said in the article, the low memory killer does its job nicely without the need of additional help.
This and This
So my thought is completely against them.
Also keep your studies at 1st priority. :3
me4488 said:
Ive seen recognized developers talk about how bad task killers are. I would rather believe them than the people who download task killers to have more ram which is actually unimportant. Like said in the article, the low memory killer does its job nicely without the need of additional help.
This and This
So my thought is completely against them.
Also keep your studies at 1st priority. :3
Click to expand...
Click to collapse
Looks good. I use watchdog too.. I will add it soon :thumbup:
ADDED - Task managers - Good or Bad?
Added - Clean flash and Dirty flash
Automatically optimizes SQLite databases on boot, on schedule, every X days.
Just a quick and dirty adaptation of an old SQLite3 optimizer script from init.d days to a Magisk Module using a service.sh script instead, with an internal date offset mechanism to run the script every X days (default: 3 - which is plenty, and specifically to stop silliness).
Update And credit note: finally after a fair bit of digging, i think i located the original author of the original init.d version of the main vacuum code snippet ive repurposed (stolen) for this module. It appears to be from user @mcbyte_it (doesnt seem to be current or active) and from a post here. Although i only saw derivative reworkings of this script, and used only the main sqllite script function, i arrived at a different method of tracking last run date, when his is arguably more mainstream/concise. Im fairly certain this is the originator especially as the post also has a zipalign script that was also suggested to me to do....and which i have been fiddling with for months....
The script will wait until boot is completed AND then until avg CPU usage is under 30%, to minimise the risk of possible corruption.
Disclaimer: As always any use of any 3rd party script/software/advice is at the users discretion. All reasonable efforts have been made to make this as safe as possible, but the responsibility ultimately falls to the user whether to use and run the script.
What it does:It:
Reindexes
Vacuums
Analyzes
all .db files under /data.
It runs a 1st run optimize after install (temp file optimsql_first_run on sdcard is used to enable this, and removed after first run), and then on schedule after that.
By default it logs just script progress to /storage/emulated/0/autosqlite.log, but you can choose to enable more detail in the log if you wish
User Configurable Options:The schedule and loglevel can be changed by an external file on sdcard:
Create a file named autosqlite_options on sdcard (/storage/emulated/0/)
Inside create the follow key=value pairs to suit your preference:
interval=x (where x is the number of days between script runs, for the love of god do not put 1 (this goes out especially to the kind of people who put every app on their Magisk magiskhide/deny list) there is no benefit and you just heighten the possibility of corruption)
loglevel=x (where x is either 1 (detailed logging) or 0 (basic logging - default))
Requirements:This module requires a working SQLite3 binary. If your ROM does not provide one (you can check via typing sqlite3 into a terminal), you can choose to use my SQLite3UniversalBinaries module located here:
https://github.com/stylemessiah/SQLite3UniversalBinaries
Dont forget you need to download a named SQLite3UniversalBinaries.vx.x.zip file from the Releases page under Assets. Do not try installing the source code with Magisk Manager, it will not go as you expect
All the modules action takes place in the service.sh file, its commented reasonably well for those wanting to check how it works
* See... now theres something else to use with my SQLite3 Universal Binaries module other than the GPay SQlite Fix Module <- dont use that anymore, it makes me stabby. It is literally the last resort for getting Google Pay/Wallet to work ,
Please note: the included LICENSE only covers the module components provided by the excellent work of @Zackptg5 's Magisk Module Extended, which is available for here for module creators
https://github.com/Zackptg5/MMT-Extended/
All other work is credited above and no one may fork or re-present this module as their own for the purposes of trying to monetize this module or its content without all parties permission. The module comes specifically without an overall license for this intent.
Download:
Repo: https://github.com/stylemessiah/AutomaticSQLiteDBOptimizer
Release: https://github.com/stylemessiah/AutomaticSQLiteDBOptimizer/releases/latest
Powered by Ponkle
@73sydney Nice! If you're looking for newer sqlite3 binaries, I have a build script you can use to build it or you can just grab the precompiled ones at my repo: https://github.com/Zackptg5/Cross-Compiled-Binaries-Android
Zackptg5 said:
@73sydney Nice! If you're looking for newer sqlite3 binaries, I have a build script you can use to build it or you can just grab the precompiled ones at my repo: https://github.com/Zackptg5/Cross-Compiled-Binaries-Android
Click to expand...
Click to collapse
cheers man, i was trying not to pinch all your toys
i mean i could have done an androidacy and scraped your repo for just the files i needed
plus im lazy
73sydney said:
optimizes SQLite databases
Click to expand...
Click to collapse
Nice
how about no schedule, i want to execute it whenever i want
possible ?
loopypalm said:
Nice
how about no schedule, i want to execute it whenever i want
possible ?
Click to expand...
Click to collapse
I refer the gentleman to the name of the module and title of the thread:
"Automatic SQLite DB Optimizer"
the distinct lack of the word "manual" should be a clue
what are they teaching in school these days?
i made this to be automatic and made special note about the intervals because theres people who would abuse this and run it every day if they could, both designed to avoid misuse/abuse:
interval=x (where x is the number of days between script runs, for the love of god do not put 1 (this goes out especially to the kind of people who put every app on their Magisk magiskhide/deny list) there is no benefit and you just heighten the possibility of corruption)
im not really interested in making a manual version option unless you can convince me where there is a use case benefit, because all i see is potential for misuse/abuse that i specifically made this to avoid....
running it by default it runs every 3 days which is twice a week and probably still overkill, but trying to cover all bases
your other option is to ask me for permission (sadly because of abuse in the past from certain entities trying to monetize my and others work, my contributions are not GPL etc) to fork and alter the code yourself....
73sydney said:
I refer the gentleman to the name of the module and title of the thread:
"Automatic SQLite DB Optimizer"
the distinct lack of the word "manual" should be a clue
what are they teaching in school these days?
i made this to be automatic and made special note about the intervals because theres people who would abuse this and run it every day if they could, both designed to avoid misuse/abuse:
interval=x (where x is the number of days between script runs, for the love of god do not put 1 (this goes out especially to the kind of people who put every app on their Magisk magiskhide/deny list) there is no benefit and you just heighten the possibility of corruption)
im not really interested in making a manual version option unless you can convince me where there is a use case benefit, because all i see is potential for misuse/abuse that i specifically made this to avoid....
running it by default it runs every 3 days which is twice a week and probably still overkill, but trying to cover all bases
your other option is to ask me for permission (sadly because of abuse in the past from certain entities trying to monetize my and others work, my contributions are not GPL etc) to fork and alter the code yourself....
Click to expand...
Click to collapse
i was planing to use it once a week
categorizing me with people who do dumb stuff is an 'insult'
i asked a simple question man, don't jump to level 3 mind game please ...
loopypalm said:
i was planing to use it once a week
categorizing me with people who do dumb stuff is an 'insult'
i asked a simple question man, don't jump to level 3 mind game please ...
Click to expand...
Click to collapse
Im sorry, did you miss the double smileys intended to completely avoid any misunderstanding that i was being jovial. the other tip off that i wasnt burning you was taking the time to write several paragraphs
Can i suggest you just set the options file interval to 6 or 7 and let the module do what its described in the title as doing, it would make no functional difference, other than saving you a trip to terminal?
As i said, give me a valid reason for adding a manual option and ill gladly consider it, choosing a reason that fits completely within the actual parameters of the existing module doesnt really fit that offer...
ill go further to why i specifically didnt put in an option to run it manually (really folks are lucky i didnt block the option to run it every day) because you should understand what the sqlite vacuuming and other processes do:
* They copy the data from the db file to temp file before optimising it and writing it back, at any point in this theres the potential for corruption (sudden power loss, other processes accessing the file etc). Ideally any such corruption would be minimised by journaling but anyone who had used Linux for long enough knows not to count on such things.
* If any db is being written to, then the optimization process will NOT optimize that db...for the above possible corruption reasons. Hence why i not only put in a wait till boot completed function BUT also added a function to block the script from running unless avg cpu load over 5 minutes is less than 30%. all this to try and make things as safe as possible. So im not overly fond of a manual option which bypasses these safeties i specifically put there to hopefully safeguard people as best as possible. I dont want to get messages about how my module hosed someones apps.
Perhaps that better addresses my reasons?
As said, you can also ask me to fork the code, and ill even tell you how to add a manual function, but i personally wont be releasing such a version without a better reason than i want to do it every 7 days, when the script as it stands can do that AND at a far more predictably safe time and way than you manually likely can or will use it....
BTw, how is actually responding, even taking the time to do so and being jovial about it "level 3 mind games?", whatever the hell that even is?
73sydney said:
.
Click to expand...
Click to collapse
i was planing to make a recovery backup of "DATA" after the optimization of DB files ...
if you want better result add a comand to kill the coresponding app, then it would be more stable
or tell the people to use FlushRam or something like that before the proccess start, to make sure the result will be good, or make a 2nd module for advanced users ...
even with the condition you said some system apps stays working in the background and messing with their data can lead to corruption
i don't know you or your previous work and i don't have time to care for that
i just asked a simple question
answer with "NO, my module will not do that"
this will save your time and other people time
loopypalm said:
i was planing to make a recovery backup of "DATA" after the optimization of DB files ...
if you want better result add a comand to kill the coresponding app, then it would be more stable
or tell the people to use FlushRam or something like that before the proccess start, to make sure the result will be good, or make a 2nd module for advanced users ...
even with the condition you said some system apps stays working in the background and messing with their data can lead to corruption
i don't know you or your previous work and i don't have time to care for that
i just asked a simple question
answer with "NO, my module will not do that"
this will save your time and other people time
Click to expand...
Click to collapse
1) whether before or after backup, the files will eventually get optimized - if you want a more manual version use SD Maid or as offfered you can ask me how to alter the code as it sits and make your own version.
2) Im not ever releasing a script that kills anyones apps in the background, i would consider that suboptimal, and basically malware
3) I never said that some "system apps stays working in the background and messing with their data can lead to corruption". What i said was i designed the script to best avoid corruption by running only after boot completed and when avg CPU usage over 5 minutes was less than 30%. The sqlite3 itself generally wont allow access to a file in use. Im just adding what i think is a reasonable level of extra safety by deciding when the optimization routine starts to run, and that it isnt abused/misused by running multiple times in an unreasonable timeframe
4) How does
I refer the gentleman to the name of the module and title of the thread:
"Automatic SQLite DB Optimizer"
the distinct lack of the word "manual" should be a clue
not equal "NO, my module will not do that", only with some attempt at humour and a long explanation (soon followed by a more reasoned explanation) because i didnt want to appear dismissive. Yet it looks like you’d have preferred dismissive??
You seem impossible to please anyway someone tried to do it....
To be honest Im tired of this circular conversation. Everyone else knew from the word automatic in the title how things was going to work. Ive made suggestions of alternatives (SD Maid) and even offered to give you the info to change the script for yourself, and cant do more than that.... please choose one and lets move on, please?