Skip to content
Anh Luong edited this page Apr 5, 2018 · 20 revisions

This tutorial will show you how to add a LoRa Gateway using a RHF0M301 LoRa Gateway Concentrator Module and a Raspberry Pi 3 to OpenChirp. You need to get a RHF0M301 board as well as a RPI adapter that can usually be purchased together. This gateway is based on the Semtech AP1 design (not quite as good as the AP2, but fine for most purposes) and has worked quite well for us in testing. We did however replace the stock antenna with a larger one.

Board

We get the Kit version with an adapter board for the RPI:

Kit

Create an OpenChirp Device and Generate the Device Token

Please follow the Devices Tutorial to create an OpenChirp Device and Generate a Device Token. You will need the device id, endpoint, and the device token later for configuring the lora-gateway-bridge. Use the LoRa Gateway Template when making your device so you have all of the standard transducers. After you are done setting up your RPI, you will install a LoRaWAN Gateway Service which will take a gateway_ID that is generated from the software running on your PI.

Install the Raspbian operating system

Use the Raspbian website to download the latest Raspbian Stretch Lite operating system and flash it to the SD card. After booting into the operating system used the raspi-config command to enable the SPI interface (under "Interface Options" menu). Reboot the OS.

Login and setup user accounts: Linux Users

Setup wireless: CLI WiFi Config

You likely want to run "sudo apt-get update" to update the latest package list.

Adjusting the Clock

# Setting the Time Zone, Date, and Time
sudo ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime

# Install the NTP package
sudo apt install ntp

# Add local ntp servers to /etc/ntp.conf and restart the service
# (Use a list of ntp server close the LoRa Gateway)
server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst
server new-parsley.srv.cs.cmu.edu  iburst
server new-sage.srv.cs.cmu.edu     iburst
server new-rosemary.srv.cs.cmu.edu iburst
server coriander.srv.cs.cmu.edu    iburst
server fennel.srv.cs.cmu.edu       iburst
server paprika.srv.cs.cmu.edu      iburst

# Restart the service
sudo systemctl restart ntp

# Check if the servers are used and if the time has been adjusted 
ntpq -pn
date

# Update the hardware clock (if present)
hwclock -u -w

Install the LoRa Packet Forwarder

Download the latest release of the precompiled Packet Forwarder installer (.deb) from the Openchirp repo.

For example:

wget https://github.com/OpenChirp/lora_gateway_pf/releases/download/v1.0.6/lora-gateway-pf_1.0.6_armhf.deb

Install the package

sudo dpkg -i lora-gateway-pf_1.0.6_armhf.deb

start the service

sudo systemctl start lora-gateway-pf

edit lora-gateway-pf config

sudo vi /opt/lora-gateway-pf/scripts/gwrst.sh
make sure that the RESET_PIN is set to 7 and save

Confirm that the service is running

systemctl status lora-gateway-pf

Install the LoRa Gateway Bridge

Download the latest release of the precompiled LoRa Gateway Bridge (lora-gateway-bridge_x.x.x-x_armhf.deb) from the OpenChirp lora-gateway-bridge releases page.

wget https://github.com/OpenChirp/lora-gateway-bridge/releases/download/OC-2.1.5-23/lora-gateway-bridge_2.1.5-23-gdc983b1_armhf.deb

Install the package

sudo dpkg -i lora-gateway-bridge_2.1.5-23-gdc983b1_armhf.deb

Configure the gateway bridge service by modifying /etc/default/lora-gateway-bridge. Please set the following parameters as indicated:

  • MQTT_SERVER="tls://mqtt.openchirp.io:1883"
  • MQTT_PREFIX="<your_openchirp_device_endpoint> available on the OC website for your device"
  • MQTT_USERNAME="<your_openchirp_device_id> which is the last 24 digits, number part, of the endpoint"
  • MQTT_PASSWORD="<your_openchirp_device_generated_token>"

<your_openchirp_device_endpoint>, <your_openchirp_device_id>, and <your_openchirp_device_generated_token> should be replaced based on your OpenChirp device you created earlier.

Start the service and confirm that it is running properly

sudo systemctl start lora-gateway-bridge
sudo systemctl status lora-gateway-bridge

Link OpenChirp Gateway Service

After starting the service a gateway ID is composed from the Ethernet MAC address. It is stored in the local configuration file (/etc/lora-gateway-pf/local_conf.json) as gateway_ID. This ID is needed by OpenChirp. To get it run:

cat /etc/lora-gateway-pf/local_conf.json

Using the OpenChirp.io website, navigate to your previously created OpenChirp Device. Navigate to the Services tab and click Link Service. Select LoRaWAN Gateway, input your gateway_ID, and click Save. After refreshing the page, you should see a status that indicates your gateway was registered with the provided ID.

You may also want to add the TimeSeries service for visualizing debug data over time.

Fake GPS coordinates

Edit /etc/lora-gateway-pf/local_conf.json

add fake_GPS options:

{
 "gateway_conf": {
     "gateway_ID": "xxxxxxxxxxx",
     "autoquit_threshold": 5,
     //"gps_tty_path": "/dev/ttyAMA0",
     "server_address": "localhost",
     "serv_port_up": 1700,
     "serv_port_down": 1700,
     "fake_gps": true,
     "ref_latitude": 40.244362,
     "ref_longitude": -79.519109,
     "ref_altitude": 0
 }
}