[DEV][AOSP] ICS sources and build instruction for A501

Search This thread

shchers

Senior Member
Apr 11, 2011
72
20
Kiev
1. Preparing environment and building

1.1. Installing bootloader and recovery

This step can be done only in Windows (can be done on Linux too, but I didn't find right version of Linux nvflash):
  • Run MS Windows (tested even on Windows 7) on host PC
  • Download this package (Size=12592367 MD5=EA890A3B3E1CEDBBD820D1A798A365A2). Inside package:
    1. Windows drivers for nVidia USB device
    2. nvflash tool and required libraries
    3. Unlocked bootloader, see details here
    4. Batch for automatic update, see original batch here
  • Generate your SBK with your CPUID by this link
  • Connect tablet to PC through USB
  • Turn-off tablet
  • Press and hold reset button on tablet
  • Press power and wait until new USB device will be detected
  • Install USB drivers (can be find in package)
  • Run script run.bat and follow recommendations

1.2. Downloading sources and building Android

  • Create directory for AOSP sources
    Code:
    mkdir aosp && cd aosp
  • Initializing repo
    Code:
    repo init -u [url]https://android.googlesource.com/platform/manifest[/url] -b ics-mr1
  • Downloading sources
    Code:
    repo sync
  • Download sources of Acer Picasso device
    Code:
    git clone git://github.com/shchers/afs_device_acer_picasso.git device/acer/picasso
  • Download sources of MBM RIL library
    Code:
    git clone git://github.com/shchers/afs_vendor_mbm_mbm-ril.git vendor/mbm/mbm-ril
  • Download sources of MBM GPS library
    Code:
    git clone git://github.com/shchers/afs_vendor_mbm_libmbm-gps.git vendor/mbm/libmbm-gps
  • Download sources of MBM GPS service
    Code:
    git clone git://github.com/shchers/afs_vendor_mbm_mbmservice.git vendor/mbm/mbmservice
  • Setting-up build environment
    Code:
    source build/envsetup.sh
  • Configuring target (Acer A500/A501 == full-picasso)
    Code:
    lunch full_picasso-userdebug
  • Building with using all available CPU cores
    Code:
    m -j`grep -c processor /proc/cpuinfo`

2. Installing Android to device

2.1. Updating through CWM recovery

2.1.1. Creating update archive

  • Go to target output directory
    Code:
    cd ${ANDROID_PRODUCT_OUT}
  • Create folder for updater script. Run in console:
    Code:
    mkdir -p META-INF/com/google/android
  • Copy updater script there
    Code:
    show_progress(0.400000, 0);
    ui_print("> Formating system partition");
    format("ext4", "EMMC", "/dev/block/mmcblk0p3", "0");
    ui_print("> Mounting system partition");
    mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");
    ui_print("> Extracting system directory");
    package_extract_dir("system", "/system");
    ui_print("> Creating symlinks");
    show_progress(0.200000,0);
    symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
    symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
    symlink("mksh", "/system/bin/sh");
    symlink("toolbox",
    	"/system/bin/ls","/system/bin/mount","/system/bin/cat",
    	"/system/bin/ps","/system/bin/kill","/system/bin/ln",
    	"/system/bin/insmod","/system/bin/rmmod","/system/bin/lsmod",
    	"/system/bin/ifconfig","/system/bin/setconsole","/system/bin/rm",
    	"/system/bin/mkdir","/system/bin/rmdir","/system/bin/reboot",
    	"/system/bin/getevent","/system/bin/sendevent","/system/bin/date",
    	"/system/bin/wipe","/system/bin/sync","/system/bin/umount",
    	"/system/bin/start","/system/bin/stop","/system/bin/notify",
    	"/system/bin/cmp","/system/bin/dmesg","/system/bin/route",
    	"/system/bin/hd","/system/bin/dd","/system/bin/df",
    	"/system/bin/getprop","/system/bin/setprop","/system/bin/watchprops",
    	"/system/bin/log","/system/bin/sleep","/system/bin/renice",
    	"/system/bin/printenv","/system/bin/smd","/system/bin/chmod",
    	"/system/bin/chown","/system/bin/newfs_msdos","/system/bin/netstat",
    	"/system/bin/ioctl","/system/bin/mv","/system/bin/schedtop",
    	"/system/bin/top","/system/bin/iftop","/system/bin/id",
    	"/system/bin/uptime","/system/bin/vmstat","/system/bin/nandread",
    	"/system/bin/ionice","/system/bin/touch","/system/bin/lsof");
    ui_print("> Applying permissions");
    set_perm_recursive(0, 0, 0755, 0644, "/system");
    set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
    set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
    set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
    set_perm(0, 0, 0755, "/system/etc/bluetooth");
    set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
    set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
    set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
    set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
    set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
    set_perm(0, 0, 0544, "/system/etc/install-recovery.sh");
    set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
    set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor");
    set_perm(0, 0, 0644, "/system/vendor/fake.txt");
    show_progress(0.200000, 10);
    package_extract_file("boot.img", "/dev/block/mmcblk0p2");
    NOTE: Don't rename file! It should be updater-script!
  • Download this archive (Size=149342 MD5=9497D5087FEF04C1EA4EE215A3DC83B8) and extract there
  • Create ZIP archive. Run in console:
    Code:
    zip -r9 full-pack.zip boot.img system META-INF
  • Generate keys. Run in console:
    Code:
    openssl genrsa -out key.pem 1024
    openssl req -new -key key.pem -out request.pem
    openssl x509 -req -days 3650 -in request.pem -signkey key.pem -out certificate.pem
    openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt
  • Run signing archive. Run in console:
    Code:
    java -jar ${ANDROID_HOST_OUT}/framework/signapk.jar certificate.pem key.pk8 full-pack.zip full-pack-sign.zip

2.1.2. Using CWM recovery

  • Upload full-pack-sign.zip on FAT32 formated microSD card
  • Turn-off tabled
  • Insert microSD
  • Press Power button while hold Volume Down button
  • Release Power button when you'll see text in top left corner, some like "cleaning cache partition..."
  • From opened menu select "wipe data/factory reset"
  • Select "Yes -- delete all user data"
  • Press on "install zip from sdcard" menu
  • Select "choose zip from sdcard"
  • In this menu select "full-pack-sign.zip"
  • After installing press "Go back"
  • Press "reboot device"

2.2. Updating through Android debug

2.2.1. Updating system partition

  • Get a root access
    Code:
    adb root && adb wait-for-device
  • Remount system partition with R/W permitions
    Code:
    adb shell mount -o remount,rw -t ext4 /dev/block/mmcblk0p3 /system/
  • Sync binaries
    Code:
    adb shell stop && adb sync && adb reboot

2.2.2. Updating boot partition

  • Reboot to fastboot
    Code:
    adb reboot bootloader
  • Select one of possible methods to use new boot partition
    1. Boot with custom kernel and ramdisk without flashing (boot partition will not be rewrote) - this mode useful for debugging kernel/root
      Code:
      fastboot boot ${ANDROID_PRODUCT_OUT}/kernel ${ANDROID_PRODUCT_OUT}/ramdisk.img
    2. Boot with custom boot.img without flashing (boot partition will not be rewrote) - this mode also can be used for debugging kernel/root
      Code:
      fastboot boot ${ANDROID_PRODUCT_OUT}/boot.img
    3. Flashing new boot.img to boot partition
      Code:
      fastboot flash:raw boot ${ANDROID_PRODUCT_OUT}/kernel ${ANDROID_PRODUCT_OUT}/ramdisk.img

2.3. Enabling Google services

To enable Google services on new system, should be copied several Google binaries to /system/app. To do it should b done several steps:
  • Get a root access
    Code:
    adb root && adb wait-for-device
  • Remount system partition with R/W permitions
    Code:
    adb shell mount -o remount,rw -t ext4 /dev/block/mmcblk0p3 /system/
  • Download this (i.e. GAPPS) archive (Size=16449776 MD5=C7E6FAAFE7223A17DE93DD1D7A968734)
  • Extract it somewhere
    Code:
    mkdir GooglePack && cd GooglePack
    unzip googlepack.zip
  • Stop dalvik virtual machine
    Code:
    adb shell stop
  • Upload APK files
    Code:
    for f in `ls *.apk`; do echo "Uploading $f" && adb push $f /system/app/; done
  • Remove Provision.apk - it looks like setup wizard, but SetupWizard.apk much powerful
  • Reboot device to recovery and wipe data partition (use CWM "Wipe" menu for it)
    Code:
    adb reboot recovery
  • Reboot device after wiping
  • Use wizard on system start-up to configure your account
  • Use Android Market to install GMail and other apps

3. Debugging

3.1. RILD

To see rild log should be done:
Code:
adb logcat -b radio

4. FAQ

Q: WiFi scanner show few AP, but can't connect anywhere...
A: Try to make factory reset.

Q: Is it thor2002ro sources?
A: No, it is my own port.

Q: What is the version?
A: ICS MR1 (Current version: 4.0.4).

5. Supported features

  • 2D/3D acceleration
  • Photo/Video Camera
  • 2G/3G
  • GPS
  • AGPS
  • SMS (tested only in GSM networks)
  • WiFi
  • Bluetooth
  • Audio/Video playback
  • Image viewing
  • External SD Card
  • External USB storage
  • Compass
  • Gyroscope

6. To do

  1. [rild] Add support for USSD
  2. [rild] Add support/check for MMS
  3. [libsensors] Implement libsensors and replace Acer binaries
  4. [audio] Add support for USB audio devices
  5. [audio] Add support for modem audio input

7. Screenshots
  • Version
    attachment.php
  • EDGE connection
    attachment.php
  • Speed test results on HSDPA+
    attachment.php

8. Pre-builds

  • Build #1 (Size=114409141 MD5=11C9E0BE468B21BF061C7ECF6673C9B4)
  • Build #2 (Size=119899802 MD5=4CB798A28B38D02217752C6E09F0E226)
 

Attachments

  • version.jpg
    version.jpg
    23.5 KB · Views: 10,640
  • edge.jpg
    edge.jpg
    28.4 KB · Views: 10,099
  • hsdap+.jpg
    hsdap+.jpg
    16.7 KB · Views: 4,749
Last edited:

IcedCube

Senior Member
Nov 9, 2010
356
118
Queensland
coburnsdomain.com
Holy sweet meatballs!

I have a A501, and I'm pleased to hear that the 3G Iconia is getting some love. Makes me wonder if I should sell it with the ICS ROM loaded on it, or keep it now it has ICS love since I have a Galaxy Tab...

Decisions Decisions.

Eagerly waiting a ZIP so we can all be eating some delicious Ice Cream Sandwich. :)
 

