IBOX review (Part 2 – software)

I’ve been playing with this IBOX for about a week now, and I’ve come to know it quite well. I’m going to try and avoid using this entire review to explain how to load a firmware image because that has been covered 100 times before – it’s boring, I don’t need to repeat it 🙂

On the off chance that you haven’t come across one of those 100 other times, I’ll go over the set-up briefly. AllWinner SoCs (including the A20 in this case) are hard-coded to first look for an operating system on an SD card, then they look at internal flash memory, and if both fail then they seem to go into firmware update mode automatically. The up-side of this set-up is that the chips are basically un-brickable. The down-side is that the only way to access the internal flash is through the SoC, and due to the closed nature of AllWinner, the flash can only be access in its entirety using a program called PhoenixSuit.

I spent a great deal of time looking at this screen:

Sorrow and despair

This was because the device was failing to boot, and wanted to rub it in my face. One of the many SD card images I’d tried had broken the flash memory somehow.

To flash the device, you’ll have to obtain (or make) a rather odd cable. A male to male USB cable. The one I made does not have the 5V cable connected as the device has its own power. Install PhoenixSuit, plug the USB cable into port 4 as well as your computer, press the u-boot button on the far left and plug the power in. When prompted to install drivers, select the ones included with PhoenixSuit. Go to the tab with the anchor icon (firmware) and select a firmware image (NOTE: SD images and NAND images are NOT interchangable)
This will start the upgrade process.

Now, with that out of the way…

The IBOX comes with Android pre-installed. It can be used for web-browsing, playing video (locally or from network locations) and various other Android-y stuff. But for someone like me, that’s no fun.

There are a vast number of Linux images which work on the IBOX. They are in the form of .img files and can be found all over the place. You can use Win32DiskImager to burn an image to a card in Windows, or DD (usually built-in) to do it in Linux.

My favourite image so far is Cubieez. Everything more or less works out of the box, it is quick, it has nice configuration options and it feels complete.

Cubieez desktop

That is all that I will say about distros. I want to talk about something specific to the IBOX…

The SDK

Itead Studio seem to have this vision of having Arduino compatible code running on their AllWinner core boards (IBOX included).
This hasn’t received much attention, especially as it is still very much under development, but it caught my attention with the IBOX.

In this blog post, the use of the SDK is demonstrated. While I respect their efforts, there is still a very long way to go before this will be properly usable.

The SDK itself can be downloaded from github. It is easily installed with make && make install.

This should install a program called “iteadcompile” which will allow you to compile your “sketches.” In retrospect, I should have tested the SDK using Itead OS and not a 3rd party distro. I had to modify a section of my fex file for the UART to work

[uart_para4]
uart_used = 1
uart_port = 4
uart_type = 2
uart_tx = port:PG10
uart_rx = port:PG11

As I only have UART0 and UART4 enabled (they are next to each other on the 32pin expansion header), UART4 was assigned to /dev/ttyS1. As you can see in the SDK source, this is UART2 in the context of the SDK:

//itead_serial.c
static SERIAL_PORT ports[] = {
	[2] = {
		.fd = -1,
		.node = "/dev/ttyS1",
	},
	[3] = {
		.fd = -1,
		.node = "/dev/ttyS2",
	},
	[4] = {
		.fd = -1,
		.node = "/dev/ttyS3",
	},
	[7] = {
		.fd = -1,
		.node = "/dev/ttyS4",
	},
};

I have to assume that these correspond to the fex file that comes with IteadOS – I will check this soon.

The programs follow the same setup() and loop() layout as Arduino, but this did not work for me. Again, it might not be the same in IteadOS. YMMV

This is my program:

Simple “Hello IBOX” program

As you can see, I only have a main loop. This doesn’t really matter, as I can put a while(1) into the main method and it will effectively be the same thing.

I compile:

root@cubieez:~# nano test.c 
root@cubieez:~# iteadcompile test test.c 
compile by .c
root@cubieez:~# ./test 
root@cubieez:~#

The receiving end

As you can see, it works. I can now use this serial port for anything I like. I should be able to do the same with SPI and I2C, which I will try soon.

There is documentation available, but beware that there are inconsistencies. For example, SerialBegin() should actually be Serialbegin() , but it is for the previous version of the SDK so there have been some changes. A quick look at the source usually clears up any confusion.

