New Debian 10 Buster images released for A20 and A64 boards and SOMs

buster

We have released Universal A20 and A64 images with Debian 10 Buster.

There are few known issues which we work on:

  • Certain types of eMMC memories might start in HS-200 mode instead of SDHS mode. This causes eMMC installation and boot problems.
  • HDMI always takes precendence over LCD. This is even if you have enabled a
    display manually (interrupted u-boot and executed “olinuxino monitor set XXX”).
  • Boards with 5.x eMMC chips are unable to boot directly from eMMC;
    this is caused by poor eMMC 5.x support in eGON BROM;
    this issue is not related to the Linux image
  • The board currently cannot store rootfs on usb driver. The init script
    starts before the usb subsystem initialization.
  • If the board has eMMC and SPI, it’s not possible to boot from SPI and rootfs
    on SATA. This is due to the fact that u-boot searches first the eMMC storage
    for boot scripts.
  • LCD-OLinuXino-15.6FHD is not fully supported.
  • The GT2005 camera module in A20-SOM-EVB and A20-SOM204-EVB is not working.

New release is preparing and will be updated by the end of the month.

 

 

New Open Source Hardware board adds SATA drive connectivity to any computer with USB host

USB-SATA

USB-SATA is board which connects to any computer with USB host and bridge it to SATA Hard disk.

The read/write speed with USB2.0 host is approx 30MB/s.

USB-SATA has USB device connector, SATA connector and power connector, when used with SATA-CABLE-SET it can drive directly SATA-HDD-2.5-500GB

It’s very convenient when you have to move large files from one computer to another you can just plug big HDD with it and use it as “giant USB Flash storage” it works faster than the USB Flash disks and can have way larger capacity.

Writing applications for OLinuXino with GTK

GPIO

Many times I hear from customers – Linux has no good UI, it’s made for servers but we want to make apps with windows drop boxes, check boxes etc.

Recently we found Simon Long’s C GUI Programming book and made two “windows” examples for OLinuXino.

We recommend you first to download the book and read it then to look at the code we made and uploaded to GitHub.

In the README.TXT you will find step by step instructions how to install and configure GTK for OLinuXino.

Then you can try the code and modify for your need.

GPIO example allow you to read or write GPIO state to any of the GPIO connectors of OLinuXino.

I2C example will allow you to interface to any of our UEXT boards with I2C interface. The example we test with MOD-IO.

I2C

How secure are Allwinner SOC we use in our OLinuXino boards?

spyware

From time to time customers ask us:

You are using Chinese SOCs. I’ve heard that Chinese government forces all Chinese vendors to place back-doors in their SOCs which to spy on you. Can you guarantee that your Linux boards have no back doors to spy on us”

I already posted about Linux-Sunxi community, which develops the Allwinner SOC mainline Linux support. What I forgot to mention is that most of the SOC features and tuning they do is done almost without any official help or documentation from Allwinner and based mostly on tips from Allwinner employees and reverse engineering.

I do remember A20 CAN module was not mention at all as existent in Allwinner datasheets at the beginning and Linux-Sunxi developers found it while hacking the chip.

So I will have to disappoint people, who believe in such myths that no, A20 chips are for quite some time now and there is nothing hidden inside, even the Boot ROM which resides in the SOC internal ROM code and is executed first is disassembled and known code.

This for sure do not give any warranty that these SOCs are bug free and that someone latter may not find and exploit some bugs (I already wrote about the level of the SOC software developers in my previous post) and to create back door to install malware or spyware, but this is not done intentional and IMO above the capacity of the software developers working in the SOC vendors.

I still do remember Allwinner released few years ago SDK where they were forgotten to remove the debug flags and if you send message “rootmydevice” to /proc/sunxi_debug/sunxi_debug, you get root privileges, but was this intentional and forced by Chinese government? I doubt so.

We build our Linux Images from Armbian project sources using their repositories and our images has MD5, so if you load our Linux Images and use in our boards we are sure there are no back doors. I know the guys who are behind Armbian project and I can guarantee they do not work for the Chinese government.

Now you can say if you found undocumented CAN inside the SOC, there may be other undocumented modules as well which to spy on us. Yes, this is possible, but even if there are such hidden resources the software we run on the SOC does not take advantage of them and activate them, you can always monitor your USB/LAN etc traffic packets and see what information go outside the chip and so far for the last 6 years A20 is existent no one ever has detected such suspicious traffic.

A64-OLinuXino got mainline Linux Kernel 5.0 images

Linux-Kernel-5-featured

Linux kernel 5.0 was just released and as we were working this week to the release of mainline Linux image for A64-OLinuXino (as till now it has the ugly android based 3.10 kernel) we decided to release latest kernel.

The images are available on our FTP.

There are two images Debian headless or Ubuntu desktop.

Known issues with these images:

  • LCDs are not supported yet, HDMI output is only available, we need one more week to figure out how to automatically detect if the Ethernet or LCD are enabled (there is jumper on the board which switch between LCD or Ethernet as both share pins and can’t work together). So to make the DTS configurations  automatic at boot time.
  • eMMC do not work in the fastest possible mode yet. We need some time, right now 50MB/s is the max speed to read write instead of 100-200MB/s which the installed eMMC supports, we will update the image soon with HS200/400 modes enabled.
  • No CPU thermal. A64 has 3 thermal zones – CPU, GPU0 and GPU1. The driver doesn’t support monitoring them.

How to build the images is explained here.

Mainline Linux Kernel 5.0 images for A13, A20 and A33 OLinuXino and SOMs is in progress.

LoRa experiments in Plovdiv

Screenshot from 2019-02-20 12-24-46

