commit
9d1907616b
15 changed files with 274 additions and 0 deletions
@ -0,0 +1,2 @@
@@ -0,0 +1,2 @@
|
||||
source "$BR2_EXTERNAL_ATOY_PATH/package/lora-gateway/Config.in" |
||||
source "$BR2_EXTERNAL_ATOY_PATH/package/packet-forwarder/Config.in" |
||||
@ -0,0 +1,17 @@
@@ -0,0 +1,17 @@
|
||||
# a|toy Buildroot 2 external tree |
||||
|
||||
## TheThingsNetwork gateway |
||||
|
||||
This projet create an image for a raspberrypi board running the TTN packet forwarder. You need a SX1301 extension board. |
||||
|
||||
* Clone buildroot2 |
||||
* Clone this repository |
||||
|
||||
Then, generate the sdcard image : |
||||
|
||||
```bash |
||||
cd /into/buildroot2 |
||||
make BR2_EXTERNAL=/this/repository ttngw_defconfig && make |
||||
``` |
||||
|
||||
You'll find the generated image into output/images/sdcard.img. Just "dd" it on your sdcard (or use etcher on OSX). |
||||
@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
|
||||
image boot.vfat { |
||||
vfat { |
||||
files = { |
||||
"bcm2710-rpi-3-b.dtb", |
||||
"bcm2710-rpi-3-b-plus.dtb", |
||||
"bcm2710-rpi-cm3.dtb", |
||||
"rpi-firmware/bootcode.bin", |
||||
"rpi-firmware/cmdline.txt", |
||||
"rpi-firmware/config.txt", |
||||
"rpi-firmware/fixup.dat", |
||||
"rpi-firmware/start.elf", |
||||
"rpi-firmware/overlays", |
||||
"zImage" |
||||
} |
||||
} |
||||
size = 32M |
||||
} |
||||
|
||||
image sdcard.img { |
||||
hdimage { |
||||
} |
||||
|
||||
partition boot { |
||||
partition-type = 0xC |
||||
bootable = "true" |
||||
image = "boot.vfat" |
||||
} |
||||
|
||||
partition rootfs { |
||||
partition-type = 0x83 |
||||
image = "rootfs.ext4" |
||||
} |
||||
} |
||||
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
#!/bin/sh |
||||
|
||||
set -u |
||||
set -e |
||||
|
||||
# Mount first partition to access config files |
||||
if [ -e ${TARGET_DIR}/etc/fstab ]; then |
||||
if ! grep -qE '^\/dev\/mmcblk0p1' "${TARGET_DIR}/etc/fstab"; then |
||||
cat << __EOF__ >> "${TARGET_DIR}/etc/fstab" |
||||
/dev/mmcblk0p1 /mnt vfat defaults,ro 0 0 |
||||
__EOF__ |
||||
fi |
||||
fi |
||||
@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash |
||||
|
||||
set -e |
||||
|
||||
# Enable SPI |
||||
if ! grep -qE '^dtparam=spi=on' "${BINARIES_DIR}/rpi-firmware/config.txt"; then |
||||
cat << __EOF__ >> "${BINARIES_DIR}/rpi-firmware/config.txt" |
||||
|
||||
# enable SPI |
||||
dtparam=spi=on |
||||
__EOF__ |
||||
fi |
||||
@ -0,0 +1,35 @@
@@ -0,0 +1,35 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Load SPI modules |
||||
# |
||||
|
||||
start() { |
||||
printf "Load SPI kernel modules: " |
||||
|
||||
modprobe spi-bcm2835 |
||||
modprobe spidev |
||||
} |
||||
stop() { |
||||
} |
||||
|
||||
restart() { |
||||
stop |
||||
start |
||||
} |
||||
|
||||
case "$1" in |
||||
start) |
||||
start |
||||
;; |
||||
stop) |
||||
stop |
||||
;; |
||||
restart|reload) |
||||
restart |
||||
;; |
||||
*) |
||||
echo "Usage: $0 {start|stop|restart}" |
||||
exit 1 |
||||
esac |
||||
|
||||
exit $? |
||||
@ -0,0 +1,42 @@
@@ -0,0 +1,42 @@
|
||||
BR2_arm=y |
||||
BR2_cortex_a53=y |
||||
BR2_ARM_FPU_NEON_VFPV4=y |
||||
|
||||
BR2_TOOLCHAIN_BUILDROOT_CXX=y |
||||
|
||||
BR2_SYSTEM_DHCP="eth0" |
||||
|
||||
# Linux headers same as kernel, a 4.14 series |
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y |
||||
|
||||
BR2_LINUX_KERNEL=y |
||||
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y |
||||
BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,c117a8bccf37bfba323065b566cf999ed4629a4a)/linux-c117a8bccf37bfba323065b566cf999ed4629a4a.tar.gz" |
||||
BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" |
||||
|
||||
# Build the DTB from the kernel sources |
||||
BR2_LINUX_KERNEL_DTS_SUPPORT=y |
||||
BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3" |
||||
|
||||
BR2_PACKAGE_RPI_FIRMWARE=y |
||||
|
||||
# Required tools to create the SD image |
||||
BR2_PACKAGE_HOST_DOSFSTOOLS=y |
||||
BR2_PACKAGE_HOST_GENIMAGE=y |
||||
BR2_PACKAGE_HOST_MTOOLS=y |
||||
|
||||
# Filesystem / image |
||||
BR2_TARGET_ROOTFS_EXT2=y |
||||
BR2_TARGET_ROOTFS_EXT2_4=y |
||||
BR2_TARGET_ROOTFS_EXT2_SIZE="128M" |
||||
# BR2_TARGET_ROOTFS_TAR is not set |
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3/post-build.sh $(BR2_EXTERNAL_BAR_42_PATH)/board/ttngw/post-build.sh" |
||||
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_BAR_42_PATH)/board/ttngw/post-image.sh board/raspberrypi3/post-image.sh" |
||||
BR2_ROOTFS_POST_SCRIPT_ARGS="--add-pi3-miniuart-bt-overlay" |
||||
|
||||
# TTNGW specific options and packages |
||||
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_BAR_42_PATH)/board/ttngw/rootfs-overlay" |
||||
BR2_TARGET_GENERIC_ROOT_PASSWD="azerty" |
||||
BR2_PACKAGE_DROPBEAR=y |
||||
BR2_PACKAGE_DROPBEAR_DISABLE_REVERSEDNS=y |
||||
BR2_PACKAGE_PACKET_FORWARDER=y |
||||
@ -0,0 +1,2 @@
@@ -0,0 +1,2 @@
|
||||
name: ATOY |
||||
desc: Custom projects using BR2 |
||||
@ -0,0 +1 @@
@@ -0,0 +1 @@
|
||||
include $(sort $(wildcard $(BR2_EXTERNAL_ATOY_PATH)/package/*/*.mk)) |
||||
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
config BR2_PACKAGE_LORA_GATEWAY |
||||
bool "lora-gateway" |
||||
help |
||||
This is the lora gateway package from The Things Network |
||||
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
LORA_GATEWAY_VERSION = legacy |
||||
LORA_GATEWAY_SITE = https://github.com/TheThingsNetwork/lora_gateway.git |
||||
LORA_GATEWAY_INSTALL_STAGING = YES |
||||
LORA_GATEWAY_SITE_METHOD = git |
||||
|
||||
define LORA_GATEWAY_CONFIGURE_CMDS |
||||
sed -i -e 's/PLATFORM= kerlink/PLATFORM= imst_rpi/g' $(@D)/libloragw/library.cfg |
||||
endef |
||||
|
||||
define LORA_GATEWAY_BUILD_CMDS |
||||
CROSS_COMPILE=arm-buildroot-linux-uclibcgnueabihf- LD=$(TARGET_LD) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) all |
||||
endef |
||||
|
||||
define LORA_GATEWAY_INSTALL_STAGING_CMDS |
||||
$(INSTALL) -d -m 0755 $(STAGING_DIR)/opt/ttn/libloragw |
||||
$(INSTALL) -D -m 0755 $(@D)/libloragw/library.cfg $(STAGING_DIR)/opt/ttn/libloragw/library.cfg |
||||
$(INSTALL) -D -m 0755 $(@D)/libloragw/libloragw.a $(STAGING_DIR)/opt/ttn/libloragw/libloragw.a |
||||
$(INSTALL) -d -m 0755 $(STAGING_DIR)/opt/ttn/libloragw/inc |
||||
$(INSTALL) -D -m 0755 $(@D)/libloragw/inc/*.h $(STAGING_DIR)/opt/ttn/libloragw/inc/ |
||||
endef |
||||
|
||||
define LORA_GATEWAY_INSTALL_TARGET_CMDS |
||||
endef |
||||
|
||||
$(eval $(generic-package)) |
||||
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
config BR2_PACKAGE_PACKET_FORWARDER |
||||
bool "packet-forwarder" |
||||
select BR2_PACKAGE_LORA_GATEWAY |
||||
help |
||||
This is the lora packet forwarder package from The Things Network |
||||
@ -0,0 +1,57 @@
@@ -0,0 +1,57 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Starts Lora packet forwarder |
||||
# |
||||
|
||||
# Allow a few customizations from a config file |
||||
test -r /etc/default/packet-forwarder && . /etc/default/packet-forwarder |
||||
|
||||
reset_sx1301() { |
||||
echo "$SX1301_RESET_BCM_PIN" > /sys/class/gpio/export |
||||
echo "out" > /sys/class/gpio/gpio$SX1301_RESET_BCM_PIN/direction |
||||
echo "0" > /sys/class/gpio/gpio$SX1301_RESET_BCM_PIN/value |
||||
sleep 0.1 |
||||
echo "1" > /sys/class/gpio/gpio$SX1301_RESET_BCM_PIN/value |
||||
sleep 0.1 |
||||
echo "0" > /sys/class/gpio/gpio$SX1301_RESET_BCM_PIN/value |
||||
sleep 0.1 |
||||
echo "$SX1301_RESET_BCM_PIN" > /sys/class/gpio/unexport |
||||
} |
||||
|
||||
start() { |
||||
printf "Starting LoRa packet forwarder: " |
||||
umask 077 |
||||
|
||||
reset_sx1301 |
||||
|
||||
cd /etc/ttn |
||||
start-stop-daemon -S -b -q -p /var/run/packet-forwarder.pid \ |
||||
--exec /usr/bin/poly_pkt_fwd -- $PACKETFORWARDER_ARGS |
||||
[ $? = 0 ] && echo "OK" || echo "FAIL" |
||||
} |
||||
stop() { |
||||
printf "Stopping LoRa packet forwarder: " |
||||
start-stop-daemon -K -q -p /var/run/packet-forwarder.pid |
||||
[ $? = 0 ] && echo "OK" || echo "FAIL" |
||||
} |
||||
restart() { |
||||
stop |
||||
start |
||||
} |
||||
|
||||
case "$1" in |
||||
start) |
||||
start |
||||
;; |
||||
stop) |
||||
stop |
||||
;; |
||||
restart|reload) |
||||
restart |
||||
;; |
||||
*) |
||||
echo "Usage: $0 {start|stop|restart}" |
||||
exit 1 |
||||
esac |
||||
|
||||
exit $? |
||||
@ -0,0 +1,2 @@
@@ -0,0 +1,2 @@
|
||||
# GPIO connected to SW1301 reset pin |
||||
SX1301_RESET_BCM_PIN=17 |
||||
@ -0,0 +1,24 @@
@@ -0,0 +1,24 @@
|
||||
PACKET_FORWARDER_VERSION = legacy |
||||
PACKET_FORWARDER_SITE = https://github.com/TheThingsNetwork/packet_forwarder.git |
||||
PACKET_FORWARDER_SITE_METHOD = git |
||||
PACKET_FORWARDER_DEPENDENCIES = lora-gateway |
||||
|
||||
define PACKET_FORWARDER_CONFIGURE_CMDS |
||||
endef |
||||
|
||||
define PACKET_FORWARDER_BUILD_CMDS |
||||
LGW_PATH=$(STAGING_DIR)/opt/ttn/libloragw CROSS_COMPILE=$(TARGET_CROSS) LD=$(TARGET_LD) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) all |
||||
endef |
||||
|
||||
define PACKET_FORWARDER_INSTALL_TARGET_CMDS |
||||
$(INSTALL) -D -m 0755 $(@D)/poly_pkt_fwd/poly_pkt_fwd $(TARGET_DIR)/usr/bin/poly_pkt_fwd |
||||
$(INSTALL) -D -m 0644 $(@D)/poly_pkt_fwd/global_conf.json $(TARGET_DIR)/etc/ttn/global_conf.json |
||||
$(INSTALL) -D -m 0644 package/thethingsnetwork/packet-forwarder/packet-forwarder $(TARGET_DIR)/etc/default/packet-forwarder |
||||
endef |
||||
|
||||
define PACKET_FORWARDER_INSTALL_INIT_SYSV |
||||
$(INSTALL) -D -m 755 package/thethingsnetwork/packet-forwarder/S52packetforwarder \
|
||||
$(TARGET_DIR)/etc/init.d/S52packetforwarder |
||||
endef |
||||
|
||||
$(eval $(generic-package)) |
||||
Loading…
Reference in new issue