chirpstack-tutorial/doc/1-gateway/2-packet-forwarder.md

1.9 KiB

Packet Forwarder

SSH to the Raspberry Pi.

Run raspi-config and

  • Enable SPI
  • Enable I2C
  • Turn off login shell but keep serial port active
  • Reboot

Clone the packet forwarder repository: git clone https://github.com/Lora-net/sx1302_hal.git.

Go into the repo and run make.

Make pf user + give permissions

  • sudo useradd -m -s /usr/sbin/nologin pf
    • -m: create home
    • -s /usr/sbin/nologin: don't allow logging in; the user's only purpose is to own the packet forwarder process
    • pf: the username
  • sudo usermod -aG gpio,spi,i2c,dialout pf

From the packet forwarder repo, copy files to pf user's home and set permissions:

sudo cp packet_forwarder/{global_conf.json.sx1250.US915,lora_pkt_fwd} /home/pf
sudo cp tools/reset_lgw.sh /home/pf
sudo chown pf:pf /home/pf/{global_conf.json.sx1250.US915,lora_pkt_fwd,reset_lgw.sh}
sudo chmod +x /home/pf/{lora_pkt_fwd,reset_lgw.sh}

Modify the packet forward config at /home/pf/global_conf.json.sx1250.US915. Change gateway_ID to something nice (????). 8 bytes (16 uppercase hex characters)

Modify the reset_lgw.sh file to have the following GPIO values, ref:

SX1302_RESET_PIN=17     # SX1302 reset
SX1302_POWER_EN_PIN=18  # SX1302 power enable
SX1261_RESET_PIN=5     # SX1261 reset (LBT / Spectral Scan)
AD5338R_RESET_PIN=13    # AD5338R reset (full-duplex CN490 reference design)

Create SystemD unit file at /etc/systemd/system/packet-forwarder.service:

[Unit]
Description=SX1302 Packet Forwarder
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=pf
WorkingDirectory=/home/pf
ExecStart=/home/pf/lora_pkt_fwd -c global_conf.json.sx1250.US915

[Install]
WantedBy=multi-user.target

Start and enable sudo systemctl enable --now packet-forwarder.service.

Check that it is running with sudo systemctl status packet-forwarder.service.