Meraki MR34 - porting OpenWrt

I have two MR34 that were recently removed from a working Meraki environment, and I'm looking to get OpenWRT running on them. I have very little dev experience, unfortunately, but I'd like to try. Here's what I know so far.

Hardware information:
CPU: Freescale P1022NSE2LFB 1067/667 MHz (32-bit dual-core SoC @ 1Ghz)
Large Wifi card: BCM3460KML 0
Small Wifi card: BCM3431KML G
Onboard Wifi: BCM3428KML G

Reverse side
Toshiba 123082 Flash 13389AE 3
BCM54612E Ethernet controller
Nanya 1321 N15CB64M16FP DH (x2) - total of 256M RAM

I have a console running on CONN4 (115200, 3.3, TR, RX, GND)

Boot log with stock firmware:

NAND boot... transfering control


U-Boot 2011.12-00323-gd8ab75a-dirty (Aug 01 2013 - 13:07:36)

CPU0:  P1022E, Version: 1.1, (0x80ee0011)
Core:  E500, Version: 5.1, (0x80211151)
Clock Configuration:
       CPU0:1066.667 MHz, CPU1:1066.667 MHz, 
       CCB:533.333 MHz,
       DDR:333.333 MHz (666.667 MT/s data rate) (Asynchronous), LBC:66.667 MHz
L1:    D-cache 32 kB enabled
       I-cache 32 kB enabled
Board: Meraki TOPAZ Sys ID: 0xfd, Sys Ver: 0xfd, FPGA Ver: 0xfd, Promjet
I2C:   ready
DRAM:  256 MiB (DDR3, 32-bit, CL=6, ECC off)
L2:    256 KB enabled
NAND:  128 MiB
MMC:  FSL_SDHC: 0
Bad block table found at page 65472, version 0x01
Bad block table found at page 65408, version 0x01
*** Warning - bad CRC, using default environment

EEPROM: Read failed.
PCIe1: Root Complex of Slot 1, x1, regs @ 0xffe0a000
  01:00.0     - 14e4:43a2 - Network controller
PCIe1: Bus 00 - 01
PCIe2: Root Complex of Slot 3, x1, regs @ 0xffe09000
  03:00.0     - 14e4:a8dc - Network controller
PCIe2: Bus 02 - 03
PCIe3: Root Complex of Slot 2, x1, regs @ 0xffe0b000
  05:00.0     - 14e4:4331 - Network controller
PCIe3: Bus 04 - 05
In:    serial
Out:   serial
Err:   serial
Net:   eTSEC1
Hit any key to stop autoboot:  1  0 

NAND read: device 0 offset 0x100000, size 0x1000
 4096 bytes read: OK
Creating 1 MTD partitions on "nand0":
0x000000200000-0x000008000000 : "mtd=2"
UBI: attaching mtd1 to ubi0
UBI: physical eraseblock size:   131072 bytes (128 KiB)
UBI: logical eraseblock size:    129024 bytes
UBI: smallest flash I/O unit:    2048
UBI: sub-page size:              512
UBI: VID header offset:          512 (aligned 512)
UBI: data offset:                2048
UBI: attached mtd1 to ubi0
UBI: MTD device name:            "mtd=2"
UBI: MTD device size:            126 MiB
UBI: number of good PEBs:        1004
UBI: number of bad PEBs:         4
UBI: max. allowed volumes:       128
UBI: wear-leveling threshold:    4096
UBI: number of internal volumes: 1
UBI: number of user volumes:     4
UBI: available PEBs:             661
UBI: total number of reserved PEBs: 343
UBI: number of PEBs reserved for bad PEB handling: 10
UBI: max/mean erase counter: 2478/2386
Read 0 bytes from volume part1 to 00c00000
No size specified -> Using max size (16902144)
## Booting kernel from Legacy Image at 00c10000 ...
   Image Name:   Linux-3.4.113
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:    1783072 Bytes = 1.7 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 01000000 ...
   Image Name:   Simple Ramdisk Image
   Image Type:   PowerPC Linux RAMDisk Image (lzma compressed)
   Data Size:    7649255 Bytes = 7.3 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 00c00400
   Booting using the fdt blob at 0x00c00400
   Uncompressing Kernel Image ... OK
   Loading Ramdisk to 0ecb2000, end 0f3fd7e7 ... OK
   Loading Device Tree to 03ffa000, end 03fff194 ... OK
