Basic Station is a LoRaWAN Gateway implementation, including features like
Ready for LoRaWAN Classes A, B, and C
Unified Radio Abstraction Layer supporting Concentrator Reference Designs v1.5, v2 and Corecell
Powerful Backend Protocols (read here and here)
Lean Design
The full documentation is available at https://doc.sm.tc/station.
Building the Station binary from source, requires
The following is a three-step quick start guide on how to build and run Station. It uses a Raspberry Pi as host platform and assumes a Concentrator Reference Design 1.5 compatible radio board connected via SPI, and assumes that SPI port is enabled using the raspi-config tool. In this example the build process is done on the target platform itself (the make environment also supports cross compilation in which case the toolchain is expected in ~/toolchain-$platform
- see setup.gmk).
git clone https://github.com/lorabasics/basicstation.git
cd basicstation
make platform=rpi variant=std
The build process consists of the following steps:
build-$platform-$variant/
build-$platform-$variant/bin/station
cd examples/live-s2.sm.tc
RADIODEV=/dev/spidev0.0 ../../build-rpi-std/bin/station
Note: The SPI device for the radio MAY be passed as an environment variable using RADIODEV
.
The example configuration connects to a public test server s2.sm.tc through which Station fetches all required credentials and a channel plan matching the region as determined from the IP address of the gateway. Provided there are active LoRa devices in proximity, received LoRa frames are printed in the log output on stderr
.
cd basicstation
make platform=corecell variant=std
cd examples/corecell
./start-station.sh -l ./lns-ttn
This example configuration for Corecell connects to The Things Network public LNS. The example station.conf file holds the required radio configurations and station fetches the channel plan from the configured LNS url (tc.uri).
Note: SPI port requires to be activated on Raspberry Pi thanks to raspi-config tool.
cd basicstation
make platform=linuxpico variant=std
cd examples/live-s2.sm.tc
RADIODEV=/dev/ttyACM0 ../../build-linuxpico-std/bin/station
Note: The serial device for the PicoCell MAY be passed as an environment variable using RADIODEV
.
Next,
station --help
,station.conf
and cups-boot.*
example configuration files,Check out the other examples:
The Station binary accepts the following command-line options:
Usage: station [OPTION...]
-d, --daemon First check if another process is still alive. If
so do nothing and exit. Otherwise fork a worker
process to operate the radios and network
protocols. If the subprocess died respawn it with
an appropriate back off.
-f, --force If a station process is already running, kill it
before continuing with requested operation mode.
-h, --home=DIR Home directory for configuration files. Default is
the current working directory. Overrides
environment STATION_DIR.
-i, --radio-init=cmd Program/script to run before reinitializing radio
hardware. By default nothing is being executed.
Overrides environment STATION_RADIOINIT.
-k, --kill Kill a currently running station process.
-l, --log-level=LVL|0..7 Set a log level LVL=#loglvls# or use a numeric
value. Overrides environment STATION_LOGLEVEL.
-L, --log-file=FILE[,SIZE[,ROT]]
Write log entries to FILE. If FILE is '-' then
write to stderr. Optionally followed by a max file
SIZE and a number of rotation files. If ROT is 0
then keep only FILE. If ROT is 1 then keep one
more old log file around. Overrides environment
STATION_LOGFILE.
-N, --no-tc Do not connect to a LNS. Only run CUPS
functionality.
-p, --params Print current parameter settings.
-t, --temp=DIR Temp directory for frequently written files.
Default is /tmp. Overrides environment
STATION_TEMPDIR.
-x, --eui-prefix=id6 Turn MAC address into EUI by adding this prefix.
If the argument has value ff:fe00:0 then the EUI
is formed by inserting FFFE in the middle. If
absent use MAC or routerid as is. Overrides
environment STATION_EUIPREFIX.
-?, --help Give this help list
--usage Give a short usage message
-v, --version Print station version.
Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.