[Epic 4G Android Development] DevinXtreme:
1.0 – WELCOME AND DISCLAIMER

So, it seems like a lot of people are having problems with their new Samsung Epic 4G. I thought I'd take a minute and throw together a little comprehensive guide on, well, everything. I'll be updating this periodically, so be sure to check it out.

I'll also be working on formatting it to improve readability... I'm not so good with this markup language that forums make you use, so bear with me. If I can figure out some basic tricks, we'll be in business.

And, just so you know, this is just a guide. As long as you follow it and do research, everything should go fine. That being said, I am not responsible for what happens to your phone. This is all elective and I am not forcing you to do any of this. You brick your phone, you own up to it. I'm only trying make it as easy as possible for your to avoid that.

2.0 – GETTING STARTED

New to Android? Need to root? Just got your phone? Not totally clear on everything? Start here. Even if you have experience with Android, had your Epic since day one, or whatever, you'll still want to check this section out.

2.1 – TERMINOLOGY

First of all, you need to familiarize yourself with the terminology. This is vital to understanding what you are doing, so I'll outline as many as I can.

Brick – Not a term that should be thrown around as much as it is. If you have a bricked device, it is worthless. Like, completely. It is literally as useful as a brick. You CANNOT fix a brick. Everything else is just just breakage.

Root – a)This term comes from Linux/UNIX. To obtain root access means that you have elevated privileges. Look at this like administrator rights in Windows. It's what allows you to run custom software and access administrator setting in Android.

b)The uppermost folder. Such as “/”, “C:\” , et cetera.

Rooting – Gaining elevated root admin access.

Kernel – A kernel is the base of an operating system. For Android, it's where all the drivers and system information resides. A custom kernel can contain undervolting instructions, overclocking instructions, and many other battery-saving, power-giving, phone-enhancing features. There are several options, so make sure you do your research and choose the kernel that offers what you are looking for.

Shell – The shell is the part that you see. It's the interface that interacts and allows you to interact with the kernel.

ROM – A ROM is the combination of a kernel and a shell. Think of this like an operating system.

Dev – Dev is short for developer. These are the people who spend their days and nights writing code and bug testing to bring you the ROMs you love. These guys are the reason you're here, so show your appreciation!

Chef – Chefs and devs are essentially the same thing.

Recovery – A system that allows basic phone function. You can flash from this, clear data, and do very basic debugging. As long as you can boot to this, your phone is NOT bricked.

Flashing – The act of installing a ROM or fix to your phone through recovery.

Wiping – The act of performing a factory reset or cache clear from recovery. Your settings are gone, your apps are gone, your phone is as it was when you you got (to an extent). Formats /system/. This is not reversible.

CPU – Central Processing Unit. The brain of the phone. All data travels through this at some point.

Overclocking – Pushing your CPU to its limits. The CPU has a stock clock speed (1GHz for the Epic), and overclocking is pushing it past that.

Undervolting – Making the phone use less power. This saves battery.

AOSP – Android Open Source Project. Frequently referred to as “Vanilla”. The actual people who make Android. Go here for more information.

Theme – A cosmetic change to the user interface.

One-Click – A script or program that does everything for you.

Busybox – A collection of scripts that allow deeper editing of the system while it is running.

Remount – An easy method of mounting /system/ for writing.

Stock – Samsung-released, no editing, as-is stuff. Basically, how the phone came.

OTA – Over the air. Updates that automatically come to your phone, through your service.

adb – “Android Debug Bridge” A debug program for accessing your phone.

deODEX – Combining the ODEX file and the APK files for all the items in the /system/ folder. Allows for easier theming and customizing.

FC/Force Close – When a program or app crashes.

2.2 – WHY SHOULD I ROOT MY PHONE?

Rooting offers several great things including, but certainly not limited to, access to hidden features, total customization, better battery life, and overclocking. It gives you control over the device that you paid money for in the first place. The devs here are great at finding features that the manufacturers left out or disabled and making them work.

It also is a great hobby. Even if you aren't a developer yourself, flashing ROMs and trying out new features can be a lot of fun and definitely kill boredom. And who knows? Maybe you'll end up learning something and start coding yourself.

2.3 – ROOTING