[    0.000000] Using Topaz machine description
[    0.000000] Memory CAM mapping: 64/64/64/16/16/16/4/4/4/1 Mb, residual: 2Mb
[    0.000000] Linux version 3.4.113 (jenkins@dal247.meraki.com) (gcc version 4.8.3 (GCC) ) #4 SMP Fri Sep 28 17:21:43 PDT 2018
[    0.000000] Found initrd at 0xcecb2000:0xcf3fd7e7
[    0.000000] CPU maps initialized for 1 thread per core
[    0.000000] bootconsole [udbg0] enabled
setup_arch: bootmem
topaz_setup_arch()
[    0.000000] Found FSL PCI host bridge at 0x00000000ffe09000. Firmware bus number: 0->255
[    0.000000] PCI host bridge /pcie@ffe09000  ranges:
[    0.000000]  MEM 0x00000000a0000000..0x00000000bfffffff -> 0x00000000a0000000 
[    0.000000]   IO 0x00000000ffc10000..0x00000000ffc1ffff -> 0x0000000000000000
[    0.000000] /pcie@ffe09000: PCICSRBAR @ 0xfff00000
[    0.000000] Found FSL PCI host bridge at 0x00000000ffe0a000. Firmware bus number: 0->255
[    0.000000] PCI host bridge /pcie@ffe0a000  ranges:
[    0.000000]  MEM 0x00000000c0000000..0x00000000dfffffff -> 0x00000000c0000000 
[    0.000000]   IO 0x00000000ffc20000..0x00000000ffc2ffff -> 0x0000000000000000
[    0.000000] /pcie@ffe0a000: PCICSRBAR @ 0xfff00000
[    0.000000] Found FSL PCI host bridge at 0x00000000ffe0b000. Firmware bus number: 0->255
[    0.000000] PCI host bridge /pcie@ffe0b000  ranges:
[    0.000000]  MEM 0x0000000080000000..0x000000009fffffff -> 0x0000000080000000 
[    0.000000]   IO 0x00000000ffc00000..0x00000000ffc0ffff -> 0x0000000000000000
[    0.000000] /pcie@ffe0b000: PCICSRBAR @ 0xfff00000
[    0.000000] Freescale P1022 DS reference board
arch: exit
[    0.000000] Zone PFN ranges:
[    0.000000]   DMA      0x00000000 -> 0x0000fd00
[    0.000000]   Normal   empty
[    0.000000] Movable zone start PFN for each node
[    0.000000] Early memory PFN ranges
[    0.000000]     0: 0x00000000 -> 0x0000fd00
[    0.000000] MMU: Allocated 1088 bytes of context maps for 255 contexts
[    0.000000] PERCPU: Embedded 7 pages/cpu @c05a3000 s6336 r8192 d14144 u32768
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 64262
[    0.000000] Kernel command line: root=/dev/ram console=ttyS0,115200 ubi.mtd=ubi MERAKI_BOARD=topaz mtdoops.mtddev=oops mem=255M
[    0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Memory: 245452k/259072k available (3300k kernel code, 13620k reserved, 196k data, 203k bss, 152k init)
[    0.000000] Kernel virtual memory layout:
[    0.000000]   * 0xfffdf000..0xfffff000  : fixmap
[    0.000000]   * 0xfdfc8000..0xfe000000  : early ioremap
[    0.000000]   * 0xd0000000..0xfdfc8000  : vmalloc & ioremap
[    0.000000] SLUB: Genslabs=15, HWalign=32, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:512 nr_irqs:512 16
[    0.000000] mpic: Setting up MPIC " OpenPIC  " version 1.2 at ffe40000, max 2 CPUs
[    0.000000] mpic: ISU size: 256, shift: 8, mask: ff
[    0.000000] mpic: Initializing for 256 sources
[    0.000000] clocksource: timebase mult[f000003] shift[24] registered
[    0.006288] pid_max: default: 32768 minimum: 301
[    0.010981] Mount-cache hash table entries: 512
[    0.016824] mpic: requesting IPIs...
[    0.020433] e500 family performance monitor hardware support registered
[    0.108054] Brought up 2 CPUs
[    0.111359] devtmpfs: initialized
[    0.114964] NET: Registered protocol family 16
             
[    0.121603] gpiochip_add: registered GPIOs 224 to 255 on device: /soc@ffe00000/gpio-controller@f000
[    0.131041] PCI: Probing PCI hardware
[    0.134759] PCI host bridge to bus 0000:00
[    0.138773] pci_bus 0000:00: root bus resource [io  0xfdfed000-0xfdffcfff] (bus address [0x0000-0xffff])
[    0.148212] pci_bus 0000:00: root bus resource [mem 0xa0000000-0xbfffffff]
[    0.155090] pci 0000:00:00.0: ignoring class 0x0b2000 (doesn't match header type 01)
[    0.163021] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    0.168708] PCI host bridge to bus 0001:02
[    0.172725] pci_bus 0001:02: root bus resource [io  0xfdfdb000-0xfdfeafff] (bus address [0x0000-0xffff])
[    0.182164] pci_bus 0001:02: root bus resource [mem 0xc0000000-0xdfffffff]
[    0.189037] pci 0001:02:00.0: ignoring class 0x0b2000 (doesn't match header type 01)
[    0.196786] pci 0001:02:00.0: Primary bus is hard wired to 0
[    0.202367] pci 0001:02:00.0: bridge configuration invalid ([bus 01-01]), reconfiguring
[    0.210508] pci 0001:02:00.0: PCI bridge to [bus 03-ff]
[    0.216166] PCI host bridge to bus 0002:04
[    0.220184] pci_bus 0002:04: root bus resource [io  0xfdfc9000-0xfdfd8fff] (bus address [0x0000-0xffff])
[    0.229622] pci_bus 0002:04: root bus resource [mem 0x80000000-0x9fffffff]
[    0.236495] pci 0002:04:00.0: ignoring class 0x0b2000 (doesn't match header type 01)
[    0.244244] pci 0002:04:00.0: Primary bus is hard wired to 0
[    0.249825] pci 0002:04:00.0: bridge configuration invalid ([bus 01-01]), reconfiguring
[    0.257975] pci 0002:04:00.0: PCI bridge to [bus 05-ff]
[    0.263618] pci 0000:00:00.0: PCI bridge to [bus 01-01]
[    0.268761] pci 0000:00:00.0:   bridge window [io  0xfdfed000-0xfdffcfff]
[    0.275512] pci 0000:00:00.0:   bridge window [mem 0xa0000000-0xbfffffff]
[    0.282275] pci 0001:02:00.0: PCI bridge to [bus 03-03]
[    0.287475] pci 0001:02:00.0:   bridge window [io  0xfdfdb000-0xfdfeafff]
[    0.294240] pci 0001:02:00.0:   bridge window [mem 0xc0000000-0xdfffffff]
[    0.301002] pci 0002:04:00.0: PCI bridge to [bus 05-05]
[    0.306202] pci 0002:04:00.0:   bridge window [io  0xfdfc9000-0xfdfd8fff]
[    0.312965] pci 0002:04:00.0:   bridge window [mem 0x80000000-0x9fffffff]
[    0.319733] pci 0000:00:00.0: enabling device (0106 -> 0107)
[    0.325366] pci 0001:02:00.0: enabling device (0106 -> 0107)
[    0.331000] pci 0002:04:00.0: enabling device (0106 -> 0107)
[    0.340598] bio: create slab <bio-0> at 0
[    0.345880] Switching to clocksource timebase
[    0.351993] NET: Registered protocol family 2
[    0.361402] IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.368394] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[    0.375489] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    0.381965] TCP: Hash tables configured (established 8192 bind 8192)
[    0.388227] TCP: reno registered
[    0.391435] UDP hash table entries: 128 (order: 0, 4096 bytes)
[    0.397259] UDP-Lite hash table entries: 128 (order: 0, 4096 bytes)
[    0.403620] NET: Registered protocol family 1
[    0.408053] Unpacking initramfs...
[    4.561766] Freeing initrd memory: 7472k freed
[    4.632344] Meraki Topaz Init
[    4.637331] Freescale MPC85xx CPU frequency switching(JOG) driver
[    4.643418] cpufreq: Setting core0 frequency to 1066666 kHz and PLL ratio to 4:2
[    4.650730] cpufreq: Setting core0 frequency to 1066666 kHz and PLL ratio to 4:2
[    4.658120] cpufreq: Setting core1 frequency to 1066666 kHz and PLL ratio to 4:2
[    4.665465] cpufreq: Setting core1 frequency to 1066666 kHz and PLL ratio to 4:2
[    4.793917] msgmni has been set to 493
[    4.801527] alg: No test for stdrng (krng)
[    4.805625] io scheduler noop registered
[    4.809478] io scheduler deadline registered (default)
[    4.817028] Serial: 8250/16550 driver, 1 ports, IRQ sharing enabled
;  s66=&*00V43482%0=4!15-mrªconsole [ttyS0] enabled, bootconsole disabled
[    4.838535] console [ttyS0] enabled, bootconsole disabled
[    4.861861] NAND device: Manufacturer ID: 0x98, Chip ID: 0xd1 (Toshiba NAND 128MiB 3,3V 8-bit)
[    4.871691] Bad block table found at page 65472, version 0x01
[    4.878057] Bad block table found at page 65408, version 0x01
[    4.884406] 4 ofpart partitions found on MTD device ff800000.flash
[    4.890602] Creating 4 MTD partitions on "ff800000.flash":
[    4.896087] 0x000000000000-0x000000100000 : "firmware"
[    4.905214] 0x000000100000-0x000000200000 : "factory"
[    4.917556] 0x000000200000-0x000008000000 : "ubi"
[    4.927096] 0x000000000000-0x000008000000 : "all"
[    4.937420] eLBC NAND device at 0xff800000, bank 0
[    4.947587] UBI: attaching mtd2 to ubi0
[    4.951447] UBI: physical eraseblock size:   131072 bytes (128 KiB)
[    4.957717] UBI: logical eraseblock size:    129024 bytes
[    4.963112] UBI: smallest flash I/O unit:    2048
[    4.967812] UBI: sub-page size:              512
[    4.972423] UBI: VID header offset:          512 (aligned 512)
[    4.978248] UBI: data offset:                2048
[    5.212115] UBI: max. sequence number:       2395739
[    5.230478] UBI: attached mtd2 to ubi0
[    5.234251] UBI: MTD device name:            "ubi"
[    5.239035] UBI: MTD device size:            126 MiB
[    5.243989] UBI: number of good PEBs:        1004
[    5.248683] UBI: number of bad PEBs:         4
[    5.253117] UBI: number of corrupted PEBs:   0
[    5.257551] UBI: max. allowed volumes:       128
[    5.262159] UBI: wear-leveling threshold:    4096
[    5.266853] UBI: number of internal volumes: 1
[    5.271287] UBI: number of user volumes:     4
[    5.275721] UBI: available PEBs:             651
[    5.280329] UBI: total number of reserved PEBs: 353
[    5.285197] UBI: number of PEBs reserved for bad PEB handling: 20
[    5.291280] UBI: max/mean erase counter: 2478/2386
[    5.296060] UBI: image sequence number:  1448629305
[    5.301536] UBI: background thread "ubi_bgt0d" started, PID 433
[    5.349447] Freescale PowerQUICC MII Bus: probed
[    5.356859] Freescale PowerQUICC MII Bus: probed
[    5.392888] fsl-gianfar ethernet.1: eth0: mac: 00:01:73:01:23:42
[    5.398932] fsl-gianfar ethernet.1: eth0: Running with NAPI enabled
[    5.405195] fsl-gianfar ethernet.1: eth0: RX BD ring size for Q[0]: 256
[    5.411800] fsl-gianfar ethernet.1: eth0: RX BD ring size for Q[1]: 256
[    5.418405] fsl-gianfar ethernet.1: eth0: RX BD ring size for Q[2]: 256
[    5.425011] fsl-gianfar ethernet.1: eth0: RX BD ring size for Q[3]: 256
[    5.431619] fsl-gianfar ethernet.1: eth0: RX BD ring size for Q[4]: 256
[    5.438224] fsl-gianfar ethernet.1: eth0: RX BD ring size for Q[5]: 256
[    5.444829] fsl-gianfar ethernet.1: eth0: RX BD ring size for Q[6]: 256
[    5.451443] fsl-gianfar ethernet.1: eth0: RX BD ring size for Q[7]: 256
[    5.458059] fsl-gianfar ethernet.1: eth0: TX BD ring size for Q[0]: 256
[    5.464665] fsl-gianfar ethernet.1: eth0: TX BD ring size for Q[1]: 256
[    5.471271] fsl-gianfar ethernet.1: eth0: TX BD ring size for Q[2]: 256
[    5.477875] fsl-gianfar ethernet.1: eth0: TX BD ring size for Q[3]: 256
[    5.484480] fsl-gianfar ethernet.1: eth0: TX BD ring size for Q[4]: 256
[    5.491084] fsl-gianfar ethernet.1: eth0: TX BD ring size for Q[5]: 256
[    5.497689] fsl-gianfar ethernet.1: eth0: TX BD ring size for Q[6]: 256
[    5.504295] fsl-gianfar ethernet.1: eth0: TX BD ring size for Q[7]: 256
[    5.514939] i2c /dev entries driver
[    5.519340] mpc-i2c ffe03000.i2c: timeout 1000000 us
[    5.531541] mpc-i2c ffe03100.i2c: timeout 1000000 us
[    5.538872] rtc-ds3232: probe of 1-0068 failed with error -5
[    5.549042] ina2xx 0-0045: power monitor ina219 (Rshunt = 10000 uOhm)
[    5.556799] booke_wdt: powerpc book-e watchdog driver loaded
[    5.562843] cpufreq: Setting core0 frequency to 1066666 kHz and PLL ratio to 4:2
[    5.570264] cpufreq: Setting core1 frequency to 1066666 kHz and PLL ratio to 4:2
[    5.577663] cpuidle: using governor ladder
[    5.581756] cpuidle: using governor menu
[    5.593021] TCP: bic registered
[    5.596220] TCP: cubic registered
[    5.599533] TCP: westwood registered
[    5.603108] TCP: htcp registered
[    5.606337] NET: Registered protocol family 17
[    5.618803] /mnt/jenkins/workspace/router/prod-signing/router-25-6/linux-3.4/drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[    5.631204] devtmpfs: mounted
[    5.634574] Freeing unused kernel memory: 152k freed

init started: BusyBox v1.24.1 (2018-09-28 16:55:57 PDT)
[    5.802217] UBIFS: recovery needed
[    5.896521] UBIFS: recovery completed
[    5.900192] UBIFS: mounted UBI device 0, volume 3, name "storage"
[    5.906280] UBIFS: file system size:   7354368 bytes (7182 KiB, 7 MiB, 57 LEBs)
[    5.913586] UBIFS: journal size:       1032193 bytes (1008 KiB, 0 MiB, 6 LEBs)
[    5.920802] UBIFS: media format:       w4/r0 (latest is w4/r0)
[    5.926626] UBIFS: default compressor: lzo
[    5.930716] UBIFS: reserved for root:  347364 bytes (339 KiB)
WARNING! THIS CONSOLE IS LOGGED! UNAUTH[    5.959884] storage-recovery: /storage mounted RW, monitoring
ORIZED ACCESS FORBIDDEN!
<Meraki> [    5.990144] Sat Jan  1 00:00:00 UTC 2000
[    6.065009] Quick boot reason lookup: 
[    6.070555] No valid safe config available or fallback disabled, remove unsafe config
[    6.091251] sysctl: error: 'vm.extfrag_threshold' is an unknown key
[    6.118643] Cannot change large-receive-offload
[    6.124701] Cannot set device coalesce parameters: No such device
[    6.157851] wl: module license 'Proprietary' taints kernel.
[    6.294956] apr2v0: Broadcom BCMa8dc 802.11 Wireless Controller 6.37.14.105_e1.4.1.5 (r485445)
[    6.337861] apr1v0: Broadcom BCM43a2 802.11 Wireless Controller 6.37.14.105_e1.4.1.5 (r485445)
[    6.489414] apr0v0: Broadcom BCM4331 802.11 Wireless Controller 6.37.14.105_e1.4.1.5 (r485445)
[    6.531758] setting trigger mode 0 for irq 32 failed (mpc8xxx_irq_set_type+0x0/0xc0)
[    6.541835] sh: write error: Device or resource busy
[    6.548389] ln: /meraki_gpio/reset_switch: File exists
[    6.553905] setting trigger mode 0 for irq 33 failed (mpc8xxx_irq_set_type+0x0/0xc0)
[    6.564286] setting trigger mode 0 for irq 35 failed (mpc8xxx_irq_set_type+0x0/0xc0)
[    6.574545] setting trigger mode 0 for irq 36 failed (mpc8xxx_irq_set_type+0x0/0xc0)
[    6.695070] sysctl -w vm.panic_on_oom=2
[    6.701722] vm.panic_on_oom = 2
[    6.811864] click: starting router thread pid 935 (cc1be100)
[    6.859575] elts_meraki: module license 'unspecified' taints kernel.
[    7.076329] Single synchronous check for reset
[    7.099402] 
[    7.105733] boot 82 build 25-201809281433-G5614545c-rel-lawn board topaz-powerpc mac 00:18:0A:A4:F3:60
[    7.118774] Module: wl  .text=0xd0e83000 .data=0xd11ec954 .bss=0xd126e3b8
[    7.118780] Module: dummy  .text=0xd12fd000 .data=0xd12fd628 .bss=
[    7.118784] Module: proclikefs  .text=0xd1311000 .data= .bss=0xd1311dc0
[    7.118787] Module: merakiclick  .text=0xd1564000 .data=0xd1679c80 .bss=0xd167a120
[    7.118791] Module: elts_meraki  .text=0xd1c6e000 .data=0xd1f43728 .bss=0xd1f44e20
[    7.172118] ramoops: platform device not found, using module parameters
[    7.202151] phram: phram-oops device: 0x100000 at 0xff00000
[    7.242248] 1+0 records in
[    7.245202] 1+0 records out
[    7.248233] 1048576 bytes (1.0MB) copied, 0.016244 seconds, 61.6MB/s
[    8.350836] 
[    8.350840] !!!!! {/usr/bin/brain} opening /click/wlan_event/driver_reload failed: No such file or directory
[    8.389114] brain: unloading click config
[    8.393378] brain: spring cleaning pages
[    8.657503] wlc_enable_probe_req: wl0: state down, deferring setting of host flags
[    8.666814] wl0: _wl_add_meraki_monitor_if
[    8.805447] brain: loading click config
[    9.593275] 
[    9.593279] !!!!! {/usr/bin/brain} forkexec failed with status 254 cmd -wl -i apr0v0 wnm_maxidle 300 
[    9.631419] wlc_enable_probe_req: wl0: state down, deferring setting of host flags
[    9.639321] wl0: wlc_create_dfs_mute_chspec: default chanspec returned is:
[    9.646193] chanspec: 1006 (6)
[    9.649244] Bandwidth 20 Mhz Channel band 2G
[    9.653525] wl0: wlc_dfs_chanspec: Forced channel 1006(6) being selected.
...a bunch of similar logs to the last six lines...

<Meraki> 

see next post.

I assume you've typoed BCM43… with BCM34… here, so BCM4360 && BCM4331 && BCM4328, all of which are Broadcom softmac wireless cards and which are basically unsupported under OpenWrt (very, very basic support by b43, 54 MBit/s max.), this isn't going to improve in the future either.

If you care about WLAN support, this hardware won't be a good choice for running OpenWrt. The supported Meraki devices use QCA/ Atheros WLAN (for which good WLAN drivers are available) instead of Broadcom.

1 Like

I was able to interrupt the bootloader, and figured out how to do a TFTP load. I just used the kernel and FTD from here: https://downloads.openwrt.org/releases/18.06.2/targets/mpc85xx/p1020/

=> tftp 0x2000000 openwrt_p1020.bin
Speed: 1000, full duplex
Using eTSEC1 device
TFTP from server 10.3.15.231; our IP address is 10.3.15.233
Filename 'openwrt_p1020.bin'.
Load address: 0x2000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         ###############################################
done
Bytes transferred = 4497386 (449fea hex)
=> tftp 0x3000000 openwrt_p1020.ftd.bin
Speed: 1000, full duplex
Using eTSEC1 device
TFTP from server 10.3.15.231; our IP address is 10.3.15.233
Filename 'openwrt_p1020.ftd.bin'.
Load address: 0x3000000
Loading: #
done
Bytes transferred = 11233 (2be1 hex)
=> bootm 0x2000000 - 0x3000000 console=/dev/ttyS0,115200 root=/dev/ram mem=255M ubi.mtd=ubi
## Booting kernel from Legacy Image at 02000000 ...
   Image Name:   Linux-4.9.152
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:    4497322 Bytes = 4.3 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 03000000
   Booting using the fdt blob at 0x03000000
   Uncompressing Kernel Image ... OK
   Loading Device Tree to 03ffa000, end 03fffbe0 ... OK
[    0.000000] Memory CAM mapping: 256 Mb, residual: 0Mb
[    0.000000] Linux version 4.9.152 (buildbot@7befac494a11) (gcc version 7.3.0 (OpenWrt GCC 7.3.0 r7676-cddd7b4c77) ) #0 SMP Wed Jan 30 12:21:02 2019
[    0.000000] Using P1020 RDB machine description
[    0.000000] bootconsole [udbg0] enabled
[    0.000000] CPU maps initialized for 1 thread per core
[    0.000000] -----------------------------------------------------
[    0.000000] phys_mem_size     = 0x10000000
[    0.000000] dcache_bsize      = 0x20
[    0.000000] icache_bsize      = 0x20
[    0.000000] cpu_features      = 0x0000000012100460
[    0.000000]   possible        = 0x0000000012120460
[    0.000000]   always          = 0x0000000000100000
[    0.000000] cpu_user_features = 0x84e08000 0x08000000
[    0.000000] mmu_features      = 0x00020010
[    0.000000] -----------------------------------------------------
hiveap_330_setup_arch()
[    0.000000] HiveAP-330 board from Aerohive
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000000000-0x000000000fffffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000000fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000000fffffff]
[    0.000000] MMU: Allocated 1088 bytes of context maps for 255 contexts
[    0.000000] percpu: Embedded 10 pages/cpu @cfdca000 s9868 r8192 d22900 u40960
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024
[    0.000000] Kernel command line: console=ttyS0,9600
[    0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Sorting __ex_table...
[    0.000000] Memory: 186716K/262144K available (3852K kernel code, 152K rwdata, 548K rodata, 2340K init, 216K bss, 75428K reserved, 0K cma-reserved)
[    0.000000] Kernel virtual memory layout:
[    0.000000]   * 0xfffdf000..0xfffff000  : fixmap
[    0.000000]   * 0xfdffe000..0xfe000000  : early ioremap
[    0.000000]   * 0xd1000000..0xfdffe000  : vmalloc & ioremap
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:512 nr_irqs:512 16
[    0.000000] mpic: Setting up MPIC " OpenPIC  " version 1.2 at ffe40000, max 2 CPUs
[    0.000000] mpic: ISU size: 256, shift: 8, mask: ff
[    0.000000] mpic: Initializing for 256 sources
[    0.000009] clocksource: timebase: mask: 0xffffffffffffffff max_cycles: 0xf6018975a, max_idle_ns: 440795204712 ns
[    0.010162] clocksource: timebase mult[f000003] shift[24] registered
[    0.016527] pid_max: default: 32768 minimum: 301
[    0.021174] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.027693] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.035229] mpic: requesting IPIs...
[    0.039914] Brought up 2 CPUs
[    0.044845] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.054507] futex hash table entries: 512 (order: 2, 16384 bytes)
[    0.060963] NET: Registered protocol family 16

[    0.071985] Found FSL PCI host bridge at 0x00000000ffe09000. Firmware bus number: 0->1
[    0.079824] PCI host bridge /pcie@ffe09000 (primary) ranges:
[    0.085450]  MEM 0x00000000a0000000..0x00000000bfffffff -> 0x00000000a0000000
[    0.092642]   IO 0x00000000ffc30000..0x00000000ffc3ffff -> 0x0000000000000000
[    0.099763] /pcie@ffe09000: PCICSRBAR @ 0xfff00000
[    0.104519] setup_pci_atmu: end of DRAM 10000000
[    0.109477] Found FSL PCI host bridge at 0x00000000ffe0a000. Firmware bus number: 0->1
[    0.117312] PCI host bridge /pcie@ffe0a000  ranges:
[    0.122159]  MEM 0x00000000c0000000..0x00000000dfffffff -> 0x00000000c0000000
[    0.129352]   IO 0x00000000ffc20000..0x00000000ffc2ffff -> 0x0000000000000000
[    0.136472] /pcie@ffe0a000: PCICSRBAR @ 0xfff00000
[    0.141229] setup_pci_atmu: end of DRAM 10000000
[    0.153465] PCI: Probing PCI hardware
[    0.157184] fsl-pci ffe09000.pcie: PCI host bridge to bus 9000:00
[    0.163204] pci_bus 9000:00: root bus resource [io  0x0000-0xffff]
[    0.169340] pci_bus 9000:00: root bus resource [mem 0xa0000000-0xbfffffff]
[    0.176190] pci_bus 9000:00: root bus resource [bus 00-ff]
[    0.193702] pci 9000:00:00.0: PCI bridge to [bus 01-ff]
[    0.199060] fsl-pci ffe0a000.pcie: PCI host bridge to bus a000:02
[    0.205084] pci_bus a000:02: root bus resource [io  0x20000-0x2ffff] (bus address [0x0000-0xffff])
[    0.213993] pci_bus a000:02: root bus resource [mem 0xc0000000-0xdfffffff]
[    0.220842] pci_bus a000:02: root bus resource [bus 02-ff]
[    0.226565] pci a000:02:00.0: Primary bus is hard wired to 0
[    0.232142] pci a000:02:00.0: bridge configuration invalid ([bus 01-01]), reconfiguring
[    0.252161] pci a000:02:00.0: PCI bridge to [bus 03-ff]
[    0.257437] PCI: Cannot allocate resource region 0 of PCI bridge 1, will remap
[    0.264573] PCI: Cannot allocate resource region 0 of device 9000:00:00.0, will remap
[    0.272369] PCI: Cannot allocate resource region 0 of device a000:02:00.0, will remap
[    0.280201] pci 9000:00:00.0: BAR 0: no space for [mem size 0x00100000]
[    0.286762] pci 9000:00:00.0: BAR 0: failed to assign [mem size 0x00100000]
[    0.293697] pci 9000:00:00.0: PCI bridge to [bus 01]
[    0.298638] pci 9000:00:00.0:   bridge window [mem 0xa0000000-0xbfffffff]
[    0.305401] pci_bus 9000:00: Some PCI device resources are unassigned, try booting with pci=realloc
[    0.314442] pci a000:02:00.0: BAR 0: no space for [mem size 0x00100000]
[    0.321007] pci a000:02:00.0: BAR 0: failed to assign [mem size 0x00100000]
[    0.327942] pci a000:02:00.0: PCI bridge to [bus 03]
[    0.332884] pci a000:02:00.0:   bridge window [io  0x20000-0x2ffff]
[    0.339126] pci a000:02:00.0:   bridge window [mem 0xc0000000-0xdfffffff]
[    0.345894] pci_bus a000:02: Some PCI device resources are unassigned, try booting with pci=realloc
[    0.355028] /soc@ffe00000/timer@41100: cannot get timer frequency.
[    0.361156] /soc@ffe00000/timer@42100: cannot get timer frequency.
[    0.384553] usbcore: registered new interface driver usbfs
[    0.390011] usbcore: registered new interface driver hub
[    0.395325] usbcore: registered new device driver usb
[    0.401133] clocksource: Switched to clocksource timebase
[    0.407057] NET: Registered protocol family 2
[    0.411733] TCP established hash table entries: 2048 (order: 1, 8192 bytes)
[    0.418626] TCP bind hash table entries: 2048 (order: 2, 16384 bytes)
[    0.425039] TCP: Hash tables configured (established 2048 bind 2048)
[    0.431401] UDP hash table entries: 256 (order: 1, 8192 bytes)
[    0.437172] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[    0.443510] NET: Registered protocol family 1
[    1.668795] Crashlog allocated RAM at address 0x3f00000
[    1.674450] workingset: timestamp_bits=30 max_order=16 bucket_order=0
[    1.685462] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    1.691223] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    1.702204] random: fast init done
[    1.705975] io scheduler noop registered
[    1.709822] io scheduler deadline registered (default)
[    1.715456] pcieport a000:02:00.0: enabling device (0106 -> 0107)
[    1.741061] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled
[    1.749194] console [ttyS0] disabled
[    1.752713] serial8250.0: ttyS0 at MMIO 0xffe04500 (irq = 42, base_baud = 33333333) is a 16550A
NAND boot... transfering control

