Meraki brumby is the codename for the Broadcom Hurricane3 based MS225 (and MS210?) switches.
The MS225 switches use a completely different ASIC (Broadcom BCM56160; ARM Cortex A9 softfloat) to the MS220 series (Vitesse VSC74xx), and as such are completely incompatible with the current firmware.
Background
Broadcom-based switches use two kernel modules to manage the switch ASIC:
linux_kernel_bde
linux_user_bde
From what I've been able to gather, the OEM is expected to implement the switching engine in userspace, using the OpenNSA API. Don't let the name fool you though, while there is "open" in the name, API documentation appears to only be available under NDA from Broadcom.
On the MS225, the switching engine is implemented via /usr/lib/bcm_click.uo however I don't currently understand how this is invoked by the Meraki firmware. Here's the Meraki firmware output on the console during/after the Broadcom kernel modules are loaded:
[ 17.224289] boot 26 build switch-12-202008242327-G4db7ce45-rel-zoology board switch-arm mac 0C:8D:DB:XX:XX:XX
[ 17.591853] Module: amc6821 .text=0x3f020000 .data=0x3f021644 .bss=0x3f021b50
[ 17.591853] Module: linux_kernel_bde .text=0x3f026000 .data=0x3f02cb70 .bss=0x3f02fa2c
[ 17.591853] Module: linux_user_bde .text=0x3f039000 .data=0x3f03d47c .bss=0x3f03d740
[ 17.813024] RUNIT: not installed
[ 20.975146] OK
[ 20.977529] Starting ciscotamservices
[ 38.704173] !!!!! {/usr/bin/switch_brain} opening /click/sw0_ctrl/mac_temp failed: No such file or directory
[ 38.730404] !!!!! {/usr/bin/switch_brain} opening /click/sw0_ctrl/mac_temp failed: No such file or directory
[ 38.751169] !!!!! {/usr/bin/switch_brain} opening /click/switch_port_table/dump_stack_info_and_reset_stack_change failed: No such file or directory
[ 40.953426] DMA pool size: 33554432
[ 42.260552] AXI unit 0: Dev 0xb160, Rev 0x11, Chip BCM56160_B0, Driver BCM56160_A0
[ 42.280076] PCI unit 1: Dev 0xb160, Rev 0x11, Chip BCM56160_B0, Driver BCM56160_A0
[ 42.320164] SOC unit 0 attached to PCI device BCM56160_B0
[ 46.844638] Firmware download success
[ 46.930777] Error Gp3:0 app:8805--:40
[ 47.018989] Error Gp3:8885 app:8805--:41
[ 47.600162] SOC unit 1 attached to PCI device BCM56160_B0
[ 50.507499] Broadcom Command Monitor: Copyright (c) 1998-2020 Broadcom
[ 50.520408] Release: sdk-6.5.12 built 20200825 (Tue Aug 25 01:53:37 2020)
[ 50.533465] From jenkins@dal248.meraki.com:/mnt/jenkins/workspace/router/prod-signing/switch-12-4/base/build_switch-arm/bcm-switch
[ 50.557298] Platform: MERAKI_SWITCH_ARM
[ 50.570308] OS: Unix (Posix)
[ 51.140154] Stacking initialized
[ 51.820205] Stack attach callback
[ 51.823954] Unit 0 (attaching) is: 0C:8D:DB:XX:XX:XX
[ 51.828910] Stack attach callback
[ 51.840110] Unit 1 (attaching) is: 0C:8D:DB:XX:XX:XX
[ 51.845103] STACK: master on c:8d:db:xx:xx:xx (1 cpu, 2 units)
[ 51.860077] STACK: attach 2 units on 1 cpu
[ 52.191668] sw0_ctrl :: BroadcomSwitchController Stack topology changed but list of stack members didn't.
Current status
The u-boot configuration has been modified to allow for interrupting default the boot sequence and booting via tftp.
A minimal buildroot firmware exists, however the device is not functional as a switch as the userspace switching engine initialization method is unknown, bcm_click.uo in the Meraki firmware is dynamically linked to other libraries, and there is no public documentation available from Broadcom on the OpenNSA API.
tl;dr the MS225 boots but is useless as a switch as the ASIC is unmanaged 😒
The Brocade ICX7150 appears to be based on the same ASIC, however they have not yet released the GPL source code for this model (a request has been sent).
Summary
Meraki
brumby
is the codename for the Broadcom Hurricane3 based MS225 (and MS210?) switches.The MS225 switches use a completely different ASIC (Broadcom BCM56160; ARM Cortex A9 softfloat) to the MS220 series (Vitesse VSC74xx), and as such are completely incompatible with the current firmware.
Background
Broadcom-based switches use two kernel modules to manage the switch ASIC:
linux_kernel_bde
linux_user_bde
From what I've been able to gather, the OEM is expected to implement the switching engine in userspace, using the OpenNSA API. Don't let the name fool you though, while there is "open" in the name, API documentation appears to only be available under NDA from Broadcom.
On the MS225, the switching engine is implemented via
/usr/lib/bcm_click.uo
however I don't currently understand how this is invoked by the Meraki firmware. Here's the Meraki firmware output on the console during/after the Broadcom kernel modules are loaded:Current status
The
u-boot
configuration has been modified to allow for interrupting default the boot sequence and booting via tftp.A minimal buildroot firmware exists, however the device is not functional as a switch as the userspace switching engine initialization method is unknown,
bcm_click.uo
in the Meraki firmware is dynamically linked to other libraries, and there is no public documentation available from Broadcom on the OpenNSA API.tl;dr the MS225 boots but is useless as a switch as the ASIC is unmanaged 😒
Hardware info
Related hardware
The Brocade ICX7150 appears to be based on the same ASIC, however they have not yet released the GPL source code for this model (a request has been sent).
Unrelated hardware
The Ubiquiti Switch Pro Aggregation is based on the Broadcom 56170. The GPL source code can be found in the usw-pro-aggregation repository.