If you like my work, please consider donating!

SAPPHIRE 0.8.4 DROID (Froyo)

Release Information

ROM Sapphire
Device Droid
Version 0.8.4
Status Release
OS Android 2.2 (Froyo)
License Android: (GPLv2 + Apache), Sapphire: (GPLv2)
Download sapphire-0.8.4-update.zip
Mirrors MyDroidWorld Sh7m
MD5 52b608a9f7a52906717e4228a98e4d01

Google Apps

As of 0.8.4, sapphire is no longer including google apps by default, for legal reasons. If you still wish to have the google experience installed, then please download the package below and install it as well.

Download sapphire-0.8.4-gapps-update.zip
Mirrors MyDroidWorld Sh7m
MD5 57adbbfb74a93f271c4f66b1fbf52092

License Agreement

The core of Android is released from AOSP under a combination of the Apache and GPLv2 licenses. Sapphire is released under the GPLv2 license, which can be found below:

Sapphire ROM - A custom Android OS built from AOSP
Copyright (C) 2010 Austen Dicken (CVPCS)

This program is free software; you can redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not,
write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Core Features

Below are a list of the core features provided by Sapphire 0.8.4 (for a list of changes since 0.7.0, view the changelog at bottom of the page):

  • Base Features
    • Built from source
    • Fully zipaligned
    • Fully deodexed
    • Fully optipnged
    • Adobe FLASH support Download (also available in market)
  • Kernel Features
    • Overclocking started automatically at boot time (regardless of whether SetCPU is there or not)
    • Proper working “modprobe” command (makes loading/unloading kernel modules easier)
  • Command-Line Tools
    • Vixie-CRON low-level task scheduler (command-line task scheduler)
    • Colored BASH shell (simply type “bash” after entering adb shell or terminal emulator shell)
    • NANO text editor with syntax highlighting (simply type “nano” using a terminal emulator [syntax hiyghlighting for asm, c, css, html, java, php, sh, xml, and more])
    • Busybox (lots of fancy tools and stuffs)
  • Apps
    • Superuser (provides root access)
    • Spare Parts app (allows for some nice tweaking)
    • Dev Tools (good for developers)
    • App2SD works
    • Eliot Stocker Music app (stock/milestone available through switchapk)
  • ScriptyBox (scripts!)
    • adblock (turns ads on or off in the browser/apps)
    • camsounds (turns camera shutter/record sounds on or off)
    • compcache (turns compcache on/off)
    • cpuinfo (display CPU info)
    • freemem (ensure that 50, 75, or 100 mb of RAM is always available)
    • halt (shuts down the system)
    • meminfo (display memory info)
    • mtdinfo (display internal system partition info)
    • rmapk (remove various APKs, such as amazon mp3 and whatnot)
    • sysro (mounts the system partition read-only)
    • sysrw (mounts the system partition read-write)
    • swapinfo (displays swap space info)
    • switchapk (downloads and swaps between various apps, i.e. milestone and 2.1 music, without the need to put them on the sd card)
    • zipalign_apks (zipaligns ALL apks on the entire system)
  • Other Tweaks
    • Increased wireless scan time to 90 seconds (saves battery life)
    • Reboot to recovery option
    • Ability to pick colors for notification texts (in spare parts)
    • Reduced ring delay
    • FLAC support
    • Use of volume/camera buttons to control music while screen is off (see changelog for instructions)
    • Battery percentages in status bar
  • Branding
    • Custom boot animation (looks pretty slick if i say so myself)

Known Issues

Market Hack

PLEASE READ THE EXPLANATION BELOW BEFORE APPLYING THIS MARKET HACK. IT IS IMPORTANT TO UNDERSTAND WHAT IT DOES BEFORE DECIDING WHETHER TO APPLY IT OR NOT

This release of sapphire updates its build.prop information to reflect the FRF84B OTA leak from Verizon. This means that so far as the market can tell, your device will be an Android 2.2 (Froyo) phone running sholes (Droid) hardware from Verizon. This generally works fine, but there is an issue on market where some paid apps do not show up on 2.2. This is most likely an issue with them being flagged as incompatible with 2.2 as they haven't been updated, or some other such thing.

In response to this, I have made a market hack that will essentially “trick” the market into thinking your device is an Android 2.1-update1 (Eclair) phone running sholes (Droid) hardware from Verizon. This essentially allows the device to browse market, but has the potential to have adverse effects, as the market no longer knows the real version of the operating system, and will make decisions based on that false information.

In the end, it is up to you to decide whether or not you wish to apply this patch or not. There is no real danger in applying, nor in not applying. I recommend making a backup anyway. Also, I have not tested what happens if this patch is applied prior to the initial boot of the system, so I cannot say whether market sync will function properly or not. My recommendation is to boot without the patch, wait for your apps to finish syncing, and then apply the patch if you wish to.

Thank you for reading my explanation, and as promised, here is the patch file:

Download sapphire-0.8.4-market_hack-update.zip
Mirrors MyDroidWorld Sh7m
MD5 338111572c807f68c1fdc88408c36930

Kernels

All supported kernels for this release are provided by P3Droid, and are available on his site: P3Droid Kernels. Special thanks goes out to him for all his hard work on these beauties! :D

Although other froyo kernels (such as ChevyNo1's or Bekits) will more than likely work with Sapphire, it is important to note that sapphire uses a customized initialization process that is written to the boot image. What does that mean? Well, essentially unless the kernel is packaged using Koush and Bekit's AnyKernel format (such as the ones below are), then you will be stuck on the Motorola logo upon install. Thus, the below kernels are recommended!

Overclocking your phone can be dangerous and is guaranteed to increase the likelyhood that it will become unstable. If you are experiencing random hard-reboots or force-closes, consider trying a kernel either with a higher voltage, or a lower clock speed. I personally recommend kernel 7x1000LV that is included, as it provides good speed with good stability, and longer battery life.

Themes

Below are the various themes that have been set up to work with Sapphire 0.8.4. For screenshots of these themes in action, click on their name in the list!

The STOCK theme is designed to overwrite all of the elements from any theme listed below. That being said, the stock theme is NOT guaranteed to restore to stock from third-party themes. When using third-party themes, it is recommended to make a backup of your device in case you decide to revert back to stock.

Download

Theme Name Download Mirrors MD5
Stock (Default) sapphire-0.8.4-stock-update.zip MyDroidWorld Sh7m 03e9f344840ee76b60268b57c312a76b
Black Bar Mod sapphire-0.8.4-black_bar-update.zip MyDroidWorld Sh7m 06ef05eb77b12e83e4d6b648f4ce9f96
NexTANG sapphire-0.8.4-nextang-update.zip MyDroidWorld Sh7m c49891e28b76c5e3e01c7eba2e97bf79
Smoked Glass (blue) sapphire-0.8.4-smoked_glass_blue-update.zip MyDroidWorld Sh7m aa91a19d42f8d3db2711242af3d4f89b
Smoked Glass (blue) [NO FONTS] sapphire-0.8.4-smoked_glass_blue-nofonts-update.zip MyDroidWorld Sh7m b932ffc8e95ccaf1e4987368a2fcb130

Theme Installation

Installation of themes is done using update.zip format. As such, simply download the desired theme file to /sdcard/update.zip and then apply it.

Because of how theming is done in android, it is recommended that you always apply a new theme by first reverting back to the stock theme (as themes tend to change different things and don't always overlap). The easiest way to do this is to download both the Stock theme, as well as the theme you want, and then apply them in that order.

Many themes require that text colors be changed as well using the GEM Settings app. It is recommended that you make these changes PRIOR to installing the theme, as the changes themselves require a reboot anyway to take effect. For suggested values for the text colors, check out the theme's corresponding screenshot page.

It is recommended that you WIPE THE CACHE before installing a theme. This simply promotes stability and will prevent some unnecessary problems when you reboot.

Installation

Installation is performed using the standard update.zip installation method. The steps of which are:

  1. Download the update.zip file at the top of this page
  2. Reboot your phone into recovery mode
  3. MAKE A BACKUP OF YOUR PHONE
  4. Reset phone to factory default (THIS STEP IS REQUIRED FOR THIS VERSION [see explanation below])
  5. Push sapphire-0.8.4-update.zip to /sdcard/update.zip
  6. Tell your recovery to allow update.zip installation
  7. Install from /sdcard/update.zip

If you plan on installing a new kernel or theme, simply follow the same steps as above with those zip files.

FULL DATA WIPE IS REQUIRED FOR THIS VERSION

Explanation: From this point on, unless otherwise stated, Sapphire will only provide support for devices that have performed a full data wipe (factory reset) prior to installation. The reason for this is simple. Stale data on the /data and /cache partitions often cause a large number of problems, and leads to unexpected or unintended behavior in various applications as well as the system core. This is not a problem with the ROM itself, but a problem caused by the stale data. For that reason, it is simply too difficult to try to sort out bugs that are a result of this, so unless otherwise stated, we will expect all bugs to be coming from a device that has had a full data wipe performed on it. It is also important to note, that restoring data from system apps in Titanium Backup (or another similar app) can produce the same problems. So in the end, if you wish to attempt to install without a system wipe, go for it, but there may or may not be problems.

The first time you boot Sapphire will also be the longest. This is because it must rebuild the dalvik cache to use the system. Please give it a fair amount of time (anywhere from 1 to 10 minutes) for this to occur.

Occasionally the system will be unstable following the initial boot of the system. This is generally caused by the dalvik cache being rebuilt, and can often be solved by simply rebooting the phone after the system has fully booted initially.

Report a Bug / Request a Feature

All bug reports and feature requests will be done through Bugzilla, an issue tracker hosted on this site. It requires a valid email to register (which is only used for tracking which users have what bugs), and provides a much better interface to report and track problems or features.

You can find the Sapphire Bugzilla here: CVPCS Sapphire Bugzilla

Donations

As a starving college student, I do this on my free time simply because I love it and want to provide something great to the community. That being said, I would love to be able to devote more time to doing this as a living. If you like the work that I do, please consider making a contribution!

Changelog

Below is the changelog for the system.

A copy of the entire changelog for the system is always included on the device itself at /system/etc/CHANGELOG-GEM.

0.8.4:
    Removed google apps by default [cvpcs]
        For legal reasons, google apps have been removed from sapphire by
        default and must be installed separately

0.8.3:
    Switched to EliotStocker Music overhaul [eliotstocker]
        Moved to ES music overhaul by default.  Can switch back to stock using
        switchapk

    Modified scriptybox [cvpcs]
        changed switchapk url definition

    Changed build.prop overrides to fix Market issues [cyanogen]
        Changed the build prop overrides to match that of FRF84B so that market
        will believe Sapphire is a standard verizon release

    Added ability to see MOD/ROM version in Settings [cvpcs]
        This allows for the phone to better mimick verizon's releases, as the
        Sapphire version is no longer stored in build.display.id

0.8.2:
    Removed native IM app [cvpcs]
        The interface that the native IM app uses has been removed from android
        causing the app to force-close indefinitely.  For this reason, this app
        has been removed from sapphire.

    Modifications to scriptybox [cvpcs]
        freemem:
            added warning message to be displayed when users change task killer
            settings
        rmapk:
            added "search" to remove extra google quick search widget
            added "speech" to remove speech recorder

    Changed default battery % color to white [cvpcs]
        White is easier to read as the background color as the battery drains
        is black

    Other tweaks:
        Removed extra quick search app [cvpcs]

0.8.1:
    Modifications to Scriptybox [cvpcs]
        Renamed "original" to "stock" in switchapk music to reduce confusion

    Added Notification LED always blinks setting [cvpcs]
        There is now a setting in GEM Settings that enables the notification
        LED to blink regardless of whether the screen is on or not. (defaults
        to standard behavior of blinking only when screen is off)

    Moved to new vendor setup to support multiple hardware [cvpcs]
        Changed vendor setups to support multiple hardware in the future

0.8.0:
    Moved FLAC scanning support to libstagefright [cyanogen]
        To better conform with froyo, flac scanning was removed from opencore
        and placed in libstagefright

    Added GEM Settings app [cvpcs]
        Removes the need to modify the development portion of AOSP.  All
        sapphire-specific settings will be held in this app now.  All color
        settings have been moved from spare parts to this app.

    Added battery percentage overlay [cvpcs (minor rework)]
                                     [cyanogen (base)]
        Optional text display over the battery icon that notifies of the
        percentage of battery life remaining.  This display can be turned off
        in spare parts.  It also does not display if plugged in or at 100%.

    Custom-built kernels [p3droid]
        P3Droid has custom-built some kernels for sapphire!  Thanks goes out
        to him for all the hard work.  These new kernels now provide several
        missing modules such as compcache and cifs and more.

    Other tweaks:
        Added ability to shut off USB Debugging notification [cvpcs]
        Added ability to remove status bar clock [cvpcs]

0.7.0:
    Added Eliot Stocker's Music App [eliotstocker]
        Overhaul of the stock Music app.  Now available using switchapk.

    Updated build fingerprint to 2.2 [cvpcs]
        The latest build uses the fingerprint from verizon's FRF84B leak,
        which is for Android 2.2 instead of android 2.1 (as was used before).

    New kernel [p3droid]
        This build of sapphire sports the LV125-1000-v32 kernel from P3Droid's
        website natively

    Modified scriptybox [cvpcs]
        Modified rmapk:
            added ability to remove ChromeToPhone and Tips
        Added compcache:
            enables and disables compcache support

    Switched to FRF84B proprietaries [cvpcs]
        Based the hardware/system files off of the latest FRF84B leak from
        motorola.  Thanks to P3Droid for the leak!

    Added compcache userspace [cvpcs]
        allows for in-RAM swap space, which essentially slightly increases
        the amount of virtual RAM available to the system.

    Added control of media based on volume/camera buttons [cvpcs (camera)]
                                                          [cyanogen (vol)]
        Long-pressing the volume up/down buttons changes tracks
        Long-pressing the camera button play/pauses tracks

0.6.2:
    Re-added compcache executable
        NOTE: compcache support is not yet enabled in the kernel, so although
        the executable is there, unless you load a new kernel with compcache
        support.  Expect support in the next kernel.

    Fixed a control race condition for bluetooth [cyanogen]
        There was a race condition that would cause connections to fail for
        certain bluetooth devices.  Kudos to cyanogen's team for finding this
        error as well as the fix.

    Other tweaks:
        Reduced ring delay [cvpcs]
        Re-added FLAC support [cyanogen]
        Re-added the droid notification sound back [cvpcs]
        Updated to wpa-supplicant 0.6.x [koush]
        Added ChromeToPhone app [cvpcs]

0.6.1:
    Modified scriptybox [cvpcs]
        updated to be relevent to froyo
        added Visual VM to rmapk

    Switched to bekit's kernel [bekit]
        seems to provide more stability for wifi.  also includes various other
        modules that weren't included before

    Fixed a problem with the qwerty touchscreen file not being found [cvpcs]
        didn't really seem to cause any problems, but hey, i hate that it was
        spitting out errors to the log...

    Other tweaks:
        Optipng-ed the whole system [cvpcs]
        Re-added native IM app [cvpcs]

0.6.0:
    Updated to AOSP source for Froyo [cvpcs]
        this update was hell in and of itself to get going, so lots of thanks to
        Sniffle and Koush, as well as support from anyone else! :D

0.5.2:
    Modified SpareParts [cvpcs]
        added ability to customize text colors for download notifications

    Fixed MMS [cvpcs]
        provided proper carrier file (credit to cyanogen for the file itself) to
        properly connect to verizon

0.5.1:
    Added Color Picker in Spare Parts [cvpcs (modifications)]
                                      [cyanogen (base work and commit)]
        provides a method to set the various text colors in the notifcation and
        status bars

    Modified scriptybox [cvpcs]
        added commands:
            help (must invoke as "scriptybox help")
                provides an easy way to get information about the various commands
                included in scriptybox, without actually running those commands
        modified commands:
            {all}
                all commands were updated so that if you run them as:
                  [command] --help
                they will be guaranteed to print out their usage information

    Added command line knock executable [cvpcs]
        provides low-level port knocking functionality without the need for an app

    Other tweaks:
        optipng'ed the entire system [cvpcs (redone with optipng)]
                                     [cyanogen/koush (base optimizer scripts)]

0.5.0:
    Modified scriptybox [cvpcs]
        modified commands:
            mtdinfo
                added code to ensure that the proper functions actually get called
            rmapk
                added code to remove IM

    Other tweaks:
	added new Sapphire brand bootanimation [cvpcs]

0.4.6:
    Added native IM app [pete? (found in one of pete's forums)]
        app to connect to MSN, Yahoo!, and AOL messenger, originally natively included
          with android.

    Modified scriptybox [cvpcs]
	added commands:
            mtdinfo
                displays information about all of the internal system partitions

    Other tweaks:
        changed default kernel to STOCK (no overclock) [cvpcs]
        added basic support for ROMManager [cvpcs]

0.4.5:
    Modified scriptybox
        fixed sysro syncing issues [pete]

0.4.4:
    Modified scriptybox [cvpcs]
	finished changing scriptybox to be bash-based
        fixed a minor typo in the script
	fixed a problem with switchapk not getting the system to recognize the change

    Other features:
        added regular "Reboot" option [cvpcs]
        moved "Reboot into Recovery" under "Reboot" option [cvpcs]

    Other tweaks:
        re-added unknown terminfo file [cvpcs]

0.4.3:
    Modified scriptybox [cvpcs]
        switched over to the new bash shell to make scripts more sleek and managable

0.4.2:
    Added nano text editor [cvpcs]
        provides a simple text editor for use in modifying text files from
          the command line
        provides basic syntax highlighting to common source files such as:
          asm, c, css, html, java, perl, php, sh, xml, and more

    Added Bourne Again SHell (bash) [cvpcs]
        provides a bash shell with much more feature support than the native
          system shell
        is dynamically linked to reduce size, as opposed to other roms which
          use a statically linked bash shell
        provides basic color highlighting features
        set as default shell

    Modified compcache [cvpcs]
        fixed a bug where the ramzswap module would not unload on stop

    Modified scriptybox [cvpcs]
        fixed a bug where scriptybox wouldn't mount the system read-only on some occassions

    Other features:
        added native FLAC support [kruton]
        added "Reboot into recovery" option to power dialog [cvpcs]

    Other tweaks:
        moved wminput from /system/bin to /system/xbin [cvpcs]

0.4.1:
    Modified scriptybox [cvpcs]
        fixed several typos
	fixed bug in switchapk command
        changed internal structure

0.4:
    Switched to default android-omap-2.6.29-bekit_sapphire kernel [cvpcs]
                                                                  [bekit (base)]
        provides overclocking of 250-1000mhz at low-voltage, is patched for
        compcache support, and also includes the following modules:
            cifs, ext2, ext3, ext4, fuse, isofs, jfs, nfsd, nfs, ntfs,
            ramzswap, reiserfs, squashfs, tiwlan_drv, xfs
        also supports wired and wireless tether

    Replaced stock Launcher2 [sniffle]
        provides more columns in the app drawer
        based off helix launcher2

    Added vixie-cron task scheduler [cvpcs]
        ported the vixie-cron (cron) task scheduler to android.  this allows for
        system-level processes to be run periodically whenever the phone is on.
        search google for "cron" to learn more about how this works.  system
        cron tab should be placed at /data/cron/systab.

    Modified scriptybox [cvpcs]
        fixed some typos
        added new commands:
            adblock [cvpcs (speed increase for blocking)]
                    [pete (original blocklist)]
                turns ad blocking on or off
            halt [cvpcs]
                replacement for "shutdown" command
            switch [cvpcs]
                replaces certain apps with replacement versions of them (such as
                2.1 music and milestone music)
        modified commands:
            rmapk
                fixed code to remove the Amazon MP3 app
                added code to remove the AlarmClock app
                added code to remove the Music app
        removed commands:
            shutdown
                removed because it is renamed to "halt"

    Modified init process [cvpcs]
        added script to enable ondemand overclocking upon boot
        added script to start cron daemon if a systab exists

    Other features:
        added animated gif support to webkit [cyanogen]

0.3:
    Added default android-omap-2.6.29-sapphire kernel [cvpcs]
                                                      [AdamZ (base)]
        provides overclocking of 250-1000mhz at low-voltage, is patched for
        unionfs support, is patched for compcache support, and also includes
        the following modules:
            unionfs, squashfs, cifs, xfs, ext2, ext3, ext4, reiserfs, isofs,
            jfs, nfsd, nfs, ntfs, fuse, ramzswap, tiwlan_drv
        also supports wired and wireless tether

    Added scriptybox [cvpcs]
        provides a busybox-like interface to many different command scripts that
        implement a barrage of features.  these commands are:
            camsounds [pete]
                turns the camera shutter and video sounds on and off
            cpuinfo [cvpcs]
                displays information about the cpu
            freemem [cvpcs (added default setting)]
                    [pete (base)]
                ensures that stale processes are killed to keep a specific
                amount of RAM available
            dalvikjit [cvpcs]
                enables or disables JIT compiling in the Dalvik Virtual Mahcine
                (requires a reboot)
            meminfo [cvpcs]
                displays information about memory in the system
            rmapk [cvpcs (streamlined the script)]
                  [pete (idea for the scripts)]
                removes certain applications from the system if they exist
            shutdown [cvpcs]
                powers off the system without reboot
            sysro [cvpcs]
                mounts the system partition read-only and syncs the system
            sysrw [cvpcs]
                mounts the system partition read-write
            swapinfo [cvpcs]
                displays information about swap partitions in the system
            zipalign_apks [cvpcs (streamlined the process)]
                          [pete (base)]
                zipaligns all APKs on your entire system

    Added a custom init system [cvpcs (customizations)]
                               [cyanogen (base ideas)]
        provides a series of scripts that get ran upon boot
        added the following scripts:
            00 - banner: prints a banner upon boot to the syslog
            10 - sysrw: mounts the system partition read-write for the 1* 
                        script block
            11 - depmod: sets up the kernel module directory to ensure that
                         modprobe works
            19 - sysro: remounts the system read-only
            99 - ready: notifies the system that our init process is finished

    Added some tweaks:
        increased the wireless scan interval to 90 seconds [cvpcs]
        increased the default video record quality [fede]

    Other features:
        switched to ChainsDD's Superuser [chainsdd]
        added a default ringtone [cvpcs]

0.2:
    Added custom init.rc [cvpcs]
        provides a way to customize the boot process

    Other features:
        added HQ YouTube app [pete]

0.1:
    Added Superuser [cyanogen]
        provides root access via su

    Added busybox [cvpcs (removed need for modified bionic)]
                  [cyanogen (base)]
        provides a large set of command line executables

    Added libc-ext [cvpcs]
        provides syscalls not included in bionic used by busybox

    Created cvpcs vendor [cvpcs (customizations for my custom build)]
                         [cyanogen (base vendor setup)]
                         [koush (base device setup)]
        removed the need for koush's motorola/sholes-open device or cyanogen's
        vendor/cyanogen vendor setup.

    Customized build setup [cvpcs]
                           [cyanogen (used his ideas for build.prop overrides)]
        modified the build setup from scratch to support some extra features.

    Added CWiid library [cvpcs]
        provides support for connecting wiimotes to the phone via bluetooth

    Other features:
        added custom boot animation [cvpcs]
 
releases/sapphire-0.8.4.txt · Last modified: 2010/08/04 23:53 by Austen Dicken
 
Except where otherwise noted, content on this wiki is licensed under the following license:GNU Free Documentation License 1.2
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki