Tizen Porting on ODROID-U3

We ported Tizen 2.2 on ODROID-U3. This porting has following features:

  • Various applications: You can run your own OSP(Bada, native), EFL(core) and Web applications on this device.
  • GPU-accelerated: It supports GPU-accelerated rendering of Evas via fully-ported DDX.
  • HTML5/WebGL supports: Web browser on Tizen supports HTML5 features and WebGL features as many as Tizen reference devices.
  • Hot-plugged connectivity: It supports connectivities and networks via USB-type Wi-fi and Bluetooth modules, not embedded ones.
  • Remote key framework: This device does not have physical key buttons(home, back, menu buttons). You can press key buttons on your Android device via wireless connectivity.
  • Debugging: It supports debugging through both serial port and SDB(Smart Debug Bridge).

Below movie shows how the ported Tizen works on ODROID-U3.

Porting Guide

Here is total procedures of porting ODROID-U3:

  1. Make the environment for Tizen development and porting.
  2. Clone the source code of Tizen platform.
  3. Build the images of Tizen platform.
  4. Clone the source code of Tizen kernel.
  5. Build the image and modules of Tizen kernel.
  6. Set partition table of target SD card or eMMC.
  7. Flash bootloader(u-boot), kernel image and platform images on target SD card or eMMC.
  8. Trouble-shootings.
  9. Enjoy your Tizen.

For more specific instructions, refer to following documents:

You may also require various files to complete Tizen 2.2 porting.

Pre-built Image

Here is pre-built Tizen platform image for ODROID-U3.

ODROID-U3 Profile

ODROID-U3 has different hardware environments compared to Tizen reference phones(No camera, No GPS, No 3G/LTE …). In order to apply the different features, you should use different profile, a file describing the features of target Tizen device.

For using ODROID-U3 profile, you should use also new package group patterns and kickstart file.

Github repository:

Here is how to use ODROID-U3 profile:

  • Assume ${TIZEN_SRC} as the root directory of Tizen platform source code.
  1. Build ODROID-U3 profile.
    $ cd ${TIZEN_SRC}/profile/mobile/model/config-odroid-u3
    $ gbs build -A armv7l
  2. Install new package group pattern.
    $ cd ${TIZEN_SRC}/profile/mobile/model/config-odroid-u3
    $ cp target-odroid-u3.yaml ${TIZEN_SRC}/meta/package-groups/patterns/
  3. Clone ODROID-U3 profile repository from Github repository.
    $ cd ${TIZEN_SRC}/profile/mobile/model
    $ git clone https://github.com/SKKU-ESLAB-Tizen/tizen-profile-odroid-u3.git config-odroid-u3
  4. When you make platform image, use kickstart file included in ODROID-U3 profile repository.
    $ cd ${TIZEN_SRC}/profile/mobile/model/config-odroid-u3
    $ cp ODROID-U3.ks ${TIZEN_SRC}
    $ cd ${TIZEN_SRC}
    $ gbs createImage --ks-file=./ODROID-U3.ks --tmpfs


Remote Key Framework

ODROID-U3 does not support any physical key buttons(home, back, menu buttons). In order to resolve the inconvenience, we made the “Remote Key Framework”.

Remote key framework is a framework of Tizen, which enables you press key buttons on remote Android devices. It uses Bluetooth/RFCOMM for connectivity. Device driver module that makes input events in the kernel level is also required.

How to build and use:

  1. Clone three repositories: client, service, device driver.
  2. Remote key framework client:
    1. Open as Android application project by Android IDE.
    2. Build the project.
    3. Install client application on your Android device.
  3. Remote key framework sevice:
    1. Open terminal and do ‘cd’ to the directory of remote key framework service.
    2. Build it.
      $ gbs build -A armv7l
    3. Connect target device via USB/SDB.
    4. Push the built package to the target device.
      $ sdb root on
      $ sdb push ~/GBS-ROOT/local/repos/tizen2.2/armv7l/RPMS/remote-key-framework-1.2-1.armv7l.rpm /
    5. Install the package and reboot device.
      $ sdb shell rpm -ivh --nodeps --force /remote-key-framework-1.2-1.armv7l.rpm
      $ sdb shell sync
      $ sdb shell reboot -f
  4. Virtual input device driver:
    1. Set the path of your kernel, on ‘build.sh’ file.
      WATCH OUT!: you should set the path of kernel, of which version is exactly same as one on your target device.
    2. Build it.
      $ ./build.sh
    3. Connect target device via USB/SDB.
    4. Install it and reboot device.
      $ ./install.sh
      $ sdb shell sync
      $ sdb shell reboot -f

Here is specific documentation about this framework:

Github repository:


Add a new FAQ(for Lab members)

Building OSP packages is failed.

You may meet errors on the below packages when you build total packages of Tizen 2.2.

osp-security-service, osp-json, osp-compat, osp-uix, osp-ime, osp-locations, osp-media, osp-messaging, osp-vision, osp-nfc, osp-image, systemd, osp-connectivity-service, osp-web, osp-uifw, privacy-popup, osp-net, osp-face, osp-common-service, gst-plugins-base, osp-channel-service, osp-appwidget-service, osp-appfw, osp-shell, osp-app-controls, osp-image-core, osp-speech, osp-social, osp-content, osp-telephony, osp-bluetooth

It is becacuse depanneur tool, a package build tool based on the obs-build script, has some bug on debug build mode.

  1. # gedit /usr/bin/depaneeur
  2. Remove lines including the below code.
    push @args, "--debug";

I cannnot get the platform log.

In Tizen 2.2, platform logging option is disabled in default.

You can set up the logging option as below.

$ dlogctl set platformlog 1

1 means Enabled, and you also change it to disabled by modifying 1 to 0.

db4 error is occured.

You may suffered by below messages.

[  139s] error: db4 error(-30971) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch 
[  139s] error: cannot open Packages index using db4 - (-30971) 
[  139s] error: cannot open Packages database in /var/lib/rpm

Sometimes, rpm db4 in GBS-ROOT directory becomes a mess. Adding “clean” flag to gbs can helps you to build on the clean GBS-ROOT directory.

gbs build -A armv7l --clean

gbs does not build the source code of the version I modified.

In default, gbs builds the source code committed to each git repositories. In principle, you should commit your source code which you want to build to git.
However, if you do not want to commit to repository, you can build the source code of working directory by adding “include-all” flag to git. Be careful that gbs with “include-all” flag builds the source code of all the projects “AGAIN”, because it does not matter versioning of git repository. We recommend that you use “include-all” flag when you build small number of projects.

gbs build -A armv7l --include-all

Class Projects

2015 Spring

2014 Autumn


  • Hyukjoong Kim: wangmir at gmail.com (Virtual input device driver, Lectures about Tizen kernel, Systemd and System framework)
  • Younghun Kim: ehdeoddl at gmail.com (Kernel build/configuration, Trouble-shootings)
  • Gyeonghwan Hong: redcarrottt at gmail.com (Remote key framework, Platform build, Lectures about graphics/UI framework)
  • Daejong Kim: kdj8666 at gmail.com (Lectures about application development and web framework)
  • Minji Kim: kimmj0857 at skku.edu (Lectures about multimedia/location framework)
  • Eunsoo Park: pes9488 at gmail.com (Tizen-Arduino project)

See Also