[Miscellaneous Android Development] psyke83:
CyanogenMod 7.2.0-RC1 "u8160" Port

Latest release: v1.5 [20120814]

Latest Google Apps package: 20110828

Hey folks,

This is a port of Cyanogen 7.2.0-RC1 (based on Android Gingerbread 2.3.7) for the Vodafone Smart VF858 (Huawei U8160) and Huawei X1 (U8180). The current port status is stable - all hardware is working correctly, but see post #2 for any known issues.

Pre-requisites:

ClockworkMod Recovery. The easiest method to flash ClockworkMod Recovery is via the ROM Manager application. See post #2 for more details.

Install the GooManager application from the Play store.

Installation (updating from older CM7 build):

Open the GooManager application.

Select the Check for rom updates option.

Click on the notification for the available update and then click the Download button.

When the download finishes, enter recovery and install the update package followed by the Google Apps package.

Installation (first time/new users):

Open the GooManager application.

Navigate to psyke83 -> roms -> u8160.

Click on the build you wish to install from the list.

If needed, click the Download Gapps button to download the Google Apps package. The most recent (and most suitable) version will always be selected for you automatically.

Click on the Download button to download the rom.

Once the download(s) are complete, reboot into recovery and install the update package, followed by the Google Apps package.

Important: if you are updating from a stock or custom ROM, choose the data wipe option before rebooting.

Releases / Changelog:

1.5 (20120814):

Updated CyanogenMod source

Undo modification to camera's maximum megapixel resolution for U8180 users (due to crashes)

Switch to using newer U8180 proprietaries by default

Add-on packages for USB host mode kernel, wpa_supplicant 5 and 6 (for users to test for any differences with wifi stability; base ROM uses v6 by default), U8160 and U8180 proprietaries (to test for any changes in functionality with wifi, camera and RIL).

1.4 (final) (20120802):

Hotfix 2: kernel: revert aps-12d change due to problems with proximity sensor; update 02setuphardware script to modify camera's maximum megapixel resolution on per-device basis (2mp for U8160, 3mp for U8180).

Hotfix 1: kernel: add early suspend/resume hooks to aps-12d light sensor driver, disable unused adp5587 keypad driver; remove 1600x1200 resolution filter from Camera app; add ro.config.PicMaxSize=2mp property to build.prop, which should limit libcamera's support to 1600x1200 resolution and therefore prevent camera crashes for certain users.

Updated CyanogenMod source

Consolidate all fixes from 1.4RC release + hotfixes.

Remove RomManager from default installation. Why? I no longer distribute ROMs/updates using it, and debug logging from the app suggests that it may have potential memory leaks issues. My phone now reports 45-60MB (60-75MB without Google Sync activated) free on average after removal of this package. If RomManager is still installed after upgrading to this release, it means that you have a local update installed, which you can uninstall just like a regular user app.

Re-introduce Adriano Carrata's patches: fix PIN entry in airplane mode; add workaround for apps which specify an invalid pixel format (i.e. Sygic).

Enable speex encoder support.

Implement additional patch for security issue CVE-2011-3874. Note: this vulnerability is supposed to be patched in the framework already, but the exploit test case still reports the exploit as being available. This patch may only fix the false-positive result of the exploit test. Either way, it's useful.

1.4 RC1 (20120729):

*Note: I'm provisionally marking this as a release candidate, as I've made a lot of changes to the kernel that may have unforeseen effects for certain users. If there aren't major problems, this will be renamed to the final 1.4 release.

Hotfix 5: removed akm8973 driver (not used after all), added mma8452 driver, more kernel optimizations.

Hotfix 4: added akm8973 driver (for real this time), fixed init.rc script to set U8180 model automatically, small kernel configuration optimizations.

Hotfix 3: added fixed wifi driver to solve issues with power saving mode and resume from idle (I had forgot to include this since hotfix 1 - whoops); added akm8973 and s5ksca drivers back into kernel to fix accelerometer and camera sensors for U8180 (and some U8160) users; fixed video camera mode; removed automatic reodexing option from U8160Parts (too hacky); removed U8180 branding option from U8160Parts (ro.product.model is now adjusted for U8180 users automatically on every boot).

Hotfix 2: fix U8160 (synaptics_i2c_rmi_1564) driver

Hotfix 1: re-added missing drivers and kernel config for U8180; fixed issue in which wifi would get held in maximum power saving mode under certain circumstances.

md5: 936cc309fe0a87c01091cbd0ee5edd9c

Updated CyanogenMod source