Great! Now you know some words! So, what next? Well, we need to achieve root access on your phone. There are a few ways to accomplish this on the Epic. Please note that the one-click methods are hit and miss and are affected by several factors, including computer speed, cable, USB ports, and, for all intents and purposes, random chance. I HIGHLY recommend you open the .bat files and run every command in adb manually. I'll update this guide, eventually, with how to do this.

If you're running Windows, you're going to need the drivers for this phone. Install them BEFORE connecting your phone to your computer. You can get them here:

32-bit: Click here

64-bit: Click here

You'll also need to put your phone into debug mode. After you turn this on, you can just leave it on. To do this, go to settings, and then to applications, then to development, and then tick the “USB debugging” check box.

I also recommend using a cable other than Samsung's cable that came with the phone. Really, that cable is hardly good for anything more than charging. It's low quality and has caused a lot of users more than a headache. If you are unable to get another cable for whatever reason, run each command individually from adb. Check the section about adb and the Android SDK later in the guide for more information on how to do that.

2.3.1 – The Jokeyrim temporary root with noobnl's one-click script method – DO FIRST

Let it be known that I don't recommend relying on this method. It's janky and can cause problems once you get deeper into Android modification. Use it to get your remount scripts and then quickly do the kernel mods in the steps in 2.3.2.

Go here and download the .zip file. Extract the .zip contents to your desktop. Open the folder, run “run.bat” and let it go.

NOTE: This is just root, this is temporary, and this DOES NOT give you access to a recovery. All this will allow you to do is run applications that require root or busybox and adds the remount script.

2.3.2 – The rooted kernel and recovery method method – DO SECOND

I do recommend that you use this method. This gives you true, permanent root.

There are a couple of ways to do this. I actually suggest you follow both guides, too. This will help prevent you ever getting to Samsung's stock recovery, which is worthless for your purpose.

The first is noobnl's recovery method, and definitely the one you should do first. You can find it here. Download the .zip file and extract its contents to your desktop. There is an issue with this .bat file, so you're going to have to do some extra steps. With adb (go to the section about the Android SDK and adb further in the guide if you do not know what this is) and type:

adb shell
su
remount rw
exit
exit

(the two 'exits' is not a typo)

After running those commands, open your extracted folder and run the run.bat file. Should be smooth sailing.

The second is koush's method. koush's thread is here, but I that's a complicated method. After you do noobnl's method above, go to this thread and download the .zip from that. Put that .zip on the root of your SD card. Boot into the Clockwork recovery by turning the phone off, holding down the camera button, the volume down button, and pressing the power button until the phone turns on. Once in there, do this:

1. BACK UP YOUR PHONE. I cannot emphasize this enough. Backups are sooo important in your Android modding quest. Backup and do it often. (Backup and restore → Backup).

2. Go to “Flash zip from SD card”

3. Choose zip from sd card

4. Select the zip we put there earlier

5. Click “Yes”

6. Let it do its thing

Once you've done this, you need to boot into the phone, go to the market, and download “ROM Manager”. From that, click “Flash recovery” (the top option) and select the Epic. This will take a minute. From this point on, you can use ROM Manager to boot into the Clockwork Recovery.

2.3 – FLASHING ROMS/KERNELS/FIXES

This is the fun stuff. This is why you're here. Now that you have root and a recovery, we can get some work done. First, you have to select a ROM that you want. Always pick a ROM that is designed for the Epic. ROMs designed from other phones can and will brick your phone!

You can find ROMs for the Epic in the Epic 4G Android Development section of XDA. Do some research to each ROM to make sure it's what you want. If you want a kernel, make sure your ROM supports other kernels and that the kernel supports your ROM.

Once you've picked your ROM, put it on the root of your sd card and then boot into Clockwork Recovery using your method of choice, then:

1. BACKUP. I seriously cannot stress this enough.

2. Wipe everything. Factory reset and clear cache.

3. Go to “Flash zip from SD card”

4. Choose zip

5. Choose “Yes”

6. Let it run

7. -OPTIONAL- To ensure it worked, repeat steps 2-6. This is just to make sure everything worked. Problems with this can be intermittent and this helps to avoid them.

8. Reboot.

