Archive

Posts Tagged ‘cx-01’

CheapCast Chromecast Emulator for Android (Beta) is Available for Download

August 12th, 2013 10 comments

Yesterday, I wrote developers were working on making any media App and any Android device compatible with Chromecast. Sebastian Mauer has taken care of the latter, by publishing CheapCast (Beta) in Google Play. Several people have been trying it successfully, including in iMito MX1 mini PC. I’ve been less lucky. I’ve tried it by running YouTube App in Zopo ZP900S smartphone (Android 4.0.4) with 4 devices:

  • Tronsmart T428 – “Works” but the video won’t start playing. (Bug reported in Github’s issue tracker) [Update: It now works with the latest version in Google Play].
  • MK908 – Refused to install anything in Google Play today… (Older Android 4.1 firmware)
  • Wandboard Quad – “Works” but the video won’t start playing.
  • CX-01 – CheapCast will crash when playing video

I can’t really play YouTube videos over 360p without buffering here, so the reason the video won’t start in T428 or Wandboard Quad might be due to my poor Internet connection.

Nevertheless here are some of the screenshots I’ve got from T428.

CheapCast_T428

When you start CheapCast, you’ll get the menu above. It allows you to change the Friendly name (default: CheapCast), set the service to start at boot time, donate the project, etc…

Once the service is running, let’s start YouTube app in the smartphone. It will detect a ChromeCast device and show the Cast icon. Pressing the cast icon, and selecting your “TV”, will show the screen below.

CheapCast_YouTube_T428

It looks good! Not select a video in the YouTube App, and it’s supposed to start playing the video in the TV. In my case I could only see the video information.CheapCast_YouTube_Video_T428

And after a short while, I’d get “Playing your video on CheapCast is taking an unusually long time” in the YouTube app as shown below.

YouTube_CheapCast_TimeOut

There are a lot of different firmware around, so you may have better luck on your Tronsmart T428, or other Android mini PC. Let me know if it can work for you.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

How to Create a Custom Android Firmware for CX-01 mini PC

August 22nd, 2012 36 comments

I’ve written a post about updating the firmware on CX-01 mini PC last week. But, this week I’ve been able to go further since I’ve learned some tools available for Telechips TCC8902/TCC8903 firmware files are also compatible with TCC892X firmware files, and it’s possible to extract the firmware, modify/add files in different partitions and repack all this to burn it with FWDN tool. I’ll explain the different steps in this post, and even if you don’t own CX-01 it could be interesting as some of the commands are common to all Android devices. But first:

BIG FAT WARNING!!!

Although I believe the steps mentioned in this post are safe, and errors can be recovered by using the CX-01 firmware, CX-01 mini PC is not unbrickable, and if I’m wrong your device will become useless and you won’t be able to fix it. I may also mention some tools (but not show how to use them) that modify startup code and could potentially brick your device if firmware update fails (e.g. power failure), or if you flash a file for the wrong device.

Firmware files overview

I’ve already discussed about those file in the firmware update post, but here’s a quick reminder:

  • CX1-V1.0-4096-8189_en.rom – MTD – This is the part we’re going to modify as it contains the system partition, kernel and ramdisk.
  • lk.rom – BOOT –  This is the part of the firmware that allows you to enter recovery mode to flash your firmware. If you screw up that file or burn one for the wrong device, you can put your device in the trash bin. I won’t be modifying it in this post.
  • NAND Data.fai – NAND Data – This is the part mounted in /sdcard. It’s just a FAT32 partition, so it’s easy to mount and add files if necessary.

Tools required to modify the firmware

We’ll need to use several command line tools running in a terminal in a Linux machine (I’ll use Ubuntu 12.04) in order to extract files then rebuild the firmware:

  • tccunpack/tccpack- Those are 2 command line tools to extract and (re-)pack 3 files in the ROM file (e.g. CX1-V1.0-4096-8189_en.rom):
    • boot.img – This file contains the Android kernel and the ramdisk
    • recovery.img – Same as boot.img for for recovery.
    • system.img – YAFFS2 partition containing /system directory, that’s the file you are more likely to modify, e.g. change build.prop, add default apps in /system/app, add /system/xbin/su…
  • split_bootimg.pl – This perl script extract the kernel and ramdisk from boot.img (AOSP tool)
  • mkbootimg – This command line tool create boot.img from the kernel and ramdisk (AOSP tool)
  • unyaffs – Extract a yaffs(2) partition into a directory
  • mkyaffs2image – Create a yaffs2 partition from a directory

