Showing posts with label kernel. Show all posts
Showing posts with label kernel. Show all posts

Tuesday, October 1, 2013

Getting Android 4.3 on Samsung Galaxy S2 GT-i9100 -- Part 1

Part 1 - Rooting Your Phone

Galaxy S2 GT-i9100



All the people who have Samsung Galaxy S2 with them will not be getting an update to Android version 4.3 Jellybean from Samsung Galaxy S2 GT-i9100. But you can always flash the Jellybean firmware by flashing the firmware manually. After flashing you may not get the look of Samsung phone, but you will be having the latest firmware running on your device with the looks of Google Nexus. And its really worth it, as you get all the features of latest version of Android. But the downside is, your phone would be Rooted.

Saturday, June 8, 2013

Rooting an Android Phone: Benefits and Risks

For Starters
Whenever we get an Android device, there are lots of restrictions put to the user by the phone/device manufacturer. Though, Android is an open source platform, the device manufacturer provide the device with many already loaded software which we may not need or even the manufacturer may disable a few features so as to keep the cost of the device low.
Rooting an Android means gaining administrative privileges on the system or you can say, gaining root access on the system. When we buy an Android phone and use it, we are basically just a guest user of Android OS. We cannot make any changes to the system files of the OS, because we cannot access the Android root folder.
When we have gained root access on our phone, we can browse the Android root folder and make changes to the system files on our phone. And hence we can make all kinds of changes, even those restricted by the device manufacturer, which is why after rooting your phone, its warranty is null and void. There are many powerful applications available for users to use after rooting the Android phone, which we cannot use on a non-rooted phone.
Manufacturers mostly stop providing updated OS for the device after a few years of its launch, which may deny the user of experiencing new features provided in new OS and may leave the user unsatisfied. But if you rooted your phone, you can install an alternative OS, a developer-made version of OS, popularly known as Custom ROMs that would offer you to install latest Android OS on your phone even though the manufacturer has denied support for it.
After rooting, we can also over clock the processor inside the device, thus getting better performance from our device. By over clocking, we can use some apps freely which otherwise would work very slowly on our device. If you desire a powerful device, you can install a Custom ROM with inbuilt over clocking features.
Here now, I'll be sharing benefits and risks of rooting your phone and where you can find great Custom ROMs.
Rooting?
Rooting is a process that provides users with full control and access to an Android device. Rooting is often done to avoid/override the limitations done by the device manufacturer. Once root access is achieved, we can replace or change applications, system settings, run special apps, etc.
After rooting, we will be able to install Custom ROMs, replace our original OS with another version of OS that would give us more control over the device and its settings. That's popularly known as "Flashing a Custom ROM".
So, how to root my Android phone?
The process of rooting an Android phone is different for different devices. The most common method is to flash a kernel with root access.
Rooting voids the device warranty, but even after rooting if you flash a stock ROM, everything's back to their original state. So don’t worry.
Why?
After rooting, you can remove any unwanted applications and games that the device manufacturer installed before you purchased the phone. And thus you can free up some space on your Android phone for some more applications that you may need.
After rooting, you can update your phone to latest version of Android faster than your phone manufacturer provides it to you. From the time Google announces a new Android version to the time your device manufacturer provides it for your device, it would take around a few months or longer.
After rooting, you can make complete backup of your device to restore it later on your phone. We can add many features to our phone that were disabled by manufacturer or not provided by manufacturer. We can also improve the battery life of our phone by fiddling with the new controls of the phone.
Risks?
The biggest risk in rooting an Android device is that it will void the manufacturer's warranty. If you've flashed a custom ROM on your phone and there's a problem with your phone, then the manufacturer won't be happy to help you or may even charge you more.
Anyways, there's always a "RESTORE" option available, you can always flash a Stock ROM, and make the device as you got it from the manufacturer, back to "ORIGINAL STATE", and the manufacturer/service centre guys won't be able to figure out if you ever fiddled with your phone.
WARNING! If you make any mistake in steps to flash a ROM/Kernel, there's a chance that you will BRICK your phone, which means that your phone would be no better than a brick on the road.
You should be reading everything about a particular custom ROM/Kernel, before flashing it, so you know what you should be doing in case you run into a problem. If you are a member of any forums related to this, read all the replies to check if there are any problems with the ROM with your particular device.
Places to Find Help
I am member of following forums:
I would also recommend you to join these forums for getting help about rooting and custom ROMs.
Read all the details in these forums about what you're going to do, and understand it before doing it.
Custom ROMs
Custom ROMs are firmware, made by other developers, for Android devices that provide features that are not found in the stock Android OS. They are often built from the official files of Android or kernel source code.
Popular custom ROMs are CyanogenMod, Paranoid Android, MIUI , AOKP  (Android Open Kang Project).
There are many other custom ROMs available, you can check the above given forums for many more custom ROMs.
CyanogenMod is the most famous of all the Custom ROMs. They support many numbers of devices and the ROM they provide looks similar to the Stock Android OS.
Special Applications
There are many apps that would require root access and provide you with extra device management and functions other than what the Stock OS provides.
Even if you don't want to install a Custom ROM, after rooting you can install these special applications to get better functionality from your phone. Applications like ROM Toolbox Lite, Titanium Backup, ROM Manager and ES File Explorer.
Take a Backup
It is always better to take a complete backup of your phone before getting to Flashing ROMs/Kernels. They'll help you in case you get a problem with the ROM/Kernel you flash. It is always better to take a backup and test it before flashing a Custom ROM.
Finally
Rooting and flashing may seem a bit too complicated, but don't worry, there are huge number of users in the forums who will be happy to help you out of trouble. Even though, the process of rooting differs with the device, it isn't as complicated as it may sound.
At last, it depends on you and your usage, if you want to root your phone or not.
Being able to try out new features and new OS versions has always fascinated me and hence I rooted and am running Android 4.2.2 Jelly Bean on my Samsung Galaxy S2 even though Samsung officially provided only Android 4.1.2 for my device till date.
I am enjoying it. What about you?
Leave comments if you have any difficulty in rooting and flashing a Samsung Phone..!! ALL THE BEST...!!

