openwrt/target/linux/bcm53xx/image/Makefile

574 lines
16 KiB
Makefile
Raw Normal View History

# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2013 OpenWrt.org
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/image.mk
define Image/Prepare
rm -f $(KDIR)/fs_mark
echo -ne '\xde\xad\xc0\xde' > $(KDIR)/fs_mark
$(call prepare_generic_squashfs,$(KDIR)/fs_mark)
# For UBI we want only one extra block
rm -f $(KDIR)/ubi_mark
echo -ne '\xde\xad\xc0\xde' > $(KDIR)/ubi_mark
endef
define Build/lzma-d16
$(STAGING_DIR_HOST)/bin/lzma e $@ -d16 $(1) $@.new
mv $@.new $@
endef
# Similar to Build/tplink-safeloader but uses TRX instead of clean kernel
define Build/bcm53xx-tplink-safeloader
$(STAGING_DIR_HOST)/bin/trx \
-o $@.trx \
-m 33554432 \
-f $(IMAGE_KERNEL) -a 1024
$(STAGING_DIR_HOST)/bin/tplink-safeloader \
-B $(TPLINK_BOARD) \
-k $@.trx \
-r $@ \
-j \
-o $@.new
mv $@.new $@
rm $@.trx
endef
define Build/buffalo-wzr-header
$(eval product=$(word 1,$(1)))
$(eval region=$(word 2,$(1)))
( \
echo $(product)_$(BUFFALO_TAG_VERSION)_$(BUFFALO_TAG_MINOR)_$(region)_$(BUFFALO_TAG_PLATFORM); \
echo filelen=$$(stat -c%s $@); \
cat $@ \
) > $@.new
mv $@.new $@
endef
# TRX with only one (kernel) partition
define Build/trx
$(STAGING_DIR_HOST)/bin/trx \
-o $@.new \
-m 33554432 \
-f $@
mv $@.new $@
endef
define Build/trx-serial
$(STAGING_DIR_HOST)/bin/otrx create $@.new \
-f $(IMAGE_KERNEL) -a 1024 \
-f $@ -a 0x10000 -A $(KDIR)/fs_mark
mv $@.new $@
endef
define Build/trx-nand
# kernel: always use 4 MiB (-28 B or TRX header) to allow upgrades even
# if it grows up between releases
# root: UBI with one extra block containing UBI mark to trigger erasing
# rest of partition
$(STAGING_DIR_HOST)/bin/otrx create $@.new \
-f $(IMAGE_KERNEL) -a 0x20000 -b 0x400000 \
-f $@ \
-A $(KDIR)/ubi_mark -a 0x20000
mv $@.new $@
endef
define Build/asus-trx
$(STAGING_DIR_HOST)/bin/asustrx \
-p $(ASUS_PRODUCTID) -i $@ -o $@.new
mv $@.new $@
endef
define Build/luxul-lxl
$(STAGING_DIR_HOST)/bin/lxlfw create $@.new \
-i $@ \
-b $(LUXUL_BOARD)
mv $@.new $@
endef
# Outputs a lzma compressed U-Boot that start at 0x00008000
# just like the D-Link boot loaders expect
define Build/dlink-uboot-bin
$(STAGING_DIR_HOST)/bin/lzma e $(STAGING_DIR_IMAGE)/$(DEVICE_NAME)-u-boot.bin -d16 $@
endef
define Build/seama-nand
# Seama entity
$(STAGING_DIR_HOST)/bin/oseama \
entity $@.entity \
-m "dev=/dev/mtdblock/7" \
-m "type=firmware" \
-f $(IMAGE_KERNEL) \
-b 0x400000 \
-f $@ \
-f $(KDIR)/ubi_mark
# Seama container
$(STAGING_DIR_HOST)/bin/seama \
-s $@ \
-m "signature=$(SIGNATURE)" \
-i $@.entity
endef
define Build/dwl8610ap-image
mkdir -p $@.tmptar
# The DWL8610AP pretends to be a Broadcom reference design
echo "bcm953012er" > $@.tmptar/board
echo "LVL7" > $@.tmptar/model
# Something high beyond what D-Link has put out
echo "5.0.0.0" > $@.tmptar/version
# Create rootfs.bin, this is just a NAND image including everything
cp $@ $@.tmptar/rootfs.bin
# Hash the rootfs.bin
cat $@.tmptar/rootfs.bin | md5sum > $@.tmptar/rootfs.md5
cd $@.tmptar && tar -c -f $@.new *
rm -rf $@.tmptar
mv $@.new $@
endef
DTS_DIR := $(DTS_DIR)/broadcom
DEVICE_VARS += ASUS_PRODUCTID
DEVICE_VARS += BUFFALO_TAG_PLATFORM BUFFALO_TAG_VERSION BUFFALO_TAG_MINOR
DEVICE_VARS += SIGNATURE
DEVICE_VARS += NETGEAR_BOARD_ID NETGEAR_REGION TPLINK_BOARD
DEVICE_VARS += LUXUL_BOARD
IEEE8021X := wpad-basic-mbedtls
B43 := $(IEEE8021X) kmod-b43
BRCMFMAC_43602A1 := $(IEEE8021X) kmod-brcmfmac brcmfmac-firmware-43602a1-pcie
BRCMFMAC_4366B1 := $(IEEE8021X) kmod-brcmfmac brcmfmac-firmware-4366b1-pcie
BRCMFMAC_4366C0 := $(IEEE8021X) kmod-brcmfmac brcmfmac-firmware-4366c0-pcie
USB2_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-phy-bcm-ns-usb2
USB2_PACKAGES += kmod-usb-ledtrig-usbport
USB3_PACKAGES := $(USB2_PACKAGES) kmod-usb3 kmod-phy-bcm-ns-usb3
define Device/Default
PROFILES = Generic $$(DEVICE_NAME)
# .dtb files are prefixed by SoC type, e.g. bcm4708- which is not included in device/image names
# extract the full dtb name based on the device info
DEVICE_DTS := $(patsubst %.dtb,%,$(notdir $(wildcard $(if $(IB),$(KDIR),$(DTS_DIR))/*-$(subst _,-,$(1)).dtb)))
KERNEL := kernel-bin | append-dtb | lzma-d16
KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts)
KERNEL_INITRAMFS_SUFFIX := .trx
KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma-d16 | trx
FILESYSTEMS := squashfs
KERNEL_NAME := zImage
DEVICE_IMG_NAME = $$(DEVICE_IMG_PREFIX)-$$(1).$$(2)
IMAGES := trx
BLOCKSIZE := 128k
PAGESIZE := 2048
IMAGE/trx := append-ubi | trx-nand
endef
define Device/asus
DEVICE_VENDOR := ASUS
IMAGES := trx
IMAGE/trx := append-ubi | trx-nand | asus-trx
endef
define Device/asus_rt-ac3100
$(call Device/asus)
DEVICE_MODEL := RT-AC3100
DEVICE_PACKAGES := $(BRCMFMAC_4366B1) $(BRCMFMAC_4366C0) $(USB3_PACKAGES)
ASUS_PRODUCTID := RT-AC3100
endef
TARGET_DEVICES += asus_rt-ac3100
define Device/asus_rt-ac56u
$(call Device/asus)
DEVICE_MODEL := RT-AC56U
DEVICE_PACKAGES := $(B43) $(USB3_PACKAGES)
ASUS_PRODUCTID := RT-AC56U
endef
TARGET_DEVICES += asus_rt-ac56u
define Device/asus_rt-ac68u
$(call Device/asus)
DEVICE_MODEL := RT-AC68U
DEVICE_PACKAGES := $(USB3_PACKAGES)
ASUS_PRODUCTID := RT-AC68U
endef
TARGET_DEVICES += asus_rt-ac68u
define Device/asus_rt-ac87u
$(call Device/asus)
DEVICE_MODEL := RT-AC87U
DEVICE_PACKAGES := $(USB3_PACKAGES)
ASUS_PRODUCTID := RT-AC87U
endef
TARGET_DEVICES += asus_rt-ac87u
define Device/asus_rt-ac88u
$(call Device/asus)
DEVICE_MODEL := RT-AC88U
DEVICE_PACKAGES := $(BRCMFMAC_4366B1) $(BRCMFMAC_4366C0) $(USB3_PACKAGES)
ASUS_PRODUCTID := RT-AC88U
endef
TARGET_DEVICES += asus_rt-ac88u
define Device/asus_rt-n18u
$(call Device/asus)
DEVICE_MODEL := RT-N18U
DEVICE_PACKAGES := $(USB3_PACKAGES)
ASUS_PRODUCTID := RT-N18U
endef
TARGET_DEVICES += asus_rt-n18u
# Buffalo devices have TFTP recovery mode which can work nicely with initramfs
# kernels.
# We should have two initramfs images for Buffalo: plain initramfs kernel and
# TRX with initramfs kernel. It's not possible right now so let's just build
# plain initramfs kernel as it may be more useful.
define Device/buffalo/Default
DEVICE_VENDOR := Buffalo
KERNEL_INITRAMFS_SUFFIX = $$(KERNEL_SUFFIX)
KERNEL_INITRAMFS = $$(KERNEL)
endef
define Device/buffalo_wxr-1900dhp
$(call Device/buffalo/Default)
DEVICE_MODEL := WXR-1900DHP
DEVICE_PACKAGES := $(USB3_PACKAGES)
endef
TARGET_DEVICES += buffalo_wxr-1900dhp
define Device/buffalo_wzr-600dhp2
$(call Device/buffalo/Default)
DEVICE_MODEL := WZR-600DHP2
DEVICE_PACKAGES := $(B43) $(USB2_PACKAGES)
endef
TARGET_DEVICES += buffalo_wzr-600dhp2
define Device/buffalo_wzr-900dhp
$(call Device/buffalo/Default)
DEVICE_MODEL := WZR-900DHP
DEVICE_PACKAGES := $(B43) $(USB3_PACKAGES)
BUFFALO_TAG_PLATFORM := bcm
BUFFALO_TAG_VERSION := 9.99
BUFFALO_TAG_MINOR := 9.99
IMAGES += factory-DHP-EU.bin factory-DHP2-JP.bin
IMAGE/factory-DHP-EU.bin := \
append-ubi | trx-nand | buffalo-wzr-header WZR-900DHP EU | \
buffalo-enc WZR-900DHP $$(BUFFALO_TAG_VERSION) | \
buffalo-tag-dhp WZR-900DHP EU mlang20 | buffalo-enc-tag | \
buffalo-dhp-image
IMAGE/factory-DHP2-JP.bin := \
append-ubi | trx-nand | buffalo-wzr-header WZR-900DHP2 JP | \
buffalo-enc WZR-900DHP2 $$(BUFFALO_TAG_VERSION) | \
buffalo-tag-dhp WZR-900DHP2 JP jp | buffalo-enc-tag | \
buffalo-dhp-image
endef
TARGET_DEVICES += buffalo_wzr-900dhp
define Device/buffalo_wzr-1750dhp
$(call Device/buffalo/Default)
DEVICE_MODEL := WZR-1750DHP
DEVICE_PACKAGES := $(B43) $(USB3_PACKAGES)
endef
TARGET_DEVICES += buffalo_wzr-1750dhp
define Device/dlink
DEVICE_VENDOR := D-Link
IMAGES := bin
IMAGE/bin := append-ubi | seama-nand
endef
define Device/dlink_dir-885l
DEVICE_MODEL := DIR-885L
DEVICE_PACKAGES := $(BRCMFMAC_4366B1) $(USB3_PACKAGES)
$(Device/dlink)
SIGNATURE := wrgac42_dlink.2015_dir885l
endef
TARGET_DEVICES += dlink_dir-885l
define Device/dlink_dir-890l
DEVICE_VENDOR := D-Link
DEVICE_MODEL := DIR-890L
DEVICE_PACKAGES := $(BRCMFMAC_43602A1) $(USB2_PACKAGES) $(USB3_PACKAGES)
# Layout: U-boot (128kb max) followed by kernel and appended DTB.
# This is done because the boot loader will only read the first 2 MB
# from the flash and decompress the LZMA it finds there after the
# SEAMA header. Since the compressed kernel will not fit in 2 MB,
# we put U-Boot there and let U-Boot read and execute the kernel.
KERNEL := dlink-uboot-bin | pad-to 128k | append-kernel | append-dtb
$(Device/dlink)
SIGNATURE := wrgac36_dlink.2013gui_dir890
endef
TARGET_DEVICES += dlink_dir-890l
define Device/dlink_dwl-8610ap
DEVICE_VENDOR := D-Link
DEVICE_MODEL := DWL-8610AP
DEVICE_PACKAGES := $(B43)
IMAGES := factory.tar
IMAGE/factory.tar := append-ubi | trx-nand | dwl8610ap-image
endef
TARGET_DEVICES += dlink_dwl-8610ap
define Device/linksys_ea6300-v1
DEVICE_VENDOR := Linksys
DEVICE_MODEL := EA6300
DEVICE_VARIANT := v1
DEVICE_PACKAGES := $(B43) $(USB3_PACKAGES)
endef
TARGET_DEVICES += linksys_ea6300-v1
define Device/linksys_ea6500-v2
DEVICE_VENDOR := Linksys
DEVICE_MODEL := EA6500
DEVICE_VARIANT := v2
DEVICE_PACKAGES := $(B43) $(USB3_PACKAGES)
endef
TARGET_DEVICES += linksys_ea6500-v2
define Device/linksys_ea9200
DEVICE_VENDOR := Linksys
DEVICE_MODEL := EA9200
DEVICE_VARIANT := v1
DEVICE_PACKAGES := $(BRCMFMAC_43602A1) $(USB3_PACKAGES)
endef
TARGET_DEVICES += linksys_ea9200
define Device/linksys_ea9500
DEVICE_VENDOR := Linksys
DEVICE_MODEL := EA9500
DEVICE_PACKAGES := $(BRCMFMAC_4366C0) $(USB3_PACKAGES)
DEVICE_DTS := bcm47094-linksys-panamera
endef
TARGET_DEVICES += linksys_ea9500
define Device/luxul
DEVICE_VENDOR := Luxul
IMAGES := lxl
IMAGE/lxl := append-ubi | trx-nand | luxul-lxl
endef
define Device/luxul_abr-4500
$(Device/luxul)
DEVICE_MODEL := ABR-4500
DEVICE_PACKAGES := $(USB3_PACKAGES)
LUXUL_BOARD := ABR-4500
endef
TARGET_DEVICES += luxul_abr-4500
define Device/luxul_xap-1610
$(Device/luxul)
DEVICE_MODEL := XAP-1610
DEVICE_PACKAGES := $(BRCMFMAC_4366C0)
IMAGE/lxl := append-rootfs | trx-serial | luxul-lxl
LUXUL_BOARD := XAP-1610
endef
TARGET_DEVICES += luxul_xap-1610
define Device/luxul_xbr-4500
$(Device/luxul)
DEVICE_MODEL := XBR-4500
DEVICE_PACKAGES := $(USB3_PACKAGES)
LUXUL_BOARD := XBR-4500
endef
TARGET_DEVICES += luxul_xbr-4500
define Device/luxul_xwr-3150
$(Device/luxul)
DEVICE_MODEL := XWR-3150
DEVICE_PACKAGES := $(BRCMFMAC_4366C0) $(USB3_PACKAGES)
DEVICE_DTS := bcm47094-luxul-xwr-3150-v1
LUXUL_BOARD := XWR-3150
endef
TARGET_DEVICES += luxul_xwr-3150
bcm53xx: add support for Meraki MR26 Meraki MR26 is an EOL wireless access point featuring a PoE ethernet port and two dual-band 3x3 MIMO 802.11n radios and 1x1 dual-band WIFI dedicated to scanning. Thank you Amir for the unit and PSU. Hardware info: SOC : Broadcom BCM53015A1KFEBG (dual-core Cortex-A9 CPU at 800 MHz) RAM : SK hynix Inc. H5TQ1G63EFR, 1 Gbit DDR3 SDRAM = 128 MiB NAND : Spansion S34ML01G100TF100, 1 Gbit SLC NAND Flash = 128 MiB ETH : 1 GBit Ethernet Port - PoE WIFI1 : Broadcom BCM43431KMLG, BCM43431 802.11 abgn WIFI1 : Broadcom BCM43431KMLG, BCM43431 802.11 abgn WIFI3 : Broadcom BCM43428 abgn (1x1:1 - id: 43428) BUTTON: one reset button LEDS : RGB-LED MISC : Atmel AT24C64 8KiB EEPROM (i2c - seems empty) : Ti INA219 26V, 12-bit, i2c output current/voltage/power monitor : TPS23754, High Power/High Efficiency PoE Interface+DC/DC Controller SERIAL: WARNING: The serial port needs a TTL/RS-232 3V3 level converter! The Serial setting is 115200-8-N-1. The board has a populated right angle 1x4 0.1" pinheader. The pinout is: VCC (next to J3, has little white arrow), RX, TX, GND. This flashing procedure for the MR26 was tested with firmware: "22-143410M-gf25cbf5a-asa". U-Boot 2012.10-00063-g83f9fe4 (Jun 04 2014 - 21:22:39) A guide how to open up the device is available on the wiki: <https://openwrt.org/toh/meraki/mr26> Notes: - The WIFI do work to a degree. Limited to 802.11bg in the 2.4GHz band. - the WIFI macs are made up. 0. Create a separate Ethernet LAN which can't have access to the internet. Ideally use 192.168.1.2 for your PC. The new OpenWrt firmware will setup the network via DHCP Discovery, so make sure your PC is running a DHCP-Server (i.e.: dnsmasq) '# dnsmasq -i eth# -F 192.168.1.5,192.168.1.50 Download the openwrt-meraki-mr26 initramfs file from openwrt.org and rename it to something simple like mr26.bin. Then put it into the tftp's server directory. 1. Disassemble the MR26 device by removing all screws (4 screws are located under the 4 rubber feets!) and prying open the plastic covers without breaking the plastic retention clips. Once inside, remove the plastic back casing. Be careful, there some "hidden" retention clips on both sides of the LAN port, you need a light to see those. Next, you want to remove all the screws on the outer metal shielding to get to the PCB. It's not necessary to remove the antennas! 2. Connect the serial cable to the serial header and Ethernet patch cable to the device. 4. Before connecting the power, get ready flood the serial console program with the magic: xyzzy . This is necessary in order to get into the u-boot prompt. Once Ready: connect power cable. 5. If you don't get the "u-boot>" prompt within the first few seconds, you have to disconnect and reconnect the power cable and try again. 6. In the u-boot prompt enter: setenv ipaddr 192.168.1.4 setenv serverip 192.168.1.2 tftpboot ${meraki_loadaddr} mr26.bin; bootm this will boot a in-ram-only OpenWrt image. 7. Once it booted use sysupgrade to permanently install OpenWrt. To do this: Download the latest sysupgrade.bin file and move it to the device. Then use sysupgrade *sysupgrade.bin to install it. WARNING: DO NOT DELETE the "storage" ubi volume! Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2022-06-10 20:22:39 +00:00
define Device/meraki_mr26
DEVICE_VENDOR := Meraki
DEVICE_MODEL := MR26
DEVICE_PACKAGES := $(B43) kmod-hwmon-ina2xx kmod-leds-uleds nu801
bcm53xx: add support for Meraki MR26 Meraki MR26 is an EOL wireless access point featuring a PoE ethernet port and two dual-band 3x3 MIMO 802.11n radios and 1x1 dual-band WIFI dedicated to scanning. Thank you Amir for the unit and PSU. Hardware info: SOC : Broadcom BCM53015A1KFEBG (dual-core Cortex-A9 CPU at 800 MHz) RAM : SK hynix Inc. H5TQ1G63EFR, 1 Gbit DDR3 SDRAM = 128 MiB NAND : Spansion S34ML01G100TF100, 1 Gbit SLC NAND Flash = 128 MiB ETH : 1 GBit Ethernet Port - PoE WIFI1 : Broadcom BCM43431KMLG, BCM43431 802.11 abgn WIFI1 : Broadcom BCM43431KMLG, BCM43431 802.11 abgn WIFI3 : Broadcom BCM43428 abgn (1x1:1 - id: 43428) BUTTON: one reset button LEDS : RGB-LED MISC : Atmel AT24C64 8KiB EEPROM (i2c - seems empty) : Ti INA219 26V, 12-bit, i2c output current/voltage/power monitor : TPS23754, High Power/High Efficiency PoE Interface+DC/DC Controller SERIAL: WARNING: The serial port needs a TTL/RS-232 3V3 level converter! The Serial setting is 115200-8-N-1. The board has a populated right angle 1x4 0.1" pinheader. The pinout is: VCC (next to J3, has little white arrow), RX, TX, GND. This flashing procedure for the MR26 was tested with firmware: "22-143410M-gf25cbf5a-asa". U-Boot 2012.10-00063-g83f9fe4 (Jun 04 2014 - 21:22:39) A guide how to open up the device is available on the wiki: <https://openwrt.org/toh/meraki/mr26> Notes: - The WIFI do work to a degree. Limited to 802.11bg in the 2.4GHz band. - the WIFI macs are made up. 0. Create a separate Ethernet LAN which can't have access to the internet. Ideally use 192.168.1.2 for your PC. The new OpenWrt firmware will setup the network via DHCP Discovery, so make sure your PC is running a DHCP-Server (i.e.: dnsmasq) '# dnsmasq -i eth# -F 192.168.1.5,192.168.1.50 Download the openwrt-meraki-mr26 initramfs file from openwrt.org and rename it to something simple like mr26.bin. Then put it into the tftp's server directory. 1. Disassemble the MR26 device by removing all screws (4 screws are located under the 4 rubber feets!) and prying open the plastic covers without breaking the plastic retention clips. Once inside, remove the plastic back casing. Be careful, there some "hidden" retention clips on both sides of the LAN port, you need a light to see those. Next, you want to remove all the screws on the outer metal shielding to get to the PCB. It's not necessary to remove the antennas! 2. Connect the serial cable to the serial header and Ethernet patch cable to the device. 4. Before connecting the power, get ready flood the serial console program with the magic: xyzzy . This is necessary in order to get into the u-boot prompt. Once Ready: connect power cable. 5. If you don't get the "u-boot>" prompt within the first few seconds, you have to disconnect and reconnect the power cable and try again. 6. In the u-boot prompt enter: setenv ipaddr 192.168.1.4 setenv serverip 192.168.1.2 tftpboot ${meraki_loadaddr} mr26.bin; bootm this will boot a in-ram-only OpenWrt image. 7. Once it booted use sysupgrade to permanently install OpenWrt. To do this: Download the latest sysupgrade.bin file and move it to the device. Then use sysupgrade *sysupgrade.bin to install it. WARNING: DO NOT DELETE the "storage" ubi volume! Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2022-06-10 20:22:39 +00:00
DEVICE_DTS := bcm53015-meraki-mr26
# resize the initramfs to fit the size of the existing part.safe.
KERNEL_LOADADDR := 0x00008000
KERNEL_INITRAMFS_SUFFIX := .bin
KERNEL_INITRAMFS := kernel-bin | append-dtb | gzip | uImage gzip | pad-to 9310208
# LZMA is not supported by the uboot
KERNEL := kernel-bin | append-dtb | gzip | uImage gzip
IMAGES += sysupgrade.bin
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
endef
TARGET_DEVICES += meraki_mr26
bcm53xx: add Cisco Meraki MR32 This patch adds support for Cisco Meraki MR32. The unit was donated by Chris Blake. Thank you! WARNING: Only the 1x1:1 abgn Air Marshal WIPS wifi is currently supported by b43: b43-phy2: Found PHY: Analog 9, Type 4 (N), Revision 16 b43-phy2: Found Radio: Manuf 0x17F, ID 0x2057, Revision 9, Version 1 b43-phy2: Loading firmware version 784.2 (2012-08-15 21:35:19) and only as 802.11ABG! while WIFI1 and WIFI2 (both BCM4352) are not: b43-phy0: Broadcom 4352 WLAN found (core revision 42) b43-phy0 ERROR: FOUND UNSUPPORTED PHY (Analog 12, Type 11 (AC), Revision 1) Hardware Highlights: SoC: Broadcom BCM53016A1 (1 GHz, 2 cores) RAM: 128 MiB NAND: 128 MiB Spansion S34ML01G2 (~114 MiB useable) ETH: 1GBit Ethernet Port - PoE WIFI1: Broadcom BCM43520 an+ac (2x2:2 - id: 0x4352) WIFI2: Broadcom BCM43520 bgn (2x2:2 - id: 0x4352) WIFI3: Broadcom BCM43428 abgn (1x1:1 - id: 43428) BLE: Broadcom BCM20732 (ttyS1) LEDS: 1 x Programmable RGB Status LED (driven by a PWM) 1 x White LED (GPIO) 1 x Orange LED Fault Indicator (GPIO) 2 x LAN Activity / Speed LEDs (On the RJ45 Port) BUTTON: one Reset button MISC: AT24C64 8KiB EEPROM (i2c - stores Ethernet MAC + Serial#!) ina219 hardware monitor (i2c) Kensington Lock SERIAL: WARNING: The serial port needs a TTL/RS-232 3V3 level converter! The Serial setting is 115200-8-N-1. The board has a populated right angle 1x4 0.1" pinheader. The pinout is: VCC, RX, TX, GND. (Use a multimeter) Flashing needs a serial adaptor (due to the lack of a working dropbear on the original firmware). This flashing procedure for the MR32 was tested with firmware: "r23-149867:150252-aacharya". 0. Create a seperate Ethernet LAN which does not have access to the internet. Ideally use 192.168.1.2 for your PC. Make sure to reserve 192.168.1.1 it will be used later on by the OpenWrt firmware. The original Meraki firmware will likely try to setup the network via DHCP Discovery, so make sure your PC is running a DHCP-Server (i.e.: dnsmasq) '# dnsmasq -i eth# -F 192.168.1.5,192.168.1.50 Furthermore, the PC needs a supported ssh/http/ftp server in order to retrieve the initramfs + dtb file 1. Disassemble the MR32 device by removing all screws (4 screws are located under the 4 rubber feets!) and prying open the plastic covers without breaking the plastic retention clips. Once inside, remove all the screws on the outer metal shielding to get to the PCB. It's not necessary to remove the antennas! 2. Connect the serial cable to the serial header. 3. Partially reassemble the outer metal shielding to ensure that the SoC has a proper heat sink. 4. Connect the Ethernet patch cable to the device and the power cable. 5. Wait for the device to boot and enter the root shell. (rooting is not discussed in detail here please refer to Chris Blake - "pwning the meraki mr18" blog post: <https://servernetworktech.com/2016/02/pwning-the-meraki-mr18/> (The same method works with the MR32's r23-149867:150252-aacharya) Wait for the MR32 to enter the "<Meraki>" prompt and enter: <Meraki> odm serial_num read (Verify that it matches what's on the S/N Sticker on the back!) <Meraki> odm serial_num write Q2XX-XXXX-XXXV <Meraki> odm serial_num read (Verify that the S/N has changed - and the LED start to flash) now to flash the firmware: <Meraki> odm firmware part.safe "http://192.168.1.2/mr32-initramfs.bin" Once OpenWrt booted use sysupgrade to permanently install OpenWrt. To do this: Download the latest sysupgrade.bin file for the MR32 to the device and use sysupgrade *sysupgrade.bin to install it. WARNING: DO NOT DELETE the "storage" ubi volume! To flash later MR32 Firmwares like r25-201804051805-G885d6d78-dhow-rel requires in-circut-i2c tools to access the I2C EEPROM AT24C64 next to the SoC. The idea is pretty much the same as from Step 5 from above: Change the serial number to Q2XXXXXXXXXV (should be around 0x7c), then attach a serial cable, ethernet (but make sure the device can't reach the internet!) hit "s" (the small s!) during boot to enter the root-shell and add the following commands to the /storage/config there: serial_allow_odm true serial_access_enabled true serial_access_check false valid_config true and then hit exit to let it finish booting. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2020-08-29 21:48:00 +00:00
define Device/meraki_mr32
DEVICE_VENDOR := Meraki
bcm53xx: add Cisco Meraki MR32 This patch adds support for Cisco Meraki MR32. The unit was donated by Chris Blake. Thank you! WARNING: Only the 1x1:1 abgn Air Marshal WIPS wifi is currently supported by b43: b43-phy2: Found PHY: Analog 9, Type 4 (N), Revision 16 b43-phy2: Found Radio: Manuf 0x17F, ID 0x2057, Revision 9, Version 1 b43-phy2: Loading firmware version 784.2 (2012-08-15 21:35:19) and only as 802.11ABG! while WIFI1 and WIFI2 (both BCM4352) are not: b43-phy0: Broadcom 4352 WLAN found (core revision 42) b43-phy0 ERROR: FOUND UNSUPPORTED PHY (Analog 12, Type 11 (AC), Revision 1) Hardware Highlights: SoC: Broadcom BCM53016A1 (1 GHz, 2 cores) RAM: 128 MiB NAND: 128 MiB Spansion S34ML01G2 (~114 MiB useable) ETH: 1GBit Ethernet Port - PoE WIFI1: Broadcom BCM43520 an+ac (2x2:2 - id: 0x4352) WIFI2: Broadcom BCM43520 bgn (2x2:2 - id: 0x4352) WIFI3: Broadcom BCM43428 abgn (1x1:1 - id: 43428) BLE: Broadcom BCM20732 (ttyS1) LEDS: 1 x Programmable RGB Status LED (driven by a PWM) 1 x White LED (GPIO) 1 x Orange LED Fault Indicator (GPIO) 2 x LAN Activity / Speed LEDs (On the RJ45 Port) BUTTON: one Reset button MISC: AT24C64 8KiB EEPROM (i2c - stores Ethernet MAC + Serial#!) ina219 hardware monitor (i2c) Kensington Lock SERIAL: WARNING: The serial port needs a TTL/RS-232 3V3 level converter! The Serial setting is 115200-8-N-1. The board has a populated right angle 1x4 0.1" pinheader. The pinout is: VCC, RX, TX, GND. (Use a multimeter) Flashing needs a serial adaptor (due to the lack of a working dropbear on the original firmware). This flashing procedure for the MR32 was tested with firmware: "r23-149867:150252-aacharya". 0. Create a seperate Ethernet LAN which does not have access to the internet. Ideally use 192.168.1.2 for your PC. Make sure to reserve 192.168.1.1 it will be used later on by the OpenWrt firmware. The original Meraki firmware will likely try to setup the network via DHCP Discovery, so make sure your PC is running a DHCP-Server (i.e.: dnsmasq) '# dnsmasq -i eth# -F 192.168.1.5,192.168.1.50 Furthermore, the PC needs a supported ssh/http/ftp server in order to retrieve the initramfs + dtb file 1. Disassemble the MR32 device by removing all screws (4 screws are located under the 4 rubber feets!) and prying open the plastic covers without breaking the plastic retention clips. Once inside, remove all the screws on the outer metal shielding to get to the PCB. It's not necessary to remove the antennas! 2. Connect the serial cable to the serial header. 3. Partially reassemble the outer metal shielding to ensure that the SoC has a proper heat sink. 4. Connect the Ethernet patch cable to the device and the power cable. 5. Wait for the device to boot and enter the root shell. (rooting is not discussed in detail here please refer to Chris Blake - "pwning the meraki mr18" blog post: <https://servernetworktech.com/2016/02/pwning-the-meraki-mr18/> (The same method works with the MR32's r23-149867:150252-aacharya) Wait for the MR32 to enter the "<Meraki>" prompt and enter: <Meraki> odm serial_num read (Verify that it matches what's on the S/N Sticker on the back!) <Meraki> odm serial_num write Q2XX-XXXX-XXXV <Meraki> odm serial_num read (Verify that the S/N has changed - and the LED start to flash) now to flash the firmware: <Meraki> odm firmware part.safe "http://192.168.1.2/mr32-initramfs.bin" Once OpenWrt booted use sysupgrade to permanently install OpenWrt. To do this: Download the latest sysupgrade.bin file for the MR32 to the device and use sysupgrade *sysupgrade.bin to install it. WARNING: DO NOT DELETE the "storage" ubi volume! To flash later MR32 Firmwares like r25-201804051805-G885d6d78-dhow-rel requires in-circut-i2c tools to access the I2C EEPROM AT24C64 next to the SoC. The idea is pretty much the same as from Step 5 from above: Change the serial number to Q2XXXXXXXXXV (should be around 0x7c), then attach a serial cable, ethernet (but make sure the device can't reach the internet!) hit "s" (the small s!) during boot to enter the root-shell and add the following commands to the /storage/config there: serial_allow_odm true serial_access_enabled true serial_access_check false valid_config true and then hit exit to let it finish booting. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2020-08-29 21:48:00 +00:00
DEVICE_MODEL := MR32
DEVICE_PACKAGES := $(B43) kmod-leds-pwm kmod-hwmon-ina2xx kmod-bluetooth
bcm53xx: add Cisco Meraki MR32 This patch adds support for Cisco Meraki MR32. The unit was donated by Chris Blake. Thank you! WARNING: Only the 1x1:1 abgn Air Marshal WIPS wifi is currently supported by b43: b43-phy2: Found PHY: Analog 9, Type 4 (N), Revision 16 b43-phy2: Found Radio: Manuf 0x17F, ID 0x2057, Revision 9, Version 1 b43-phy2: Loading firmware version 784.2 (2012-08-15 21:35:19) and only as 802.11ABG! while WIFI1 and WIFI2 (both BCM4352) are not: b43-phy0: Broadcom 4352 WLAN found (core revision 42) b43-phy0 ERROR: FOUND UNSUPPORTED PHY (Analog 12, Type 11 (AC), Revision 1) Hardware Highlights: SoC: Broadcom BCM53016A1 (1 GHz, 2 cores) RAM: 128 MiB NAND: 128 MiB Spansion S34ML01G2 (~114 MiB useable) ETH: 1GBit Ethernet Port - PoE WIFI1: Broadcom BCM43520 an+ac (2x2:2 - id: 0x4352) WIFI2: Broadcom BCM43520 bgn (2x2:2 - id: 0x4352) WIFI3: Broadcom BCM43428 abgn (1x1:1 - id: 43428) BLE: Broadcom BCM20732 (ttyS1) LEDS: 1 x Programmable RGB Status LED (driven by a PWM) 1 x White LED (GPIO) 1 x Orange LED Fault Indicator (GPIO) 2 x LAN Activity / Speed LEDs (On the RJ45 Port) BUTTON: one Reset button MISC: AT24C64 8KiB EEPROM (i2c - stores Ethernet MAC + Serial#!) ina219 hardware monitor (i2c) Kensington Lock SERIAL: WARNING: The serial port needs a TTL/RS-232 3V3 level converter! The Serial setting is 115200-8-N-1. The board has a populated right angle 1x4 0.1" pinheader. The pinout is: VCC, RX, TX, GND. (Use a multimeter) Flashing needs a serial adaptor (due to the lack of a working dropbear on the original firmware). This flashing procedure for the MR32 was tested with firmware: "r23-149867:150252-aacharya". 0. Create a seperate Ethernet LAN which does not have access to the internet. Ideally use 192.168.1.2 for your PC. Make sure to reserve 192.168.1.1 it will be used later on by the OpenWrt firmware. The original Meraki firmware will likely try to setup the network via DHCP Discovery, so make sure your PC is running a DHCP-Server (i.e.: dnsmasq) '# dnsmasq -i eth# -F 192.168.1.5,192.168.1.50 Furthermore, the PC needs a supported ssh/http/ftp server in order to retrieve the initramfs + dtb file 1. Disassemble the MR32 device by removing all screws (4 screws are located under the 4 rubber feets!) and prying open the plastic covers without breaking the plastic retention clips. Once inside, remove all the screws on the outer metal shielding to get to the PCB. It's not necessary to remove the antennas! 2. Connect the serial cable to the serial header. 3. Partially reassemble the outer metal shielding to ensure that the SoC has a proper heat sink. 4. Connect the Ethernet patch cable to the device and the power cable. 5. Wait for the device to boot and enter the root shell. (rooting is not discussed in detail here please refer to Chris Blake - "pwning the meraki mr18" blog post: <https://servernetworktech.com/2016/02/pwning-the-meraki-mr18/> (The same method works with the MR32's r23-149867:150252-aacharya) Wait for the MR32 to enter the "<Meraki>" prompt and enter: <Meraki> odm serial_num read (Verify that it matches what's on the S/N Sticker on the back!) <Meraki> odm serial_num write Q2XX-XXXX-XXXV <Meraki> odm serial_num read (Verify that the S/N has changed - and the LED start to flash) now to flash the firmware: <Meraki> odm firmware part.safe "http://192.168.1.2/mr32-initramfs.bin" Once OpenWrt booted use sysupgrade to permanently install OpenWrt. To do this: Download the latest sysupgrade.bin file for the MR32 to the device and use sysupgrade *sysupgrade.bin to install it. WARNING: DO NOT DELETE the "storage" ubi volume! To flash later MR32 Firmwares like r25-201804051805-G885d6d78-dhow-rel requires in-circut-i2c tools to access the I2C EEPROM AT24C64 next to the SoC. The idea is pretty much the same as from Step 5 from above: Change the serial number to Q2XXXXXXXXXV (should be around 0x7c), then attach a serial cable, ethernet (but make sure the device can't reach the internet!) hit "s" (the small s!) during boot to enter the root-shell and add the following commands to the /storage/config there: serial_allow_odm true serial_access_enabled true serial_access_check false valid_config true and then hit exit to let it finish booting. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2020-08-29 21:48:00 +00:00
DEVICE_DTS := bcm53016-meraki-mr32
# Meraki FW r23 tries to resize the part.safe partition before it will
# flash the image. This is a bit of a problem, since resizing will fail
# if the partition is smaller than the old one.
KERNEL_LOADADDR := 0x00008000
KERNEL_INITRAMFS_SUFFIX := .bin
DEVICE_DTS_DELIMITER := @
DEVICE_DTS_CONFIG := config@1
bcm53xx: add Cisco Meraki MR32 This patch adds support for Cisco Meraki MR32. The unit was donated by Chris Blake. Thank you! WARNING: Only the 1x1:1 abgn Air Marshal WIPS wifi is currently supported by b43: b43-phy2: Found PHY: Analog 9, Type 4 (N), Revision 16 b43-phy2: Found Radio: Manuf 0x17F, ID 0x2057, Revision 9, Version 1 b43-phy2: Loading firmware version 784.2 (2012-08-15 21:35:19) and only as 802.11ABG! while WIFI1 and WIFI2 (both BCM4352) are not: b43-phy0: Broadcom 4352 WLAN found (core revision 42) b43-phy0 ERROR: FOUND UNSUPPORTED PHY (Analog 12, Type 11 (AC), Revision 1) Hardware Highlights: SoC: Broadcom BCM53016A1 (1 GHz, 2 cores) RAM: 128 MiB NAND: 128 MiB Spansion S34ML01G2 (~114 MiB useable) ETH: 1GBit Ethernet Port - PoE WIFI1: Broadcom BCM43520 an+ac (2x2:2 - id: 0x4352) WIFI2: Broadcom BCM43520 bgn (2x2:2 - id: 0x4352) WIFI3: Broadcom BCM43428 abgn (1x1:1 - id: 43428) BLE: Broadcom BCM20732 (ttyS1) LEDS: 1 x Programmable RGB Status LED (driven by a PWM) 1 x White LED (GPIO) 1 x Orange LED Fault Indicator (GPIO) 2 x LAN Activity / Speed LEDs (On the RJ45 Port) BUTTON: one Reset button MISC: AT24C64 8KiB EEPROM (i2c - stores Ethernet MAC + Serial#!) ina219 hardware monitor (i2c) Kensington Lock SERIAL: WARNING: The serial port needs a TTL/RS-232 3V3 level converter! The Serial setting is 115200-8-N-1. The board has a populated right angle 1x4 0.1" pinheader. The pinout is: VCC, RX, TX, GND. (Use a multimeter) Flashing needs a serial adaptor (due to the lack of a working dropbear on the original firmware). This flashing procedure for the MR32 was tested with firmware: "r23-149867:150252-aacharya". 0. Create a seperate Ethernet LAN which does not have access to the internet. Ideally use 192.168.1.2 for your PC. Make sure to reserve 192.168.1.1 it will be used later on by the OpenWrt firmware. The original Meraki firmware will likely try to setup the network via DHCP Discovery, so make sure your PC is running a DHCP-Server (i.e.: dnsmasq) '# dnsmasq -i eth# -F 192.168.1.5,192.168.1.50 Furthermore, the PC needs a supported ssh/http/ftp server in order to retrieve the initramfs + dtb file 1. Disassemble the MR32 device by removing all screws (4 screws are located under the 4 rubber feets!) and prying open the plastic covers without breaking the plastic retention clips. Once inside, remove all the screws on the outer metal shielding to get to the PCB. It's not necessary to remove the antennas! 2. Connect the serial cable to the serial header. 3. Partially reassemble the outer metal shielding to ensure that the SoC has a proper heat sink. 4. Connect the Ethernet patch cable to the device and the power cable. 5. Wait for the device to boot and enter the root shell. (rooting is not discussed in detail here please refer to Chris Blake - "pwning the meraki mr18" blog post: <https://servernetworktech.com/2016/02/pwning-the-meraki-mr18/> (The same method works with the MR32's r23-149867:150252-aacharya) Wait for the MR32 to enter the "<Meraki>" prompt and enter: <Meraki> odm serial_num read (Verify that it matches what's on the S/N Sticker on the back!) <Meraki> odm serial_num write Q2XX-XXXX-XXXV <Meraki> odm serial_num read (Verify that the S/N has changed - and the LED start to flash) now to flash the firmware: <Meraki> odm firmware part.safe "http://192.168.1.2/mr32-initramfs.bin" Once OpenWrt booted use sysupgrade to permanently install OpenWrt. To do this: Download the latest sysupgrade.bin file for the MR32 to the device and use sysupgrade *sysupgrade.bin to install it. WARNING: DO NOT DELETE the "storage" ubi volume! To flash later MR32 Firmwares like r25-201804051805-G885d6d78-dhow-rel requires in-circut-i2c tools to access the I2C EEPROM AT24C64 next to the SoC. The idea is pretty much the same as from Step 5 from above: Change the serial number to Q2XXXXXXXXXV (should be around 0x7c), then attach a serial cable, ethernet (but make sure the device can't reach the internet!) hit "s" (the small s!) during boot to enter the root-shell and add the following commands to the /storage/config there: serial_allow_odm true serial_access_enabled true serial_access_check false valid_config true and then hit exit to let it finish booting. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2020-08-29 21:48:00 +00:00
KERNEL_INITRAMFS := kernel-bin | fit none $$(DTS_DIR)/$$(DEVICE_DTS).dtb | \
pad-to 10362880
KERNEL := kernel-bin | fit none $$(DTS_DIR)/$$(DEVICE_DTS).dtb
IMAGES += sysupgrade.bin
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
bcm53xx: add Cisco Meraki MR32 This patch adds support for Cisco Meraki MR32. The unit was donated by Chris Blake. Thank you! WARNING: Only the 1x1:1 abgn Air Marshal WIPS wifi is currently supported by b43: b43-phy2: Found PHY: Analog 9, Type 4 (N), Revision 16 b43-phy2: Found Radio: Manuf 0x17F, ID 0x2057, Revision 9, Version 1 b43-phy2: Loading firmware version 784.2 (2012-08-15 21:35:19) and only as 802.11ABG! while WIFI1 and WIFI2 (both BCM4352) are not: b43-phy0: Broadcom 4352 WLAN found (core revision 42) b43-phy0 ERROR: FOUND UNSUPPORTED PHY (Analog 12, Type 11 (AC), Revision 1) Hardware Highlights: SoC: Broadcom BCM53016A1 (1 GHz, 2 cores) RAM: 128 MiB NAND: 128 MiB Spansion S34ML01G2 (~114 MiB useable) ETH: 1GBit Ethernet Port - PoE WIFI1: Broadcom BCM43520 an+ac (2x2:2 - id: 0x4352) WIFI2: Broadcom BCM43520 bgn (2x2:2 - id: 0x4352) WIFI3: Broadcom BCM43428 abgn (1x1:1 - id: 43428) BLE: Broadcom BCM20732 (ttyS1) LEDS: 1 x Programmable RGB Status LED (driven by a PWM) 1 x White LED (GPIO) 1 x Orange LED Fault Indicator (GPIO) 2 x LAN Activity / Speed LEDs (On the RJ45 Port) BUTTON: one Reset button MISC: AT24C64 8KiB EEPROM (i2c - stores Ethernet MAC + Serial#!) ina219 hardware monitor (i2c) Kensington Lock SERIAL: WARNING: The serial port needs a TTL/RS-232 3V3 level converter! The Serial setting is 115200-8-N-1. The board has a populated right angle 1x4 0.1" pinheader. The pinout is: VCC, RX, TX, GND. (Use a multimeter) Flashing needs a serial adaptor (due to the lack of a working dropbear on the original firmware). This flashing procedure for the MR32 was tested with firmware: "r23-149867:150252-aacharya". 0. Create a seperate Ethernet LAN which does not have access to the internet. Ideally use 192.168.1.2 for your PC. Make sure to reserve 192.168.1.1 it will be used later on by the OpenWrt firmware. The original Meraki firmware will likely try to setup the network via DHCP Discovery, so make sure your PC is running a DHCP-Server (i.e.: dnsmasq) '# dnsmasq -i eth# -F 192.168.1.5,192.168.1.50 Furthermore, the PC needs a supported ssh/http/ftp server in order to retrieve the initramfs + dtb file 1. Disassemble the MR32 device by removing all screws (4 screws are located under the 4 rubber feets!) and prying open the plastic covers without breaking the plastic retention clips. Once inside, remove all the screws on the outer metal shielding to get to the PCB. It's not necessary to remove the antennas! 2. Connect the serial cable to the serial header. 3. Partially reassemble the outer metal shielding to ensure that the SoC has a proper heat sink. 4. Connect the Ethernet patch cable to the device and the power cable. 5. Wait for the device to boot and enter the root shell. (rooting is not discussed in detail here please refer to Chris Blake - "pwning the meraki mr18" blog post: <https://servernetworktech.com/2016/02/pwning-the-meraki-mr18/> (The same method works with the MR32's r23-149867:150252-aacharya) Wait for the MR32 to enter the "<Meraki>" prompt and enter: <Meraki> odm serial_num read (Verify that it matches what's on the S/N Sticker on the back!) <Meraki> odm serial_num write Q2XX-XXXX-XXXV <Meraki> odm serial_num read (Verify that the S/N has changed - and the LED start to flash) now to flash the firmware: <Meraki> odm firmware part.safe "http://192.168.1.2/mr32-initramfs.bin" Once OpenWrt booted use sysupgrade to permanently install OpenWrt. To do this: Download the latest sysupgrade.bin file for the MR32 to the device and use sysupgrade *sysupgrade.bin to install it. WARNING: DO NOT DELETE the "storage" ubi volume! To flash later MR32 Firmwares like r25-201804051805-G885d6d78-dhow-rel requires in-circut-i2c tools to access the I2C EEPROM AT24C64 next to the SoC. The idea is pretty much the same as from Step 5 from above: Change the serial number to Q2XXXXXXXXXV (should be around 0x7c), then attach a serial cable, ethernet (but make sure the device can't reach the internet!) hit "s" (the small s!) during boot to enter the root-shell and add the following commands to the /storage/config there: serial_allow_odm true serial_access_enabled true serial_access_check false valid_config true and then hit exit to let it finish booting. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2020-08-29 21:48:00 +00:00
# The loader is specifically looking for fdt@2:
# [ 3.190000] find_itb_subimage: error finding fdt@2: FDT_ERR_NOTFOUND
# The image won't boot, if it isn't found. :(
DEVICE_FDT_NUM := 2
endef
TARGET_DEVICES += meraki_mr32
bcm53xx: add support for Cisco Meraki MX64/MX65 This commit adds support for the Cisco Meraki MX64 and MX65 devices which use the Broadcom NSP SoC, which is compatible with the bcm53xx platform. MX64 Hardware info: - CPU: Broadcom BCM58625 Cortex A9 @ 1200Mhz - RAM: 2 GB (4 x 4Gb SK Hynix H5TC4G83CFR) - Storage: 1 GB (Micron MT29F8G08ABACA) - Networking: BCM58625 internal switch (5x 1GbE ports) - USB: 1x USB2.0 - Serial: Internal header MX65 Hardware info: - CPU: Broadcom BCM58625 Cortex A9 @ 1200Mhz - RAM: 2 GB (4 x 4Gb SK Hynix H5TC4G83CFR) - Storage: 1 GB (Micron MT29F8G08ABACA) - Networking: BCM58625 switch (2x 1GbE ports, used for WAN ports 1 & 2) 2x Qualcomm QCA8337 switches (10x 1GbE ports, used for LAN ports 3-12) - PSE: Broadcom BCM59111KMLG connected to LAN ports 11 & 12 - USB: 1x USB2.0 - Serial: Internal header Notes: - The Meraki provided GPL source are available at [2]. - Wireless capability on the MX64W and MX65W exists in the form of 2x Broadcom BCM43520KMLG, which is not supported. These devices will work otherwise as standard MX64 or MX65 devices. - Early MX64 units use an A0 variant of the BCM958625 SoC which lacks cache coherency and uses a different "secondary-boot-reg". As a consequence a different device tree is needed. - Installation of OpenWrt requires changing u-boot to a custom version. This is due to the stock u-boot "nand read" command being limited to load only 2MB, in spite of the bootkernel1 and bootkernel2 partitions both being 3MB in the stock layout. It is also required to allow booting via USB, enabling cache coherency and setting up the QCA switches and Serdes link on the MX65. The modified sources for U-boot are available for the MX64[3] and MX65[4]. - Initial work on this device used a small bootloader within the OEM partition scheme. To allow booting of larger kernels, UBI and bootm support has been added, along with ability to store env variables to the NAND. The Shmoo and newly created env partitions have been moved to the extra space available after the nvram data. - Users who installed the previous non-UBI supporting bootloader will need to convert to the new one before flashing a compatible image. These steps are detailed below. References: [1] https://www.broadcom.com/products/embedded-and-networking-processors/c ommunications/bcm5862x [2] https://dl.meraki.net/wired-14-39-mx64-20190426.tar.bz2 [3] https://github.com/clayface/U-boot-MX64-20190430_MX64 [4] https://github.com/clayface/U-boot-MX64-20190430_MX65 Installation guide: Initial installation steps: 1. Compile or obtain OpenWrt files for the MX64 or MX65, including u-boot[3][4], initramfs and sysupgrade images. 2. A USB disk with DOS partition scheme and primary FAT partition is required. 3. If installing onto an MX64, set up a local web server. 4. On the device, boot into diagnostic mode by holding reset when powering on the device. Continue to hold reset until the orange LED begins to flash white. On used units the white flash may be difficult to see. 5. Plug an Ethernet cable into the first LAN port, set the host to 192.168.1.2 and confirm telnet connectivity to 192.168.1.1. U-boot installation - MX64 Only: 1. Newer fw versions require extra steps to support OpenWrt. To check, please connect via telnet and run: `cat /sys/block/mtdblock0/ro` If the result is 1, your mtd0 is locked will need to perform extra steps 4 and 5 in this section. If the result is 0 then skip these. 2. Check which SoC is in use by running the following command: `devmem 0x18000000` If devmem is not found then try: `devmem2 0x18000000` If the output begins with anything between "0x3F00-0x3F03" you will need to use the A0 release. For any other output, eg "0x3F04" or higher, use the regular MX64 image. 3 Confirm the size of the device's boot(mtd0) partition. In most cases it should be 0x100000 or larger. If this is the case, please proceed to use the uboot_mx64 image. If the reported size is 0x80000, please use the uboot_mx64_small image, then follow the later guide to change to the larger image. `cat /proc/mtd` Example output: `# cat /proc/mtd cat /proc/mtd dev: size erasesize name mtd0: 00100000 00040000 "boot" mtd1: 00080000 00040000 "shmoo" mtd2: 00300000 00040000 "bootkernel1" mtd3: 00100000 00040000 "nvram" mtd4: 00300000 00040000 "bootkernel2" mtd5: 3f700000 00040000 "ubi" mtd6: 40000000 00040000 "all"` 4. Set up a webserver to serve the appropriate uboot_mx64 from the following location and verify the SHA512: https://github.com/clayface/U-boot-MX64-20190430_MX64 5. (Only if mtd0 is locked) You will also need the mtd-rw.ko kernel module to unlock the partition from the same repo. An mtd executable is also needed to write the mtd block. Place these on the web server as well. 6. (Only if mtd0 is locked) Use wget to retrieve the files on the MX64: `wget http://192.168.1.2/mtd-rw.ko` `insmod mtd-rw.ko i_want_a_brick=1` and confirm the unlock is set with dmesg `mtd-rw: mtd0: setting writeable flag` 7. Download the appropriate u-boot image according to step 3. If you did not need to unlock the mtd0 partition then use dd to write the file, with caution: `wget http://192.168.1.2/uboot_mx64` `dd if=uboot_mx64 of=/dev/mtdblock0` If you needed to unlock the mtd0 partition using the mtd-rw module, run these commands instead to install u-boot instead: `wget http://192.168.1.2/mtd` `chmod +x mtd` `wget http://192.168.1.2/uboot_mx64` `./mtd write uboot_mx64 /dev/mtd0` 8. Once this has successfully completed, power off the device. If you did not need to install the small u-boot image, proceed to "OpenWrt Installation". Otherwise proceed to "UBI supporting bootloader installation". U-boot installation - MX65 Only: 1. Obtain telnet access to the MX65. 2. Confirm the size of the device's boot(mtd0) partition. In most cases it should be 0x100000 or larger. If this is the case, please proceed to use the uboot_mx65 image. If the reported size is 0x80000, please use the uboot_mx65_small image, then follow the later guide to change to the larger image. `cat /proc/mtd` 3. Prepare a USB drive formatted to FAT. Download the appropriate uboot_mx65 to the USB drive from the following location and verify the SHA512: https://github.com/clayface/U-boot-MX64-20190430_MX65 3. Once you have telnet access to the MX65, plug in the USB disk and run the following commands, with caution. The USB disk should automount but if it does not, you will need to power off and on again with reset held. Depending on step 2, use the uboot_mx65 or uboot_mx65_small image accordingly: `cd /tmp/media/sda1` `dd if=uboot_mx65 of=/dev/mtdblock0` 4. Once this has successfully completed, power off the device. If you did not need to install the small u-boot image, proceed to "OpenWrt Installation". Otherwise proceed to "UBI supporting bootloader installation". UBI supporting bootloader installation: These steps need to be followed if the older u-boot image was installed, either because the Meraki diagnostic partition scheme used 0x80000 as the mtd0 size, or because you installed the u-boot provided while OpenWrt support was still under development. If using OpenWrt, please make a backup before proceeding. 1. Obtain the relevant image from the MX64(A0) or MX65 u-boot repo: `openwrt-bcm5862x-generic-meraki_XXXX-initramfs-kernel.bin` 2. With the USB drive already inserted, power on the device while holding the reset button. A white/orange flashing pattern will occur shortly after power on. Let go of the reset button. The device is now booting into OpenWrt initramfs stored on the USB disk. 3. Connect by SSH to 192.168.1.1 and flash the embedded u-boot image, changing X as appropriate: `mtd write /root/uboot_mx6X /dev/mtd0` You do not need to reboot as this image can handle "Kernel-in-UBI" OpenWrt installation. 4. You can proceed to obtain and flash the appropriate OpenWrt image at "OpenWrt Installation" Step 3. 5. Reboot will take significantly longer due to Shmoo calibration. In case the device does not come online after several minute, power- cycle the device and see if it boots. If you see an orange/white flashing pattern, this indicates UBI booting was not successful and you will need to copy a new bcm53xx image to a USB disk before booting it and attempting to install OpenWrt again - refer to "OpenWrt Installation" step 1. Do not attempt to reflash u-boot in this scenario. OpenWrt Installation: 1. Having obtained an OpenWrt image, please copy the file `openwrt-bcm53xx-generic-meraki_XXXX-initramfs.bin` to the base directory of a FAT formatted USB drive using DOS partition scheme ,where XXXX is mx64, mx64_a0 or mx65 depending on which device you have. 2. With the USB drive already inserted, power on the device. Boot time will be longer than usual while Shmoo calibration takes place. A different white/orange flashing pattern will eventually occur to indicate device is now booting into OpenWrt initramfs stored on the USB disk. 3. Ensuring Ethernet is plugged into a LAN port with IP set in the 192.168.1.0/24 subnet excluding 192.168.1.1, use SCP to copy the sysupgrade file to 192.168.1.1:/tmp, eg: `scp openwrt-bcm53xx-generic-meraki_XXXX-squashfs.sysupgrade.bin\ 192.168.1.1:/tmp` 4. Connect by SSH to 192.168.1.1 and run sysupgrade: `sysupgrade \ /tmp/openwrt-bcm53xx-generic-meraki_XXXX-squashfs.sysupgrade.bin` 5. OpenWrt should now be installed on the device. Signed-off-by: Matthew Hagan <mnhagan88@gmail.com> [ Rebase kernel configuration for 6.6, fix failsafe by making kmod-eeprom-at24 and kmod-dsa-qca8k built-in, resolve conflicts, add LED aliases, fix eth0 MAC address at probe ] TODO: - fix multiple LED colors not applied despite aliases - due to custom /etc/diag.sh - fix race condition between preinit and probing of the DSA tree, causing no network interface available in failsafe mode (in general case - to allow moving drivers back to modules) Signed-off-by: Lech Perczak <lech.perczak@gmail.com> Link: https://github.com/openwrt/openwrt/pull/16634 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2021-09-06 22:42:35 +00:00
define Device/meraki_mx6x
KERNEL_IN_UBI := 1
KERNEL_LOADADDR := 0x60008000
DEVICE_PACKAGES := -oseama kmod-leds-pwm kmod-usb-ehci \
kmod-usb-ohci kmod-usb2
bcm53xx: add support for Cisco Meraki MX64/MX65 This commit adds support for the Cisco Meraki MX64 and MX65 devices which use the Broadcom NSP SoC, which is compatible with the bcm53xx platform. MX64 Hardware info: - CPU: Broadcom BCM58625 Cortex A9 @ 1200Mhz - RAM: 2 GB (4 x 4Gb SK Hynix H5TC4G83CFR) - Storage: 1 GB (Micron MT29F8G08ABACA) - Networking: BCM58625 internal switch (5x 1GbE ports) - USB: 1x USB2.0 - Serial: Internal header MX65 Hardware info: - CPU: Broadcom BCM58625 Cortex A9 @ 1200Mhz - RAM: 2 GB (4 x 4Gb SK Hynix H5TC4G83CFR) - Storage: 1 GB (Micron MT29F8G08ABACA) - Networking: BCM58625 switch (2x 1GbE ports, used for WAN ports 1 & 2) 2x Qualcomm QCA8337 switches (10x 1GbE ports, used for LAN ports 3-12) - PSE: Broadcom BCM59111KMLG connected to LAN ports 11 & 12 - USB: 1x USB2.0 - Serial: Internal header Notes: - The Meraki provided GPL source are available at [2]. - Wireless capability on the MX64W and MX65W exists in the form of 2x Broadcom BCM43520KMLG, which is not supported. These devices will work otherwise as standard MX64 or MX65 devices. - Early MX64 units use an A0 variant of the BCM958625 SoC which lacks cache coherency and uses a different "secondary-boot-reg". As a consequence a different device tree is needed. - Installation of OpenWrt requires changing u-boot to a custom version. This is due to the stock u-boot "nand read" command being limited to load only 2MB, in spite of the bootkernel1 and bootkernel2 partitions both being 3MB in the stock layout. It is also required to allow booting via USB, enabling cache coherency and setting up the QCA switches and Serdes link on the MX65. The modified sources for U-boot are available for the MX64[3] and MX65[4]. - Initial work on this device used a small bootloader within the OEM partition scheme. To allow booting of larger kernels, UBI and bootm support has been added, along with ability to store env variables to the NAND. The Shmoo and newly created env partitions have been moved to the extra space available after the nvram data. - Users who installed the previous non-UBI supporting bootloader will need to convert to the new one before flashing a compatible image. These steps are detailed below. References: [1] https://www.broadcom.com/products/embedded-and-networking-processors/c ommunications/bcm5862x [2] https://dl.meraki.net/wired-14-39-mx64-20190426.tar.bz2 [3] https://github.com/clayface/U-boot-MX64-20190430_MX64 [4] https://github.com/clayface/U-boot-MX64-20190430_MX65 Installation guide: Initial installation steps: 1. Compile or obtain OpenWrt files for the MX64 or MX65, including u-boot[3][4], initramfs and sysupgrade images. 2. A USB disk with DOS partition scheme and primary FAT partition is required. 3. If installing onto an MX64, set up a local web server. 4. On the device, boot into diagnostic mode by holding reset when powering on the device. Continue to hold reset until the orange LED begins to flash white. On used units the white flash may be difficult to see. 5. Plug an Ethernet cable into the first LAN port, set the host to 192.168.1.2 and confirm telnet connectivity to 192.168.1.1. U-boot installation - MX64 Only: 1. Newer fw versions require extra steps to support OpenWrt. To check, please connect via telnet and run: `cat /sys/block/mtdblock0/ro` If the result is 1, your mtd0 is locked will need to perform extra steps 4 and 5 in this section. If the result is 0 then skip these. 2. Check which SoC is in use by running the following command: `devmem 0x18000000` If devmem is not found then try: `devmem2 0x18000000` If the output begins with anything between "0x3F00-0x3F03" you will need to use the A0 release. For any other output, eg "0x3F04" or higher, use the regular MX64 image. 3 Confirm the size of the device's boot(mtd0) partition. In most cases it should be 0x100000 or larger. If this is the case, please proceed to use the uboot_mx64 image. If the reported size is 0x80000, please use the uboot_mx64_small image, then follow the later guide to change to the larger image. `cat /proc/mtd` Example output: `# cat /proc/mtd cat /proc/mtd dev: size erasesize name mtd0: 00100000 00040000 "boot" mtd1: 00080000 00040000 "shmoo" mtd2: 00300000 00040000 "bootkernel1" mtd3: 00100000 00040000 "nvram" mtd4: 00300000 00040000 "bootkernel2" mtd5: 3f700000 00040000 "ubi" mtd6: 40000000 00040000 "all"` 4. Set up a webserver to serve the appropriate uboot_mx64 from the following location and verify the SHA512: https://github.com/clayface/U-boot-MX64-20190430_MX64 5. (Only if mtd0 is locked) You will also need the mtd-rw.ko kernel module to unlock the partition from the same repo. An mtd executable is also needed to write the mtd block. Place these on the web server as well. 6. (Only if mtd0 is locked) Use wget to retrieve the files on the MX64: `wget http://192.168.1.2/mtd-rw.ko` `insmod mtd-rw.ko i_want_a_brick=1` and confirm the unlock is set with dmesg `mtd-rw: mtd0: setting writeable flag` 7. Download the appropriate u-boot image according to step 3. If you did not need to unlock the mtd0 partition then use dd to write the file, with caution: `wget http://192.168.1.2/uboot_mx64` `dd if=uboot_mx64 of=/dev/mtdblock0` If you needed to unlock the mtd0 partition using the mtd-rw module, run these commands instead to install u-boot instead: `wget http://192.168.1.2/mtd` `chmod +x mtd` `wget http://192.168.1.2/uboot_mx64` `./mtd write uboot_mx64 /dev/mtd0` 8. Once this has successfully completed, power off the device. If you did not need to install the small u-boot image, proceed to "OpenWrt Installation". Otherwise proceed to "UBI supporting bootloader installation". U-boot installation - MX65 Only: 1. Obtain telnet access to the MX65. 2. Confirm the size of the device's boot(mtd0) partition. In most cases it should be 0x100000 or larger. If this is the case, please proceed to use the uboot_mx65 image. If the reported size is 0x80000, please use the uboot_mx65_small image, then follow the later guide to change to the larger image. `cat /proc/mtd` 3. Prepare a USB drive formatted to FAT. Download the appropriate uboot_mx65 to the USB drive from the following location and verify the SHA512: https://github.com/clayface/U-boot-MX64-20190430_MX65 3. Once you have telnet access to the MX65, plug in the USB disk and run the following commands, with caution. The USB disk should automount but if it does not, you will need to power off and on again with reset held. Depending on step 2, use the uboot_mx65 or uboot_mx65_small image accordingly: `cd /tmp/media/sda1` `dd if=uboot_mx65 of=/dev/mtdblock0` 4. Once this has successfully completed, power off the device. If you did not need to install the small u-boot image, proceed to "OpenWrt Installation". Otherwise proceed to "UBI supporting bootloader installation". UBI supporting bootloader installation: These steps need to be followed if the older u-boot image was installed, either because the Meraki diagnostic partition scheme used 0x80000 as the mtd0 size, or because you installed the u-boot provided while OpenWrt support was still under development. If using OpenWrt, please make a backup before proceeding. 1. Obtain the relevant image from the MX64(A0) or MX65 u-boot repo: `openwrt-bcm5862x-generic-meraki_XXXX-initramfs-kernel.bin` 2. With the USB drive already inserted, power on the device while holding the reset button. A white/orange flashing pattern will occur shortly after power on. Let go of the reset button. The device is now booting into OpenWrt initramfs stored on the USB disk. 3. Connect by SSH to 192.168.1.1 and flash the embedded u-boot image, changing X as appropriate: `mtd write /root/uboot_mx6X /dev/mtd0` You do not need to reboot as this image can handle "Kernel-in-UBI" OpenWrt installation. 4. You can proceed to obtain and flash the appropriate OpenWrt image at "OpenWrt Installation" Step 3. 5. Reboot will take significantly longer due to Shmoo calibration. In case the device does not come online after several minute, power- cycle the device and see if it boots. If you see an orange/white flashing pattern, this indicates UBI booting was not successful and you will need to copy a new bcm53xx image to a USB disk before booting it and attempting to install OpenWrt again - refer to "OpenWrt Installation" step 1. Do not attempt to reflash u-boot in this scenario. OpenWrt Installation: 1. Having obtained an OpenWrt image, please copy the file `openwrt-bcm53xx-generic-meraki_XXXX-initramfs.bin` to the base directory of a FAT formatted USB drive using DOS partition scheme ,where XXXX is mx64, mx64_a0 or mx65 depending on which device you have. 2. With the USB drive already inserted, power on the device. Boot time will be longer than usual while Shmoo calibration takes place. A different white/orange flashing pattern will eventually occur to indicate device is now booting into OpenWrt initramfs stored on the USB disk. 3. Ensuring Ethernet is plugged into a LAN port with IP set in the 192.168.1.0/24 subnet excluding 192.168.1.1, use SCP to copy the sysupgrade file to 192.168.1.1:/tmp, eg: `scp openwrt-bcm53xx-generic-meraki_XXXX-squashfs.sysupgrade.bin\ 192.168.1.1:/tmp` 4. Connect by SSH to 192.168.1.1 and run sysupgrade: `sysupgrade \ /tmp/openwrt-bcm53xx-generic-meraki_XXXX-squashfs.sysupgrade.bin` 5. OpenWrt should now be installed on the device. Signed-off-by: Matthew Hagan <mnhagan88@gmail.com> [ Rebase kernel configuration for 6.6, fix failsafe by making kmod-eeprom-at24 and kmod-dsa-qca8k built-in, resolve conflicts, add LED aliases, fix eth0 MAC address at probe ] TODO: - fix multiple LED colors not applied despite aliases - due to custom /etc/diag.sh - fix race condition between preinit and probing of the DSA tree, causing no network interface available in failsafe mode (in general case - to allow moving drivers back to modules) Signed-off-by: Lech Perczak <lech.perczak@gmail.com> Link: https://github.com/openwrt/openwrt/pull/16634 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2021-09-06 22:42:35 +00:00
DEVICE_VENDOR := Cisco Meraki
KERNEL = kernel-bin | gzip | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb
KERNEL_INITRAMFS := kernel-bin | gzip | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb
KERNEL_INITRAMFS_SUFFIX := .bin
IMAGES := sysupgrade.bin
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
endef
define Device/meraki_mx64
$(call Device/meraki_mx6x)
DEVICE_MODEL := MX64
DEVICE_DTS_CONFIG := config@4
DEVICE_DTS := bcm958625-meraki-mx64
endef
TARGET_DEVICES += meraki_mx64
define Device/meraki_mx64_a0
$(call Device/meraki_mx64)
DEVICE_VARIANT := A0
DEVICE_DTS_CONFIG := config@2
DEVICE_DTS := bcm958625-meraki-mx64-a0
endef
TARGET_DEVICES += meraki_mx64_a0
define Device/meraki_mx65
$(call Device/meraki_mx6x)
DEVICE_MODEL := MX65
DEVICE_DTS_CONFIG := config@3
DEVICE_DTS := bcm958625-meraki-mx65
endef
TARGET_DEVICES += meraki_mx65
define Device/netgear
DEVICE_VENDOR := NETGEAR
IMAGES := chk
IMAGE/chk := append-ubi | trx-nand | netgear-chk
NETGEAR_REGION := 1
endef
define Device/netgear_r6250
DEVICE_MODEL := R6250
DEVICE_PACKAGES := $(B43) $(USB3_PACKAGES)
$(Device/netgear)
NETGEAR_BOARD_ID := U12H245T00_NETGEAR
endef
TARGET_DEVICES += netgear_r6250
define Device/netgear_r6300-v2
DEVICE_MODEL := R6300
DEVICE_VARIANT := v2
DEVICE_PACKAGES := $(B43) $(USB3_PACKAGES)
$(Device/netgear)
NETGEAR_BOARD_ID := U12H240T00_NETGEAR
endef
TARGET_DEVICES += netgear_r6300-v2
define Device/netgear_r7000
DEVICE_MODEL := R7000
DEVICE_PACKAGES := $(USB3_PACKAGES)
$(Device/netgear)
NETGEAR_BOARD_ID := U12H270T00_NETGEAR
endef
TARGET_DEVICES += netgear_r7000
define Device/netgear_r7900
DEVICE_MODEL := R7900
DEVICE_PACKAGES := $(BRCMFMAC_43602A1) $(USB3_PACKAGES)
$(Device/netgear)
NETGEAR_BOARD_ID := U12H315T30_NETGEAR
endef
TARGET_DEVICES += netgear_r7900
define Device/netgear_r8000
DEVICE_MODEL := R8000
DEVICE_PACKAGES := $(BRCMFMAC_43602A1) $(USB3_PACKAGES)
$(Device/netgear)
NETGEAR_BOARD_ID := U12H315T00_NETGEAR
endef
TARGET_DEVICES += netgear_r8000
define Device/netgear_r8500
DEVICE_MODEL := R8500
DEVICE_PACKAGES := $(BRCMFMAC_4366B1) $(USB3_PACKAGES)
$(Device/netgear)
NETGEAR_BOARD_ID := U12H334T00_NETGEAR
DEFAULT := n
endef
TARGET_DEVICES += netgear_r8500
define Device/smartrg_sr400ac
DEVICE_VENDOR := SmartRG
DEVICE_MODEL := SR400ac
DEVICE_PACKAGES := $(BRCMFMAC_43602A1) $(USB3_PACKAGES)
IMAGES := trx
IMAGE/trx := append-rootfs | trx-serial
KERNEL_INITRAMFS_SUFFIX := .bin
KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma-d16
endef
TARGET_DEVICES += smartrg_sr400ac
define Device/phicomm_k3
DEVICE_VENDOR := PHICOMM
DEVICE_MODEL := K3
DEVICE_ALT0_VENDOR := Wavlink
DEVICE_ALT0_MODEL := QUANTUM DAX
DEVICE_ALT1_VENDOR := Wavlink
DEVICE_ALT1_MODEL := WL-WN538A8
DEVICE_PACKAGES := $(BRCMFMAC_4366C0) $(USB3_PACKAGES)
IMAGES := trx
endef
TARGET_DEVICES += phicomm_k3
define Device/tenda_ac9
DEVICE_VENDOR := Tenda
DEVICE_MODEL := AC9
DEVICE_PACKAGES := $(B43) $(USB2_PACKAGES)
IMAGES := trx
IMAGE/trx := append-rootfs | trx-serial
endef
TARGET_DEVICES += tenda_ac9
define Device/tplink_archer-c5-v2
DEVICE_VENDOR := TP-Link
DEVICE_MODEL := Archer C5
DEVICE_VARIANT := v2
DEVICE_PACKAGES := $(B43) $(USB2_PACKAGES)
IMAGES := bin
IMAGE/bin := append-rootfs | bcm53xx-tplink-safeloader
TPLINK_BOARD := ARCHER-C5-V2
BROKEN := y
endef
#TARGET_DEVICES += tplink_archer-c5-v2
define Device/tplink_archer-c9-v1
DEVICE_VENDOR := TP-Link
DEVICE_MODEL := Archer C9
DEVICE_VARIANT := v1
DEVICE_PACKAGES := $(USB3_PACKAGES)
IMAGES := bin
IMAGE/bin := append-rootfs | bcm53xx-tplink-safeloader
TPLINK_BOARD := ARCHERC9
BROKEN := y
endef
#TARGET_DEVICES += tplink_archer-c9-v1
$(eval $(call BuildImage))