I imported the 4 first tools into github from files located in http://sidenet.ddo.jp/telechips/tccutils/src/, but tccpack/tccunpack developer (“fun”) keeps the latest version (for now the same) in androtab.com. There is also another tool called tccsplash. This tool can change the splash screen, but it modifies lk.rom, so it’s very risky to use it.  Using tccsplash will brick your CX-01 for good, don’t use it.

unyaffs source code is available in github and mkyaffs2image source code can be downloaded as a tar file.

Building the tools

I’ve already built the tools, you can download the binaries here, extract them and make sure they are in your path. If you want to build the tools yourself, I’ll provide the steps below although it’s pretty simple.

For tools in tccutils git repo:

git clone git://github.com/cnxsoft/tccutils.git
cd tccutils/tccutils
gcc tccpack.c -o tccpack
gcc tccunpack.c -o tccunpack
cd ../mkbootimg
gcc mkbootimg.c -o mkbootimg -lcrypto

For unyaffs:

git clone git://github.com/ehlers/unyaffs.git
cd unyaffs
make

For mkyaffs2image:

wget http://fei-yen.jp/maya/wordpress/wp-content/uploads/2010/08/mkyaffs2.tar.gz
tar xzvf mkyaffs2.tar.gz
cd mkyaffs2/yaffs2/utils

Edit the Makefile, and remove -DCONFIG_YAFFS_DOES_ECC, then run make.

Extracting firmware files

We’ve got all we need for now, time to extract the firmware files.

tccunpack CX1-V1.0-4096-8189_en.rom
00000040-0078703f boot.img 7892992 bytes
00787050-0e18d5cf system.img 228615552 bytes
0e18d5e0-0e9665df recovery.img 8228864 bytes

Now extract the kernel and ramdisk:

split_bootimg.pl boot.img
Page size: 4096 (0x00001000)
Kernel size: 6471140 (0x0062bde4)
Ramdisk size: 1413414 (0x00159126)
Second size: 0 (0x00000000)
Board name:
Command line: console=null
Writing boot.img-kernel ... complete.
Writing boot.img-ramdisk.gz ... complete.

boot.img-kernel is the kernel image you get after build the kernel, so nothing more to do at this stage for this file.
I won’t modify the ramdisk, but if you want to, it is just a cpio file and can be extracted as follows:

mkdir ramdisk
cd ramdisk
gunzip -c ../boot.img-ramdisk.gz | cpio -i

Source: Android DLS Wiki

Extract system.img in system directory:

mkdir system
cd system
sudo unyaffs ../system.img

and check the files are there:

ls
app  build.prop  fonts      key_3000000.psr  lib    tts  vendor  xbin
bin  etc         framework  key_921600.psr   media  usr  wifi

All good!

Modifying files

In this section I’ll just give some examples of the things you can modify, but there are lots of other thing you can do.

System partition

If you want to add some default apps into your ROM, simply copy the apks into /system/app.

One way to do this is to install apps in your device, and copy them to your computer via Samba or a USB flash drive to incorporate into your new firmware.

If you’ve rooted your device, you may want to copy /system/xbin/su and/or /system/bin/su to your firmware.

You are also likely to modify build.prop. Have a look at tatubias’ CX-01 build.prop tweaks, to see whst you can modify to improve performance and some other things.

Build new kernel

You may need to re-build the kernel and some modules to add features or apply stability / performance patches.

The instructions are available in Building the Linux Kernel 3.0.8 For Telechips TCC8925 mini PCs, but use cx-01 config instead:

make ARCH=arm tcc8920st_cx-01_defconfig

tcc8920st_cx-01_defconfig is the config file extracted from /proc/config.gz in CX-01 HDMI stick.

After build, the kernel binary is available as arch/arm/boot/Image.

Ramdisk

To do. Some startup files can be modified and I think the Android boot logo is there.

Re-create the firmware file

Now that we’ve done some modifications it’s time to repack everything into a flashable firmware:

Let’s create the new system image first:

cd system
sudo mkyaffs2image . ../system_new.img

then the ramdisk:

cd ramdisk
find . | cpio -o -H newc | gzip > ../ramdisk_new.cpio.gz

If you’ve built a new kernel copy arch/arm/boot/Image to the directory where system_new.img and ramdisk_new.cpio.gz are located. Let’s name it boot.img-kernel_new.

Generate a new boot image using the new ramdisk and kernel:

mkbootimg --cmdline 'console=null' --kernel boot.img-kernel_new --ramdisk boot.img-ramdisk_new.cpio.gz --pagesize 4096 --base 0x80000000 -o cx-01-boot-test.img

and finally pack the 2 new boot and system image together with the recovery image to create the new firmware:

tccpack cx-01-boot-test.img system_new.img recovery.img CX-01_CNXSOFT_20120821_4GB_en.rom

That’s it! You can now use CX-01_CNXSOFT_20120821_4GB_en.rom with FWDN to flash the firmware as explained here. Please note, that you do not need to add lk.rom and NAND Data.fai to do the update, and adding lk.rom make even result in briocking your device is firmware update stops during this stage for any reason.

If the device fails to boot after updating your new ROM, simply use CX-01 firmware to recover.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

XBMC for Android With Hardware Video Decoding on Telechips TCC8925 Processor

August 22nd, 2012 15 comments

Taehyun Kim, a developer working for Inisoft (Korea), has been working on video hardware acceleration on Diceplayer for Telechips TCC8925 processor (The one used in CX-01 and Zero Devices Z900) and call this player from XBMC. He has uploaded a video to demo his progress and that’s pretty impressive.

You can try it yourself by downloading and installing the following apps:

You’ll also need to create a file called playercorefactory.xml in /sdcard/Android/data/org.xbmc.xbmc/files/.xbmc/userdata directory with the following content:

<playercorefactory>
<players>
<player name="MPC-HC" type="ExternalPlayer" audio="false" video="true">
<filename>com.inisoft.mediaplayer.a</filename>
<hidexbmc>true</hidexbmc>
</player>
</players>
<rules action="prepend">
<rule video="true" player="MPC-HC"/>
</rules>
</playercorefactory>

I’ve tried it in Zero Devices Z900. The default language is Korean, but you should manage if you’re familiar with XBMC interface. When you play videos, you lose the usual XBMC interface, as those are played in Diceplayer. I haven’t connected external USB storage to the device, and I’ve tried it over samba, so because of the limited Wi-Fi bandwidth, 1080p videos could not play smoothly at all, but Kim said he can play 42Mbps H.264 High profile samples via Ethernet, using a Telechips TCC8925 set-top box development platform.