3.0 – ERRORS

Stuff goes wrong. You have to understand, EVERYTHING in this is experimental. The devs here do not have access to EVERYTHING that is required to make these phones work and have to guess at some things and, basically, just do their best (And their best is pretty damn good!).

Basically, just be sure you have backups that you can restore from, and this will all be fine.

3.1 – BLACK SCREEN

Oh no! I flashed ROM X and now my phone won't boot and I hate everything!!!

Worry not! As long as you can boot in to recovery, you have nothing to fear. Just restore the backup that I told you to make and you're back in business. Easy fix.

3.2 – CONSTANT FORCE CLOSES

You boot up your phone and are immediately greeted with force closes. Chances are that you didn't wipe OR that the ROM you're using isn't ready for show time. Again, just restore your backup from Clockwork.

3.2 – CAN'T GET TO RECOVERY, CAN GET TO DOWNLOAD MODE

Well, looks like you'll be returning your phone to stock using Odin. Read later on in the guide how to use Odin in the section about Odin.

3.4 – PHONE WON'T TURN ON AT ALL

Welcome to bricksville, population you. Sorry, but you're phone is a $500 paperweight... Probably shouldn't have flashed that GSM ROM, huh? Not even Odin can save you at this point...

4.0 – THE ANDROID SDK AND ADB

The Android SDK (Standard Developer Kit) is a tool freely available to everyone. You can find it here and it is available for Linux, Mac, and Windows.

4.1 – INSTALLING THE SDK

So, the first step is going to be how to install the SDK on your system. I have experience with Linux and Windows, so that's what I have for now. If someone with a Mac can help write the set up instructions for that, I'd be very appreciative.

4.1.1 – Windows

First, download android-sdk_r07-windows.zip from here to your Desktop. Once it has downloaded, double-click the file and extract it to the root of your C:\ drive (this is optional, but it will make things a lot easier in the future). Rename the extracted folder “android-sdk-windows” to just “android” to make your life easier.

Open the new folder, then run the SDK Manager. If you run into an error about Java, go to java.com and get the latest version of the Java JRE (pretty much just click whatever the biggest “download” button is that you first see).

Once you have the SDK open, it will ask you to install packages. Just tick the “Accept All” radio button on the bottom right and press install. Depending on your internet connection, this can take a long time. Just be patient. Once they are all installed, you're good to go.