The IBOX has a lot of potential as a forerunner in the AllWinner development board market. It is quite clear that Itead Studio are working hard to make something good, specifically with the SDK which I’m quite excited to play with.

That doesn’t, however mean that there isn’t a lot to do still. As I’ve realised over the past couple of days, the A20 is still a young platform and Linux support is moving forward slowly. I wouldn’t recommend these devices for multimedia applications (video, specifically) unless you know what you’re doing, but they are very capable machines, use little power, make no sound whatsoever and they are cheap.

I look forward to making mine do cool things using the SDK and expansion header as I feel that this is the main purpose for the IBOX. Itead Studio have made a good product, and hopefully with enough advertising and exposure, it will sell just as well as its competitors.

10 thoughts on “IBOX review (Part 2 – software)
  1. Thanks @Michael for more insight on these.
    Ibox team had updated saying that “From the feedback, we found a problem. That is, if an Android image is installed on NAND Flash and a Linux Image is installed on SD card, once you boot into Linux system from SD card, you will not be able to boot into Android system unless you re-install the image, as you can find in the picture below. We bought many Allwinner A20 based boards from the market, and tested them with the Linux images (Arch, Foreda, Debian, Linaro, etc) and Android images for Allwinner A20 that are available on the Internet, such issue turned up again and again. That is, this problem is not for Ibox only. Anyway, we still do not find out why. ”

    Not sure how this can be fixed?

    -pk

    1. Hi Pk. I commented on their post, but it awaiting moderation. Here’s what I said:
      Apparently this is a problem in the driver for nand access (libnand, provided by AllWinner)
      If it cannot understand the format of the nand, it unconditionally formats it. Unfortunately, libnand is closed-source so this cannot be changed. Unless AllWinner provides enough information for the linux-sunxi people to make a proper mtd driver 😉

      I hope this sheds some light on the situation. For now, it seems that there is no resolution for this. Hopefully as linux-sunxi matures and more source code is made available, this will be fixed.

      1. Thank you for the additional clarifications. Appreciate your help.
        Also, did you try any WiFi adapters on this? Just curious on what are the supported accessories. Itead is not having a proper forum and this would be one drawback if they don’t bring more users and discussions on their boxes.

  2. @michael, did you try any wifi dongle? Do you recommend any specific chipset based wifi dongle for this? I still have to receive mine, but trying to get basic accessories like power adapter, wifi adapter etc.
    I think that Itead is not showing any interest to the user community and don’t see any active forum moderation.

    1. I’m not sure which wifi chipsets will work with Android, and with Linux most of them should work.
      It depends on what Itead included support for in their Android version, perhaps I’ll dig around a little.
      As for power supplies, you’ll be happy to know that you can also use a 12V supply which is far more common. I believe the rating is 7V-24V, but those are the two extremes of course.
      I’m not sure why Itead is being so passive instead of pushing this new product, it does seem a little strange.

    2. I’ve poked around and it looks as though RTL8188EU or RTL8192CU are the most commonly supported chipsets.
      The Android version which Itead’s Android appears to be based on comes with support for these (see http://linux-sunxi.org/A20-Cubieboard/Nand_Images) and work on the IBOX.
      I’m not sure what Itead’s image has support for, and the download has another 8 hours to go due to the slow server. I will update when I know more, but for now there’s nothing stopping you from using one of these images instead as they’re practically identical. Keep in mind that Android will break when you boot Linux off an SD card.

  3. Thank you for your quick reply with the details. I will try one of these images as soon as I get my IBOX.

  4. Hi Michael,

    Sorry for keep asking you questions I see you are the only person who has good knowledge on this product and software.

    I got my ibox and could not access youtube from playstore. I understand that we need to change build.prop to change the device info something else so that we can have full google play access.

    Also. when I try to play youtube on browser, it’s keep on buffering and not playing any video.

    Do you have any suggestions?

    kind regards,
    pk

    1. Hi Pk

      Which Android image are you using? The one which comes with the IBOX?
      I haven’t specifically looked for Youtube on the Play Store, but mine seems fairly complete without having edited anything.
      I’ve personally had mediocre multimedia performance with Android. I believe Youtube videos did work though. I’ll have to check it out when I get home.

Comments are closed.