The unit reboots after that.

Here are the boot loader environment variables, if it will help:

accton_boot=setenv ipaddr 192.168.1.1; setenv serverip 192.168.1.120 ; tftp 0x2000000 Topaz-Accton-initramfs; tftp 0x3000000 Topaz-Accton-p1022ds.dtb; bootm 0x2000000 - 0x3000000
baudrate=115200
bootcmd=run first_loader
bootdelay=1
bootfile=uImage
consoledev=ttyS0
ethact=eTSEC1
ethaddr=REMOVED
first_loader=if meraki rst_sw; then run accton_boot; fi; run second_loader
hostname=topaz
ipaddr=10.3.15.233
loadaddr=1000000
mem=261120k
memctl_intlv_ctl=2
meraki_boot=run meraki_ubi meraki_bootargs ; run meraki_load1 meraki_checkpart meraki_bootlinux; run meraki_load2 meraki_bootlinux
meraki_bootargs=setenv bootargs root=/dev/ram console=ttyS0,${baudrate} ubi.mtd=ubi MERAKI_BOARD=topaz mtdoops.mtddev=oops mem=255M ${extra_bootargs}
meraki_bootfile=topaz.bin
meraki_bootlinux=bootm ${meraki_loadaddr_kernel} ${meraki_loadaddr_ramdisk} ${meraki_loadaddr_fdt}
meraki_checkpart=meraki checkpart ${meraki_loadaddr}
meraki_load1=ubi read ${meraki_loadaddr} part1
meraki_load2=ubi read ${meraki_loadaddr} part2
meraki_load_net=${netloadmethod} ${meraki_loadaddr} ${serverpath}${meraki_bootfile}
meraki_loadaddr=c00000
meraki_loadaddr_fdt=c00400
meraki_loadaddr_kernel=c10000
meraki_loadaddr_ramdisk=1000000
meraki_netboot=run meraki_load_net meraki_bootargs meraki_bootlinux
meraki_ubi=ubi part ubi
meraki_ubi_loadfile=${netloadmethod} 600000 ${serverpath}${meraki_ubifile}
meraki_ubi_update=run meraki_ubi_loadfile meraki_ubi_update_nand
meraki_ubi_update_nand=nand erase 0x00200000 0x07E00000 ; nand write 1000000 MERAKI_UBI_PART ${filesize}
meraki_ubifile=topaz-ubi.bin
meraki_update_part1=run meraki_ubi meraki_load_net meraki_write1
meraki_update_part2=run meraki_ubi meraki_load_net meraki_write2
meraki_write1=ubi write ${meraki_loadaddr} part1 ${filesize}
meraki_write2=ubi write ${meraki_loadaddr} part2 ${filesize}
monitor=0
mtdids=nand0=nand0
mtdparts=mtdparts=nand0:0x00100000@0(firmware),0x00100000@0x00100000(factory),0x07E00000@0x00200000(ubi)
netdev=eth0
netloadmethod=tftp
nfsboot=setenv bootargs root=/dev/nfs rw nfsroot=$serverip:$rootpath ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off console=$consoledev,$baudrate $othbootargs;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr - $fdtaddr
nload=${netloadmethod} ${loadaddr} ${serverpath}u-boot-nand.bin
nupd=run nload nupdate
nupdate=nand erase 0 0x00100000 ;nand write ${loadaddr} 0 0x00100000
perf_mode=stable
ramboot=setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs;tftp $ramdiskaddr $ramdiskfile;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr $ramdiskaddr $fdtaddr
rootpath=/opt/nfsroot
second_loader=nand read 0xc00000 0x100000 0x1000; if meraki checkpart 0xc00000; then run meraki_boot; else run accton_boot; fi
serverip=10.3.15.231
serverpath=10.3.15.231:robg/
stderr=serial
stdin=serial
stdout=serial

