Darky's rom logo

Darky’s ROM 9.2/10.2 is a custom ROM based on Android 2.2.1 and intended for phone Samsung Galaxy S (GT-I9000XXJPY). Here are brief instructions related to installing, hacking, and improving your mobile phone.


Full backup from Linux

It is always recommended to do a full backup of the original firmware images before you start doing anything. To do this on a brand new Samsung Galaxy S with Android Recovery <3e> over USB without flashing:

  • if you plan to give images to someone else, do a factory reset
  • connect over USB in debugging mode and check if adb is working (part of Android SDK Tools)
  • download and extract root, backup, and clean scripts
  • root it with ./doroot.sh
  • make full backup images of all partitions with ./dobackup.sh
  • check if everything is fine and all images are present

Flashing Darky’s ROM 10.2 from Linux

Follow this instructions to flash a clean Darky’s ROM 10.2 on a Samsung Galaxy S from Linux:

  • if your ROM uses lagfixes, disable them
  • connect over USB
  • install heimdall tool (note to never use heimdall dump mode)
  • download and extract Darky’s ROM 10.2 Ressurection Edition
  • also extract PDA.tar.md5 inside archive (tar vxf PDA.tar.md5)
  • reboot into download mode (turn off and press volume up + home + power)
  • flash with heimdall:
$ heimdall flash --repartition --pit s1_odin_20100512.pit --factoryfs factoryfs.rfs --cache cache.rfs --dbdata dbdata.rfs --primary-boot boot.bin --secondary-boot Sbl.bin --param param.lfs --modem modem.bin --kernel zImage
  • wait for flashing and installation to finish
  • reboot once more

In Windows a similar tool for flashing the Samsung Galaxy S is called Odin (it needs files packed in a .tar, PDA).

Replace boot animation and disable boot sound

Darky’s ROM has a custom boot animation with sound that can be annoying. Instructions to replace the boot animation from Linux:

$ adb shell mount -o remount,rw /dev/block/stl9 /system
$ adb shell mv /system/media/bootanimation.zip /system/media/bootanimation.zip.old
$ adb push bootanimation.zip /system/media/bootanimation.zip
$ adb shell chmod 644 /system/media/bootanimation.zip
  • disable boot sound:
$ adb shell mv /system/etc/PowerOn.wav /system/etc/PowerOn.wav.old
$ adb shell mv /system/darkysound/android_audio.mp3 /system/darkysound/android_audio.mp3.old

Clean Darky’s ROM

Unfortunately Darky’s ROM 9.2/10.2 contains a couple of useless or suspicious apps. Some of them can be uninstalled with the normal approach (under Settings/Apps menu):

  • Voodoo Control App
  • FasterFix

More permanent apps must be removed using ADB:

  • connect over USB in debugging mode and check if adb is working (part of Android SDK Tools)
  • remove apps:
$ ./adb shell su -c 'mount -o remount,rw /dev/block/stl9 /system'
$ ./adb shell mkdir /sdcard/device-files
$ ./adb shell su -c 'cp /system/app/Fileindex.apk /sdcard/device-files/ &amp;&amp; rm /system/app/Fileindex.apk'
$ ./adb shell su -c 'cp /system/app/PressReader.apk /sdcard/device-files/ &amp;&amp; rm /system/app/PressReader.apk'
$ ./adb shell su -c 'cp /system/app/Samsung.apk /sdcard/device-files/ &amp;&amp; rm /system/app/Samsung.apk'
$ ./adb shell su -c 'cp /system/app/Telegraaf.apk /sdcard/device-files/ &amp;&amp; rm /system/app/Telegraaf.apk'
$ ./adb shell su -c 'cp /system/app/txtr-android-client-bol-1.0.3-nobooks.apk /sdcard/device-files/ &amp;&amp; rm /system/app/txtr-android-client-bol-1.0.3-nobooks.apk'


Unlock a screen locked device

If you were playing around too much with the pattern unlock screen on an Android phone, it will permanently lock. You then either need to unlock it with your Google account or using ADB (if you have USB debugging enabled):

  • connect over USB in debugging mode and check if adb is working (part of Android SDK Tools)
  • install sqlite3 tool on the phone or computer (in case it is not yet on your phone)
  • for Android versions with sqlite3 on the phone itself, you can do the following over ./adb shell on file /dbdata/databases/com.android.providers.settings/settings.db
  • for Android versions without sqlite3, an ugly solution is to download the problematic settings file ./adb pull /dbdata/databases/com.android.providers.settings/settings.db
  • open settings with ./sqlite settings.db
  • update security lock setting update secure set value=0 where name='lockscreen.lockedoutpermanently';
  • close settings .quit
  • in case you downloaded it, upload the settings file ./adb push settings.db /dbdata/databases/com.android.providers.settings/settings.db
  • to increase the number of failed login attempts before locking ./adb pull /data/system/device_policies.xml, modify the value in the XML file and upload it back