[Galaxy Tab 8.9 SGH-i957 Android Development] SamArdoise:
Than You!

I installed JB yesterday to replace your CM9 port. I have good strong wifi, good battery life. No problems installing apps from Google Play. Email working. Thank you!

So with that, here's some instructions on how to build CM10 for your SGH-I957 ("p5att") device from source code. This will also ensure time is spent doing development work, not hand-holding the faint of heart (sorry, sue me!)

These instructions assume you've successfully built Cyanogenmod for a supported device and understand the basics of getting things going. If not, start with that first, then come back to this. I'm also assuming you've got the android tools that you get from any build of cyanogen (like mkbootimg) in your path for some of the "optional" steps, which is of course elementary...

I'm also going to assume you know what to do with the resulting zip... You know... backup, factory reset, wipe system, flashy the zippy...

I really recommend doing the boot image modifications after the build, without ADB on boot, if something goes wrong, you'll have no way of knowing whats going on. If you get the boot image modified properly as detailed below, you will be able to ADB to the device as soon as the second boot logo disappears. Also, there's probably a cleaner way (like changing something somewhere to invoke one of the other case statements in init.qcom.usb.rc), but I didn't have any luck with that. Feel free to school me! :laugh:

EDIT: If you don't feel like hacking the boot image, just flash the one attached (ps: none of the zips below are TWRP/CWM flashable, just zipped up files.. dd if=bootimagefilename of=/dev/block/mmcblk0p8 from a root shell to flash the boot partition on the i957)

I've attached the initlogo.rle file to this post so you don't have to fish it out of the ramdisk embedded in the stock boot image. Adding initlogo.rle to the ramdisk gives you confirmation the kernel is bootstrapping, and it's disappearance indicates ADB is now available. Also, use a linux box for ADB! silly wabbit, windoze is for kids.

According to comments in system.prop, the cyanogenmod boot animation is disabled because the framebuffer is "weird". Strangely, it sometimes displays for me, one in 10 boots maybe. Weird!

Here goes.

----

Initialize Repo:

repo init -u git://github.com/CyanogenMod/android.git -b jellybean

Sync Repo:

repo sync -j6

... Coffee Break!

Breakfast for p5att:

. build/envsetup.sh && breakfast cm_p5att-userdebug

Modify device/samsung/p5att/BoardConfig.mk to clean up a few things:

Comment out:

#BOARD_SDCARD_DEVICE_PRIMARY := /dev/block/mmcblk1p1

#BOARD_SDCARD_DEVICE_SECONDARY := /dev/block/mmcblk0p28

#BOARD_SDEXT_DEVICE := /dev/block/mmcblk1p2

Add above these lines:

BOARD_HAS_SDCARD_INTERNAL := true

Modify device/samsung/p5att/device-proprietary-files.txt:

Comment out all the entries, because they aren't really needed and probably dont work with jellybean. Worry about this later, blah blah.

Modify device/samsung/msm8660-common/common-proprietary-files.txt:

Comment out all the WiFi stuff, that is, like:

# Wi-Fi

# etc/wifi/bcm4330_apsta.bin

#etc/wifi/wl

#etc/wifi/nvram_net.txt

#etc/wifi/wpa_supplicant.conf

#etc/wifi/bcm4330_p2p.bin

#etc/wifi/bcm4330_sta.bin

#etc/wifi/bcm4330_mfg.bin

#etc/wifi/nvram_mfg.txt