yaworski

Senior Member
Jun 24, 2007
158
48
Warsaw
@shchers: aren't you thinking about submitting your work to CyanogenMod so our tables could get official support from CM team? I think there is no Acer Iconia maintainer right now at all in the CM team so you could try and join them as Iconia maintainer. This would be really great.
 

FloatingFatMan

Senior Member
Apr 20, 2005
2,708
539
54
After I've written above reply, I've checked shchers' git repo and there is a kernel but in a binary form.

@shchers: did you build this kernel yourself? GPL licence requires that you need to publish its sources as well.

ONLY if he modified it from Acer's released source. If he didn't, he doesn't have to add the sources to his git (though it'd be handy for conveniences sake). Best we wait and see what he says before jumping to ANY conclusions.

Either way, FANTASTIC work shchers! Thank you VERY much! :D
 

shchers

Senior Member
Apr 11, 2011
72
20
Kiev
@shchers: did you build this kernel yourself? GPL licence requires that you need to publish its sources as well.
No, I used Acer kernel. But thanks for reminder;)
When my kernel will be ready I'll share it with community:)

About ZIP... I see that many people asking about update package, so I started building and it will be ready in a one hour.
 

FloatingFatMan

Senior Member
Apr 20, 2005
2,708
539
54
No, I used Acer kernel. But thanks for reminder;)
When my kernel will be ready I'll share it with community:)