Diceplayer is close-sourced, but Kim provided a patch for XBMC (http://trac.xbmc.org/ticket/13267). He Apparently used stagefright-openmax for the implementation in Diceplayer. I suppose something similar might be achievable with other players such as MX Player, as the XBMC patch is just a few lines long and calls Diceplayer.

You can follow the discussion on XBMC forums if you wish.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

How to Upgrade Firmware for CX-01 mini PC

August 16th, 2012 36 comments

[WARNING: Although these instructions worked with my hardware (CX-01 bought via Pandawill), it appears to break some CX-01 devices (See comments section), so use these instructions with care]

Pandawill finally managed to release CX-01 firmware (234 MB) about a week ago. This firmware can be used for devices with 4 or 8 GB flash memory (2 separate directories). You only need to update the firmware if your device has some serious problems, or if CX-01 gets a proper firmware update (we can always dream…).

Once you’ve downloaded ROM for android TV CX-01.rar in a Windows PC, extract it and enter ROM for android TV CX-01 directory. You’ll find 1 file and 1 directory:

  • V1.0-4096-8189_en – Directory for 4GB firmware
  • V1.0-8192-8189_en – Directory for 8GB firmware
  • FWDN_8923.zip – Telechips tools to burn the firmware to flash

Extract FWDN_8923.zip, go to vtcdrv directory and install the driver corresponding to your operating system.

Now click on FWDN_V7_v2.22.exe, click on , and select one of the 3 files in V1.0-4096-8189_en then click on add file. Repeat until you’ve added the 3 files for the 4GB firmware:

  • CX1-V1.0-4096-8189_en.rom – MTD
  • lk.rom – BOOT
  • NAND Data.fai – NAND Data

Now connect the mini USB to USB cable to your computer (but not to the CX-01 just yet), press the Fn key and insert the mini USB cable into the CX-01, until it is detected by Windows and complete the driver installation. Once this is done, the Area Map section you show the NAND Data and MTD partitions. Click on the Start button to start flashing the new firmware to the device.

FWDN V7 During CX-01 Firmware Flashing

Once you see “Download is complete! (1st)” the update is complete. This is the log for the update:
============================================
FWDN V7 -- v2.22
============================================

[DEBUG] CFwdnPort::Check_VtcUsbPortChange: \\?\usb#vid_140e&pid_b086#5&24f64713&0&1#{db6585b8-0409-4ee6-9636-e595901c59ca} is pluged.
[DEBUG] CFwdnDownload::DeviceArrivalEvent: Device Arrival Event (dev=0)
Download Session – Start!
Device Init – Start!
Device Init – Complete! – (0sec 17)
Device’s SerialNumber : F1002059A00841DC120713084548063B
[DEBUG] CFwdnDownload::OnDownloadDefault: check=1 filepath=F:\cnxsoft\cx-01\V1.0-4096-8189_en\lk.rom filesize=333KB type=0
[DEBUG] CFwdnDownload::OnDownloadDefault: check=1 filepath=F:\cnxsoft\cx-01\V1.0-4096-8189_en\CX1-V1.0-4096-8189_en.rom filesize=233MB type=4
[DEBUG] CFwdnDownload::Verify_ImageFile: [HEADER] : Size=48 CRC=0x3388635F
[DEBUG] CFwdnDownload::OnDownloadDefault: check=1 filepath=F:\cnxsoft\cx-01\V1.0-4096-8189_en\NAND Data.fai filesize=1104KB type=5
[DEBUG] CFwdnDownload::Verify_ImageFile: [HEADER] : Size=96 CRC=0xD22A5DC4
[DEBUG] CFwdnDownload::Verify_ImageFile: Image Version : TCC FAT IMG V0.1
[DEBUG] CFwdnDownload::Verify_ImageFile: DISKSIZE = 0x85C00000
Write BOOT – Start!
Write BOOT – Complete! – (2sec 46)
“MTD” AREA Write – Start!
“MTD” AREA Write – Complete! – (4min 33sec 29)
“NAND Data” AREA Write – Start!
“NAND Data” AREA Write – Complete! – (2sec 26)
Check CRC (F:\cnxsoft\cx-01\V1.0-4096-8189_en\CX1-V1.0-4096-8189_en.rom) – Start!
Check CRC – Complete! – (52sec 73)
Check CRC (F:\cnxsoft\cx-01\V1.0-4096-8189_en\NAND Data.fai) – Start!
Check CRC – Complete! – (0sec 12)
Download Session – Ending…
Download Session – End!
#################### Download is complete! (1st) ####################

This method should also work for other Telechips device by simply using the corresponding firmware files and most likely a slightly different way to enter flash mode.

Source: Pandawill forums.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

How To Root CX-01 Android mini PC

August 1st, 2012 35 comments

CX-01 is a cool low cost Android mini PC (as low as $40), but unlike many other Chinese Android device it is not rooted.

Here are the instructions to root it:

  1. Download Unlock Root http://www.unlockroot.com/. NB: The download link does not appear to work right now, but the filename is unlockroot23.exe, so here are some alternative untested download links.
  2. Find Unlockroot\driver\android_winusb.inf in the directory where you install Unlockroot
  3. Open the file in a text editor, and add the following lines:
    • For Win 7 (64-bit):
      [Google.NTamd64] 64-bit]
      ;TCC8920
      %SingleAdbInterface% = USB_Install, USB\Vid_18D1&Pid_DEED&MI_01
      %CompositeAdbInterface% = USB_Install, USB\Vid_18D1&Pid_DEED&Rev_0231&MI_01
    • For WinXP (32-bit):
      [Google.NTx86]
      ;TCC8920
      %SingleAdbInterface% = USB_Install, USB\Vid_18D1&Pid_DEED&MI_01
      %CompositeAdbInterface% = USB_Install, USB\Vid_18D1&Pid_DEED&Rev_0231&MI_01
  4. Connect CX-01 to your PC via USB, it should then detect your new device. If it doesn’t simply press “fn” key on CX-01 TV Stick.
  5. Select the driver that you edited in Unlockroot\driver\android_winusb.inf
  6. Once the driver is installed, run unlockroot
  7. Press ROOT, then reroot device.
  8. Reboot CX-01 mini PC
  9. Done!

