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):
1.2. Downloading sources and building Android
2. Installing Android to device
2.1. Updating through CWM recovery
2.1.1. Creating update archive
2.1.2. Using CWM recovery
2.2. Updating through Android debug
2.2.1. Updating system partition
2.2.2. Updating boot partition
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:
3. Debugging
3.1. RILD
To see rild log should be done:
4. FAQ
5. Supported features
6. To do
7. Screenshots
8. Pre-builds
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:
- 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");
- 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
- 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
- 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
- Flashing new boot.img to boot partition
Code:fastboot flash:raw boot ${ANDROID_PRODUCT_OUT}/kernel ${ANDROID_PRODUCT_OUT}/ramdisk.img
- Boot with custom kernel and ramdisk without flashing (boot partition will not be rewrote) - this mode useful for debugging kernel/root
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.
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
- [rild] Add support for USSD
- [rild] Add support/check for MMS
- [libsensors] Implement libsensors and replace Acer binaries
- [audio] Add support for USB audio devices
- [audio] Add support for modem audio input
7. Screenshots
- Version
- EDGE connection
- Speed test results on HSDPA+
8. Pre-builds
Attachments
Last edited: