ath79: add support for Teltonika RUT955
[openwrt/staging/hauke.git] / target / linux / ath79 / image / generic.mk
index 1fa9b30c518fa9ba3507cc56d5e3bc74b5de431b..3c0aa2ee4d6869ae8641654db1d905b6934da64a 100644 (file)
@@ -36,6 +36,11 @@ define Build/addpattern
        -mv "$@.new" "$@"
 endef
 
+define Build/append-md5sum-bin
+       $(STAGING_DIR_HOST)/bin/mkhash md5 $@ | sed 's/../\\\\x&/g' |\
+               xargs echo -ne >> $@
+endef
+
 define Build/cybertan-trx
        @echo -n '' > $@-empty.bin
        -$(STAGING_DIR_HOST)/bin/trx -o $@.new \
@@ -73,6 +78,17 @@ define Build/pisen_wmb001n-factory
   rm -rf "$@.tmp"
 endef
 
+define Build/teltonika-fw-fake-checksum
+       # Teltonika U-Boot web based firmware upgrade/recovery routine compares
+       # 16 bytes from md5sum1[16] field in TP-Link v1 header (offset: 76 bytes
+       # from begin of the firmware file) with 16 bytes stored just before
+       # 0xdeadc0de marker. Values are only compared, MD5 sum is not verified.
+       let \
+               offs="$$(stat -c%s $@) - 20"; \
+               dd if=$@ bs=1 count=16 skip=76 |\
+               dd of=$@ bs=1 count=16 seek=$$offs conv=notrunc
+endef
+
 define Device/seama
   KERNEL := kernel-bin | append-dtb | relocate-kernel | lzma
   KERNEL_INITRAMFS := $$(KERNEL) | seama
@@ -1070,6 +1086,28 @@ define Device/sitecom_wlr-7100
 endef
 TARGET_DEVICES += sitecom_wlr-7100
 
+define Device/teltonika_rut955
+  SOC := ar9344
+  DEVICE_VENDOR := Teltonika
+  DEVICE_MODEL := RUT955
+  DEVICE_PACKAGES := kmod-usb2 kmod-usb-acm kmod-usb-net-qmi-wwan \
+       kmod-usb-serial-option kmod-hwmon-mcp3021 uqmi -uboot-envtools
+  IMAGE_SIZE := 15552k
+  TPLINK_HWID := 0x35000001
+  TPLINK_HWREV := 0x1
+  TPLINK_HEADER_VERSION := 1
+  KERNEL := kernel-bin | append-dtb | lzma | tplink-v1-header
+  KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | uImage lzma
+  IMAGES += factory.bin
+  IMAGE/factory.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs |\
+       pad-rootfs | teltonika-fw-fake-checksum | append-string master |\
+       append-md5sum-bin | check-size $$$$(IMAGE_SIZE)
+  IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) |\
+       append-rootfs | pad-rootfs | append-metadata |\
+       check-size $$$$(IMAGE_SIZE)
+endef
+TARGET_DEVICES += teltonika_rut955
+
 define Device/trendnet_tew-823dru
   SOC := qca9558
   DEVICE_VENDOR := Trendnet