Thanks to Myxa78.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

$40 CX-01 mini PC Unboxing and Review

July 24th, 2012 46 comments

I’ve just received the CX-01 Mini Android PC I ordered 3 weeks ago on Pandawill website using Togetho.ru group buy coupon and paid $41.89 as I selected “Singapore Post” shipping option. Today, I’ll post some unboxing pictures and provide a review of this tiny and cheap device.

I received the device in the box below.

SUNCHIPS-CX1 mini PCThe device characteristics are listed on the back on the package.

CX-01 specificationsTelechips TCC8925 does not support 1 GHz (max 833 MHz), and I’m unable to play some of the video container format listed, but more on that later.

You’ll just find the TV Stick and a microUSB to USB cable to power the device in the package.

Now let’s connect it to the TV. The device can plug neatly into on the HDMI port of my HDTV (Samsung LA328450), and it’s powered by the TV’s “USB service” port.

$40 is a low price to turn a standard HDTV into a Smart TV, and you don’t get the cables hanging around like products using an HDMI female connector. I understand this could be a problem if you have to connect it perpendicularly to the TV and have limited space, but a female to male HDMI cable could solve this issue as well. Now all you need to add is an input device. Ideally it should be one of those 2.4 GHz remotes (possibly dual-sided with a qwerty keyboard), but I don’t have one yet, so I’ve just connected a mouse to the USB port.

After you connect the power, you should see the boot picture below within 3 to 4 seconds.
After waiting around one minute, you can see the home screen. The pre-installed applications are at the bottom, and I’ve installed all  other apps via Google Play. The Play Store was pre-installed, but not available on the home screen.

The default language is in English which is probably a good thing for most people, and 5 applications are shown in the home screen: Video player. Gallery, Music, Browser and Settings.

I haven’t been able to take screenshots, because the device is NOT rooted and some apps won’t work. There are some other methods to take screenshot with a non-rooted device, but it’s a pain, so instead I’ve taken some pictures. I found a method to root CX-01, and some people appear to have been successful, but I haven’t tried it yet.

Going into the “About Tablet” section,  you’ll find out the device runs Android 4.0.4 and the model is SUNCHIPS-CX1. Interestingly there is also a “System updates” menu that lets you update the firmware via NAND Storage (I guess after firmware download), SD Card storage (although there is no microSD card slot) or USB storage. This might be useful if the manufacturer ever release the firmware. You may add your voice to the “where is the firmware?” complaint on Pandawill forum.

Google Play seems to work just fine and you’ll be able to install and run most of your favorite apps. I installed ES File Explorer, Antutu benchmark, Quadrant, Android Terminal Emulator, Opera Mini, the YoutTube App and a few others, all of which appear to work fine. The only exception (for now) is the Quadrant benchmark which installed and started fine, but I was unable to run the benchmarks. It’s exactly the same issue as I had with Mele A1000 stb.
After playing around a few hours, I find the device to usually perform very well, and I don’t really see performance difference compare to Mele A1000. I said “usually”, because sometimes the device will become very very slow due to high system CPU usage. It happened twice in one afternoon. The first time, I just disconnected and reconnected the power, and the second time I just went away for a while, and It appeared to work fine again. You may want to install a widget to reboot your device when that happens. You’ll need to root the device first though.

I’ve tested video playback and found it quite good, better than the Mele A1000 (Android 2.3) I tested in April. I could play YouTube videos both in the stock web browser and the YouTube app. There are 3 video players available by default:

  • ES Media Player
  • PPTV Pad
  • Video Player

