Posts Tagged arm

FriendlyElec NanoPi NEO2, a better sub-$20 Linux computer

NanoPi NEO2 by FriendlyElec is a new sub-$20  Linux microcomputer, built on Allwinner H5 SoC, providing a Gigabit Ethernet and USB 2.0 interface. Also additional interfaces are possible via expansion headers (needs some soldering work). The board is equipped with 512MB DDR3 RAM.

It is highly recommended to buy the heatsink alongside with the board. The CPU is heating up quite significantly, and it needs cooling. With “stress -c 4” CPU load test, “armbianmonitor -m” shows the core temperature rising up to 75C. The board sustains long-term load under such conditions. But with a fan, the core temperature drops below 40C, and the power consumption drops significantly too.

The plastic 3D-printed enclosure is of little use. First, it’s quite easy to break when you insert the board. Also it does not fixate the heatsink properly.

So, I ended up in using the original cardboard packaging as a base for the board, just to avoid extra touching of electronic circuits, and to fixate the USB power cable:


Armbian nightly image booted without problems. Up to now, I noticed the following minor problems with it:

  1. it does not come up after reboot;
  2. “cpufreq-info” complains about unknown driver.

Network traffic tests with tcpkali (debs, deb build scripts) demonstrated that the CPU is able to saturate the Gigabit Ethernet port with TCP traffic, reaching above 900Mbps throughput.

All in all, this board looks much more reliable than Orange Pi Zero: it can work for long hours with an  USB Wifi dongle, whereas OPI0 was hanging up after few minutes of work (using the same USB power cable and power source and the dongle). UPD: the board doesn’t actually hang up, but the WiFi interface stops transmitting packets for some reason. Needs further investigation.

UPD: I tried to flip the board with the hope for better heat dissipation (below), but it appeared to be much worse, and the peak temperature reached 85C:


, , ,


Orange Pi Zero, a sub-$20 Linux computer

Orange Pi Zero with 512MB RAM, expansion board and black case is sold for sub-$20, including postal costs, and it is so far the cheapest Linux device you can buy.

Armbian project provides a dedicated image for this board. The nightly build is quite stable, and there’s also legacy kernel which works well.

The computer is equipped with a 100/10 Ethernet NIC, and the top throughput that I could achieve was about 90Mbps.

The on-board WiFi adapter is of very poor quality: regardless of the antenna attached, it gives about 6Mbps connection speed and excessive packet loss (up to 20% lost pings). It’s useless for any practical application, and it’s easier to disable it completely.

The two USB ports on the expansion board are not enabled by default in the legacy kernel. You need to add the following line to /boot/armbianEnv.txt file, and reboot the box:

overlays=usbhost2 usbhost3

In order to disable the onboard WiFi, comment the top line, and add another line in /etc/modprobe.d/xradio_wlan.conf:

#options xradio_wlan macaddr=DC:44:6D:1F:3C:14
blacklist xradio_wlan

Then, run the following commands to update the kernel boot parameters:

depmod -ae
update-initramfs -u

The onboard USB ports are not extremely fast: with an GigE or Wifi USB adapter, the maximum speed that I could achieve was about 40Mbps. But at least you get a stable and reliable connection.

The micro-USB OTG port is used for powering the device, and the board can freeze if the power consumption on USB ports is too big. For example, an external USB drive is very likely to knock the whole thing off. A WiFi dongle can freeze at bulk traffic loads. So, it’s advisable to use an external USB hub for attaching devices.

Network Manager is installed by default by Armbian, and that allows easy plug-and-play WiFi configuration, adding new SSID and passwords from “nmcli” command-line interface.

All in all, it’s still quite a pretty device in a small enclosure. It can be used as a low-cost or throw-away network agent or VPN gateway for remote access. Also it can act as a measurement agent for all kinds of network testing, especially if you need a massive deployment and price difference is important.

, , , ,


Testing FreeSWITCH performance on Scaleway C1

The dedicated ARM hosting servers at Scaleway appear to be a decent platform for a mid-sized PBX.