Sunday, January 6, 2013

Compute Unified Device Architecture (CUDA)


At the start of multi core CPU's and GPUs the processor chips have become parallel systems. But speed of the program will be increased, if software exploits parallelism provided by the underlying multiprocessor architecture. Hence there is a big need to design and develop the software so that it uses multithreading, each thread running concurrently on a processor, potentially increasing the speed of the program dramatically. To develop such a scalable parallel applications, a parallel programming model is required that supports parallel multicore programming environment.

CUDA stands for Compute Unified Device Architecture. It is a parallel programming paradigm released in 2007 by NVIDIA. It is used to develop software for graphics processors and is used to develop a variety of general purpose applications for GPUs that are highly parallel in nature and run on hundreds of GPU’s processor cores.

CUDA has some specific functions, called kernels. A kernel can be a function or a full program invoked by the CPU. It is executed “n” number of times in parallel on GPU by using “n” number of threads. CUDA also provides shared memory and also does synchronization among threads.

The CUDA parallel computing platform provides a few simple C and C++ extensions that enable expressing fine-grained and coarse-grained data and task parallelism. The programmer can choose to express the parallelism in high-level languages such as C, C++, and FORTRAN.

Thursday, January 3, 2013

Baby named ANDROID of Mother LINUX...



We all know that 'mother' is very important in life of every person. In computer hardware theory also the term 'mother' is of great importance. As every one knows that the major hardware component of computer is 'mother-board'. We all might think why name is given as mother-board, why not father or daughter or son-board? The simple reason behind this is that mother is the person who looks after every chores being carried out. Mother is one who binds some rules for the family. Similarly in case of hardware theory also the name so given is because mother board carries out all the functions. Similarly, in software field also we get to see the 'mother'. In a precise manner we can say that Android is the child of mother Linux-kernel.


         Fig 1. Android with Linux kernel

