aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm53xx/base-files
diff options
context:
space:
mode:
authorChristian Lamparter <chunkeey@gmail.com>2022-06-10 22:22:39 +0200
committerChristian Lamparter <chunkeey@gmail.com>2022-07-15 15:21:44 +0200
commite37ba80633c30ff179df92e8826ba52ff00b2a66 (patch)
treed2e1347bb9311245b0d1e830e14a880bcf556b09 /target/linux/bcm53xx/base-files
parentbe1761fa1488419244d05b4b1b28f57735d490bd (diff)
downloadupstream-e37ba80633c30ff179df92e8826ba52ff00b2a66.tar.gz
upstream-e37ba80633c30ff179df92e8826ba52ff00b2a66.tar.bz2
upstream-e37ba80633c30ff179df92e8826ba52ff00b2a66.zip
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>
Diffstat (limited to 'target/linux/bcm53xx/base-files')
-rw-r--r--target/linux/bcm53xx/base-files/etc/board.d/02_network6
-rw-r--r--target/linux/bcm53xx/base-files/etc/hotplug.d/ieee80211/10-fix-mac-address18
-rw-r--r--target/linux/bcm53xx/base-files/lib/upgrade/platform.sh15
3 files changed, 34 insertions, 5 deletions
diff --git a/target/linux/bcm53xx/base-files/etc/board.d/02_network b/target/linux/bcm53xx/base-files/etc/board.d/02_network
index 822320c0a6..c2e5afc5ed 100644
--- a/target/linux/bcm53xx/base-files/etc/board.d/02_network
+++ b/target/linux/bcm53xx/base-files/etc/board.d/02_network
@@ -22,6 +22,7 @@ bcm53xx_setup_interfaces()
luxul,xap-1610-v1)
ucidef_set_interface_lan "poe lan" "dhcp"
;;
+ meraki,mr26 | \
meraki,mr32)
ucidef_set_interface_lan "poe" "dhcp"
;;
@@ -58,6 +59,11 @@ bcm53xx_setup_macs()
etXmacaddr=$(nvram get et0macaddr)
offset=5
;;
+ meraki,mr26)
+ label_mac="$(mtd_get_mac_binary_ubi board-config 0x66)"
+ ucidef_set_interface_macaddr "lan" "$label_mac"
+ ucidef_set_label_macaddr "$label_mac"
+ ;;
*)
etXmacaddr=$(nvram get et0macaddr)
offset=1
diff --git a/target/linux/bcm53xx/base-files/etc/hotplug.d/ieee80211/10-fix-mac-address b/target/linux/bcm53xx/base-files/etc/hotplug.d/ieee80211/10-fix-mac-address
new file mode 100644
index 0000000000..c1c56a10f3
--- /dev/null
+++ b/target/linux/bcm53xx/base-files/etc/hotplug.d/ieee80211/10-fix-mac-address
@@ -0,0 +1,18 @@
+#!/bin/ash
+
+[ "$ACTION" = "add" ] || exit 0
+
+PHYNBR=${DEVPATH##*/phy}
+
+[ -n $PHYNBR ] || exit 0
+
+. /lib/functions.sh
+. /lib/functions/system.sh
+
+board=$(board_name)
+
+case "$board" in
+meraki,mr26)
+ macaddr_add "$(macaddr_setbit_la $(mtd_get_mac_binary_ubi 'board-config' 0x66))" $(($PHYNBR * 8 + 1)) > /sys${DEVPATH}/macaddress
+ ;;
+esac
diff --git a/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh b/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh
index 62a36dac49..3ebde77d3f 100644
--- a/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh
@@ -193,12 +193,16 @@ platform_other_check_image() {
}
platform_check_image() {
- case "$(board_name)" in
+ local board
+
+ board="$(board_name)"
+ case "$board" in
+ # Ideally, REQUIRE_IMAGE_METADATA=1 would suffice
+ # but this would require converting all other
+ # devices too.
+ meraki,mr26 | \
meraki,mr32)
- # Ideally, REQUIRE_IMAGE_METADATA=1 would suffice
- # but this would require converting all other
- # devices too.
- nand_do_platform_check meraki-mr32 "$1"
+ nand_do_platform_check "${board//,/_}" "$1"
return $?
;;
*)
@@ -394,6 +398,7 @@ platform_other_do_upgrade() {
platform_do_upgrade() {
case "$(board_name)" in
+ meraki,mr26 | \
meraki,mr32)
CI_KERNPART="part.safe"
nand_do_upgrade "$1"