In short, the platform displays the following results in performance tests:

  • OPUS<->PCMA transcoding: 16 simultaneous calls with  at about 95% total CPU load and no noticeable distortions.
  • SILK<->PCMA transcoding: 72 simultaneous calls were going without distortions, with average total CPU load at 63%. Higher number of calls resulted in noticeable distortions.
  • G722<->PCMA transcoding: 96 simultaneous calls without distortions, at 76% CPU load, and noticeable distortions for higher numbers.

Read the rest of this entry »

, , , ,


Installing FreeSWITCH on Scaleway C1

Scaleway (a cloud service by offers ARM-based dedicated servers for EUR9.99/month, and the first month free. The platform is powerful enough to run a small or FreeSWITCH server, and it shows nice results in voice quality tests.

These instructions are for Debian Wheezy distribution.

By default, the server is created with Linux kernel 3.2.34, and this kernel version does not have a high-resolution timer. You need to choose 3.19.3 in server settings.

At Scaleway, you get a dedicated public IP address and 1:1 NAT to a private IP address on your server. So, FreeSWITCH SIP profiles need to be updated (“ext-rtp-ip” and “ext-sip-ip” to point to you rpublic IP address).

FreeSWITCH compiles and links “mpg123-1.13.2” library, which fails to compile on ARM architecture.  You need to edit the corresponding files to point to “mpg123-1.19.0” and commit back to Git, because the build scripts check if any modified and uncommitted files exist in the source tree. Also the patch forces to use gcc-4.7, as 4.6 is known with some problems on ARM architecture. Read the rest of this entry »

, , , ,


CVJI-E212, one more cheap Allwinner A10 media player

I started looking into a number of devices based on Allwinner A10 SoC — this appears to be a very popular chip in China, and there are endless varieties of cheap tablets and HDMI media players. Among the most known are Mele A1000/A2000, MK802, MK802+, MiniX media players — they all provide HDMI interface, one or two USB ports, and some of them come with a built-in WiFi adapter.  The chip also supports OTG USB interface, and some of those devices also provide it. Also MK802 can be powered from the USB port.

Those devices come usually with pre-installed Android 4.0. Typically the OS supports only a limited range of screen resolutions and frequencies (I couldn’t get a decent picture on my Sony Bravia TV and on a computer monitor via a HDMI-to-DVI adapter).

Anyway, I’m a server guy, and my primary interest is in “server” applications, even on such small appliances. So, I don’t really care about graphics.

Read the rest of this entry »

, ,


Big Endian for i.MX27: bug test code

a piece of assembler code which proves the bug in big-endian mode:

 Read the rest of this entry »

, ,

Leave a comment

Big Endian for i.MX27: found the problem

Found the big endian problem: it looks like the memory controller bug.

Read the rest of this entry »

, , ,


Big Endian for i.MX27: looks like it’s not working

I managed to launch the CPU in big endian mode, and it even executes
some part of u-boot code. But the serial is silent, and MTD driver can’t find
any NAND chips.

The UART control registers receive correct values, I verified this.
So, most probably the UART hardware fails to get those values from a big-endian CPU.

, , ,

Leave a comment

Moving to big endian: first steps

Here’s my message at Armadeus mailing list

Here’s the link to the u-boot patch to be studied.

UPD: Currently the nand_spl loader is compiled in LE, and then it prepares the u-boot image in the memory and switches to BE mode. Then u-boot starts quite normally, but then it hangs up without printing anything to the serial console. Looks like some initialization code breaks internal memory. Need to solder a JTAG connector for further debugging…

, ,

Leave a comment

Mounting the LCD touchscreen on top of Armadeus devboard

img_0878Assembled all the Armadeus parts together. Now it’s much easier to move them around the table 🙂

The Armadeus devboard comes without any cables. The LCD and touchscreen are equipped with two cables for connecting to the devboard. The devboard needs a 2.5/5.5 power jack, and the power supply should support at least 12W power draw.

Read the rest of this entry »