We are working for some months on OSHW LoRa nodes and our goal is to bring up free to use for non for profit Smart City solutions LoRaWAN network which to cover city of Plovdiv .

Yesterday we installed our First LoRaWAN Gateway made with T2-OLinuXino-LIME2-e16GBs16MB + RK831 + +6dBi rod antenna on Rilon Building which is about in the city center and with height good for antenna installation.

You can see on above map – the “Raspberry Pi” is hardcoded in RK831 firmware but do not worry there is industrial grade Linux computer in the gateway.

 

rilon

We start experimenting with our LoRa868 and MOD-LoRa868 modules and made portable GPS tracker device like this:

LoRa-GPS

The results are nice. We cover almost 2km circle around the antenna. With few spots which are shadowed by tall building.

range

The secret in the big distance is the good gain gateway antenna!

We really are impatient to release these LoRa gadgets as soon as possible, but unfortunately it takes much more time than we expected.

There were lot of issues with the Semtech/ARMmbed reference designs like the RF part of their 868Mhz design actually has components values which make 915Mhz device and vice versa. We spent weeks to understand why the communication distance is not as good as expected, before we realize that we use 915Mhz LoRa nodes with 868Mhz antennas! Once we get everything complete and tested will put our boards on the web for sale and publish OSHW their correct schematics and component values, so other will not waste their time like we did.

One issue we encountered with RK831 Gateway is that it freeze from time to time when receive malformed packets and need to restart. As RK831 firmware is not open source we can’t debug the cause of this problem. The workaround now is when host lose connection with gateway just reboot latter. Really not most elegant solution, but so far we can’t do anything else.

We are preparing two more Gateways to install in the next days, which will cover more parts of the city.

 

 

Working with A20 OLinuXino or SOM GPIOs when using new Armbian based A20 universal Linux image

a20

A20 GPIO ports are 32 bit registers listed in alphabetical order PA, PB, PC, PD, PE, PF, PG, PH, PI.

In Armbian GPIO ports are numbered from 0 to 287 corresponding from PA0 to PI31.

The GPIO number is calculating using this formula:

gpioNumber = (Port Letter - 'A') * 32 + pinNumber

 

For instance GREEN STATUS LED on A20-OLinuXino-LIME2 is connected to port PH2. This will correspond to GPIO number:

('H'-'A' = 7) * 32 + 2 = 226

 

All GPIO operations in shell should be made as super user. First we have to register the gpio in the Linux Kernel with this command:

sudo echo 226 > /sys/class/gpio/export

 

to check if we did registered this gpio successfully we use ls command:

sudo ls /sys/class/gpio

 

If you did everything correctly you will see gpio226 listed.

Then you have to specify what will be this GPIO input or output. This is done with writing “in” or “out” in gpioxx direction directory. In this case we want to drive the STATUS LED so we have to make it output:

sudo echo out > /sys/class/gpio/gpio226/direction

 

Once we set the GPIO as output we can write 1 or 0 to it’s value and this will make GPIO port to supply 3.3V when 1 is written or 0V when 0 is written.

To switch the LED on we have to write 1:

sudo echo 1 > /sys/class/gpio/gpio226/value

 

Yay the green LED is now lighting. If we want to switch it off we have to write 0:

sudo echo 0 > /sys/class/gpio/gpio226/value

 

To read the GPIO state it has to be set as input first with the command:

sudo echo in > /sys/class/gpio/gpioXXX/direction

 

where XXX is GPIO port number calculated as described above. Then to read the GPIO state you use this command:

sudo cat /sys/class/gpio/gpioXXX/value

the result will be 0 if the GPIO voltage is between 0.0-1.0V and 1 if the voltage is between 2.3-3.3V. If the voltage on the GPIO is between 1.0 and 2.3V the attempt to read will return randomly value 0 or 1.

Be careful when playing with the GPIO ports, some of them are wired to important peripherials like LCD, Ethernet, USB, SATA etc and writing bad values may break the functionality or even damage the board. Test your knowledge on GPIOs which are not connected to anything is best approach.

We are prepare now new version of PyA20 Python module which will add access to GPIO, SPI, I2C, Serial resources of A20 directly from Python code to work with the new universal A20 Armbian Linux image.

EDIT 2019-01-25 14:24:

We got question how fast is the access to the GPIOs via shell. Sure it’s not fast and made just for slow processes like switching on and off relays, or polling status of buttons or sensors which do not change often their state. Running this code below:

nano toggle_led_lime2.sh

 

Enter inside the file this code:

#!/bin/bash
# the lime2 led is PH2 - 32*(8-1) + 2 = 226

echo 226 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio226/direction
while [ 1 -eq 1 ]
do
echo 1 > /sys/class/gpio/gpio226/value
echo 0 > /sys/class/gpio/gpio226/value
done

 

Save and exit, then make executable and run

chmod +x toggle_led_lime2.sh
./toggle_led_lime2.sh

 

We can see square wave with oscilloscope on PH2 with frequency between 3 and 4 kHz. i.e. pulses with high state 125-150uS and low state 125-150uS.

Shell is slow, if we write same code in C:

#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>

#define PH2        226    // (32 * 7) + 2
#define GPIO_PATH  "/sys/class/gpio/gpio226/value"

int main() {
    int ret;
    int fd;

    fd = open(GPIO_PATH, O_RDWR);
    if (fd < 0)
        return errno;

    while(1) {
        ret = write(fd, "1", 1);
        ret = write(fd, "0", 1);
    }

    return 0;
}

 

The new code produces square wave with 2.13 us high and low state i.e. approx 235 kHz or about 50 times faster than access via shell.

Previous Older Entries