Environment size: 2969/262140 bytes

I realize I was trying to run a kernel that wasn't written for this particular device, but i was hoping it would get farther. It resets after trying to initialize the console, and it seems to thing the baud rate is 333k (despite my best attempts to tell it otherwise).

Do I just try to make a generic build? Do I need to try to figure out the board-specific customizations like I see in patches submitted?

Thanks!

Unlike x86 PCs, there’s no self-discovery, no BIOS, no MBR/GPT. Each board is often different, from setting up internal clocks, through wiring, to flash formatting. That needs to be captured in the DTS.

My first port was probably a month of nights and weekends. At least there it was for a current device with three, latest-generation radios, very attractive for my application. The same effort for a board that I knew would never have supported wireless would be, for me, a waste of my time. If you’re motivated and completely understand that Broadcom wireless will never perform in any reasonable way under open-source firmware, yes, you need a build fully customized for it and there is no simple recipe for that.

2 Likes

Actually those are the model numbers. Really hard to read the numbers on them, so it's possible they're different. They are 802.11ac cards, and thankfully they're mini PCIe, so theoretically I could replace them with something else if I had to.

I guess I was just looking for guidance on how best to go about getting a kernel running on this, then I can worry about the wireless. Obviously I can get something to start booting, but it crashes. I'll try to generate a more generic kernel and see where that gets me.