I found “Video Player” to support the most files, and I used this player to test some video format/codec, mostly from http://samplemedia.linaro.org/, but also some others I downloaded:

  • H.264 codec / MP4 container (Big Buck Bunny), 480p/720p/1080p* – OK
  • MPEG2 codec / MPG container, 480p/720p/1080p* – OK
  • MPEG4 codec, AVI container – OK
  • VC1 codec (WMV) – OK
  • Real Media (RMVB) – FAIL
  • MOV file from Kodak camera – OK
  • FLV videos – Video OK, but no Audio
  • MKV (several codecs) – FAIL

*One very important thing, if you plan to play videos on a Windows share or your NAS: Videos with bit rate above 5/6 Mbps could not play smoothly on the device, and basically all 1080p I tried (Samba share on Windows XP playing with ES File Explorer) could not play smoothly due to buffering. But if I just press pause, and wait a bit for the video to buffer, it’s just fine, so I expect 1080p to play just fine from USB devices. Another possibility could be to share files via NFS, as the performance should be better.

Time for some benchmark. Quadrant did not work, so I only ran Antutu benchmark.
A score of 2216 with this resolution (1280×672) is not too bad, it’s only slightly lower than the score I got with Mele A1000 (2337) using a similar resolution (1280×720), although it was running Android 2.3, so the performance might have improve since Android 4.0 release.
TCC8925 Antutu Benchmark
Details of Antutu benchmark:

  • RAM – 204
  • CPU Integer – 402
  • CPU float – 286
  • 2D Graphics – 291
  • 3D Graphics – 696
  • Database I/O – 190

I also used Quandrant to find about some details about the system. Interestingly, the memory is reported to be 512 MB for Linux, so I suppose they manage the memory differently than with other SoC, where part of the memory is reserved and not accessible in Linux.

The processor is called tcc8920st and the frequency is set to 716 MHz each time I go to this menu, but a look at the log should that the processor switches between 716 MHz and 812 MHz regularly, probably to reduce power usage and avoid the device to become to hot. The device is warm during use, but it’s not excessive, like it appears to be with other mini PCs like MK802.

Quandrant also report that the product name is “full_tcc8920st_evm_4096_cn” and the board “tcc8920st_evm” which looks like something I found in the kernel source code, but I was still expecting something with tcc8925 in the code, so the board I have may really use tcc8920 processor. Not sure how to check this.

To conclude, I’m quite satisfied with this product, but with 4 main issues:

  • Relative instability (High CPU usage)
  • Network performance (Choppy “high” bitrate video playback over the network)
  • MKV video playback does not seem to work
  • Lack of microSD card slot (only 2 GB flash available for apps)

Hopefully, the first 2 can be fixed with a firmware update. For the last one, you can install external storage (USB), but I’m not sure Android let you install apps on a USB drive.

The group buy is not available anymore, but if you are interested, it can be purchased on Pandawill for $47.99, Dealextreme for $51 or Aliexpress for $49.99. All companies include free shipping, Pandawill with China Post, and the other two via Hong Kong Post.

There is also a 8GB version on Dealextreme for $54.50

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Building the Linux Kernel 3.0.8 For Telechips TCC8925 mini PCs (CX-01, Z900, TizzBird N1…)

July 18th, 2012 24 comments

Yesterday, we got Linux kernel 3.0.8 source code from Telechips, as well as some files related to Android 4.0 (Webkit + OMX). Today, I’ve had a look at the kernel source code and found a few very interesting things.

First let’s get the code from github:

git clone git://github.com/cnxsoft/telechips-linux.git

Good news! The code for the latest Telechips TCC892X is present in arch/arm/mach-tcc892x, and there is support for 3 types of boards:

  • board-m805_892x – TCC8923 M805 board
  • board-tcc8920 – TCC8920 evaluation board
  • board-tcc8920st – TCC8920 STB evaluation board

TCC8920 STB evaluation board appears to be relevant to products such as Diyomate A6, but if it’s also used for TCC8925 HDMI Dongle such as CX-01 mini PC, Zero Devices Z900 or ValuePlus TizzBird N1.

Now let’s have a look at the default config directory for arm (arch/arm/configs):

