Browse Source

Initial commit

master
Anthony Hinsinger 8 years ago
commit
9d1907616b
  1. 2
      Config.in
  2. 17
      README.md
  3. 33
      board/ttngw/genimage-ttngw.cfg
  4. 13
      board/ttngw/post-build.sh
  5. 12
      board/ttngw/post-image.sh
  6. 35
      board/ttngw/rootfs-overlay/etc/init.d/S10spi
  7. 42
      configs/ttngw_defconfig
  8. 2
      external.desc
  9. 1
      external.mk
  10. 4
      package/lora-gateway/Config.in
  11. 25
      package/lora-gateway/lora-gateway.mk
  12. 5
      package/packet-forwarder/Config.in
  13. 57
      package/packet-forwarder/S52packetforwarder
  14. 2
      package/packet-forwarder/packet-forwarder
  15. 24
      package/packet-forwarder/packet-forwarder.mk

2
Config.in

@ -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"

17
README.md

@ -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).

33
board/ttngw/genimage-ttngw.cfg

@ -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"
}
}

13
board/ttngw/post-build.sh

@ -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

12
board/ttngw/post-image.sh

@ -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

35
board/ttngw/rootfs-overlay/etc/init.d/S10spi

@ -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 $?

42
configs/ttngw_defconfig

@ -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

2
external.desc

@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
name: ATOY
desc: Custom projects using BR2

1
external.mk

@ -0,0 +1 @@ @@ -0,0 +1 @@
include $(sort $(wildcard $(BR2_EXTERNAL_ATOY_PATH)/package/*/*.mk))

4
package/lora-gateway/Config.in

@ -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

25
package/lora-gateway/lora-gateway.mk

@ -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))

5
package/packet-forwarder/Config.in

@ -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

57
package/packet-forwarder/S52packetforwarder

@ -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 $?

2
package/packet-forwarder/packet-forwarder

@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
# GPIO connected to SW1301 reset pin
SX1301_RESET_BCM_PIN=17

24
package/packet-forwarder/packet-forwarder.mk

@ -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…
Cancel
Save