In today's era, Android is the heartbeat of any handset or machine, but the base behind this huge spreading application is, mother Linux. Why is Linux given so much importance or why is Linux kernel called as the base for the development of android apps??Android is overwhelming. Android integrates Linux kernel at the bottom of its software stack. In fact Android was created on top of Linux Kernel 2.6.

Android is open source, therefore any manufacturer can access it, customize it and adapt it according to the requirements of their own gadget. This is the reason why Android is found on variety of gadgets. With camera, without, high-end and low-end, whether a full-fledged tablet or a low-end entertainment device, Android can run on any platform. This has not only given freedom to manufacturers to customize the operating system, add personalized skin, applications or strip-off default Google services, adapt the OS to run on high/low spec gadget but it has also given freedom to people-freedom of choice. A kernel is the first layer of software that interacts with the device hardware. The kernel is responsible for providing basic architectural model for process scheduling, resource handling, memory management, networking and isolation etc. It must be noted that while Android is built on Linux Kernel, Google has maintained its own forked version of Linux Kernel specifically for android since 2010.
 
                        Fig 2. Architecture of Linux kernel

There are number of reasons for selecting Linux kernel. Linux Kernel boasts some proven core features that are integrated in Android operating system.
Following are some features:

1.      Easily portable: Linux runs on devices of diverse architecture from numerous machines like supercomputers & smaller devices like motor bikes. This is due to the fact that Linux is an immensely portable platform. It is fairly easy to compile Linux on various hardware. What do you think is the major concern of Android? It's that it is picked by many manufacturers and is used on a variety of gadgets. Linux makes that possible. Linux brings Android a level of hardware abstraction. Most parts particularly the low-level ones are written in portable C code that can be accessed and modified by manufacturer easily. This means manufacturers can pick up Android and modify it to adapt it according to their hardware requirements rather that improving the hardware to fit the software.
2.      Essential property: Linux brings to Android some useful features. The Linux Kernel 2.6 includes these features:
Memory Management: While developing for mobile devices memory handling becomes a point of great concern. Thanks to Linux Kernel over which Android is built. You can free yourself from the worry. Linux will handle Linux kernel for-threading and low-level memory management for Android. Linux kernel is responsible to manage the core feature of any mobile device i.e. memory cache. Linux kernel manages memory by allocating and De-allocating memory for the file system, processes, applications etc.
       Fig 3. Baby Android with mother Linux (kernel)
     3.   Other properties:
Process Management: Linux Kernel is responsible to start, stop and execute the program. For a beginner a process can be thought of as an instance of computer program. i.e. whenever a program runs on computer, the OS creates its instance or process for it which is executed by the OS. In case of Android, Linux is responsible to allocate resources to various processes that need them.
Driver Model: As evident this is the layer where all the device specific drivers run. Here Linux ensures that your application is able to run on Android. Hardware vendors can develop their drivers into Linux in a familiar environment. That is giving plenty room for hardware vendors to optimizing OS.

    4.     File System Management:
Linux also manages the file system which in turn controls the data storage service for Android device.

    5.     Network Stack:
Linux Kernel is responsible to communicate with the network. It also controls networking stack, drivers, routing devices and network adapters.

    6.     User account (Security):
Linux kernel handles the security between application and the system. Linux takes control of authentication of users and is responsible for user management. Besides this Linux kernel is also responsible for power management and for undertaking various services like Internet search, voice communication, system logging etc.

    7.     Security:
Linux runs in scientific research labs, supercomputers and systems for mission critical tasks. Android completely relies on Linux for security. All Android applications run as distinct Linux processes under permissions set by Linux system.
Thus we can say that the kernel of the Linux is the back bone for Android technology.