How to Build Android 4.4 for Rockchip RK3288 Devices (Tronsmart Orion R28)

Orange Pi Development Boards

After blowing up my ATX power supply, and learning such things as “FULL” power supplies do exists, I finally managed to build Android for Tronsmart Orion R28 using the provided SDK. I haven’t tried to load it on the device yet, but the build could complete successfully after following the steps below in Ubuntu 14.04. The SDK is probably not specific to one device, so it might just also work on other RK3288 TV boxes and tablets.
Android_4.4_SDK_Orion_R28

First download Android 4.4 SDK for RK3288, or use the one in the micro SD card provided with the Beta version of R28 Pro and Meta.

Install some dependencies:


Extract the SDK:


And build the kernel first:

  1. Enter the kernel directory:
  2. Change arch/arm/boot/dts/Makefile to use RK3288 device tree file instead of an RK3188 (may not be needed, but the build failed for me without that change…):

    It’s also quite possible you need to extract the device tree file from your firmware or device.
  3. Building the kernel and resources (device tree + logo) images:
  4. Done
    It will fail with:

    drivers/usb/dwc_otg_310/dwc_otg_hcd.c: In function ‘dwc_otg_hcd_rem_wakeup_cb’:
    drivers/usb/dwc_otg_310/dwc_otg_hcd.c:446:31: error: inlining failed in call to always_inline ‘dwc_otg_hcd_to_hcd’: function body not available

  5. Edit the culprit file, remove the inline directive, and continue the build:
  6. Similar errors will occur one or twice more, so repeat step 5 as needed….
  7. Create kernel.img (not sure the command line is correct)

Before building Android, you need to make sure you use the right version of Java. I recently build AOSP for ARMv8 which requires OpenJDK 1.7 in Ubuntu, but this version requires Oracle 1.6 SE.  At first I used JDK 6u45 (1.6.045), but I got some errors:

In file included from external/chromium_org/content/common/android/hash_set.cc:5:0:
out/target/product/rk3288/obj/GYP/shared_intermediates/content/jni/HashSet_jni.h:10:26: error: extra tokens at end of #ifndef directive [-Werror]

Based on a thread on XDA developer forums, I installed Java 1.6.0.27 instead, which you can download here:


Now add the new Java version to the “alternatives”:


and make sure Java 1.6.0.27 is used by default:


I’m not sure all six tools need to be configured, but it probably does no hurt to do so.

Finally, you just need to run a script to build Android:


Be patient, and it should finish with something like:

Creating filesystem with parameters:
Size: 1073741824
Block size: 4096
Blocks per group: 32768
Inodes per group: 8192
Inode size: 256
Journal blocks: 4096
Label:
Blocks: 262144
Block groups: 8
Reserved block group size: 63
Created filesystem with 1792/65536 inodes and 149182/262144 blocks
+ '[' 0 -ne 0 ']'
Install system fs image: out/target/product/rk3288/system.img
out/target/product/rk3288/system.img+out/target/product/rk3288/obj/PACKAGING/recovery_patch_intermediates/recovery_from_boot.p maxsize=1096212480 blocksize=135168 total=598297319 reserve=11083776
TARGET_PRODUCT=rk3288
TARGET_HARDWARE=rk30board
system filesysystem is ext4
make ota images...
create boot.img with kernel... done.
create recovery.img with kernel... done.
create misc.img.... done.
create system.img... done.
*******************************
3288_4.4 sdk do finish
*******************************

All relevant files can be found in rockdev/Image-rk3288 directory:


Next step is to flash it to the device, and see if it can boot.

16
Leave a Reply

avatar
16 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
6 Comment authors
Tronsmart Orion R68 RK3368 TV Box Firmware and Android SDK ReleasedelelDaveBkraakiePatched Android 4.4 SDK Supports Beelink R89 & Hotack T031Boards Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
linuxium
Guest

While you sleep the bugs will play?

Step 2: rk3288-box.dts not rk3288-box.dtb

Step 3: CROSS_COMPILE=/RK3288_R-BOX_ANDROID4.4.2-SDK_V1.0.0/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi

I tried this just for the kernel and got a screen displaying “Google TV” … in pink though as my device seems ,,,

linuxium
Guest

@cnxsoft

No, use rk3288-box.dtb (I thought it fixed something else, but it didn’t!)

mo123
Guest
mo123

Hi

i downloaded the RK3288_R-BOX_ANDROID4.4.2-SDK_V1.0.0/ for Tronsmart.
I wan to to make a kernel for HPH RK3288 Box.
I extracted the kernel.dtb file and converted it to a *.dtd file from the resource.img. What must I do with this file now? Should I just make a normal kernel and flash the kernel and stock resource.img to my box?

mo123
Guest
mo123

@cnxsoft
Thanks

Anyone already downloaded the Firefly RK3288 SDK and can only upload the kernel?
https://bitbucket.org/T-Firefly/firefly-rk3288/overview
Here is the kernel seperate but it’s much older
https://bitbucket.org/TeeFirefly/firefly-rk3288-kernel

it takes too long to download from baidu and cloning the repo takes ages.
Already have the Tronsmart SDK, since it was uploaded to mega.

trackback

[…] where ships with a micro SD card loaded with Android 4.4 SDK, so I tried it myself, and posted instructions to build an RK3288 Android image, but when I flashed the image to my device, I quickly realized it was an older firmware (106k4), so […]

kraakie
Guest

If i try to install the dependencies i het this error in ubuntu

~$ sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev \ squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool libxml2 \ libxml2-utils xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev \ lib32readline-gplv2-dev gcc-multilib libswitch-perl gcc-arm-linux-gnueabi lzop libncurses5-dev \ libssl1.0.0 libssl-dev
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package squashfs-tools
E: Unable to locate package libxml2-utils
E: Unable to locate package lib32readline-gplv2-dev
E: Unable to locate package libssl1.0.0
E: Couldn’t find any package by regex ‘ libssl1.0.0’
[email protected]:~$
[email protected]:~$ Read more: http://www.cnx-software.com/2014/09/16/how-to-build-android-4-4-sdk-for-rk3288-tronsmart-orion-r28-beelink-r89/#ixzz3Mpg1RQbS

What am i doing wrong ?

kraakie
Guest

@cnxsoft
I found the problem copy paste issue thnx 🙂

But what i am wondering do i have to run make kenrel.img in the kernel folder or make make rk3288-box.img -j8 ? after the deconfig command of course ?

DaveB
Guest
DaveB

@linuxium

@cnxsoft
Managed to produce a binary under fedora using the toolchain in the SDK as 32b gcc would not compile. Hijacking the thread, does anyone know how to enable RT2X00 USB wifi modules? CONFIG_RT2X00=m gets overwritten when issuing make ARCH=arm. Ralink does not appear in make menuconfig.

DaveB
Guest
DaveB

To answer my own post, solved this by pulling /drivers/net/wireless/ Kconfig & Makefile from
the vanilla http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.37.tar.xz

elel
Guest
elel

There is a mistake in the article

sudo update-alternatives –install /usr/bin/javadoc javah /usr/lib/jvm/jdk1.6.0_27/bin/javah 1

should be

sudo update-alternatives –install /usr/bin/javah javah /usr/lib/jvm/jdk1.6.0_27/bin/javah 1

trackback

[…] previously released the Android SDK for some of their devices such as Orion R28 or Draco H3, but the SDK was not always useful, with some cases where the SDK would build, but miss […]