CyanogenMod ROM Sony Xperia L (taoshan)
Quick Info
Download (nightly build)
CyanogenMod 13.0 (Android 6.0/6.0.1 (Marshmallow))
Main sections for Sony Xperia L (“taoshan”)
Special boot modes
- Recovery: Press Volume Up when the notification light is purple.
- Bootloader: With the device powered down, hold Volume Down and connect the USB cable. The notification light should briefly turn green to indicate you are in flash mode.
- Fastboot: With the device powered down, hold Volume Up and connect the USB cable. The notification light should turn blue to indicate you are in fastboot mode.
Source code
Device | http://www.github.com/cyanogenmod/android_device_sony_taoshan |
Kernel | http://www.github.com/cyanogenmod/android_kernel_sony_msm8930 |
Codename: | taoshan |
---|---|
Vendor: | Sony |
Release date: | 2013 March |
Type: | phone |
GSM freq: | HSDPA 900 / 2100 – C2105. HSDPA 850 / 1700 / 1900 / 2100 – C2104 |
Platform: | Qualcomm MSM8230 Snapdragon |
CPU: | 1 GHz dual-core Krait |
GPU: | Adreno 305 |
RAM: | 1GB |
Weight: | 137 g (4.83 oz) |
Dimensions: | 128.7 x 65 x 9.7 mm (5.07 x 2.56 x 0.38 in) |
Screen size: | 109 mm (4.3 in) |
Resolution: | 480×854 |
Screen density: | 228 ppi |
Screen type: | TFT |
Internal storage: | 8GB |
SD Card: | up to 32GB |
Bluetooth: | Bluetooth 4.0 + A2DP |
Wi-Fi: | 802.11 a/b/g/n |
Main camera: | 8 MP |
Secondary camera: | VGA |
Peripherals: | Accelerometer, gyro, proximity, compass |
CM supported: | 11, 12, 12.1, 13 |
How to Install CyanogenMod on the Sony Xperia L (taoshan)
Note: DISCLAIMER
Modifying or replacing your device’s software may void your device’s warranty, lead to data loss, hair loss, financial loss, privacy loss, security breaches, or other damage, and therefore must be done entirely at your own risk. No one affiliated with the CyanogenMod project is responsible for your actions. Good luck.
Contents
Unlock your Xperia L
What does “unlocking” mean?
The first step in putting any custom operating system on your Xperia L is to unlock the bootloader. A bootloader is the very first program that runs when you turn on your device. The bootloader initializes some hardware and then loads the kernel and ramdisk, and gets the boot process going. If the bootloader is in locked mode, it will ensure that only the stock operating system can run. Since you will be installing your own operating system (CyanogenMod), you need to turn this off.
To unlock your bootloader, you’ll first need a program on your computer called adb. One way to get adb is to download and install the Android SDK (Software Developer Kit) from Google. The SDK is used by app developers when they’re writing programs for Android, and who knows, you may want to write apps someday.
Install the Android SDK
Download the SDK, per the steps on Google’s web page. Then install it by following the specific instructions for your computer.
Obtaining the Bootloader Unlock Code
Note:
Unlocking the bootloader on a Sony device may automatically wipe internal storage; a backup of the sdcard is suggested. It will also irreversibly erase the DRM keys stored in the TA partition of some devices, which will result in the loss of certain proprietary features that may have been included. Check your specific device forum on XDA to learn more.
In order to unlock the bootloader on your Xperia L you will need to obtain a code from Sony. The following process will help you acquire this code so that you can flash a custom recovery.
- Open the Phone application on the Xperia L and enter
*#06#
to obtain the device’s IMEI, IDID or MEID. Save this for later use.- Optional: if you do not have a phone app, the IMEI, IDID or MEID can be found on the box or on the device in Settings -> About Device -> Status.
- Put the device into fastboot mode:
- With the device powered down, hold Volume Up and connect the USB cable. The notification light should turn blue to indicate you are in fastboot mode.
- Open a terminal on the PC and enter
fastboot getvar version
- If you receive the message <waiting for device> fastboot is not configured properly, please see fastboot for more details.
- Navigate a browser here
- Select your device and click the ‘continue’ button at the bottom of the page.
- Enter your email address, agree to the terms and select ‘Submit’
- Click the link from your email, enter your IMEI, IDID or MEID and continue
- The unlock code should now appear, write this down for the next step.
- In the PC’s terminal, enter the following command:
fastboot oem unlock 0xKEY
- KEY corresponds to the unlock code you were given.
The Xperia L’s bootloader should now be unlocked.
taoshan Users: This device may not boot correctly after unlocking the bootloader. If the device hangs at the Sony splash screen after unlocking and rebooting, follow the steps below to get recovery up and running:
- If the phone is still at the Sony splash screen, pull the battery and disconnect the USB cable. Wait a few seconds and then reinsert the battery (leave USB disconnected).
- Download the build of CyanogenMod you intend to install from here
- Extract
boot.img
from the installation package and save it to a directory you will remember - With the device powered down, hold volume up and connect the USB cable. The notification light should turn blue to indicate you are in fastboot mode.
- From a command prompt, or terminal, navigate to the directory where
boot.img
resides and type:fastboot flash boot boot.img
- After the boot image finishes flashing, type:
fastboot reboot
and watch for the notification light to turn purple. When it turns purple, press volume up. This will start recovery.- Note: If this method fails to start recovery (i.e. your device is stuck at the Sony splash screen), pull the battery, reinsert it, then power-on the phone and press the volume rockers a few times to load recovery.
Installing CyanogenMod on Sony Devices
- Optional: Download 3rd party applications packages, like Google Apps which are necessary to download apps from Google Play.
- Note: Make the selection below based on the recovery version you see on your screen. If you’re installing CyanogenMod 11, you will have CWM Recovery. If installing CyanogenMod 12.0 or newer, you will have CyanogenMod Recovery.
-
Click here to continue instructions using CyanogenMod Recovery
- Note: In CyanogenMod Recovery, use the physical volume buttons to move up and down. The home button is used to confirm your selection. The recovery is also touch screen friendly, so you can swipe up or down to scroll and tap the item you wish to select.
- Optional (Recommended): Using adb you can create a backup on your PC of your apps and app data. Boot the device into android and open a command prompt (or terminal on Mac and Linux) and enter the following:
adb backup -apk -all -f backup20161224.ab
- When the backup is complete return to recovery mode.
- On the device, select wipe data/factory reset.
- You have two options for installing the installation zip packages. (Note: The sideload method requires a recent version of adb to be working in recovery (adb bundled with ubuntu may have protocol errors):
- Sideload method: Select apply update > apply update from adb. Open a command prompt (or Terminal on Mac and Linux) and enter
adb sideload update.zip
, whereupdate.zip
should be replaced with the package filename. If you are installing multiple packages, install CyanogenMod first and then install any subsequent packages on top of it. The installer does not necessarily display an “Install complete.” message. You can tell the install is complete if there were no fatal error messages and you have regained control over the menu. - Install update method: If you previously placed the installation zip packages on your internal storage, select apply update > choose from internal storage. Navigate to the directory where you placed the packages and select one. If you are installing multiple packages, install CyanogenMod first and then install any subsequent packages on top of it.
- Sideload method: Select apply update > apply update from adb. Open a command prompt (or Terminal on Mac and Linux) and enter
- Once installation has finished, return to the main menu and select reboot system now. The device will now boot into CyanogenMod.
Note:
On all 2011 model Sony devices, the kernel will not update when flashed in recovery, so the kernel must be updated via fastboot every time you flash a new build of CyanogenMod.
-
Click here to continue instructions using CWM Recovery
- Note:In ClockworkMod Recovery, use the physical volume buttons to move up and down. The home button is used to confirm your selection.
- Optional (Recommended): Select backup and restore to create a backup of your current ROM.
- Select wipe data/factory reset. If you get an error formatting /data, try format /data and /data/media from the mounts and storage menu
- You have two options for transferring and installing the installation zip packages. Both cases require a recent version of adb to be working in recovery (adb bundled with ubuntu may have protocol errors). The sideload method is more universal across devices, whereas the push and install method is more commonly used:
- Sideload method: select install zip > install zip from sideload. Follow the on-screen notices to install the package. The installer does not necessarily display an “Install complete.” message. You can tell the install is complete if there were no fatal error messages and you have regained control over the menu.
- Push and install method: Open a command prompt (or Terminal on Mac and Linux) and navigate to the directory holding the package(s) you would like to install. On the device, navigate to the mounts and storage menu. If you see
/storage/sdcard0
as a mountable volume, go ahead and mount it. If you do not see this directory, then instead mount the/data
directory. Take note of which volume you mounted. Now, push the package(s) to your device:
-
- – If you mounted /storage/sdcard0, then:
adb push update.zip /storage/sdcard0/
- – If you mounted /data, then:
adb push update.zip /sdcard/0/
- – If you mounted /storage/sdcard0, then:
- where
update.zip
should be replaced with the package filename. Go back to the main menu and select install zip. Choose to install from the same directory where you pushed the package(s). If you are installing multiple packages, install CyanogenMod first and then install any subsequent packages on top of it.
- Once installation has finished, return to the main menu and select reboot system now. The device will now boot into CyanogenMod.
Note:
On all 2011 model Sony devices, the kernel will not update when flashed in recovery, so the kernel must be updated via fastboot every time you flash a new build of CyanogenMod.
Helpful Tip
How To Build CyanogenMod For Sony Xperia L (taoshan)
Contents
- 1 Introduction
- 2 Build CyanogenMod and CyanogenMod Recovery
- 2.1 Prepare the Build Environment
- 2.2 Create the directories
- 2.3 Install the repo command
- 2.4 Put the ~/bin directory in your path of execution
- 2.5 Initialize the CyanogenMod source repository
- 2.6 Download the source code
- 2.7 Get prebuilt apps (CM11 and below)
- 2.8 Prepare the device-specific code
- 2.9 Extract proprietary blobs
- 2.10 Turn on caching to speed up build
- 2.11 Start the build
- 2.12 If the build breaks…
- 3 Install the build
Introduction
These instructions will hopefully assist you to start with a stock Xperia L, unlock the bootloader (if necessary), and then download the required tools as well as the very latest source code for CyanogenMod (based on Google’s Android operating system). Using these, you can build both CyanogenMod and CyanogenMod Recovery image from source code, and then install them both to your device.
It is difficult to say how much experience is necessary to follow these instructions. While this guide is certainly not for the very very very uninitiated, these steps shouldn’t require a PhD in software development either. Some readers will have no difficulty and breeze through the steps easily. Others may struggle over the most basic operation. Because people’s experiences, backgrounds, and intuitions differ, it may be a good idea to read through just to ascertain whether you feel comfortable or are getting over your head.
Remember, you assume all risk of trying this, but you will reap the rewards! It’s pretty satisfying to boot into a fresh operating system you baked at home :) And once you’re an Android-building ninja, there will be no more need to wait for “nightly” builds from anyone. You will have at your fingertips the skills to build a full operating system from code to a running device, whenever you want. Where you go from there– maybe you’ll add a feature, fix a bug, add a translation, or use what you’ve learned to build a new app or port to a new device– or maybe you’ll never build again– it’s all really up to you.
What you’ll need
- A Xperia L
- A relatively recent computer (Linux, OS X, or Windows) with a reasonable amount of RAM and about 100 GB of free storage (more if you enable ccache or build for multiple devices). The less RAM you have, the longer the build will take (aim for 8 GB or more). Using SSDs results in considerably faster build times than traditional hard drives.
- A USB cable compatible with the Xperia L (typically micro USB, but older devices may use mini USB or have a proprietary cable)
- A decent internet connection & reliable electricity :)
- Some familiarity with basic Android operation and terminology. It would help if you’ve installed custom roms on other devices and are familiar with recovery. It may also be useful to know some basic command line concepts such as
cd
for “change directory”, the concept of directory hierarchies, that in Linux they are separated by/
, etc.
If you are not accustomed to using Linux– this is an excellent chance to learn. It’s free– just download and run a virtual machine (VM) such as Virtualbox, then install a Linux distribution such as Ubuntu (AOSP vets Ubuntu as well). Any recent 64-bit version should work great, but the latest is recommended.
Note:
You want to use a 64-bit version of Linux. A 32-bit Linux environment will only work if you are building CyanogenMod 6 and older. For CyanogenMod 10.1, if you encounter issues with 64bit host binaries, you can set BUILD_HOST_32bit=1
in your environment. This is generally not needed, though, especially with CyanogenMod 10.2 and newer.
Using a VM allows Linux to run as a guest inside your host computer– a computer in a computer, if you will. If you hate Linux for whatever reason, you can always just uninstall and delete the whole thing. (There are plenty of places to find instructions for setting up Virtualbox with Ubuntu, so I’ll leave it to you to do that.)
So let’s begin!
Build CyanogenMod and CyanogenMod Recovery
Prepare the Build Environment
Note:
You only need to do these steps the first time you build. If you previously prepared your build environment and have downloaded the CyanogenMod source code for another device, skip to Prepare the device-specific code.
Install the SDK
- If you have not previously installed adb and fastboot, install the Android SDK. “SDK” stands for Software Developer Kit, and it includes useful tools that you can use to flash software, look at the system logs in real time, grab screenshots, and more– all from your computer.
Helpful Tip
While the SDK contains lots of different things– the two tools you are most interested in for building Android are adb and fastboot, located in the /platform-tools
directory.
Install the Build Packages
Several “build packages” are needed to build CyanogenMod. You can install these using the package manager of your choice.
Helpful Tip
A package manager in Linux is a system used to install or remove software (usually originating from the Internet) on your computer. With Ubuntu, you can use the Ubuntu Software Center. Even better, you may also use the apt-get install
command directly in the Terminal. (Learn more about the apt packaging tool system from Wikipedia.)
For both 32-bit & 64-bit systems, you’ll need:
bc bison build-essential curl flex git gnupg gperf libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop maven openjdk-7-jdk pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev
In addition to the above, for 64-bit systems, get these:
g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev
For Ubuntu 15.10 (wily) and newer, substitute:
-
lib32readline-gplv2-dev
→lib32readline6-dev
For Ubuntu 16.04 (xenial) and newer, substitute (additionally see java notes below):
-
libwxgtk2.8-dev
→libwxgtk3.0-dev
-
openjdk-7-jdk
→openjdk-8-jdk
Java versions: Different versions of CyanogenMod require different versions of the JDK (Java Development Kit):
- CyanogenMod 7 – 9: Sun/Oracle Java SE 1.6
- CyanogenMod 10.1: Sun/Oracle Java SE 1.6 or 1.7
- CyanogenMod 10.2 – 11.0: Sun/Oracle Java SE 1.6 or 1.7 (OpenJDK 1.7 works fine, but the build system will display a warning)
- CyanogenMod 12.0 – 13.0: OpenJDK 1.7 (see note about OpenJDK 1.8 below)
- CyanogenMod 14.1: OpenJDK 1.8
Ubuntu 16.04 (Xenial Xerus) or newer and OpenJDK: Since OpenJDK 1.7 was removed from the official Ubuntu repositories, you have a couple options:
- Obtain OpenJDK 1.7 from the openjdk-r PPA
- Enable experimental OpenJDK 1.8 support in CyanogenMod 13.0 (not available in earlier version). To enable OpenJDK 1.8 support, add this line to your
$HOME/.bashrc
file:export EXPERIMENTAL_USE_JAVA8=true
.
Also see http://source.android.com/source/initializing.html which lists needed packages.
Create the directories
You will need to set up some directories in your build environment.
To create them:
$ mkdir -p ~/bin
$ mkdir -p ~/android/system
Install the repo
command
Enter the following to download the “repo” binary and make it executable (runnable):
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
Put the ~/bin
directory in your path of execution
In recent versions of Ubuntu, ~/bin
should already be in your PATH. You can check this by opening ~/.profile
with a text editor and verifying the following code exists (add it if it is missing):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Initialize the CyanogenMod source repository
Enter the following to initialize the repository:
- Note: Make sure the cm branch entered here is the one you wish to build and is supported on your device.
$ cd ~/android/system/
$ repo init -u https://github.com/CyanogenMod/android.git -b cm-13.0
Download the source code
To start the download of all the source code to your computer:
$ repo sync
The CM manifests include a sensible default configuration for repo
, which we strongly suggest you use (i.e. don’t add any options to sync
). For reference, our default values are -j 4
and -c
. The -j 4
part means that there will be four simultaneous threads/connections. If you experience problems syncing, you can lower this to -j 3
or -j 2
. -c
will ask repo to pull in only the current branch, instead of the entire CM history.
Prepare to wait a long time while the source code downloads.
Helpful Tip
The repo sync
command is used to update the latest source code from CyanogenMod and Google. Remember it, as you can do it every few days to keep your code base fresh and up-to-date.
Get prebuilt apps (CM11 and below)
Next,
$ cd ~/android/system/vendor/cm
then enter:
$ ./get-prebuilts
You won’t see any confirmation- just another prompt. But this should cause some prebuilt apps to be loaded and installed into the source code. Once completed, this does not need to be done again.
Prepare the device-specific code
Helpful Tip – Errors during breakfast
Different maintainers setup their device inheritance rules differently. Some require a vendor directory to be populated before breakfast will even succeed. If you receive an error here about vendor makefiles, then jump down to the next section Extract proprietary blobs. The first portion of breakfast should have succeeded at pulling in the device tree and the extract blobs script should be available. After completing that section, you can rerun breakfast taoshan
After the source downloads, ensure you are in the root of the source code (cd ~/android/system
), then type:
$ source build/envsetup.sh
$ breakfast taoshan
This will download the device specific configuration and kernel source for your device. An alternative to using the breakfast
command is to build your own local manifest. To do this, you will need to locate your device on CyanogenMod’s GitHub and list all of the repositories defined in cm.dependencies in your local manifest.
Helpful Tip
If you want to know more about what source build/envsetup.sh
does or simply want to know more about the breakfast
, brunch
and lunch
commands, you can head over to the Envsetup help page.
Helpful Tip
Instead of typing cd ~/android/system
every time you want to return back to the root of the source code, here’s a short command that will do it for you: croot
. To use this command, you must first run source build/envsetup.sh
from ~/android/system
.
Extract proprietary blobs
Now ensure that your Xperia L is connected to your computer via the USB cable and that you are in the ~/android/system/device/sony/taoshan
directory (you can cd ~/android/system/device/sony/taoshan
if necessary). Then run the extract-files.sh
script:
$ ./extract-files.sh
You should see the proprietary files (aka “blobs”) get pulled from the device and moved to the ~/android/system/vendor/sony
directory. If you see errors about adb being unable to pull the files, adb may not be in the path of execution. If this is the case, see the adb page for suggestions for dealing with “command not found” errors.
Note:
Your device should already be running a build of CyanogenMod for the branch you wish to build for the extract-files.sh
script to function properly.
Note:
It’s important that these proprietary files are extracted to the ~/android/system/vendor/sony
directory by using the extract-files.sh
script. Makefiles are generated at the same time to make sure the blobs are eventually copied to the device. Without these blobs, CyanogenMod may build without error, but you’ll be missing important functionality, such as graphics libraries that enable you to see anything!
Turn on caching to speed up build
You can speed up subsequent builds by adding
export USE_CCACHE=1
to your ~/.bashrc
file (what’s a .bashrc file?). Then, specify the amount of disk space to dedicate to ccache by typing this from the top of your Android tree:
prebuilts/misc/linux-x86/ccache/ccache -M 50G
where 50G
corresponds to 50GB of cache. This only needs to be run once and the setting will be remembered. Anywhere in the range of 25GB to 100GB will result in very noticeably increased build speeds (for instance, a typical 1hr build time can be reduced to 20min). If you’re only building for one device, 25GB-50GB is fine. If you plan to build for several devices that do not share the same kernel source, aim for 75GB-100GB. This space will be permanently occupied on your drive, so take this into consideration. See more information about ccache on Google’s android build environment initialization page.
Helpful Tip
If you are a very active developer, working on many other projects than just Android, you might prefer to keep your Android ccache independent (because it’s huge and can slow down the efficiency of ccache in your other projects). Beginning with CyanogenMod 12.1, you can specify environment variables for the location and size of CyanogenMod’s ccache. Some syntax examples: export ANDROID_CCACHE_DIR="$HOME/android/.ccache"
and export ANDROID_CCACHE_SIZE="50G"
.
Start the build
Time to start building! So now type:
$ croot
$ brunch taoshan
The build should begin.
Helpful Tip
If the build doesn’t start, try lunch
and choose your device from the menu. If that doesn’t work, try breakfast
and choose from the menu. The command make taoshan
should then work.
Helpful Tip
A second, bonus tip! If you get a command not found error for croot
, brunch
, or lunch
, be sure you’ve done the source build/envsetup.sh
command in this Terminal session from the ~/android/system
directory.
Helpful Tip
A third tip! If the build to fails while downloading Gello, you’ll need to import a missing certificate into Maven’s truststore. Detailed instructions on how to do that can be found here
If the build breaks…
- If you experience this not-enough-memory-related error…
ERROR: signapk.jar failed: return code 1make: *** [out/target/product/taoshan/cm_taoshan-ota-eng.root.zip] Error 1
…you may want to make the following change to ~/android/system/build/tools/releasetools/common.py
:
Search for instances of -Xmx2048m
(it should appear either under OPTIONS.java_args
or near usage of signapk.jar
), and replace it with -Xmx1024m
or -Xmx512m
.
Then start the build again (with brunch).
- If you see a message about things suddenly being “killed” for no reason, your (virtual) machine may have run out of memory or storage space. Assign it more resources and try again.
Install the build
Assuming the build completed without error (it will be obvious when it finishes), type:
$ cd $OUT
in the same terminal window that you did the build. Here you’ll find all the files that were created. The stuff that will go in /system
is in a folder called system
. The stuff that will become your ramdisk is in a folder called root
. And your kernel is called… kernel
.
But that’s all just background info. The two files we are interested in are (1) recovery.img
, which contains CyanogenMod Recovery, and (2) cm-13.0-20161224-UNOFFICIAL-taoshan.zip
, which is the CyanogenMod installation package.
Install CyanogenMod
Back to the $OUT
directory on your computer– you should see a file that looks something like:
cm-13.0-20161224-UNOFFICIAL-taoshan.zip
Note:
The above file name may vary depending on the version of CM you are building. Your build may not include a version number or may identify itself as a “KANG
” rather than UNOFFICIAL
version. Regardless, the file name will end in .zip
and should be titled similarly to official builds.
Now you can flash the cm...zip
file above as usual via recovery mode. Before doing so, now is a good time to make a backup of whatever installation is currently running on the device in case something goes wrong with the flash attempt. While CyanogenMod Recovery doesn’t have a backup feature, there are other custom recoveries available that do. You can also use something like Titanium Backup (root required) as an alternative.
Success! So….what’s next?
You’ve done it! Welcome to the elite club of self-builders. You’ve built your operating system from scratch, from the ground up. You are the master/mistress of your domain… and hopefully you’ve learned a bit on the way and had some fun too.
Now that you’ve succeeded in building CyanogenMod for your device, here are some suggestions on what to do next.
Also, be sure to take a glance at the Dev Center on this wiki for all kinds of more detailed information about developer topics ranging from collecting logs, understanding what’s in the source code directories, submitting your own contributions, porting CyanogenMod to new devices, and a lot more.
Congrats again!
Content of this page is based on informations from wiki.cyanogenmod.org, under CC BY-SA 3.0 licence.