Share my experiment of hack of A10 TV-Box device. For someone also want use A10 as your need.

Note:

  1. It is only for reference not finish yet.
  2. Maybe I lost sometime of step..:P
  3. Thanks Rhombus Tech web site, it's give me a lot of information.

I am looking forward with HTPC tvbox hardware device. For run linux and XBMC, A10 device is cheaper but must of A10 device is tablet. Finally, I found a MELE A1000 android tv-box that it is A10 device.

Buy from taobao in the china and the price is RMB$469

Ordering is also possible from dealextreme

WARNING: Ordering from dealextreme may be slow. Poster has waited 10 days from order, still not shipped. Search with Google "dealextreme slow" to get other reports.

The box SPEC.

 
  1. Video output - HDMI, CVBS, VGA .
  2. Audio output - R+L, SPDIF
  3. 3 usb host port + SDCard slot.
  4. External SATA port (real SATA not from usb)
  5. Ethernet.
  6. ...

Internal board has

  1. UART port connector.
  2. USB device port connector
  3. MIC pin. Some resistors & capacitors seem to be missing?
  4. CVBS-IN pin. Some resistors & capacitors seem to be missing?
  5. FEL jumper, unsoldered, 11K1 between flash, dram & pmu). 3.3V logics
  6. RESET?, unsoldered, 12J1 between the big round black ones, next to the big unpopulated connector at the right edge. 5V logics.
  7. I2C? (unsoldered eeprom & unsoldered header, some resistors also needed)

I2C: From the pictures, the 8 pin chip to the left of the A10 appears to be an I2C eeprom and if you add R14,R15(jumper) then I2C is available at the 6 pin connector below the eeprom.

6-pin header (unpopulated) below:

  1. SCL
  2. SDA
  3. GND
  4. ?? (Requires R16 jumper)
  5. ?? (Requires R17 jumper)
  6. Vcc

The A1000's sys config1.fex

Below steps are my test for boot A10 tvbox to Ubuntu desktop. But it only see the welcome screen, couldn't login.


You need another hardware to connect internal connector.

  1. connect to internal UART port. (for see the console)
  2. connect to internal USB device port. (for use adb)

Pin define see the inside picture.

The kind of connector used is often found internally in various devices. For example a very good candidate for finding a suitable cable for the USB connection is a USB mouse. You may need to rearrange the pins a bit however. Normal coloring scheme in USB cables seem to be Black GND, Green D+, White D-, (Red 5V, do not connect to mele). If there is two black then one is shield and should not be connected.


Change the u-boot in the device. to support boot from MMC

  1. build the u-boot that support boot from MMC.
        git clone http://git.hands.com/u-boot.git
        cd u-boot
        git checkout lichee-dev
        vi include/configs/suni4.h
    

    search mmc config

    1. #if 0 => #if 1 (enable u-boot support mmc)
    2. change #define CONFIG_MMC_SUNXI_SLOT 0

    make sun4i CROSS_COMPILE=arm-none-linux-gnueabi-

    got the u-boot.bin (my build of u-boot.bin)

  2. ref the eLinux Hack A1 devices page. use adb push the new u-boot.bin to tv-box.


Build linux kernel and use SATA HDD as rootfs.

ref the kernel compile

The change of kernel config.

  1. Change "Default kernel command string" to see the kernel boot log. This is workaround method, I don't know why kernel could not use the u-boot env.
        CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/sda1 rw rootfstype=ext4 init=/init loglevel=8 rootwait mac_addr=00:CE:39:
        B6:5D:B4"
        CONFIG_CMDLINE_FORCE=y
    
    If you do not have serial to USB board, you may try to enable the framebuffer console (not tested) in order to see the kernel output the monitor at boot time:
    CONFIG_FRAMEBUFFER_CONSOLE=y
    
    CONFIG_LYCHEE_HDMI_SUN4I=y
    CONFIG_LYCHEE_FB_SUN4I=y
    CONFIG_LYCHEE_LCD_SUN4I=y
    

    With those options, you can skip step 1,2 and 3 (copy and load modules) in the rootstock section below.

  2. Disable initrd.
  3. got the kernel image and copy it to SD Card partition 1 (FAT 16 filesystem) (my build of uImage)


Build ubuntu 10.04 rootfs

Thanks rootstock. It has easy way to get the prebuild arm version of ubuntu.

sudo rootstock 
    --fqdn ubuntu 
    --login ubuntu 
    --password ubuntu 
    --imagesize 3G 
    --seed ubuntu-desktop,openssh-server 
    --serial ttyS0 
    --dist lucid

got armel-rootfs-xxxxxxx.tgz.

  1. extract it to SATA HDD partition 1 that is format as ext4 filesystem.
  2. copy A10 display kernel module to rootfs disp.ko, lcd.ko, hdmi.ko copy to lib/module/xxxx/
  3. vi etc/init.d/rcS to add insmod of diplay kernel module. (cd $MODULES_DIR;insmod disp.ko;insmod lcd.ko;insmod hdmi.ko)

Boot up

  1. plug SATA HDD to SATA port.
  2. plug the SDCard that has kernel image.
  3. UART connect to board press any key when power on the device. you will see the u-boot command.
  4. Type below command to load kernel image from SD Card.
    mmcinfo; fatload mmc 0 50000000 uImage_git_root_sda1 ;bootm 50000000`
    
  5. You will see kernel boot message from UART and use SATA HDD as rootfs.

Another rootfs -- minimal ubuntu 10.04

sudo rootstock --fqdn ubuntu --login ubuntu --password ubuntu --imagesize 2G --dist lucid 
               --serial ttyS0 --seed  ubuntu-minimal,vim,openssh,apt

console boot log: bootlog sata ubuntu mini log.txt * I am porting Puppy Linux to run on the Mele A1000, have had preliminary success -- boot time from pressing power-on button to desktop loaded is about 18 seconds!

Here is my blog post announcing the first successful bootup: http://bkhome.org/blog/?viewDetailed=02808

See other posts for further details: http://bkhome.org/blog/

The system that I use to build a Puppy is called "Woof". The way that I have set things up is there is a SD-card skeleton image, already setup to bootup for the target board. All that has to be done is add a kernel and the Linux filesystem -- plus of course the kernel modules and firmware in the filesystem.

This seems like the easiest way for Woof to build for any target board (that will boot from SD card).

Here is my skeleton image: http://distro.ibiblio.org/quirky/arm/sd-skeleton-images/

This is just the SD image that Tom uploaded, with almost everything taken out. Now compresses to about 7MB.

I have also created a PET package (the native package format of Puppy Linux) for the 3.0.8+ kernel, again it is the kernel that Tom uploaded: http://distro.ibiblio.org/quirky/arm/pet_packages-armv7/linux_kernel-3.0.8-mele-armv7.pet

Note, PET packages are tarballs with md5sum appended. You can expand it by doing this: tar -zxf linux_kernel-3.0.8-mele-armv7.pet ...and ignore the error message. it will expand into directory 'linux_kernel-3.0.8-mele-armv7'.