How you use adb is simple. Open a command prompt (press the Windows key + r and type “cmd” in the box that shows up, or go to Start → All Programs → Accessories → Command Prompt) and type in “cd C:\android\tools\” and type your commands (list of common commands at the end of this section.

-OPTIONAL- This step is optional, but HIGHLY recommended. Now that we have the SDK set up, we're going to adb to the Windows paths so that you can use adb from anywhere you can open a command prompt.

First, click the start menu and then right-click “My Computer” (Just “Computer” in Vista and 7. You'll also need to click the “Advanced System Setting” on the left side of the window that appears.). Click “Properties” and the Properties window appears. Now, click on the “Advanced” tab and the the “Environment Variables” button. A new window appears with two scrollable boxes. In the lower box, scroll until you find a “path” option and select it. Click “Edit” underneath the box. Move your cursor to the very end (Press END on your keyboard, just to be safe) and type “;C:\android\tools\”” (That leading semi-colon is important and may already be there. Check to be sure).

And you're done! Open a command prompt and type “adb devices” and see what comes up. If a list of devices (phones; will be empty if your phone isn't connected in debug mode) comes up, you've succeeded! Congrats.

4.1.2 – Linux

I use Ubuntu personally, but most of this information should be universal. If anyone running anything else sees anything missing or wrong with other distributions, let me know and I'll update or fix it.

First, you need to acquire the SDK. The file is android-sdk_r07-linux_x86.tgz from this site. Once downloaded, extract the contained folder to your home folder (/home/*USERNAME*, using your username) and rename the folder “android' for later ease of use.

Use terminal and cd to the android folder your created. Use the command “tools/android update sdk” to make the SDK updater come up. Just tick “Accept all” in the bottom right and then click install. This can take a while depending on your internet connection.

Once you have all of the files installed, you're ready to use adb. Using terminal, navigate to /home/user/android/tools and type (For Ubuntu):

sudo chmod 777 adb

This will allow the adb file to be read as an executable. Note that this only has to be done once. Then, use this code:

sudo ./adb start-server

(replace 'sudo' for 'su' for distros other than Ubuntu)

This is necessary every time you use adb (in Ubuntu, at least). You only have to do it once per session, but if the adb process is ever killed during your session, you must do it again. I've just gotten into the habit of doing it every time I log into my computer. You could also create a boot script that does this for you... which I've been meaning to get around to. After you have the process running, you won't have to use su/sudo or ./ to use adb.

Note that one-click scripts written for Windows will have to be opened and run manually. There are scripts for Linux floating around, but I can't seem to find the thread.

-OPTIONAL- This isn't a needed step, but you'll probably want to do it. Here we're going to add adb to the paths folder so that after you have started the process as an administrator, you can run it from any folder.

Open terminal and use these commands:

echo $PATH (should return the directories associated with $PATH)
export PATH=$PATH:/home/user/android/tools (replace with path to your tools directory, you may need to add 'sudo' or 'su' to the beginning of this cmd)
echo $PATH (you should now see your tools directory added to the end of the $PATH variable)

Once done, you're set. Once you have the process started, you can run adb commands from any terminal window.

4.1.3 – Mac OS

-I don't own a Mac, never have, and I have zero experience with Mac and Android... If someone else can help with this section, I'd appreciate it :)-

4.2 ADB COMMANDS

This isn't a complete list, but it should be enough to get you by for your purpose.

adb shell – opens a terminal on your phone. Terminal is like the command prompt of Linux.

adb push – pushes a file to the phone. The syntax is ”abd push *file location on your PC* *Location you want it on your phone*”

adb pull – pulls a file from your phone. The syntax is “adb pull *file location on the phone* *location to be placed on your PC*

adb shell rm – deletes a file from your phone. The syntax is “adb shell rm *location and name of the file to be deleted*. NOTE: adb shell rm -r is a recursive deletion and can cause damage to your ROM and phone. Make sure you know what you are doing if told to do an rm -r.

adb devices – lists all connected Android phones.​

5.0 - ODIN

(I don't have a ton of experience with Odin, so if someone can refine this section, let me know and I'll update it)

Odin is a tool that was created for previous Samsung phones. It is a powerful tool and very useful for saving your phone from many malfunctions. As long as you can boot your phone into download mode (Hold down the “1” key on the slide-out keyboard while powering the phone on) you can almost always save your phone.

That said, Odin is also fairly experimental in its implementation on the Epic. There have been several reports of failed flashes and intermittent errors. This guide will hopefully help prevent that from happening.

5.1 – SETTING IT UP

If you haven't already, you need to get the drivers for the phone. Install them BEFORE Odin and before connecting your phone to your computer. You can get them here:

32-bit: Click here

64-bit: Click here

After that, you're going to need to get Odin. You can find that, as well as a basic guide and the stock files from noobnl, here (External link to SDX). Odin is the .rar file from the first link fo the post.

5.2 - USING ODIN

After you have it downloaded, extract the files somewhere (I recommend a folder on your desktop). From the extracted files, double-click “Odin3_v1.0.exe” and the Odin window opens. Have it completely ready to go before connecting your phone. Put all your files in the spots they belong (refer to the post where you got the Odin files for instructions on that... it seems to vary a lot depending on the purpose). Make sure that no other check boxes are ticked besides “Debug En.” and “Auto-reboot”. All the others can have very negative effects.

Before connecting your phone, put it into download mode by holding down the “1” key on your slide-out keyboard while powering the phone up. Once it is in download mode, connect the phone. The first box in Odin should come up as something akin to “COM4”. If it doesn't say exactly that, don't worry. Make sure all your files are placed correctly, and then click “Start”. It should take up to a few minutes, so be patient. Cutting this process off early can have negative effects. When it is finished, the phone should reboot.

6.0 – CLOSURE

I hope this guide helped you. If you have any questions, you can contact me, but I can't guarantee I can help you. Most devs are willing to help, too, so you can shoot them a PM and they'll try to get back to you.

Good luck and happy flashing!!