Kernel: reworked from scratch for stability (there were some errors in my previous CodeAurora merge); fixed some issues with Huawei-specific USB code; disabled Huawei virtual CD-ROM USB driver; fixed compass driver; removed Huawei wakelock/suspend code that was causing "unknown_wakeups" wakelocks to be generated, possibly draining battery; removed many unnecessary drivers & some debug options from default kernel configuration.

Wifi: Updated bcm4329 driver - adapted from clean android-msm.2.6.39 sources, including patches from Nvidia and Huawei to support our device properly; using wpa_supplicant_6 with combo scan enabled, including a fix for resume from idle. Summary: wireless should now work on all channels (>11 had issues before), hidden SSIDs work properly, and resume from idle works properly.

Removed USB host support from default kernel (will package separately)

Disable compcache (ramzswap) by default

Changed ramzswap, CIFS and TUN (vpn) drivers to modules, moved dhd.ko from boot image to /system to reduce memory footprint of kernel.

1.3 (20120625):

md5: aabb0add99abcec1ceebb5588242358f

Updated CyanogenMod source.

Add U8160Parts settings application. New options available via Settings -> Device settings: ROM re-odexing [not recommended for people already using some form of app2sd], attenuation of speaker, headset, FM radio, Kernel Samepage Merging, Swap, Generate bug report. Removed madconfig script.

Testing some patches by ac1953: automatic resume of music after interruption by incoming call; fix FM radio pop, ensure that last used frequency is properly tuned on cold start of FM app (including my change); enable workaround for invalid PixelFormat 8 (fixes Sygic).

libaudio: add FM audio attenuation support, fix minimum in-call volume causing sound to mute completely.

Resolve battery drain cause by kernel configuration in previous release (CONFIG_FB_EARLYSUSPEND has issues with suspend in Gingebread).

Revert to original bcm4329 driver (from Huawei U8180 source drop) with increased dhd_watchdog_ms period; disable combo scanning in supplicant to fix hidden networks; ensure that dhcpcd server is always stopped when wpa_supplicant is stopped. Testing to see if this improves battery usage, and/or resolves the problem with connecting to networks beyond channel 11.

[release candidate] (20120616):

Updated CyanogenMod source.

Kernel: disable framebuffer console (ANDROID text), instead transitioning directly from egg-timer (or bootsplash image, if installed) to CyanogenMod bootanimation - may improve battery

Kernel: enable USB Host mode (support modules are installed to /system/lib/modules/) - needs testing from users with OTG adaptors

Kernel: enable Kernel Samepage Merging, switch from console-based earlysuspend to framebuffer-based earlysuspend - may improve battery

New libaudio from Adriano Carrata with audio attenuation support, improved AudioFilter.csv - completely solves audio distortion

Switch to open source gralloc module (fixed - video decoders now work properly)

Fix issue in which framebuffer earlysuspend could sometimes cause the screen not to wake properly.

v1.2 (20120403):

Updated CyanogenMod source.

New kernel (based on latest CodeAurora froyo_almond branch).

Enable workaround to reduce audio distortion at higher volume levels.

Completely fixed instability/freezes related to USB tethering.

Various patches for memory leaks and minor bugs from gerrit.

v1.1 (20120317):

Hotfix 1: disable CGROUPS, fix wireless suspend stability issue

Updated CyanogenMod source - version 7.2.0-RC1

Cherry-picked various patches from gerrit to fix issues with core binaries/libraries (dalvik, bionic, zlib, etc.)

Kernel: reverted to stable 2.6.32.9 kernel due to issues with battery consumption. Note: CGROUPS is still enabled, but the Application Not Responding issue on first boot seems to be fixed

Kernel: disabled OTG support due to battery consumption issues (will package a separate kernel for interested testers)

Kernel: updated pmem driver, fixed issues with smartassV2 & interactiveX CPU governors

Wifi: stability patch for bcm4329 driver

wpa_supplicant_6: wait for control interface monitor to be brought up before starting. Improves reliability of wireless when reconnecting from idle.

libaudio: fix for minimum in-call volume being incorrectly muted in certain cases (such as on speakerphone)

GPS: use worldwide SUPL server by default

Compcache: back to 18%

ADWLauncher: lock action buttons by default (helps avoid cases in which users accidentally detach the icons for these buttons)

Change scrolling cache setting to further improve scrolling speed

v1.0 (20120227):