About ZIP... I see that many people asking about update package, so I started building and it will be ready in a one hour.

Awesome. :) Have you thought about the CyanogenMOD suggestion made earlier? If you added your source to that, we could get official support for it on our devices which would rock, and it'd also make life easier for those wanting to get MIUI ported over. :)
 
  • Like
Reactions: terrormattie

shchers

Senior Member
Apr 11, 2011
72
20
Kiev
@shchers: aren't you thinking about submitting your work to CyanogenMod so our tables could get official support from CM team? I think there is no Acer Iconia maintainer right now at all in the CM team so you could try and join them as Iconia maintainer. This would be really great.
Good point, but unfortunately I'd never seen CM source code. May be you can share link to CM Gerrit/Git with me?
 
  • Like
Reactions: terrormattie

yaworski

Senior Member
Jun 24, 2007
158
48
Warsaw
Good point, but unfortunately I'd never seen CM source code. May be you can share link to CM Gerrit/Git with me?

All you need is here:
http://wiki.cyanogenmod.com/wiki/Building_from_source
http://wiki.cyanogenmod.com/wiki/Howto:_Gerrit

(just replace gingerbread branch with ics)

But you probably need working kernel source for the device to submit vendor specific code to CM.

Is this kernel just a binary from Acer's leak? I'm asking because I'm not aware of a working kernel source for a500.
 
  • Like
Reactions: shchers

Moscow Desire

Retired Senior Moderator
Well, I guess I can forget about configuring ubuntu for now :D

cygwin never could get working.

Great job on compiling and getting the link up!

RapidShare.... not so rapid ;) Probably getting flooded by all the 501 users :)

You 500 users go play with the 500 roms and stop sucking all the bandwidth!
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 8
    1. Preparing environment and building

    1.1. Installing bootloader and recovery

    This step can be done only in Windows (can be done on Linux too, but I didn't find right version of Linux nvflash):
    • Run MS Windows (tested even on Windows 7) on host PC
    • Download this package (Size=12592367 MD5=EA890A3B3E1CEDBBD820D1A798A365A2). Inside package:
      1. Windows drivers for nVidia USB device
      2. nvflash tool and required libraries
      3. Unlocked bootloader, see details here
      4. Batch for automatic update, see original batch here
    • Generate your SBK with your CPUID by this link
    • Connect tablet to PC through USB
    • Turn-off tablet
    • Press and hold reset button on tablet
    • Press power and wait until new USB device will be detected
    • Install USB drivers (can be find in package)
    • Run script run.bat and follow recommendations

    1.2. Downloading sources and building Android

    • Create directory for AOSP sources
      Code:
      mkdir aosp && cd aosp
    • Initializing repo
      Code:
      repo init -u [url]https://android.googlesource.com/platform/manifest[/url] -b ics-mr1
    • Downloading sources
      Code:
      repo sync
    • Download sources of Acer Picasso device
      Code:
      git clone git://github.com/shchers/afs_device_acer_picasso.git device/acer/picasso
    • Download sources of MBM RIL library
      Code:
      git clone git://github.com/shchers/afs_vendor_mbm_mbm-ril.git vendor/mbm/mbm-ril
    • Download sources of MBM GPS library
      Code:
      git clone git://github.com/shchers/afs_vendor_mbm_libmbm-gps.git vendor/mbm/libmbm-gps
    • Download sources of MBM GPS service
      Code:
      git clone git://github.com/shchers/afs_vendor_mbm_mbmservice.git vendor/mbm/mbmservice
    • Setting-up build environment
      Code:
      source build/envsetup.sh
    • Configuring target (Acer A500/A501 == full-picasso)
      Code:
      lunch full_picasso-userdebug
    • Building with using all available CPU cores
      Code:
      m -j`grep -c processor /proc/cpuinfo`

    2. Installing Android to device

    2.1. Updating through CWM recovery

    2.1.1. Creating update archive

    • Go to target output directory
      Code:
      cd ${ANDROID_PRODUCT_OUT}
    • Create folder for updater script. Run in console:
      Code:
      mkdir -p META-INF/com/google/android
    • Copy updater script there
      Code:
      show_progress(0.400000, 0);
      ui_print("> Formating system partition");
      format("ext4", "EMMC", "/dev/block/mmcblk0p3", "0");
      ui_print("> Mounting system partition");
      mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");
      ui_print("> Extracting system directory");
      package_extract_dir("system", "/system");
      ui_print("> Creating symlinks");
      show_progress(0.200000,0);
      symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
      symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
      symlink("mksh", "/system/bin/sh");
      symlink("toolbox",
      	"/system/bin/ls","/system/bin/mount","/system/bin/cat",
      	"/system/bin/ps","/system/bin/kill","/system/bin/ln",
      	"/system/bin/insmod","/system/bin/rmmod","/system/bin/lsmod",
      	"/system/bin/ifconfig","/system/bin/setconsole","/system/bin/rm",
      	"/system/bin/mkdir","/system/bin/rmdir","/system/bin/reboot",
      	"/system/bin/getevent","/system/bin/sendevent","/system/bin/date",
      	"/system/bin/wipe","/system/bin/sync","/system/bin/umount",
      	"/system/bin/start","/system/bin/stop","/system/bin/notify",
      	"/system/bin/cmp","/system/bin/dmesg","/system/bin/route",
      	"/system/bin/hd","/system/bin/dd","/system/bin/df",
      	"/system/bin/getprop","/system/bin/setprop","/system/bin/watchprops",
      	"/system/bin/log","/system/bin/sleep","/system/bin/renice",
      	"/system/bin/printenv","/system/bin/smd","/system/bin/chmod",
      	"/system/bin/chown","/system/bin/newfs_msdos","/system/bin/netstat",
      	"/system/bin/ioctl","/system/bin/mv","/system/bin/schedtop",
      	"/system/bin/top","/system/bin/iftop","/system/bin/id",
      	"/system/bin/uptime","/system/bin/vmstat","/system/bin/nandread",
      	"/system/bin/ionice","/system/bin/touch","/system/bin/lsof");
      ui_print("> Applying permissions");
      set_perm_recursive(0, 0, 0755, 0644, "/system");
      set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
      set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
      set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
      set_perm(0, 0, 0755, "/system/etc/bluetooth");
      set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
      set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
      set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
      set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
      set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
      set_perm(0, 0, 0544, "/system/etc/install-recovery.sh");
      set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
      set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor");
      set_perm(0, 0, 0644, "/system/vendor/fake.txt");
      show_progress(0.200000, 10);
      package_extract_file("boot.img", "/dev/block/mmcblk0p2");
      NOTE: Don't rename file! It should be updater-script!
    • Download this archive (Size=149342 MD5=9497D5087FEF04C1EA4EE215A3DC83B8) and extract there
    • Create ZIP archive. Run in console:
      Code:
      zip -r9 full-pack.zip boot.img system META-INF
    • Generate keys. Run in console:
      Code:
      openssl genrsa -out key.pem 1024
      openssl req -new -key key.pem -out request.pem
      openssl x509 -req -days 3650 -in request.pem -signkey key.pem -out certificate.pem
      openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt
    • Run signing archive. Run in console:
      Code:
      java -jar ${ANDROID_HOST_OUT}/framework/signapk.jar certificate.pem key.pk8 full-pack.zip full-pack-sign.zip

    2.1.2. Using CWM recovery

    • Upload full-pack-sign.zip on FAT32 formated microSD card
    • Turn-off tabled
    • Insert microSD
    • Press Power button while hold Volume Down button
    • Release Power button when you'll see text in top left corner, some like "cleaning cache partition..."
    • From opened menu select "wipe data/factory reset"
    • Select "Yes -- delete all user data"
    • Press on "install zip from sdcard" menu
    • Select "choose zip from sdcard"
    • In this menu select "full-pack-sign.zip"
    • After installing press "Go back"
    • Press "reboot device"

    2.2. Updating through Android debug

    2.2.1. Updating system partition

    • Get a root access
      Code:
      adb root && adb wait-for-device
    • Remount system partition with R/W permitions
      Code:
      adb shell mount -o remount,rw -t ext4 /dev/block/mmcblk0p3 /system/
    • Sync binaries
      Code:
      adb shell stop && adb sync && adb reboot

    2.2.2. Updating boot partition

    • Reboot to fastboot
      Code:
      adb reboot bootloader
    • Select one of possible methods to use new boot partition
      1. Boot with custom kernel and ramdisk without flashing (boot partition will not be rewrote) - this mode useful for debugging kernel/root
        Code:
        fastboot boot ${ANDROID_PRODUCT_OUT}/kernel ${ANDROID_PRODUCT_OUT}/ramdisk.img
      2. Boot with custom boot.img without flashing (boot partition will not be rewrote) - this mode also can be used for debugging kernel/root
        Code:
        fastboot boot ${ANDROID_PRODUCT_OUT}/boot.img
      3. Flashing new boot.img to boot partition
        Code:
        fastboot flash:raw boot ${ANDROID_PRODUCT_OUT}/kernel ${ANDROID_PRODUCT_OUT}/ramdisk.img

    2.3. Enabling Google services

    To enable Google services on new system, should be copied several Google binaries to /system/app. To do it should b done several steps:
    • Get a root access
      Code:
      adb root && adb wait-for-device
    • Remount system partition with R/W permitions
      Code:
      adb shell mount -o remount,rw -t ext4 /dev/block/mmcblk0p3 /system/
    • Download this (i.e. GAPPS) archive (Size=16449776 MD5=C7E6FAAFE7223A17DE93DD1D7A968734)
    • Extract it somewhere
      Code:
      mkdir GooglePack && cd GooglePack
      unzip googlepack.zip
    • Stop dalvik virtual machine
      Code:
      adb shell stop
    • Upload APK files
      Code:
      for f in `ls *.apk`; do echo "Uploading $f" && adb push $f /system/app/; done
    • Remove Provision.apk - it looks like setup wizard, but SetupWizard.apk much powerful
    • Reboot device to recovery and wipe data partition (use CWM "Wipe" menu for it)
      Code:
      adb reboot recovery
    • Reboot device after wiping
    • Use wizard on system start-up to configure your account
    • Use Android Market to install GMail and other apps

    3. Debugging

    3.1. RILD

    To see rild log should be done:
    Code:
    adb logcat -b radio

    4. FAQ

    Q: WiFi scanner show few AP, but can't connect anywhere...
    A: Try to make factory reset.

    Q: Is it thor2002ro sources?
    A: No, it is my own port.

    Q: What is the version?
    A: ICS MR1 (Current version: 4.0.4).

    5. Supported features

    • 2D/3D acceleration
    • Photo/Video Camera
    • 2G/3G
    • GPS
    • AGPS
    • SMS (tested only in GSM networks)
    • WiFi
    • Bluetooth
    • Audio/Video playback
    • Image viewing
    • External SD Card
    • External USB storage
    • Compass
    • Gyroscope

    6. To do

    1. [rild] Add support for USSD
    2. [rild] Add support/check for MMS
    3. [libsensors] Implement libsensors and replace Acer binaries
    4. [audio] Add support for USB audio devices
    5. [audio] Add support for modem audio input

    7. Screenshots
    • Version
      attachment.php
    • EDGE connection
      attachment.php
    • Speed test results on HSDPA+
      attachment.php

    8. Pre-builds

    • Build #1 (Size=114409141 MD5=11C9E0BE468B21BF061C7ECF6673C9B4)
    • Build #2 (Size=119899802 MD5=4CB798A28B38D02217752C6E09F0E226)
    3
    [reserved]

    Reserved for further updates, if it will be necessary...
    2
    I see that package was 10 times downloaded, but no one comment:)
    2
    Good point, but unfortunately I'd never seen CM source code. May be you can share link to CM Gerrit/Git with me?

    You should find all you need through the following link...

    http://www.cyanogenmod.com/community

    There's also a link to their Git hub on there.