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.



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


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


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.



How to use A20 CAN interface with the A20 universal Armbian image for OLinuXino


To use A20 CAN interface you need A20-OLinuXino board and A20-CAN board.

Then you have to install the armbian A20 CAN overlay:


$ sudo armbian-add-overlay <path_to_the_dts_file>


  • connect A20-CAN to your OLinuXino and reboot.

You can see if CAN is available now:

$ ifconfig -a

   can0     Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 
            NOARP MTU:16 Metric:1
            RX packets:0 errors:0 dropped:0 overruns:0 frame:0
            TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:10
            RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)


To use CAN interface you can install can-utils and setup the CAN interface:

$ sudo apt-get install can-utils 
$ ip link set can0 down
$ ip link set can0 type can bitrate 100000 triple-sampling on loopback off
$ ip link set can0 up


Now conect A20-CAN to the CAN network two wire interface.

To send a packet over CAN use :

cansend <can_interface> <packet>


For instance:

$ cansend can0 5AA#10.10.10


To sniff for CAN network messages you can use candump :

$ candump can0


Now you can log your car CAN networking messages and interpret them. There is plenty of info on the web about the different CAN messages which are exchanged on car CAN bus.

FOSDEM 2019 is this weekend in Bruxelles


FOSDEM the biggest FOSS/OSHW event in Europe is this weekend in Universite Libre de Bruxelles

FOSDEM traditionally starts Friday evening in Delirium Cafe.

With 47 devrooms, 7 main tracks, Keynotes and Lighting talks everyone can find group with his interest.

Olimex will present our new IoT developments with KiCAD at CAD and Open hardware devroom in Sunday.

If you want to meet and talk please send email to info@olimex.com, we will be in Delirium Cafe this evening and at ULB in the weekend.

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


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:

# 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 ]
echo 1 > /sys/class/gpio/gpio226/value
echo 0 > /sys/class/gpio/gpio226/value


Save and exit, then make executable and run

chmod +x 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.

A20-OLinuXino universal image updated – now supporting our new boards with SPI+eMMC


We just uploaded new A20-OLinuXino universal image at our FTP.

With this image we add support for the new OLinuXino boards with eMMC+SPI.

Few things need some more attention and will be fixed in new image next week: boot from SPI with rootFS on HDD or USB Flash. The new LCD-15.6 eDP display also doesn’t like the new kernel and drivers, but will be fixed too. These are explained in the ISSUES.txt.

The new image also support our new 5″, 7″ and 10″ capacitive touch displays (not on our web for sale yet as still testing) automatically i.e. plug and play and no need to run display script, each time at boot it recognizes the connected display and configure the drivers.

All other peripherals and devices are tested to work with: A20-OLinuXino-LIME, A20-OLinuXino-LIME2, A20-OLinuXino-MICRO, A20-SOM and A20-SOM204.

The biggest FOSS/OSHW event in Bulgaria – Open Fest is 3-4 of November

Screenshot from 2018-10-11 08-20-10

Our favorite Open Source event – OpenFest is approaching. Every time I go there I do wonder how small Bulgaria attracts so many people there – thousands of people meet together. Probably the answer is that IT is developing very well and lot of people in Bulgaria work in IT industry.

I’m really pleased to announce that my proposal to talk about LoRa/TTN/LoRaWAN myths, possibilities, applications and limitations is approved! I will try to compare all popular LPWAN solutions, why LoRa is leading there (hint: open source 😉 ) and how you can calculate your power requirements, link budged etc to make sure your application will work with years on battery.

eduArdu is new Open Source Hardware educational board targeting kid’s digital education


Few weeks ago we got contacted by Digital Kidz an non for profit foundation which goals are to support digital literacy and innovative education in the schools. They needed hardware board, which to be easy to use and to allow entry level programming with Scratch and Arduino for beginners. They were ready to pay for the development, but we liked the idea and decided to design one such board for free and release it as Open Source Hardware.

The result is here:


The design is based on ATmega32U4 which is easily programmable with Arduino IDE. We named it “eduArdu” as this is educational board programmable with Arduino.

eduArdu has these features:

  • USB connector for programming and power supply
  • red LED matrix 8×8 which allow text and small image animations
  • X-Y Joystick with push button for navigation
  • Microphone for Audio sensing and interactions
  • Speaker for Audio output
  • Light sensor with LDR
  • Digital temperature sensor
  • Status LED
  • IR remote control LED and receiver to talk to other boards, TVs, Air conditioners, etc.
  • PIR motion detector up to 6 meter range
  • UltraSound distance measurement sensor
  • Two SERVO motor connectors (to build easily two wheel robot car)
  • LiPo charger so the whole board may work on LiPO power
  • 6 Makey-Makey style buttons
  • UEXT connector for additional modules


The board is shaped like Game console. The first prototypes will be ready in 2 weeks.

Target sale price is EUR 15.00

Previous Older Entries Next Newer Entries