ls | grep tcc89
tcc8920st_defconfig
tcc8920st_hdb892s_defconfig
tcc8925st_dongle_defconfig
tcc8925st_donglehs_defconfig
tcc8925st_hdb892f_defconfig
tcc8925st_isdbt_module_defconfig
tcc892x_defconfig

Nice! tcc8925st_dongle_defconfig and tcc8925st_donglehs_defconfig look particularly interesting!

TCC892X Boards Selection

A quick comparison shows that the only difference is that tcc8925st_donglehs_defconfig sets CONFIG_HDMI_DONGLE_CLOCK_HIGH_SPEED=y.

Looking further in the source code:

#define TCC_CPU_FREQ_HIGH_SPEED         812500
#define TCC_CPU_FREQ_NORMAL_SPEED       716500

So tcc8925st_dongle_defconfig configuration file sets TCC8925 to run at 716.5 MHz and tcc8925st_donglehs_defconfig to 812.5 MHz.

The kernel configuration enables the Android stuff, so it’s probably the kernel we’ve got in the device running Android. Let’s try to build the kernel with TCC8925 clocked at 812.5 Mhz (High Speed config) assuming you’ve got the ARM toolchain already installed (run apt-get install gcc-arm-linux-gnueabihf in Ubuntu, if you don’t):

make ARCH=arm tcc8925st_donglehs_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2 uImage
....
Image Name:   Linux-3.0.8+
Created:      Wed Jul 18 20:22:07 2012
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    3136392 Bytes = 3062.88 kB = 2.99 MB
Load Address: 10008000
Entry Point:  10008000
Image arch/arm/boot/uImage is ready

Good! It can build! We now have got the kernel (zImage and uImage) in arch/arm/boot. Let’s build the kernel modules:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2 uImage INSTALL_MOD_PATH=build_modules modules
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2 uImage INSTALL_MOD_PATH=build_modules modules_install

The kernel modules are located in build_modules directory. There are only 2 kernel modules: gspca_main.ko (video driver) and scsi_wait_scan.ko.

I cannot give it a try now, as I haven’t received the hardware yet. The other thing I would like to get before hacking CX-01 mini PC is a recovery firmware, and the eventual tools to recover the device when something bad happens. I’ve contacted PandaWill to try to get it. The bootloader code would also be nice, but not an absolute must. However, I believe it’s unlikely we’ll get the bootloader source code since Telechips does not appear to have released it for the older versions of its TCC processors.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Android Transporter Enables WiFi Display Mirroring (similar to Miracast) of Android Devices

July 4th, 2012 No comments

E.S.R.Labs is a German embedded software company mainly working for the automotive industry. But this time, they’ve started to work for the consumer market with Android Transformer, a software solution that can mirror an Android display to another Android device display via Wi-Fi in a similar fashion to what WiFi Miracast will do.

Miracast Display Mirroring on Raspberry PiEventually, the company plan to make Android Transporter compatible with Wi-Fi Miracast, but in the meantime they rolled out their own solution by taking advantage of H.264 hardware encoders and decoders on Galaxy Nexus S and the Raspberry Pi. If they use standard APIs, I assume any hardware running Android that with H.264 hardware encode/decode should support their platform.

I hope it will be work on (or be ported to) CX-01 mini PC which can be bought as low as $40 inc. shipping. It would make an even cheaper hardware than the Raspberry Pi (Up to 33% cheaper depending on your country customs duties). This hardware supports WiFi and TCC8925 features 1080p H.264 hardware decode/encode (up to 24fps ~ 30 fps), which could make it an ideal candidate for the job.

Let’s watch the demo where a Galaxy Nexus S smartphone display is mirrored on an HDMI TV connected to a Raspberry Pi + Wi-Fi dongle.

Currently there is 150ms delay between displays, but they intend to reduce the lag to 100ms. This is mostly an issue when playing games.

The company is currently working on supporting dual screens and Wi-Fi Direct. E.S.R.Labs has said it will eventually open source their solution once the API is stable enough.

If you have 2 rooted Google Nexus S smartphones, and are OK with voiding your warranty, you can try it yourself:

  1. Download Android Transporter firmware
  2. Flash it using ClockworkMod Recovery.
  3. Setup one phone as a WiFi hotspot and the other phone as a wireless client.
  4. Start Android Transporter on both phones
  5. Tap to beam the display content.
Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter