Android, Debug, Troubleshooting

OrangePI PC Android display on DVI monitor

So just got one of those OrangePI PC from ALI Express, it’s one of `rPi` compatible board that have Android 4.4 OS on it. (the other alternatives that I know are BananaPi and ODroid).  It’s based on Allwinner H3 processor and most of the OS are based on sunxi kernel

The first thing I do was scourging trough the forum and download Android 4.4 image base for it.

To install the Android image, AllWinner provide tool called `PhoenixCard` that is only available for Windows OS. (Android image is not `dd` able images – so you cannot use `dd` or `piBaker`)

Let me warn you that PhoenixCard is a weird beast (there’s a bug that cause it to intermittently fail) – and it need some compatible of card-reader hardware. So if you experience a lot of failures on burning images to microSD – try other card-reader hardwares (I try 3 types of card reader – a Sony card reader, mac card reader (using VM) and internal generic ASUS laptop card reader – the ASUS one works fine)

Plug the OPIPC to HDMI monitor – it works fine.

The thing is you cannot plug it to DVI monitor using HDMI-to-DVI converter because the HDCP protection is enabled by default – so to plug it to DVI monitor you will need to disable HDCP protection on it. There’s a lot of guide to fix it on the official forum – but most of the time it’s only for Linux based OS.

For Android you will need to go the extra miles.

  1. Download the `linux sdk source code` for your hardware here  (see section Orange PI PC and find the one with linux sdk source code title). It’s a huge file – so prepare some Coffee.
  2. Extract it into case-sensitive file system (I use VM with ubuntu 14.04 on my Mac, ext4 is case sensitive, mac osx default one is not)
  3. You will need to download and compile sunxi-tools. We will need fex2bin to convert sys_config.fex to it’s compiled binary version
  4. Go to the extracted folder. You will find brandy, buildroot, linux-3.4, out and tools folder
  5. Run `cd tools/pack/chips/sun8iw7p1/configs/dolphin-p1` and edit `sys_config.fex` in it. You will need to find section named `[hdmi_para]` and add these lines
    hdmi_used = 1
    hdmi_power = "vcc-hdmi-18"
    ; Adding DVI monitor compability by disabling HDCP and enabling CTS-compat
    hdcp_enable = 0
    hdmi_cts_compatibility = 1
  6. Go to `tools/pack` folder and run
    cp -fv chips/sun8iw7p1/configs/dolphin-p1/sys_config.fex out/sys_config.fex > /dev/null 2>&1
    cp -fv chips/sun8iw7p1/bin/boot0_sdcard_sun8iw7p1.bin out/boot0_sdcard.fex > /dev/null 2>&1
    unix2dos out/sys_config.fex > /dev/null 2>&1
    pctools/linux/mod_update/script out/sys_config.fex > /dev/null 2>&1
    fex2bin out/sys_config.fex out/sys_config.bin > /dev/null 2>&1
  7. Patch boot0 using generated sys_config.bin
    pctools/linux/mod_update/update_boot0 out/boot0_sdcard.fex out/sys_config.bin SDMMC_CARD > /dev/null 2>&1
  8. Copy Compiled Uboot and patch using generated sys_config.bin
    cp -fv chips/sun8iw7p1/bin/u-boot-sun8iw7p1.bin out/u-boot.fex > /dev/null 2>&1
    pctools/linux/mod_update/update_uboot out/u-boot.fex out/sys_config.bin > /dev/null 2>&1
  9. Write to SDCARD (Change /dev/sdX to use your own sdcard path, it’s /dev/sdf on mine)
    cd out
    sudo dd if=boot0_sdcard.fex of=/dev/sdf bs=1k seek=8 > /dev/null 2>&1
    sudo dd if=u-boot.fex of=/dev/sdf bs=1k seek=16400 > /dev/null 2>&1

After all of that your OrangePi PC Android should be working on DVI monitor.