MeLe A2000: Difference between revisions

From Lundman Wiki
No edit summary
No edit summary
 
(28 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Help needed ==
=== MeLE A2000 ===


Hi,
=== Mele file storage ===


I don't know where I can add a discussion but I was wondering if someone can help me,
http://www.lundman.net/ftp/mele/


I have An IOBOX and I tried to install an internal HDD 1.5T. The operation failed and IOBOX said that NMT doesn't support this HDD yet.


Although the format failed, I successfully connected with telnet, formatted the partitions, unzipped the NMT software to the correct partition. I also managed to load the init_nmt script and restart gaya and now the NMT works.
=== v1.3BETA firmware ===


The problem is that NMT doesn't start if I restart the IOBOX.
Mele_HTPC_0929_BETA_V1.3.rar
Mele_HTPC_0929_BETA_V1.3.ddimg.bz2


I think that the issue is related to the fact that my /dev/hda1 is mounted to /HARD_DISK_A1 and /dev/hda3 is mounted to /HARD_DISK_A3 although the correct mount is /nmt and /HARD_DISK and something with the /share.
Exactly the same issues as v1.2. I can not see anything new, nobody should run this.


I thought of changing the init scripts but I failed to do so (since the scripts are not saved).
If you want to replace the kernel, with the NIC patched kernel, do this:


can you help?
# wget http://lundman.net/ftp/mele/mele.v1.3.nandc-new
# dd if=/dev/nandc of=original_nandc.bin bs=65536          # Use /dev/block/nandc if on Android
# dd if=mele.v1.3.nandc-new of=/dev/nandc bs=65536
Now, when I boot, the wemac NIC doesn't work any more (link stays down). But if I replace the script.bin it works again. I do not know which part of script.bin needs to be fixed. Someone with time could look into this. There are only about 20 lines when you diff them, but none in emac area.
 
# wget http://lundman.net/ftp/mele/mele-1.3-script-fixed.bin
# mount -t vfat /dev/nanda /mnt
# cp /mnt/script.bin /mnt/script-original.bin
# cp mele-1.3-script-fixed.bin /mnt/script/bin
# umount /mnt
 
For those of you who also wishes to make advantage of the ZFS in the kernel, you additionally need to get:
 
# wget http://lundman.net/ftp/mele/zpool_builtin-1.3
# wget http://lundman.net/ftp/mele/zfs_builtin-1.3
# mount -o remount,rw /system
# busybox cp zpool_builtin-1.3 /system/bin/zpool
# busybox cp zfs_builtin-1.3 /system/bin/zfs
# touch /etc/mtab
# zpool import -d /dev/block yourpoolname
 
Personally, I also recommend:
 
# cd /system/media/
# mv bootanimation.zip bootanimation.zip-orig
 
=== v1.2 firmware ===
 
Mele_HTPC_120907_Ver1.2.rar
 
This does not include Google Market/Play Store. Has a strange launch screen that appears not trivial to replace. It is loaded with chinese apps and ad/malware.
I would not recommend anyone to run this.
 
=== Status ===
 
Current status with the Mele A2000, Allwinner A10.
 
Official release: Android 4 ICS, 4.0.8.
Kernel: 3.0.31+
 
'''Positive:'''
* Video playback 1080p
* MKV playback
* TS playback
* YouTube
* Android market and Games (Angry Birds etc)
 
'''Negative:'''
* <s>Network Streaming</s> Fixed. NIC has been patched to allow smooth 1080p steaming
* Audio. The settings; '''CODEC''' no sound, but probably on RCA. '''HDMI''' choppy sound, unusable. If made to work, only '''stereo''' on HDMI. '''SPDIF''' not working, does not turn on. (No red light)
* Bitstreaming; Unconfirmed since SPDIF is not functional. But can the hardware bitstream TrueHD, and DTS-MA ?
* 10bit video does not play (not supported by hardware, CPU too slow for software)
* AVI/XviD does not play (not supported by hardware, CPU too slow for software)
 
Currently, it is no good for mediaplayer. But if all you want is a toy to play youtube, some android games, and only stereo sound, it is definitely capable.
 
 
=== Android 4 ICS wired NIC patch ===
 
I have been working on trying to improve the '''wemac''' NIC driver in the Mele A2000 Allwinner A10 hardware, which will stutter when playing 720p/1080p over network. The current patch makes it much better, such that I think it is usable now. There is a '''mynewerimage.img''' image in the storage area, that you can '''dd''' to the '''nandc''' device. I will work on submitting the patch upstream.
 
For example, if you boot miniand image:
 
# modprobe nand    # nand.ko on my storage area too
# wget http://lundman.net/ftp/mele/mynewerimage.img
# dd if=/dev/nandc of=mele_nandc_backup.bin bs=65536
# dd if=mynewerimage.img of=/dev/nandc bs=65536
# sync
# reboot -f
 
And take out the SD card to boot Android again. If you do this using Android, the device node is /dev/block/nandc
 
=== Android 4 ICS official Mele image ===
 
The official Mele Android ICS image is out, called '''Mele_HTPC_Android_4.0_V1.rar''' which you need to use PhoenixCard to "burn". Once installed, you can use '''audiopatch1.3.apk''' to enable some sound features. Otherwise it seems quite similar to A10 firmware.
 
For those not using Windows, I also made a '''dd''' image: '''Mele_HTPC_Android_4.0_V1.ddimg.bin.bz2''' [http://lundman.net/ftp/mele/Mele_HTPC_Android_4.0_V1.ddimg.bin.bz2] Just dd the whole thing to your raw device.
 
=== Android 4 IceCreamSandwich ===
 
'''Update: the non-beta release of ICS4 came out (for the A10, not Mele's release), which has settings/display, and lets you chose resolution '''
 
For Unix and clones:
wget http://www.lundman.net/ftp/mele/homlet_4.0_v1.0_20120609_dd.img.lzma
7z x homlet_4.0_v1.0_20120609_dd.img.lzma
sudo dd if=homlet_4.0_v1.0_20120609_dd.img of=/dev/sdX bs=1M
sync
 
Where you need to replace X in /dev/sdX by the correct letter for your SD card reader.
Now insert the SD card in your Mele, and wait until the LED stops blinking, remove the SD card and restart the device. Et voila!
(Read more: [http://www.cnx-software.com/2012/06/18/mele-a1000a2000-android-4-0-image-released/#ixzz1ylfoeKQc]) See I kept the paste URL cos I'm nice! :)
 
 
 
There is also an audiopatch for the ICS4 image to get sound to work. Copy over '''audiopatch1.2.apk''' (adb, or physical media) to your ICS4, install and run.
 
Not convinced it makes any difference for me. Audio appears not to work still.
 
It appears the contents on audiopatch1.2 is pretty much just libswa.so. Not entirely sure what it thinks to do with it, but if I do a '''find''' from root, there is no such library, before and after running patch.


thanks,
I copied the file by hand:
Gil


<blockquote>Hello Gil,
busybox cp /data/data/com.android.audiopatch/files/libswa.so /system/lib/


If the partition setup is correct for the NMT, the disk volume name is HARD_DISK. So if you get HARD_DISK_A1, _A3 etc, it will fail. Should this occur, the typical resolve (at least for common users) would be to make clean re-install of the disk. And make sure your box is on recent firmware. You could google or search the forum for your HDD (brand/model) to see if there is more info there.<br><br>
and I get sound playing videos with some audio formats now. Like, TV MKV releases.


/share is a link to /opt/sybhttpd/localhost.drives/HARD_DRIVE/
=== Mele A2000 ===
<br><br>
I think you'll get better response on the NMT forums.<br>
Cheers --[[User:Dc11ab|dc11ab]] 19:37, 15 January 2009 (JST)
</blockquote>


== INIT_NMT START ==
I purchased a MeLE A2000 from Tom over at [http://www.aliexpress.com/product-fm/546571245-Mele-A2000-TV-box-Allwinner-A10-hackable-device-wholesalers.html aliexpress], and been playing around with it as well. First I wanted to install ICS4, to do that I downloaded the '''android_4.0.img''' file from the 'net. Alas, there is a large volume of confusing information on what to do with this.


Dear.
[http://www.lundman.net/ftp/mele/ http://www.lundman.net/ftp/mele/]
[https://www.wuala.com/zercosz/Mele%20A2000/Firmware/?key=ThisIsFC2012 https://www.wuala.com/zercosz/Mele%20A2000/Firmware/?key=ThisIsFC2012]


I would really like to install apps on my external usb HDD,
For the MeLE A2000, I also downloaded '''PhoenixCardV303(win7)''' and installed that in my VirtualBox Win7 system, forwarded the OSX USB drive and told it to install '''android_4.0.img'''.
but I allways get this message after I type:


/etc/init_nmt start
[https://www.wuala.com/zercosz/Mele%20A2000/Utilidades%20Mele/?key=ThisIsFC2012 https://www.wuala.com/zercosz/Mele%20A2000/Utilidades%20Mele/?key=ThisIsFC2012]
[http://www.lundman.net/ftp/mele/ http://www.lundman.net/ftp/mele/]


Result is:
After that, I inserted the SD card into Mele, and rebooted.


The power LED will blink RED + BLUE for a while, then power LED will turn off.


/ # ls
Take out SDcard, and reboot MeLE. It will now boot ICS, but only on HDMI@720p.


USB_DRIVE_A-1  dev            lib            opt            sys            var
I can confirm BubbleUPNP + 2160pPlayer will play 1080p MKVs over network. Nice!
USB_DRIVE_A-2  etc            linuxrc        proc          tmp
USB_DRIVE_A-3  home          mnt            root          upnp
bin            init          modules        sbin          usr


/ # cd /opt/sybhttpd/localhost.drives/


/opt/sybhttpd/localhost.drives # ls
=== Google Market/Play ===


HARD_DISK      NETWORK_SHARE  USB_DRIVE_A-1  USB_DRIVE_A-2  USB_DRIVE_A-3
I installed one of the Terminal programs, and told adb to use TCP (haven't bothered to open my mele yet). Using adb and the instructions found [http://www.slatedroid.com/topic/30855-scripts-allwinner-a10-tablets-google-play-script/ allwinner a10 scripts] I loaded Google Market/Play to the mele.


/opt/sybhttpd/localhost.drives # cd /


/ # /etc/init_nmt start


SHAREROOT=/opt/sybhttpd/localhost.drives/HARD_DISK
=== Changing resolution ===
sh: 3: unknown operand
mkdir: cannot create directory '/share/Video': No such file or directory
chmod: /share/Video: No such file or directory
mkdir: cannot create directory '/share/Music': No such file or directory
chmod: /share/Music: No such file or directory
mkdir: cannot create directory '/share/Photo': No such file or directory
chmod: /share/Photo: No such file or directory
/etc/init_nmt: line 246: cannot create /mnt/syb8634/server/php5server/httpd_inc.conf: nonexistent directory


/ #
This refers to the Beta ICS4. Probably is not useful any more, but I will leave it here for reference.


What could be wrong?
Changing resolution can be done by modifying the boot time scripts that the A10 uses. Usually done on a separate boot partition. For example, the Mele image has the files:


Thank you very much
mount /dev/mmcblk0p1 /mnt
With regards
ls -l /mnt/
evb.bin


Data3
git clone https://github.com/amery/sunxi-tools
cd sunxi-tools
make
./bin2fex /mnt/evb.bin > evb.fex   


:: Hello Data3
Edit the file any odd way you want, changing '''screen0_output_type''' and '''screen0_output_mode'''. See modes here: [https://github.com/amery/linux-allwinner/blob/allwinner-v3.0-android-v2/include/linux/drv_display_sun4i.h#L132]
:: What NMT model do you have (A110 etc)? What firmware revision?
:: From the looks of the output it may need an additional symlink for /share somewhere along:
# ln -s /opt/sybhttpd/localhost.drives/HARD_DISK /share
:: /[[User:Dc11ab|dc11ab]]


./fex2bin evb.fex > /mnt/evb.bin


'''NMT & FIRMWARE'''


Thank you very much on your quick response and srry on my
If you are running the Android 4 (ICS) Beta that was released, to change the resolution to HDMI 1080p, you can do this. Using either a terminal program on Android (ConnectionBot for example) or the USB Console (if connected).
broken english if I go wrong somewhere...


NMT: Popcorn A-110
On the mele root shell
setprop service.adb.tcp.port 5555
stop adbd
start adbd
netstat -na      # Check that it is listening on port 5555


FW: 01-17-100317-15-POP-403
On remote adb machine
adb connect 192.168.xxx.xxx    # Put in the Mele's IP
adb shell
adb> mount -t vfat /dev/block/nanda /mnt/obb
adb> exit
adb push script-HDMI-1080p60.bin /mnt/obb/
adb shell
adb> cd /mnt/obb
adb> busybox cp script-HDMI-1080p60.bin script.bin


My knowledge of Linux is less then zero and I see that I am not the  
If you don't want to edit the script file yourself, you can download my prepared one:
only one with this kind of problem.
[http://www.lundman.net/ftp/mele/script-HDMI-1080p60.bin script-HDMI-1080p60.bin]


I`ll try to add this line
=== U-boot ===
when i arrive home and I`ll tell you what happend.


Thank you again!
Since I added ZFS to u-boot for CuBox, and also patched in Samsungs EXT4 patches, I built hno's u-boot to test.


https://github.com/lundman/uboot-allwinner/tree/zfs


wget http://lundman.net/ftp/mele/sunxi-spl.bin
dd if=sunxi-spl.bin of=/dev/sdc bs=1024 seek=8        # Obviously, '''sdc''' is my SDcard, change device to applicable.
wget http://lundman.net/ftp/mele/u-boot.bin
dd if=u-boot.bin of=/dev/sdc bs=1024 seek=32          # Obviously, '''sdc''' is my SDcard, change device to applicable.


'''ADDITIONAL SYMLINK FOR /SHARE'''
U-Boot 2012.04.01-g39085db-dirty (May 29 2012 - 02:29:31) Allwinner Technology
CPU:  SUNXI Family
Board: A10-EVB
DRAM:  512 MiB
MMC:  SUNXI SD/MMC: 0
*** Warning - bad CRC, using default environment
sun4i#zfsload
zfsload - load binary file from a ZFS filesystem


Now i got home and tried again..
  sun4i#zfsload mmc 0:2 0x48000000 /boot/@/uImage
Here`s the result:
  Loading file "/boot/@/uImage" from mmc device 0:2 xxa2
  BusyBox v1.5.0 (2010-03-12 14:25:37 MYT) Built-in shell (ash)
  zfs fsname = '/boot/' snapname='<NULL>' filename = '/uImage'
Enter 'help' for a list of built-in commands.
  4230340 bytes read
/ # mkdir /mnt/temp
  / # mount /dev/sda1 /mnt/temp
  / # ln -s /mnt/temp/syb8634/ /mnt/
/ # mkdir /opt/sybhttpd/localhost.drives/HARD_DISK
/ # '''ln -s /opt/sybhttpd/localhost.drives/HARD_DISK /share'''
  / # mount /dev/sda1 /opt/sybhttpd/localhost.drives/HARD_DISK
/ # /etc/init_nmt start
   
   
  SHAREROOT=/opt/sybhttpd/localhost.drives/HARD_DISK
  sun4i#bootm 0x48000000
sh: 4: unknown operand
## Booting kernel from Legacy Image at 48000000 ...
  /etc/init_nmt: line 246: cannot create /mnt/syb8634/server/php5server/httpd_inc.  
  Image Name:  Linux-3.0.8+
  conf: Too many levels of symbolic links
  Image Type:  ARM Linux Kernel Image (uncompressed)
  /
  Data Size:   4230276 Bytes = 4 MiB
  Load Address: 40008000
  Entry Point:  40008000
  Verifying Checksum ... OK
  Loading Kernel Image ... OK
OK
  Starting kernel ...
   
  DRAM: 512[    0.000000] Initializing cgroup subsys cpuset


:: That could mean we have a link that links back to the original link.
:: I've not used this hack myself so I can't get you any further. If you are lucky lundman may spot this discussion and have a better idea of what to do, otherwise I suggest you bring this issue forth on the networkedmediatank.com forums where more people could have a look at it. / ~~


== Errors ==
=== Android Kernel ===


I followed the installation and get to this point:
I wanted to replace the ICS4 kernel with my own, for the nic fixes. These are the steps I took:


Starting FTP Server...ln: /mnt/syb8634/web/sys/nmt_8634/TVHD/player/bg_pc.jpg: File exists
git clone https://github.com/amery/linux-allwinner
ln: /mnt/syb8634/web/sys/nmt_8634/TVHD/player/bg_tv.jpg: File exists
git branch lichee-3.0.8-sun4i
ln: /mnt/syb8634/web/sys/nmt_8634/TVHD/setting/bg_pc.jpg: File exists
make sun4i_crane_defconfig
ln: /mnt/syb8634/web/sys/nmt_8634/TVHD/setting/bg_tv.jpg: File exists
ln: /mnt/syb8634/web/sys/nmt_8634/TVSD/player/bg_pc.jpg: File exists
Check that .config has
ln: /mnt/syb8634/web/sys/nmt_8634/TVSD/player/bg_tv.jpg: File exists
CONFIG_MODVERSIONS=y
ln: /mnt/syb8634/web/sys/nmt_8634/TVSD/setting/bg_pc.jpg: File exists
# CONFIG_MODULE_SRCVERSION_ALL is not set
ln: /mnt/syb8634/web/sys/nmt_8634/TVSD/setting/bg_tv.jpg: File exists
 
rm: cannot remove 'httpd.pid': No such file or directory
The wemac nic was panicing on boot everytime, until I changed this:
Start HTTP Server : [FAILED]
 
Updating samba workgroup...
drivers/net/sun4i/sun4i_wemac.c
Updating samba password...Starting samba/mnt/syb8634/server
#define PHY_POWER 0  /* was 1 */


--------------> After a while I get following message:
make uImage
 
From android, I used ConnectBot to make a copy of the 'boot' partition, nandc.
 
adb shell
adb> dd if=/dev/block/nandc of=/mnt/sdcard/nandc bs=65536
adb pull /mnt/sdcard/nandc
 
Then split it up into kernel and ramfs, you can find split_bootimg.pl my storage area (url above)
 
# ./split_bootimg.pl nandc
Page size: 2048 (0x00000800)
Kernel size: 8410564 (0x008055c4)
Ramdisk size: 975609 (0x000ee2f9)
Second size: 0 (0x00000000)
Board name:
Command line:
Writing nandc-kernel ... complete.
Writing nandc-ramdisk.gz ... complete.
 
The idea is to make a new kernel, that looks roughly the same as nandc-kernel, and re-use the nandc-ramdisk.gz
 
Once the compile has finished, we make a new image. According to the nandc ANDROID! header, the base address for Mele is 0x40000000
 
# mkbootimg --base 40000000 --kernel arch/arm/boot/Image --ramdisk ../nandc-ramdisk.gz -o ../mynewimage.img
 
Now I boot into Miniand image on SD card, use my nand.ko to load the device for /dev/nand*. You can find my Miniand kernel '''uImage''' and '''nand.ko''' in the storage area too. The default Miniand kernel did not come with nand driver.
 
# modprobe nand.ko
# dd if=mynewimage.img of=/dev/nandc bs=2048
# sync
# reboot
 
and remove the SD card to boot Android. If you want to undo, and go back to ICS4, put '''nandc''' file instead of '''mynewimage.img''' in the '''dd''' line above.
 
=== Mele's Wired Network Interface ===
 
The wired nic in the Mele is a '''wemac''' from Davidcom. It is unfortunately quite poor. You will get decent 100MB speeds from it, but it uses the CPU. If you do any transfers while trying to watch video (including watching video over network) it will stutter for 1080p. Interestingly if you use SD, or USB while watching, it has no problem.
 
The WIFI driver sits on the USB bus and is not affected by this.
 
Using a USBEthernet dongle (I tried an Apple brand) also works without issues.
 
 
=== ZFS on Android ===
 
I have already ported ZFS to ARM, so that should just work if you compile ZFS with your kernel. But I also wanted to see if I can get ZFS to work with Android. The modules do load ok, but execution does not work:
 
# cd /mnt/sdcard/
# insmod spl.ko && insmod zavl.ko&&insmod znvpair.ko&&insmod zunicode.ko&&insmod zcommon.ko&&insmod zfs.ko&&insmod zpios.ko&&cp zpool /mnt/obb/&&chmod 755 /mnt/obb/zpool
# cd /mnt/obb
# strace -f ./zpool create melepool /dev/block/sda1   
open("/dev/block/sda1", O_WRONLY|O_EXCL|O_LARGEFILE) = 6
write(6, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096
fdatasync(6)                            = 0
close(6)                                = 0
open("/melepool", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = -1 ENOENT (No such file or directory)
ioctl(3, ITE_GPIO_IN
 
and it hangs.
 
 
=== djmount for Android ===
 
So one option is to have a mediaplayer with UPNP ability, like that of BubbleUPNP or PlugPlayer. However, both of these do poorly with Mele's remote control. With Bubble you can not click on Directories to enter them, but have to Mouse-Mode in/out to do so.
 
So one option is to mount all UPNP devices as a directory. Since Mele's kernel already comes with FUSE, I compiled '''djmount''' for it (patched version with >2GB size fixed).
 
% adb push djmount /mnt/obb
% adb shell
# cd /mnt/obb
# chmod 755 djmount
# ./djmount  -o allow_other /mnt/sdcard/Pictures                # No reason to pick "Pictures" I just wanted an existing directory
# ls -l Pictures/                               
-r--r--r-- root    root          49 2000-01-01 20:00 devices
dr-xr-xr-x root    root              2000-01-01 20:00 llink-daemon UPNP Media Server (MediaServer) : 1
# ls -l Pictures/llink-daemon\ UPNP\ Media\ Server\ \ \(MediaServer\)\ \:\ 1/
dr-xr-xr-x root    root              2000-01-01 20:00 DVD
dr-xr-xr-x root    root              2000-01-01 20:00 Game of Thrones
dr-xr-xr-x root    root              2000-01-01 20:00 Music
dr-xr-xr-x root    root              2000-01-01 20:00 Video
-r--r--r-- root    root    14010368 2000-01-01 20:00 movie.m4v


Stop MS UPnP    : [FAILED]
And indeed, if you use the File browser in ICS4, you can just enter that directory, and play any video. Note that '''djmount''' is pretty slow on listing directories, and I think we might want to look at speeding that up if we are to use it long term. Also, increase the cache timeout from 60s to something much higher, like 10 minutes.
Stop mDNSrespd  : [FAILED]
Stop synMusic    : [  OK  ]
Stop HTTP Server : [  OK  ]
SMP8634 Media Server Server Stopped...
/mnt/syb8634/bin
Start HTTP Server : [FAILED]




I can connect via FTP but no installation with CSI is possible.


=== PS3EYE WebCam ===


I wanted to see if the PS3 Eye would work with Mele, and Skype.


Other problem: after reboot everything is gone and I have to start from scratch.
Video:


== Errors ==
# insmod gspca_main.ko                               
# insmod gspca_ov534.ko videomode=13     


I followed the installation and get to this point:
That makes the camera work with Skype and '''Zoom Camera''' app. When I tried one of the 640x480 modes it just hangs, so currently it is 320x240@60.


# Starting FTP Server...ln: /mnt/syb8634/web/sys/nmt_8634/TVHD/player/bg_pc.jpg: File exists
Audio:
# ln: /mnt/syb8634/web/sys/nmt_8634/TVHD/player/bg_tv.jpg: File exists
# ln: /mnt/syb8634/web/sys/nmt_8634/TVHD/setting/bg_pc.jpg: File exists
# ln: /mnt/syb8634/web/sys/nmt_8634/TVHD/setting/bg_tv.jpg: File exists
# ln: /mnt/syb8634/web/sys/nmt_8634/TVSD/player/bg_pc.jpg: File exists
# ln: /mnt/syb8634/web/sys/nmt_8634/TVSD/player/bg_tv.jpg: File exists
# ln: /mnt/syb8634/web/sys/nmt_8634/TVSD/setting/bg_pc.jpg: File exists
# ln: /mnt/syb8634/web/sys/nmt_8634/TVSD/setting/bg_tv.jpg: File exists
# rm: cannot remove 'httpd.pid': No such file or directory
# Start HTTP Server : [FAILED]
# Updating samba workgroup...
# Updating samba password...Starting samba/mnt/syb8634/server


--------------> After a while I get following message:
No idea. The device shows:


Stop MS UPnP     : [FAILED]
# cat /proc/asound/cards                             
# Stop mDNSrespd   : [FAILED]
  0 [sun4icodec     ]: sun4i-CODEC - sun4i-CODEC
# Stop synMusic    : [ OK ]
                      sun4i-CODEC  Audio Codec
# Stop HTTP Server : [ OK ]
1 [sun4isndhdmi   ]:  - sun4i-sndhdmi
# SMP8634 Media Server Server Stopped...
                      sun4i-sndhdmi
# /mnt/syb8634/bin
  2 [CameraB409241 ]: USB-Audio - USB Camera-B4.09.24.1
# Start HTTP Server : [FAILED]
                      OmniVision Technologies, Inc. USB Camera-B4.09.24.1 at usb-sw-ehci-1.3, high sp
3 [sun4isndspdif  ]:  - sun4i-sndspdif
                      sun4i-sndspdif


And we get the device nodes:


I can connect via FTP but no installation with CSI is possible.
# ls -l /dev/snd/
crw-rw---- system  audio    116,  0 2012-07-03 14:12 controlC0
crw-rw---- system  audio    116,  32 2012-07-03 14:12 controlC1
crw-rw---- system  audio    116,  64 2012-07-03 14:12 controlC2
crw-rw---- system  audio    116,  96 2012-07-03 14:12 controlC3
crwxrwxrwx system  system  116,  24 2012-07-03 14:12 pcmC0D0c
crwxrwxrwx system  system  116,  16 2012-07-03 14:12 pcmC0D0p
crw-rw---- system  audio    116,  48 2012-07-03 14:12 pcmC1D0p
crw-rw---- system  audio    116,  88 2012-07-03 14:12 pcmC2D0c
crw-rw---- system  audio    116, 112 2012-07-03 14:12 pcmC3D0p
crw-rw---- system  audio    116,  33 2012-07-03 14:12 timer


But no idea how to tell Android to use the USB device as the main microphone.


# setprop usb.audio.cap.device pcmC0D0c
# setprop media.audio.in.mode usb


Other problem: after reboot everything is gone and I have to start from scratch.
Neither of those work.

Latest revision as of 03:18, 18 October 2012

MeLE A2000

Mele file storage

http://www.lundman.net/ftp/mele/


v1.3BETA firmware

Mele_HTPC_0929_BETA_V1.3.rar
Mele_HTPC_0929_BETA_V1.3.ddimg.bz2

Exactly the same issues as v1.2. I can not see anything new, nobody should run this.

If you want to replace the kernel, with the NIC patched kernel, do this:

# wget http://lundman.net/ftp/mele/mele.v1.3.nandc-new
# dd if=/dev/nandc of=original_nandc.bin bs=65536           # Use /dev/block/nandc if on Android
# dd if=mele.v1.3.nandc-new of=/dev/nandc bs=65536

Now, when I boot, the wemac NIC doesn't work any more (link stays down). But if I replace the script.bin it works again. I do not know which part of script.bin needs to be fixed. Someone with time could look into this. There are only about 20 lines when you diff them, but none in emac area.

# wget http://lundman.net/ftp/mele/mele-1.3-script-fixed.bin
# mount -t vfat /dev/nanda /mnt
# cp /mnt/script.bin /mnt/script-original.bin
# cp mele-1.3-script-fixed.bin /mnt/script/bin
# umount /mnt

For those of you who also wishes to make advantage of the ZFS in the kernel, you additionally need to get:

# wget http://lundman.net/ftp/mele/zpool_builtin-1.3
# wget http://lundman.net/ftp/mele/zfs_builtin-1.3
# mount -o remount,rw /system
# busybox cp zpool_builtin-1.3 /system/bin/zpool
# busybox cp zfs_builtin-1.3 /system/bin/zfs
# touch /etc/mtab
# zpool import -d /dev/block yourpoolname

Personally, I also recommend:

# cd /system/media/
# mv bootanimation.zip bootanimation.zip-orig

v1.2 firmware

Mele_HTPC_120907_Ver1.2.rar

This does not include Google Market/Play Store. Has a strange launch screen that appears not trivial to replace. It is loaded with chinese apps and ad/malware. I would not recommend anyone to run this.

Status

Current status with the Mele A2000, Allwinner A10.

Official release: Android 4 ICS, 4.0.8. Kernel: 3.0.31+

Positive:

  • Video playback 1080p
  • MKV playback
  • TS playback
  • YouTube
  • Android market and Games (Angry Birds etc)

Negative:

  • Network Streaming Fixed. NIC has been patched to allow smooth 1080p steaming
  • Audio. The settings; CODEC no sound, but probably on RCA. HDMI choppy sound, unusable. If made to work, only stereo on HDMI. SPDIF not working, does not turn on. (No red light)
  • Bitstreaming; Unconfirmed since SPDIF is not functional. But can the hardware bitstream TrueHD, and DTS-MA ?
  • 10bit video does not play (not supported by hardware, CPU too slow for software)
  • AVI/XviD does not play (not supported by hardware, CPU too slow for software)

Currently, it is no good for mediaplayer. But if all you want is a toy to play youtube, some android games, and only stereo sound, it is definitely capable.


Android 4 ICS wired NIC patch

I have been working on trying to improve the wemac NIC driver in the Mele A2000 Allwinner A10 hardware, which will stutter when playing 720p/1080p over network. The current patch makes it much better, such that I think it is usable now. There is a mynewerimage.img image in the storage area, that you can dd to the nandc device. I will work on submitting the patch upstream.

For example, if you boot miniand image:

# modprobe nand     # nand.ko on my storage area too
# wget http://lundman.net/ftp/mele/mynewerimage.img
# dd if=/dev/nandc of=mele_nandc_backup.bin bs=65536
# dd if=mynewerimage.img of=/dev/nandc bs=65536
# sync
# reboot -f

And take out the SD card to boot Android again. If you do this using Android, the device node is /dev/block/nandc

Android 4 ICS official Mele image

The official Mele Android ICS image is out, called Mele_HTPC_Android_4.0_V1.rar which you need to use PhoenixCard to "burn". Once installed, you can use audiopatch1.3.apk to enable some sound features. Otherwise it seems quite similar to A10 firmware.

For those not using Windows, I also made a dd image: Mele_HTPC_Android_4.0_V1.ddimg.bin.bz2 [1] Just dd the whole thing to your raw device.

Android 4 IceCreamSandwich

Update: the non-beta release of ICS4 came out (for the A10, not Mele's release), which has settings/display, and lets you chose resolution

For Unix and clones:

wget http://www.lundman.net/ftp/mele/homlet_4.0_v1.0_20120609_dd.img.lzma
7z x homlet_4.0_v1.0_20120609_dd.img.lzma
sudo dd if=homlet_4.0_v1.0_20120609_dd.img of=/dev/sdX bs=1M
sync

Where you need to replace X in /dev/sdX by the correct letter for your SD card reader. Now insert the SD card in your Mele, and wait until the LED stops blinking, remove the SD card and restart the device. Et voila! (Read more: [2]) See I kept the paste URL cos I'm nice! :)


There is also an audiopatch for the ICS4 image to get sound to work. Copy over audiopatch1.2.apk (adb, or physical media) to your ICS4, install and run.

Not convinced it makes any difference for me. Audio appears not to work still.

It appears the contents on audiopatch1.2 is pretty much just libswa.so. Not entirely sure what it thinks to do with it, but if I do a find from root, there is no such library, before and after running patch.

I copied the file by hand:

busybox cp /data/data/com.android.audiopatch/files/libswa.so /system/lib/

and I get sound playing videos with some audio formats now. Like, TV MKV releases.

Mele A2000

I purchased a MeLE A2000 from Tom over at aliexpress, and been playing around with it as well. First I wanted to install ICS4, to do that I downloaded the android_4.0.img file from the 'net. Alas, there is a large volume of confusing information on what to do with this.

http://www.lundman.net/ftp/mele/ 
https://www.wuala.com/zercosz/Mele%20A2000/Firmware/?key=ThisIsFC2012

For the MeLE A2000, I also downloaded PhoenixCardV303(win7) and installed that in my VirtualBox Win7 system, forwarded the OSX USB drive and told it to install android_4.0.img.

https://www.wuala.com/zercosz/Mele%20A2000/Utilidades%20Mele/?key=ThisIsFC2012
http://www.lundman.net/ftp/mele/ 

After that, I inserted the SD card into Mele, and rebooted.

The power LED will blink RED + BLUE for a while, then power LED will turn off.

Take out SDcard, and reboot MeLE. It will now boot ICS, but only on HDMI@720p.

I can confirm BubbleUPNP + 2160pPlayer will play 1080p MKVs over network. Nice!


Google Market/Play

I installed one of the Terminal programs, and told adb to use TCP (haven't bothered to open my mele yet). Using adb and the instructions found allwinner a10 scripts I loaded Google Market/Play to the mele.


Changing resolution

This refers to the Beta ICS4. Probably is not useful any more, but I will leave it here for reference.

Changing resolution can be done by modifying the boot time scripts that the A10 uses. Usually done on a separate boot partition. For example, the Mele image has the files:

mount /dev/mmcblk0p1 /mnt
ls -l /mnt/
evb.bin
git clone https://github.com/amery/sunxi-tools
cd sunxi-tools
make
./bin2fex /mnt/evb.bin > evb.fex    

Edit the file any odd way you want, changing screen0_output_type and screen0_output_mode. See modes here: [3]

./fex2bin evb.fex > /mnt/evb.bin


If you are running the Android 4 (ICS) Beta that was released, to change the resolution to HDMI 1080p, you can do this. Using either a terminal program on Android (ConnectionBot for example) or the USB Console (if connected).

On the mele root shell

setprop service.adb.tcp.port 5555
stop adbd
start adbd
netstat -na       # Check that it is listening on port 5555

On remote adb machine

adb connect 192.168.xxx.xxx    # Put in the Mele's IP
adb shell
adb> mount -t vfat /dev/block/nanda /mnt/obb
adb> exit
adb push script-HDMI-1080p60.bin /mnt/obb/
adb shell
adb> cd /mnt/obb
adb> busybox cp script-HDMI-1080p60.bin script.bin

If you don't want to edit the script file yourself, you can download my prepared one: script-HDMI-1080p60.bin

U-boot

Since I added ZFS to u-boot for CuBox, and also patched in Samsungs EXT4 patches, I built hno's u-boot to test.

https://github.com/lundman/uboot-allwinner/tree/zfs
wget http://lundman.net/ftp/mele/sunxi-spl.bin
dd if=sunxi-spl.bin of=/dev/sdc bs=1024 seek=8        # Obviously, sdc is my SDcard, change device to applicable.

wget http://lundman.net/ftp/mele/u-boot.bin
dd if=u-boot.bin of=/dev/sdc bs=1024 seek=32          # Obviously, sdc is my SDcard, change device to applicable.
U-Boot 2012.04.01-g39085db-dirty (May 29 2012 - 02:29:31) Allwinner Technology 

CPU:   SUNXI Family
Board: A10-EVB
DRAM:  512 MiB
MMC:   SUNXI SD/MMC: 0
*** Warning - bad CRC, using default environment

sun4i#zfsload
zfsload - load binary file from a ZFS filesystem
sun4i#zfsload mmc 0:2 0x48000000 /boot/@/uImage
Loading file "/boot/@/uImage" from mmc device 0:2 xxa2
zfs fsname = '/boot/' snapname='<NULL>' filename = '/uImage'
4230340 bytes read

sun4i#bootm 0x48000000
## Booting kernel from Legacy Image at 48000000 ...
  Image Name:   Linux-3.0.8+
  Image Type:   ARM Linux Kernel Image (uncompressed)
  Data Size:    4230276 Bytes = 4 MiB
  Load Address: 40008000
  Entry Point:  40008000
  Verifying Checksum ... OK
  Loading Kernel Image ... OK
OK

Starting kernel ...

DRAM: 512[    0.000000] Initializing cgroup subsys cpuset


Android Kernel

I wanted to replace the ICS4 kernel with my own, for the nic fixes. These are the steps I took:

git clone https://github.com/amery/linux-allwinner
git branch lichee-3.0.8-sun4i
make sun4i_crane_defconfig

Check that .config has

CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set

The wemac nic was panicing on boot everytime, until I changed this:

drivers/net/sun4i/sun4i_wemac.c
#define PHY_POWER 0   /* was 1 */
make uImage

From android, I used ConnectBot to make a copy of the 'boot' partition, nandc.

adb shell
adb> dd if=/dev/block/nandc of=/mnt/sdcard/nandc bs=65536
adb pull /mnt/sdcard/nandc

Then split it up into kernel and ramfs, you can find split_bootimg.pl my storage area (url above)

# ./split_bootimg.pl nandc
Page size: 2048 (0x00000800)
Kernel size: 8410564 (0x008055c4)
Ramdisk size: 975609 (0x000ee2f9)
Second size: 0 (0x00000000)
Board name: 
Command line: 
Writing nandc-kernel ... complete.
Writing nandc-ramdisk.gz ... complete.

The idea is to make a new kernel, that looks roughly the same as nandc-kernel, and re-use the nandc-ramdisk.gz

Once the compile has finished, we make a new image. According to the nandc ANDROID! header, the base address for Mele is 0x40000000

# mkbootimg --base 40000000 --kernel arch/arm/boot/Image --ramdisk ../nandc-ramdisk.gz -o ../mynewimage.img

Now I boot into Miniand image on SD card, use my nand.ko to load the device for /dev/nand*. You can find my Miniand kernel uImage and nand.ko in the storage area too. The default Miniand kernel did not come with nand driver.

# modprobe nand.ko
# dd if=mynewimage.img of=/dev/nandc bs=2048
# sync
# reboot

and remove the SD card to boot Android. If you want to undo, and go back to ICS4, put nandc file instead of mynewimage.img in the dd line above.

Mele's Wired Network Interface

The wired nic in the Mele is a wemac from Davidcom. It is unfortunately quite poor. You will get decent 100MB speeds from it, but it uses the CPU. If you do any transfers while trying to watch video (including watching video over network) it will stutter for 1080p. Interestingly if you use SD, or USB while watching, it has no problem.

The WIFI driver sits on the USB bus and is not affected by this.

Using a USBEthernet dongle (I tried an Apple brand) also works without issues.


ZFS on Android

I have already ported ZFS to ARM, so that should just work if you compile ZFS with your kernel. But I also wanted to see if I can get ZFS to work with Android. The modules do load ok, but execution does not work:

# cd /mnt/sdcard/
# insmod spl.ko && insmod zavl.ko&&insmod znvpair.ko&&insmod zunicode.ko&&insmod zcommon.ko&&insmod zfs.ko&&insmod zpios.ko&&cp zpool /mnt/obb/&&chmod 755 /mnt/obb/zpool
# cd /mnt/obb
# strace -f ./zpool create melepool /dev/block/sda1    
open("/dev/block/sda1", O_WRONLY|O_EXCL|O_LARGEFILE) = 6
write(6, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096
fdatasync(6)                            = 0
close(6)                                = 0
open("/melepool", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = -1 ENOENT (No such file or directory)
ioctl(3, ITE_GPIO_IN

and it hangs.


djmount for Android

So one option is to have a mediaplayer with UPNP ability, like that of BubbleUPNP or PlugPlayer. However, both of these do poorly with Mele's remote control. With Bubble you can not click on Directories to enter them, but have to Mouse-Mode in/out to do so.

So one option is to mount all UPNP devices as a directory. Since Mele's kernel already comes with FUSE, I compiled djmount for it (patched version with >2GB size fixed).

% adb push djmount /mnt/obb
% adb shell
# cd /mnt/obb
# chmod 755 djmount
# ./djmount  -o allow_other /mnt/sdcard/Pictures                # No reason to pick "Pictures" I just wanted an existing directory
# ls -l Pictures/                                 
-r--r--r-- root     root           49 2000-01-01 20:00 devices
dr-xr-xr-x root     root              2000-01-01 20:00 llink-daemon UPNP Media Server (MediaServer) : 1

# ls -l Pictures/llink-daemon\ UPNP\ Media\ Server\ \ \(MediaServer\)\ \:\ 1/
dr-xr-xr-x root     root              2000-01-01 20:00 DVD
dr-xr-xr-x root     root              2000-01-01 20:00 Game of Thrones
dr-xr-xr-x root     root              2000-01-01 20:00 Music
dr-xr-xr-x root     root              2000-01-01 20:00 Video
-r--r--r-- root     root     14010368 2000-01-01 20:00 movie.m4v

And indeed, if you use the File browser in ICS4, you can just enter that directory, and play any video. Note that djmount is pretty slow on listing directories, and I think we might want to look at speeding that up if we are to use it long term. Also, increase the cache timeout from 60s to something much higher, like 10 minutes.


PS3EYE WebCam

I wanted to see if the PS3 Eye would work with Mele, and Skype.

Video:

# insmod gspca_main.ko                                
# insmod gspca_ov534.ko videomode=13       

That makes the camera work with Skype and Zoom Camera app. When I tried one of the 640x480 modes it just hangs, so currently it is 320x240@60.

Audio:

No idea. The device shows:

# cat /proc/asound/cards                              
0 [sun4icodec     ]: sun4i-CODEC - sun4i-CODEC
                     sun4i-CODEC  Audio Codec
1 [sun4isndhdmi   ]:  - sun4i-sndhdmi
                     sun4i-sndhdmi
2 [CameraB409241  ]: USB-Audio - USB Camera-B4.09.24.1
                     OmniVision Technologies, Inc. USB Camera-B4.09.24.1 at usb-sw-ehci-1.3, high sp
3 [sun4isndspdif  ]:  - sun4i-sndspdif
                     sun4i-sndspdif

And we get the device nodes:

# ls -l /dev/snd/
crw-rw---- system   audio    116,   0 2012-07-03 14:12 controlC0
crw-rw---- system   audio    116,  32 2012-07-03 14:12 controlC1
crw-rw---- system   audio    116,  64 2012-07-03 14:12 controlC2
crw-rw---- system   audio    116,  96 2012-07-03 14:12 controlC3
crwxrwxrwx system   system   116,  24 2012-07-03 14:12 pcmC0D0c
crwxrwxrwx system   system   116,  16 2012-07-03 14:12 pcmC0D0p
crw-rw---- system   audio    116,  48 2012-07-03 14:12 pcmC1D0p
crw-rw---- system   audio    116,  88 2012-07-03 14:12 pcmC2D0c
crw-rw---- system   audio    116, 112 2012-07-03 14:12 pcmC3D0p
crw-rw---- system   audio    116,  33 2012-07-03 14:12 timer

But no idea how to tell Android to use the USB device as the main microphone.

# setprop usb.audio.cap.device pcmC0D0c
# setprop media.audio.in.mode usb

Neither of those work.