[Xperia Play Android Development] paxChristos:
As Brainard52 Suggested,

Resources:

HOW TO FLASH A KERNEL:

1) Download a working kernel for CM9 (it's in download links, included with FXP zip & stand-alone (will be fixed next update))

2) extract kernel from where ever you downloaded it to where ever fastboot is (unless you add fastboot to $path in windows or /bin||/usr/bin||etc in linux)

3) type the following command "fastboot -i 0x0fce flash boot <name of boot.img>

4) NEVER FLASH RECOVERY.IMG.

Linux users:

If you create a file, 51.android.rules, put this in it

SUBSYSTEM=="usb", ATTR(idVendor)=="0fce", mode=="0666", GROUP="plugdev",

chmod it to 644 (r+w) & copy it to /etc/udev/rules.d/ you never need to use -i again! (for your play)

Links:

Flashtool:

http://xdaforums.com/showthread.php?t=1351299

Original FXP Thread:

http://xdaforums.com/showthread.php?t=1447542

Team Darkforest CM9 Kernel:

http://xdaforums.com/showthread.php?t=1541482

Recovery:

http://xdaforums.com/showthread.php?t=1130639

In case you want to try out building from source, read this link:

http://xdaforums.com/showthread.php?t=1556971

Note: KeiranFTW forgets one major thing in his post, he assumes that somebody will only do it once! If you plan on doing it more than once, then for every git clone you do (msm-7x30, zeus, zeus-common in device/semc/ & vendor/semc/) you should go through and do a git pull everytime you wanna rebuild source (knowing Keiran, he probably just made a script for it :P )

If you want to build a kernel from source download this text file:

Kernel Tutorial! (Note: In it I use FXP sources, if you wanna Doom/Keiran just change the git url inside to their kernel sources)

Courtesy of CrimsonKnight13, Here is a list of apps that are a good addition to CM9

I'm adding a poll on top to see what people want included. If an app is a paid app, then don't even think about asking for it to be added.

LOGCAT

For future reference, I'm going to include here how to use logcat (android debugging tool.)

There are two main ways to do a logcat, within android and through adb.

Logcat within android can be installed by a logcat app:

Two good examples are either: aLogcat or Catlog

I prefer catlog, because in my opinion it has a little bit nicer UI. Both of these programs can dump their logs to a txt file, which is very useful for debugging.

On the other hand, using adb to run logcat, in my opinion is much more useful, because you can start using it when android boots (i.e. once the boot animation appears.)

The code for logcat is

adb logcat > name of problem.txt

you can also do

adb logcat -f name of problem.txt

how I prefer to do it is this way:

adb logcat -v long > name of problem.txt

with the -v flag & the long argument, it changes output to long style, which means every line of logcat will be on its own line (makes it a little neater, imo)

Here's where using logcat (via adb makes life really easy)

Lets say you find a problem you're having after looking at a logcat.

For example:

When I was trying to use a different ramdisk, wifi wouldn't work so I got a logcat that's almost 1300 lines long (a lot of stuff happens in the background)

So if you search for an error in the logcat file (it's always e/ for error, f/ for fatal. those are the two main things that matter to me.)

D/dalvikvm( 871): GC_CONCURRENT freed 472K, 6% free 10224K/10823K, paused 1ms+6ms
V/AmazonAppstore.DiskInspectorServiceImpl( 871): Available blocks: 21981, Block size: 4096, Free: 90034176, Threshold: 5242880, withinThreshold? true
D/AmazonAppstore.UpdateService( 871): Received action: null from intent: Intent { cmp=com.amazon.venezia/com.amazon.mas.client.framework.UpdateService }
W/AmazonAppstore.UpdateService( 871): Confused about why I'm running with this intent action: null from intent: Intent { cmp=com.amazon.venezia/com.amazon.mas.client.framework.UpdateService }
D/dalvikvm( 890): GC_CONCURRENT freed 175K, 4% free 9375K/9671K, paused 2ms+3ms
V/AmazonAppstore.ReferenceCounter( 871): Reference (MASLoggerDB) count has gone to 0. Closing referenced object.
E/WifiStateMachine( 203): Failed to reload STA firmware java.lang.IllegalStateException: Error communicating to native daemon
V/AmazonAppstore.UpdateService( 871): runUpdateCommand doInBackground started.
V/AmazonAppstore.UpdateService( 871): Running UpdateCommand: digitalLocker
V/AmazonAppstore.UpdateCommand( 871): Not updating key: digitalLocker from: 1334228488057
V/AmazonAppstore.UpdateService( 871): Finished UpdateCommand: digitalLocker
V/AmazonAppstore.UpdateService( 871): Running UpdateCommand: serviceConfig
V/AmazonAppstore.MASLoggerDB( 871): performLogMetric: Metric logged: ResponseTimeMetric [fullName=com.amazon.venezia.VeneziaApplication_onCreate, build=release-2.3, date=Wed Apr 11 13:10:55 CDT 2012, count=1, value=1601.0]
V/AmazonAppstore.MASLoggerDB( 871): onBackgroundTaskSucceeded: Metric logged: ResponseTimeMetric [fullName=com.amazon.venezia.VeneziaApplication_onCreate, build=release-2.3, date=Wed Apr 11 13:10:55 CDT 2012, count=1, value=1601.0]
W/CommandListener( 118): Failed to retrieve HW addr for eth0 (No such device)
D/CommandListener( 118): Setting iface cfg
D/NetworkManagementService( 203): rsp <213 00:00:00:00:00:00 0.0.0.0 0 [down]>
D/NetworkManagementService( 203): flags <[down]>
E/WifiStateMachine( 203): Unable to change interface settings: java.lang.IllegalStateException: Unable to communicate with native daemon to interface setcfg - com.android.server.NativeDaemonConnectorException: Cmd {interface setcfg eth0 0.0.0.0 0 [down]} failed with code 400 : {Failed to set address (No such device)}
W/PackageParser( 203): Unknown element under <manifest>: supports-screen at /mnt/asec/com.android.aldiko-1/pkg.apk Binary XML file line #16
D/wpa_supplicant( 930): wpa_supplicant v0.8.x
D/wpa_supplicant( 930): random: Trying to read entropy from /dev/random
D/wpa_supplicant( 930): Initializing interface 'eth0' conf '/data/misc/wifi/wpa_supplicant.conf' driver 'wext' ctrl_interface 'N/A' bridge 'N/A'
D/wpa_supplicant( 930): Configuration file '/data/misc/wifi/wpa_supplicant.conf' -> '/data/misc/wifi/wpa_supplicant.conf'
D/wpa_supplicant( 930): Reading configuration file '/data/misc/wifi/wpa_supplicant.conf'
D/wpa_supplicant( 930): ctrl_interface='eth0'
D/wpa_supplicant( 930): update_config=1
D/wpa_supplicant( 930): Line: 4 - start of a new network block
D/wpa_supplicant( 930): key_mgmt: 0x4

(mind you, that's 29 lines out of 1300ish, just for example)

I then could do the following with logcat:

adb logcat WifiStateMachine:E -v long > name of problem.txt

and this will only print out any errors associated with WifiStateMachine, and anything which is fatal, which makes it about a million times easier to figure out what's going on!

How this relates to xLoud. (or any other problem we have with future updates.)

Now, since xLoud is apparently causing all sorts of havoc including not granting root , screwing up volume & messing with equalizers, a logcat done the following way will help me immensely with figuring out how to go about fixing it:

adb logcat *:E -v long > name of problem.txt

will print out all errors, fatal exceptions (what causes android to crash) that happen with the xLoud (or any other risky) update.

my email (for sending me logcats): nielson.peter@gmail.com

Complaints, requests for add-ons, stupid questions, or anything else I feel like will be deleted upon receiving it. Logcats will not.

(If you wanna complain, request something or ask a stupid questions, that's why this thread is here)

Regarding Nightlies:

UPDATE:

UPDATE: Here is an update.zip file to automatically change any CM9 (AOSP ICS) based R800i download to work with the R800x (all thanks to KeiranFTW & Atarii for the fix)