[Galaxy S Plus I9001 Android Development] manveru0:
@eBug

yup, I've already seen that. Funny enough at least the backup function works though the graphical bug is still there. I was able to make a backup via CWM recovery, which I compiled according to the tutorial from koush.

But of course: it may not be the correct way to get a working CWM recovery. Unfortunately I don't know how to compile CWM recovery using another method. So I'm stuck on this method. I've tried to change the BoardConfig.mk to solve the graphical problem according to the BoardConfig.mk from desirec (htc desire HD) adding the following lines to it:

BOARD_USES_QCOM_HARDWARE := true

BOARD_USES_QCOM_LIBS := true

BOARD_EGL_CFG := device/samsung/i9001/egl.cfg

I'm desperately searching for a way now to include the librarys (at least the graphical ones for adreno 205 gpu) into the source (android/system/devices/samsung/i9001). But right now I only have the *.so librarys from the the leaked firmware and I guess we need the uncompiled ones?

edit:

My full BoardConfig.mk, recovery.rc and recovery_ui.c

BoardConfig.mk:

USE_CAMERA_STUB := true

# inherit from the proprietary version

-include vendor/samsung/i9001/BoardConfigVendor.mk

TARGET_NO_BOOTLOADER := true

TARGET_BOARD_PLATFORM := msm7k

TARGET_CPU_ABI := armeabi-v7a

TARGET_CPU_ABI2 := armeabi

TARGET_BOARD_PLATFORM_GPU := qcom

TARGET_BOOTLOADER_BOARD_NAME := i9001

BOARD_KERNEL_CMDLINE :=

BOARD_KERNEL_BASE := 0x00400000

BOARD_KERNEL_PAGESIZE := 4096

# fix this up by examining /proc/mtd on a running device

BOARD_BOOTIMAGE_PARTITION_SIZE := 7864320

BOARD_RECOVERYIMAGE_PARTITION_SIZE := 7864320

BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x08c60000

BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x105c0000

BOARD_FLASH_BLOCK_SIZE := 131072

TARGET_PREBUILT_KERNEL := device/samsung/i9001/kernel

#BOARD_HAS_NO_SELECT_BUTTON := true

# Use this flag if the board has a ext4 partition larger than 2gb

#BOARD_HAS_LARGE_FILESYSTEM := true

#RECOVERY

BOARD_CUSTOM_RECOVERY_KEYMAPPING := ../../device/samsung/i9001/recovery/recovery_ui.c

TARGET_PROVIDES_INIT := true

TARGET_PROVIDES_INIT_TARGET_RC := true

TARGET_RECOVERY_INITRC := device/samsung/i9001/recovery.rc

BOARD_USES_QCOM_HARDWARE := true

BOARD_USES_QCOM_LIBS := true

BOARD_EGL_CFG := device/samsung/i9001/egl.cfg

recovery_ui.c:

#include <linux/input.h>

#include "recovery_ui.h"

#include "common.h"

#include "extendedcommands.h"

char* MENU_HEADERS[] = { NULL };

char* MENU_ITEMS[] = { "reboot system now",

"apply update from sdcard",

"wipe data/factory reset",

"wipe cache partition",

"install zip from sdcard",

"backup and restore",

"mounts and storage",

"advanced",

"power off",

NULL };

int device_recovery_start() {

return 0;

}

int device_toggle_display(volatile char* key_pressed, int key_code) {

int alt = key_pressed[KEY_LEFTALT] || key_pressed[KEY_RIGHTALT];

if (alt && key_code == KEY_L)

return 1;

// allow toggling of the display if the correct key is pressed, and the display toggle is allowed or the display is currently off

if (ui_get_showing_back_button()) {

return 0;

//return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_END);

}

return get_allow_toggle_display() && (key_code == KEY_MENU || key_code == KEY_BACK);

}

int device_reboot_now(volatile char* key_pressed, int key_code) {

return 0;

}

int device_handle_key(int key_code, int visible) {

if (visible) {

switch (key_code) {

case KEY_CAPSLOCK:

case KEY_DOWN:

case KEY_VOLUMEDOWN:

return HIGHLIGHT_DOWN;

case KEY_LEFTSHIFT:

case KEY_UP:

case KEY_VOLUMEUP:

return HIGHLIGHT_UP;

case KEY_HOME:

return SELECT_ITEM;

case KEY_POWER:

if (ui_get_showing_back_button()) {

return SELECT_ITEM;

}

if (!get_allow_toggle_display())

return GO_BACK;

break;

case KEY_LEFTBRACE:

case KEY_ENTER:

case BTN_MOUSE:

case KEY_CENTER:

case KEY_CAMERA:

case KEY_F21:

case KEY_SEND:

case KEY_END:

case KEY_BACKSPACE:

case KEY_SEARCH:

case KEY_BACK:

case KEY_MENU:

return NO_ACTION;

}

}

return NO_ACTION;

}

int device_perform_action(int which) {

return which;

}

int device_wipe_data() {

return 0;

}

recovery.rc:

on early-init

start ueventd

on init

#{{ SEC_DEVENC

export PATH /sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin

export LD_LIBRARY_PATH /vendor/lib:/system/lib

#}} SEC_DEVENC

export ANDROID_ROOT /system

export ANDROID_DATA /data

export EXTERNAL_STORAGE /sdcard

symlink /system/etc /etc

mkdir /sdcard

#{{ SEC_DEVENC

mkdir /efs 0771 system system

#}} SEC_DEVENC

mkdir /system

mkdir /data

mkdir /cache

mkdir /persist 0771 system system

mount /tmp /tmp tmpfs

wait /dev/block/mmcblk0p12

mount ext4 /dev/block/mmcblk0p12 /persist nosuid nodev barrier=0

wait /dev/block/mmcblk0p14

chmod 0775 /dev/block/mmcblk0p14

insmod /lib/modules/sec_param.ko

chown system system /persist

chmod 0771 /persist

mkdir /persist/.files 0775

mkdir /persist/.files/.ssh01 0775

mkdir /persist/.files/.jck12 0775

mkdir /persist/.files/.dj550 0775

chown media system /persist/.files/.ssh01

chown media system /persist/.files/.jck12

chown media system /persist/.files/.dj550

chmod 0775 /persist/.files/.ssh01

chmod 0775 /persist/.files/.jck12

chmod 0775 /persist/.files/.dj550

#{{ SEC_DEVENC

on emmc-fs

mount tmpfs tmpfs /tmp mode=0755

on fs

mount tmpfs tmpfs /tmp mode=0755

#}} SEC_DEVENC

on boot

ifup lo

hostname localhost

domainname localdomain

class_start default

service ueventd /sbin/ueventd

critical

service recovery /sbin/recovery

service adbd /sbin/adbd recovery

disabled

#on property:persist.service.adb.enable=1

# start adbd

on property:persist.service.adb.enable=0

stop adbd