Setup IC880A-SPI (LoRaWAN concentrator) on Raspberry Pi 3

From UNamur InfoSec
Jump to navigation Jump to search

Configure Raspberry Pi

Install Rasbian OS on Raspberry Pi

The official installation guide is available at:

- First, we download the image file from:
- Once we have the image file, we can install it into Raspberry Pi SD card with “Etcher”:
 . Etcher is a graphical SD card writing tool.
 . Download and install Etcher from:
 . Connect an SD card reader with the SD card inside.
 . Open Etcher and select from your hard drive the Raspberry Pi “.img” or “.zip” file you wish to write to the SD card.
 . Select the SD card you wish to write your image to.
 . Review your selections and click 'Flash!' to begin writing data to the SD card.
- Once we wrote the image file into the SD card. We can mount the SD card into Raspberry Pi. And boot up the OS by connecting the power supply to power socket.

Configure Local time

We need to configure the Raspberry Pi local. So that the LoRaWAN software is can access to the correct time.

- Type sudo raspi-config
- Choose Internationalisation Options
- And configure your local time and time zone 

Enable SPI Interface

- sudo raspi-config
- Select “Advanced Options”
- Select the “SPI” option
- Set the option to “Yes”

Connect IC880A-SPI to Raspberry Pi

Additional document:

IC880A-SPI Quick start guide:

TTN guide:

IC880A-SPI Pinout

In order to connect the IC880A-SPI to Raspberry Pi the following PIN on IC880A-SPI have to be connected.

PIN PIN Name PIN Type Description
21 VDD Power "+5 V Supply Voltage(>700mA)"
22 GND Power
14 CLK Input Sx1301 SPI-Clock
15 MISO Output Sx1301 SPI-MISO
16 MOSI Input Sx1301 SPI-MOSI
17 NSS Input Sx1301 SPI-NSS
13 Reset Reset Sx1301 SPI-reset
12 GND Power


Connect Raspberry Pi to IC880A-SPI

Since we use the LoRaWAN software from GitHub and the PIN we need to connect to on Raspberry Pi is the following:

IC880A-SPI to Raspberry Pi
IC880A Name Raspberry Pi (Physical PIN)
21 Supply 5V 2
22 GND 6
13 Reset 22
14 SPI CLK 23
15 MISO 21
16 MOSI 19
17 NSS 24

Mounted boards.jpg

Once we have connect the PIN to Raspberry Pi. We can start installing the LoRaWAN software onto the Raspberry Pi.

Prepare IC880A-SPI reset script

Once we have connect the board to Raspberry Pi we can create the following script and execute, in order to reset the board.

Note: We need to reset the board every time the Raspberry Pi restart. In order to be able to run the package LoRaWAN software.

Create a script file with the following code. And save it as

echo "25" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio25/direction
echo "1" > /sys/class/gpio/gpio25/value
sleep 5
echo "0" > /sys/class/gpio/gpio25/value
sleep 1
echo "0" > /sys/class/gpio/gpio25/value

Set the file permission to executable, and execute the file to reset the board.

Install LoRaWAN software on Raspberry Pi

First, we need to install git to clone the software from source code from GitHub

sudo apt-get install git

Then go to the directory we want to store the lora_gateway. For example

cd ~/Desktop

Then clone the lora_gateway

git clone

Compile the library:

cd lora_gateway

Once we successfully build the software. We can install the package forwarder software to forward the LoRaWAN package to the network server

Back to the folder where we store the lora_gateway folder

cd ~/Desktop

Clone the package forwarder

git clone

Compile the package forwarder

cd package_forwarder

Once we successfully make the package forwarder. We can go the the lora_pkt_fwd folder to configure the network server's IP address and Ports, And start the package forwarder to listen and forward LoRaWAN package

cd lora_pkt_fwd
sudo nano local_conf.json

Example local_conf.json configure to forward the package to thethingsnetwork LoRaWAN network server

    "gateway_conf": {
        "gateway_ID": "b827ebFFFE7f3677",
        "server_address": "",
        "serv_port_up": 1700,
        "serv_port_down": 1700

Finally, We can start the LoRaWAN the software to listen and forward our package

sudo ./lora_pkt_fwd

We should see the similar output to the following if the program successfully started.

lgw_start:823: Note: calibration started (time: 2300 ms)
lgw_start:844: Note: calibration finished (status = 191)
Info: Initialising AGC firmware...
Info: putting back original RADIO_SELECT value
INFO: [main] concentrator started, packet can now be received

INFO: Disabling GPS mode for concentrator's counter...
INFO: host/sx1301 time offset=(1513330337s:252766µs) - drift=-1389492834µs
INFO: Enabling GPS mode for concentrator's counter.

INFO: [down] PULL_ACK received in 30 ms

Sometime it fails to start the concentrator because we are using the long jumper wire. We can try to start the program again by running sudo ./lora_pkt_fwd again.

Note: Always execute the ic880a reset script to reset the board every time the Raspberry Pi is restart

Additional documents

IC880A-SPI official Quick start guide:

IC880A-SPI on Raspberry Pi tutorial:

LoRa net GitHub link:


Mounted boards.jpg