1 Like

I would look onto boards with similar CPU and start from there...

@wlentz102 any news about you work? I have a couple of useless MR34 boxes here wanted to know whether you had any success

Regards

@Andrade-mcp Unfortunately no. I haven't spent any more time on it since I posted, but I still have the APs.

Hi There,
Is anyone succesful with OpenWRT on this type off access point? I have two of them and this seems like something i can use. I dont have the knowlage to compile them myself. Flashing is something i can do.

Please let me (us) know.

Hello.

I just came across about 10 of these devices. I'd be happy to give them away to any developers/hackers here.

Thanks

1 Like

P1022NSE2LFB

This mpc85xx SoC will probably be easy to support. The problem is the wireless cards. These are basically just glorified Aerohive HiveAP 330's, but without decent wireless cards or a external console.

The cards would need to be swapped entirely by an end-user to get any use out of these boards. Cheap, high-end mPCIe cards aren't easy to come by. The obvious choice, a BCM4366C off eBay, which works fine under OpenWrt (tested on an OpenWrt x86 host using kmod-brcmfmac and firmware-brcmfmac-bcm4366c0), but has driver issues under PowerPC. I believe the SoC supports MSI PCI interrupts which brcmfmac requires, but there are some endianness issues with the driver that I've seen when swapping the aforementioned card into an Aerohive 330AP.

Finding other cards, eh. It also certainly appears that the second broadcom chip uses non-standard positioning for its mounting screws: see here.

Hi All,

I wanted to revive this post, since the MR34 are now End of Life, it would be great to make use of these old boxes and have another option available for these otherwise very heavy paperweights.
I got 12 from my company to do as I please.

Is there any way I could help?
I'm not all that into hard and software, but have my experience with figuring out, played around with Arduino's, and always up to learning a thing or 2.

I don't think it's worth it. The Broadcom cards still don't have support AFAIK.

It seems it can be done on the MR33, could this method work on the MR34 as well?
[How to Flash Cisco Meraki with OpenWRT]
https://roamingviews.com/tech/how-to-flash-openwrt-on-cisco-meraki/