Found a Meraki MR33 with OpenWRT in a strange state - what now? How to finish the installation?

Hi,

I found a discarded Cisco Meraki MR33 in a strange state - by default, it boots into Meraki's default OS but is unable to connect to the Meraki cloud. Amazingly, attempting a factory reset makes the LED start blinking orange and the device boots into OpenWRT. Power cycling the device boots back to Meraki's OS. I suspect that someone attempted to flash OpenWRT onto this device, but wrote to the incorrect device or messed up something else and gave up when OpenWRT wouldn't boot.

Ideally, I'd like to install OpenWRT onto this device properly. Please advise me what course of action to take - whether to try to salvage this botched install and install through Telnet, to discard this botched install and use serial for a clean install, or to give up this endeavor altogether.

I'll try to provide some clues about the state of the device. After booting OpenWRT, I managed to telnet into the device:

$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
 === IMPORTANT ============================
  Use 'passwd' to set your login password
  this will disable telnet and enable SSH
 ------------------------------------------


BusyBox v1.19.4 (2016-08-17 13:40:35 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 ATTITUDE ADJUSTMENT (master, f228337)
 -----------------------------------------------------
  * 1/4 oz Vodka      Pour all ingredients into mixing
  * 1/4 oz Gin        tin with ice, strain into glass.
  * 1/4 oz Amaretto
  * 1/4 oz Triple sec
  * 1/4 oz Peach schnapps
  * 1/4 oz Sour mix
  * 1 splash Cranberry juice
 -----------------------------------------------------

Contents of /dev, df, fdisk:

root@OpenWrt:/# ls dev/
bus                 hwrng               msm_sps             null                shm                 ttyS0               zero
console             i2c-0               mtd0                port                snd                 ttyS1
cpu_dma_latency     i2c-1               mtd0ro              ppp                 switch_ssdk         ubi_ctrl
crypto              input               mtdblock0           ptmx                tty                 urandom
full                kmsg                network_latency     pts                 ttyMSM0             watchdog
fuse                mem                 network_throughput  random              ttyMSM1             watchdog0

root@OpenWrt:/# df -h
Filesystem                Size      Used Available Use% Mounted on
tmpfs                   115.5M    100.0K    115.4M   0% /tmp
tmpfs                   512.0K         0    512.0K   0% /dev

root@OpenWrt:/# fdisk -l
Disk /dev/mtdblock0: 0 MB, 524288 bytes
255 heads, 63 sectors/track, 0 cylinders, total 1024 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Dump of dmesg: https://pastebin.com/DDxn2PAf

What do you think? Any idea what on Earth the previous owner managed to do? Any idea how to finish this installation? Do you need any more clues?

has the boot loader been replaced ?

https://openwrt.org/toh/meraki/mr33, you can probably continue with the install... ...

Show

ubus call system board

you have to sysupgrade to v18 for sysupgrade new format
then to 19.07.latest for platform architecture change
then to v23 or v24
Or factory tftp with v24
https://openwrt.org/toh/meraki/mr33

root@OpenWrt:/# ubus call system board
Command failed: Not found
root@OpenWrt:/# ubus list
network
network.device
network.interface
network.interface.lan
network.interface.loopback

I don't think that the boot loader has been replaced. I suspect that the previous owner flashed OpenWRT onto the storage device used for holding recovery data for factory reset... I'm unable to use commands such as ubinfo, here's a list of the commands that are available to me:

root@OpenWrt:/# ubinfo
/bin/ash: ubinfo: not found
root@OpenWrt:/# 
6rdcalc                            ifup                               qos-start
80211stats                         init                               qos-stat
BTDevice.py                        insmod                             qos-stop
GuestNetwork                       iostat                             quagga.init
HCIEvents.py                       ip                                 radartool
HCI_Codes.py                       ip6tables                          radvd
Qcmbr                              ip6tables-restore                  readlink
[                                  ip6tables-save                     reboot
[[                                 ipcalc.sh                          reset
acfg_tool                          iperf                              reset_to_factory_settings.sh
apps_init                          iperf3                             resolveip
apstats                            iptables                           ripd
arping                             iptables-restore                   rm
arptables                          iptables-save                      rmdir
ash                                iwconfig                           rmgmt
assocdenialnotify                  iwlist                             rmmod
athadhoc                           iwpriv                             route
athdiag                            jshn                               sadf
athssd                             kill                               sar
athstats                           killall                            sed
athstatsclr                        kmodloader                         senao_check_BLE_OS.sh
athtestcmd                         led.sh                             senao_check_BLE_and_upgrade_OS.sh
awk                                less                               senao_codes.py
basename                           ln                                 senao_hci.py
brctl                              lock                               senao_upgrade_BLE_OS.sh
bunzip2                            logd                               seq
burn                               logger                             setconfig
burnT                              login.sh                           setmac
burna                              ls                                 setserial
burnb                              lsmod                              sfe_dump
burnf                              lua                                sh
burnk                              luac                               sleep
busybox                            luci-bwc                           sort
bzcat                              luci-reload                        spectraltool
cat                                manufac_test                       ssdk_sh
cc2538-bsl.py                      md5sum                             ssidsteering
checkInternet.sh                   mdadm                              start-stop-daemon
chgrp                              mdassemble                         strings
chmod                              memtester                          swconfig
chown                              mkdir                              switch_root
chroot                             mkdosfs                            sync
clear                              mke2fs                             sysctl
cmp                                mkfifo                             sysupgrade
cp                                 mkfs.ext2                          tail
crond                              mkfs.ext3                          tar
crontab                            mkfs.ext4                          taskset
cut                                mkfs.msdos                         tc
date                               mkfs.ubifs                         tee
dd                                 mkfs.vfat                          telnet
devmem                             mknod                              telnetd
devmem2                            mkswap                             test
devstatus                          mktemp                             tftp
df                                 modinfo                            tftp-hpa
dhcp6c                             modprobe                           thermald
dhcp6c-state                       mount                              thermaltool
dhcrelay                           mount.ntfs-3g                      time
diff                               mount_root                         top
dirname                            mpstat                             touch
distance.sh                        mtd                                tr
dl.sh                              mv                                 tracepath
dmesg                              nc                                 tracepath6
dnsmasq                            netifd                             traceroute
du                                 netmsg                             true
e2fsck                             netstat                            tx99tool
easy_install                       nice                               ubi
echo                               nslookup                           ubiattach
egrep                              ntfs-3g                            ubidetach
env                                ntfs-3g.probe                      ubiformat
ethtool                            ntpd                               ubimkvol
expr                               odhcp6c                            ubiupdatevol
factory_apps_init                  opkg                               ubus
false                              opmode.sh                          ubusd
fdisk                              passwd                             uci
fgrep                              perl                               udevadm
file                               perl5.10.0                         udevd
find                               pgrep                              udevtrigger
firstboot                          pidof                              udhcpc
flock                              pidstat                            umount
foreach                            ping                               uname
free                               ping6                              uniq
fsync                              pivot_root                         uptime
fw_printenv                        pktlogconf                         validate_data
fw_setenv                          pktlogdump                         vconfig
grep                               poweroff                           vi
gunzip                             pppd                               vtysh
gzip                               pppoe-relay                        watchquagga
halt                               pppoe-server                       wc
head                               printf                             wget
hexdump                            ps                                 which
hostid                             ptracetest                         wifi
hotplug-call                       pure-authd                         wifi_try
hotplug2                           pure-ftpd                          wifitool
hwclock                            pure-ftpwho                        wlanconfig
i2cdetect                          pure-mrtginfo                      wpc
i2cdump                            pure-pw                            wps_enhc
i2cget                             pure-pwconvert                     xargs
i2cset                             pure-quotacheck                    xl2tpd
icm                                pure-statsdecode                   xl2tpd-control
id                                 pure-uploadscript                  xtables-multi
ifconfig                           pwd                                yes
ifdown                             python                             zcat
ifstatus                           python2.7                          zebra
root@OpenWrt:/# 

then you'll probably need serial to find out ... seems to be the proper install route anyway.

You risk permanently bricking your device if you try to enter the U-Boot command prompt on a device running any other version then U-Boot 2012.07-g97ab7f1. If 'Secure boot NOT enabled! Blowing fuses... Resetting now.' is printed on the serial console, it is too late and your device is bricked...

while you are in the openwrt install, can you type dmesg

2 Likes

I posted a dmesg dump pastebin in the OP: https://pastebin.com/DDxn2PAf

you can see the build date is prior to the original support thread, and before Cisco started handing them out in webinars.

Let us know when you have serial attached

Just to clarify, what you see is still a proprietary qsdk build of the OEM firmware, with very little resemblance to OpenWrt.

1 Like

Really? It lit up SSIDs named "OpenWrt", telnetting in welcomed me to a linux calling itself OpenWrt!

In other news, I got the thing open and I got a serial cable ready. I read the warning on the wiki that said that I'd brick the device if I attempted to run the script on a new bootloader version, but considering that the device wasn't touched since 2016 and is unable to connect to the meraki cloud, it should be safe, no? Or is there some reasonable way to check what version of bootloader the device is running?

EDIT: There is a reasonable way... Simply plugging the device into serial, opening up minicom (baudrate needs to be changed to 115200) and powering the Mikrotik up tells me all I need. Yep, U-Boot 2012.07 :slight_smile: I'll proceed with the flashing and tell you how it goes

2 Likes

Flashing went through smoothly without an issue, all I had to do was copypaste commands from the wiki. Thank you and I'll be seeing you gentlemen around here as I play around with the device.

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.