Known issue: you may see the message "process system is not responding" after unlock on first boot. This is due to CGROUPS being enabled in the kernel (and also happens with the stock kernel - it's not a problem with my updates). You can safely disregard the message as no harm will be done.

Hotfix 1test1 [8th March]: Changes to kernel to fix battery drain - please test.

Updated CyanogenMod source.

Kernel: now using version 2.6.32.57 (Code Aurora's froyo_almond updates + upstream's longterm 2.6.32.y updates merged)

Kernel: new bcm4329 wifi driver, which should fix reconnect from idle for hidden networks

Kernel config: enabled CGROUPS, tweaks to improve battery usage

Scrolling cache tweak.

v0.9 (20120203):

Hotfix 4test5 [21 Feb]: Revert longterm patches due to random reboot issue.

Hotfix 4test4 [21 Feb]: Kernel: fix screen not turning back on from suspend, other small fixes.

Hotfix 4test3 [20 Feb]: Kernel: rebased to CodeAurora froyo_almond branch & merged longterm 2.6.32.57 changes, updated wifi source driver.

Hotfix 3 [12 Feb]: Kernel: more stable config (enabled ARMv6 K extensions which stops USB errors; fix for U8180 key issues).

Hotfix 2 [10 Feb]: Fix call audio via Bluetooth headset; disabled AHB overclocking due to instability during USB tethering (and possibly also during other activities); wifi module now built from source to improve reliability; updated wpa_supplicant_6 to use combo scanning; re-enabled SCHED_HRTICK in config (it wasn't the cause of instability).

Hotfix 1: Fix audio routing issues that were causing problems with the mic and headset detection during calls. This may or may not affect the Bluetooth headset bug - please let me know.

Updated CyanogenMod source (almost 7.2.0-RC1).

Performance: disable scrolling cache (prevents lag)

Performance/battery: disable ICS rotation animation (it's slow and causes instability; ICS transition animations are still working smoothly)

Performance/battery: updated android staging kernel drivers from 2.6.35 kernel (notably bringing improvements to the lowmemorykiller driver)

Performance/stability: moved to stable copybit version

Stability: rebuilt kernel using 4.4.3 toolchain from CM7 source.

Stability: kernel audio driver patches to prevent rare blackscreen during incoming calls/low memory conditions

Stability: further updates to latest CAF libaudio version with FM routing code added. Bluetooth calling should work again, but needs testing.

Battery: added 2g/3g mobiledata switch option (allows you to use the mobiledata statusbar button to switch between 2g/3g network modes).

Fancy: enable electron beam animation for screen off by default (performance is satisfactory)

Reverted SIM lock change that was causing people to have problems with certain SIM cards.

FM: fixed audio routing (headphones will not longer malfunction if you use the speaker and then exit the FM app); prevent frequencies out of bounds being used; allow looping between the top/bottom of the frequency bands.

Improved mac address generator script to prevent errors for certain devices.

Increased default compcache memory allocation to 26%.

Miscellaneous code cleanups.

Now distributed via ROM Manager with a greatly simplified installation procedure.

v0.8 - 26 January 2012:

Updated CyanogenMod source (still 7.2.0-RC0).

Fix for rare issue where notification area items can get "stuck", causing notifications to malfunction.

Now includes ICS rotation and transition animations (merged officially into CM7.2)

Wifi: disable wpa_supplicant_6's combo scan to fix reconnect/hidden SSID issues

Bluetooth: disable master mode to increase reliability with some peripherals

libaudio: code cleanup (based on rmcc's geeksphone zero); removed dependency on proprietary liba2dp.so

ADWLauncher: allow rotation of home screen by default

Kernel: re-enable multitouch support (oops)

Init: reduce default mmcblk0 readahead from 2MB -> 258KB to avoid potential lag.

The phone is no longer restricted when network locked and using a different SIM card.

Small cleanups.

v0.7 - 22 January 2012:

Updated CyanogenMod source (still 7.2.0-RC0).

Kernel stability fix (disabled SCHED_HRTICK due to instability/random reboot issue).

MAC addresses for Bluetooth and wifi are now accurate.

Improved Bluetooth audio.conf based on this bug report. This should improve Bluetooth stability with audio peripherals.

Reduced default compcache memory usage from 18% -> 10% to reduce potential lag.

Reduce LatinIME landscape keyboard key height (.25in -> .23in)

Use automatic brightness setting by default.

v0.6 - 29 December 2011:

Hotfix 2 [31 December 2011]: Updated "madconfig" script. You can now run adb shell madconfig u8180 to activate U8180 ROM branding that will survive future ROM upgrades (of my own release).

Hotfix 1 [31 December 2011]: Updated kernel (further stability fixes, added interactiveX cpu scheduler, unlocked overclock frequencies up to 768Mhz); updated libaudio to increase buffer size (this improves smoothness of apps using audio - e.g., Gensoid can now play games at full 50/60fps in landscape with no visual stuttering @633Mhz, whereas before it would stutter constantly); renamed tethering device from usb -> rndis (cosmetic fix); tweaked LatinIME keyboard to use .23in key height (down from .26in).

Updated CyanogenMod source (7.2.0-RC0).

Kernel: rebuilt using latest stable linaro gcc release: 4.5-2011.11

Kernel: fixed phone freeze issue when USB tethering is interrupted. This change also seems to reduce general system lag that was being caused by a conflict in the USB drivers.

Kernel: fixed "back" softkey alignment.

Kernel: fixed touchscreen right edge sensitivity issue (portrait).

Renamed wifi device from eth0 -> wlan0 for better consistency.

Re-enabled surface dithering by default; it has been reported that font rendering is improved with this option enabled, and I don't see much performance impact when enabled.

Experimental build.prop tweak to enable 3mp camera support (untested).

v0.5 - 10 November 2011:

Updated CyanogenMod source.

Partial fix for third-party camera apps (e.g. barcode scanners).

v0.4 - 21 October 2011:

Hotfix 2 [23 October 2011]: Updated device permissions. This fixes the sound recorder and camcorder.

Hotfix 1 [21 October 2011]: Reverted to v5 wpa_supplicant. This solves the issue in which wifi refuses to connect to hidden SSIDs.

Updated CyanogenMod source.

Included some patches to bring further improvements to 2D graphics & general system performance.

Patched framework to swap volume controls when the phone is rotated 90 degrees.

Improve USB transfer speed while in UMS (USB Mass Storage) mode.

Fix some graphical corruption on widgets in stock Camera app.

Other small fixes.

v0.3 - 10 October 2011:

Updated CyanogenMod source - final 7.1 release.

Improved 2D rendering speed.

Switched to EU GPS servers.

Fixed headset/media control keys.

Re-enabled automatic brightness.

v0.2 - 3 October 2011:

Hotfix 3 [6 October 2011]: Kernel: reverted to stable compcache (ramzswap) driver. Framework: disabled JNI debugging -this fixes force-close errors in some applications such as TapFish, and increases overall system performance.

Hotfix 2 [4 October 2011]: Kernel: improved multitouch driver to fix touchscreen accuracy (especially soft keys), improved haptic feedback, fix to zram module. Small fixes to libaudio (the distortion is not yet resolved, however).

Hotfix 1 [3 October 2011]: Kernel: added compcache (zram.ko) module, reduced boot delay, unlocked 729Mhz frequency, small bugfixes. Framework: enable compcache by default (18% RAM usage, customizable in CyanogenMod Settings - Performance -> Compcache RAM Usage.)

Updated CyanogenMod source: now based on Gingerbread version 2.3.7.

Kernel now supports under/overclock from 30Mhz - 710Mhz (min/max frequency is set to 30Mhz - 600Mhz by default, so you must manually activate the higher frequencies via Settings -> CyanogenMod Settings -> Performance -> CPU settings). Thanks to estebanSannin. NOTE: My phone is very unstable at 691Mhz, and freezes immediately at 710Mhz. I am providing these higher frequencies just in case your phone has better tolerance for overclocking. I accept no responsibility for any damage caused as a result of overclocking.

FM Radio app: fixed seeking (left/right arrows).

Disabled automatic brightness (it potentially avoids battery drain, and never worked anyway). Thanks to tas0s for the tip.

Enable workaround to prevent corruption issues if you use the Simple2EXT app2sd app.

Reverted Gallery app to 2D version, due to lack of hardware 3D acceleration on our phone.

Added compatibility with sebastian404's ClockworkMod port. You can now install this ROM using his CWM recovery (as well as my own).

Improved FM volume calculation, reduced overall volume & small fixes to audio code.

Various small bugfixes.

v0.1 - 12 September 2011:

Hotfix 1 [18 September 2011]: Boot: removed custom lowmemorykiller tweaks; kernel: various updates (smartassV2, TinyRCU, Simple and V(R) IO schedulers), bugfixes and optimizations, changed default scheduler to Simple IO; libaudio: code cleanup; Framework: enabled hardware-accelerated 2D rendering.

First release. All hardware appears to be working correctly.

Source Code:

Kernel: https://github.com/psyke83/kernel_huawei_u8160

Device: https://github.com/psyke83/android_device_huawei_u8160