To get WiFi working later, you need /system/etc/wifi/* from your honeycomb image. Go save them to /sdcard/wifi or something like that now, so you can just copy them over after CM10 boots

Edit: attached the files

Extract proprietary files from i717 Note CM10 image, since I have no idea where else to get these files, and they work:

from device/samsung/p5att, run ./extract-files.sh <path to an extracted CM10 i717 nightly .zip>

... The path you provide should contain the "system" folder.. IE the root of the extracted nightly zipfile.

I had used the 0831 nightly with luck here.

Get prebuilts:

run vendor/cm/get-prebuilts

Do the build:

from the system directory of your CM10 source tree run:

. build/envsetup.sh && brunch p5att

Go find something or someone to do, this is going to take a while...

You'll end up with a .zip file to flash.

After you flash, you'll need to, manually:

1) Copy back the /system/etc/wifi/* files (wifi firmware/tools, the note ones dont seem to work).

2) Install a Skyrocket ICS AT&T radio if you want cellular data, the honeycomb radio doesn't seem to work with CM10. UCLF6 works for me, although it's slower to acquire LTE than the official samsung HC image... but it works great once it finds a cell, and HSPA comes up pretty fast.

3) Consider doing the stuff below to enable early ADB and add back the second samsung logo, for debugging purposes, if you care...

----

Things you might want to do after the build, start by unzipping the resulting .zip pacakge...

Edit: I attached a the resulting boot.img to this post so you don't have to do all this if you so desire. Bonus: working i957 JB kernel binary for whatever else you might want to do with it.. ;)

Remove the assert for platform type if your TWRP recovery, like mine, thinks it's a i717 Note:

Edit META-INF/com/google/android/updater-script, remove the assert lines (first two lines of that file)

Do some handy ramdisk hacks:

First, unpack the boot image. From the root of what you unzipped:

mkdir boot

unpackbootimg -i boot.img -o boot

cd boot

Then Unpack the initial ramdisk:

mkdir rd

cd rd

zcat ../boot.img-ramdisk.gz | cpio -id

Edit init.qcom.usb.rc to enable early adb:

Search for "on property:sys.usb.config=mtp", you'll find: (line 340, for me)

on property:sys.usb.config=mtp

write /sys/class/android_usb/android0/enable 0

write /sys/class/android_usb/android0/idVendor 04E8

write /sys/class/android_usb/android0/idProduct 6860

write /sys/class/android_usb/android0/f_acm/acm_transports tty

write /sys/class/android_usb/android0/functions mtp,acm

write /sys/class/android_usb/android0/enable 1

setprop sys.usb.state $sys.usb.config

Make this section like:

on property:sys.usb.config=mtp

write /sys/class/android_usb/android0/enable 0

write /sys/class/android_usb/android0/idVendor 04E8

write /sys/class/android_usb/android0/idProduct 6860

write /sys/class/android_usb/android0/f_acm/acm_transports tty

write /sys/class/android_usb/android0/functions mtp,acm,adb

write /sys/class/android_usb/android0/enable 1

start adbd

setprop sys.usb.state $sys.usb.config

Add the glowing samsung initlogo:

Copy initlogo.rle from the root of a stock ramdisk to the root of this ramdisk

... So you'll get the second samsung logo, so you know the kernel is bootstrapping... if you care.

Turn off ro.secure:

Edit default.prop in the root of the ramdisk and change:

ro.secure=1

to

ro.secure=0

Repack the ramdisk:

find . | cpio -o -H newc | gzip > ../boot.img-ramdisk.gz

(you may want to save the original, if you care)

Make the new boot.img:

cd ..	(ie get back to the directory with the files listed in the next line)

rm ../boot.img

mkbootimg --kernel boot.img-zImage --ramdisk boot.img-ramdisk.gz --cmdline "console=ttyHSL0,115200,n8 androidboot.hardware=qcom" --base 48000000 --ramdiskaddr 49400000 --pagesize 2048 -o ../boot.img

Repack the flashable zip:

cd ..	(ie get back to where you unzipped the original flashable .zip)

rm -rf boot	(remove the extracted boot.img and ramdisk under it, save it somewhere if you care)

(also remove the original .zip from here if you extracted it in the cwd)

zip -r ../somezipname.zip .

Then flash somezipname.zip or whatever you called it..

(Remember you'll need to put the Honeycomb files from /system/etc/wifi into /system/etc/wifi of the running image after you boot if you want wifi

(And flash a Skyrocket ATT radio if you want cellular data!)[/QUOTE]