Meraki MR18 JTAG

Hi all,

Thanks a lot for your job here. I am using OpenWRT on Xiaomi R3G since 2021 and the OS was very stable.

To expand my WLAN, I want to use OpenWRT on an old Cisco Meraki MR18 but I have a similar problem than @MedvedAM had here. While I am trying the JTAG process with OpenOCD, openocd stop the AP's boot but it's not possible to resume with telnet (target not halted).

I am using 2 raspberry Pi (3B and a new Zero 2W) and I failed on the same problem on both.

$ sudo openocd -f raspberrypi-native.cfg -f mr18.cfg -c "init; halt"
Open On-Chip Debugger 0.12.0+dev-snapshot (2025-07-16-14:06)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
DEPRECATED! use 'adapter gpio trst' not 'bcm2835gpio_trst_num'
Warn : TMS/SWDIO moved to GPIO 8 (pin 24). Check the wiring please!
Warn : DEPRECATED: auto-selecting transport "jtag". Use 'transport select jtag' to suppress this message.
Warn : Transport "jtag" was already selected
DEPRECATED! use 'adapter speed' not 'adapter_khz'
adapter speed: 1000 kHz
Info : BCM2835 GPIO JTAG/SWD bitbang driver
Info : clock speed 1000 kHz
Info : JTAG tap: ar9344.cpu tap/device found: 0x00000001 (mfg: 0x000 (<invalid>), part: 0x0000, ver: 0x0)
Info : [ar9344.cpu] Examination succeed
Info : [ar9344.cpu] starting gdb server on 3333
Info : Listening on port 3333 for gdb connections
Warn : target was in unknown state when halt was requested
Error: Failed to enter Debug Mode!
Error: Could not read core registers from target
Error: processor id not available, failed to read cp0 PRId register
Error: isa info not available, failed to read cp0 config register: 0
target halted in MIPS32 mode due to debug-request, pc: 0x00000000
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : accepting 'telnet' connection on tcp/4444
Warn : target not halted
$ sudo telnet 127.1 4444
Trying 127.0.0.1...
Connected to 127.1.
Escape character is '^]'.
Open On-Chip Debugger
> resume
target not halted

>

Because of this warning Warn : TMS/SWDIO moved to GPIO 8 (pin 24). Check the wiring please!, I moved the pin 22 to 24, but it's the only difference with the JTAG installation process.

Any ideas? Thanks in advance for your help.

Which software version is it running on the serial bootup log?

Hi,

On the serial bootup, I have :

__________________sri____________________
944x BootROM Ver. (asic) 1.0 [Nov  8 2011 13:42:57]
_________________________________________
[...]
Meraki Atheros LinuxLoader MR18 built Jan 31 2014 15:53:22
[...]
[    0.000000] Linux version 3.4.113-meraki-ar7100 (jenkins@dal247.meraki.com) (gcc version 4.8.3 (GCC) ) #4 Thu Dec 14 17:38:05 PST 2017
[...]
[    0.340000] bootsh build 25-201712141532-G0bb86dd3-hamaki
[...]
[    8.744000] boot 91 build 25-201712141532-G0bb86dd3-hamaki board ar7100 mac 00:18:0A:FC:68:60
Full serial bootup
 ~@
__________________sri____________________
944x BootROM Ver. (asic) 1.0 [Nov  8 2011 13:42:57]
_________________________________________
find_hif: bootstrap = 0x31c58
Nand Flash init
hdr: [0xbd000400 : 0xbd000400 : 0x6fb4 : 0xe5c86b84]
nand_load_fw: read 13 pages
nand_load_fw: 0x10000 0x800 0xbd000bf0
nand_load_fw: 0x20000 0x800 0xbd0013f0
nand_load_fw: 0x30000 0x800 0xbd001bf0
nand_load_fw: 0x40000 0x800 0xbd0023f0
nand_load_fw: 0x50000 0x800 0xbd002bf0
nand_load_fw: 0x60000 0x800 0xbd0033f0
nand_load_fw: 0x70000 0x800 0xbd003bf0
nand_load_fw: 0x80000 0x800 0xbd0043f0
nand_load_fw: 0x90000 0x800 0xbd004bf0
nand_load_fw: 0xa0000 0x800 0xbd0053f0
nand_load_fw: 0xb0000 0x800 0xbd005bf0
nand_load_fw: 0xc0000 0x800 0xbd0063f0
nand_load_fw: 0xd0000 0x800 0xbd006bf0
f/w 0 read complete, jumping to 0xbd000400



Meraki Atheros LinuxLoader MR18 built Jan 31 2014 15:53:22
qca955x_init_ddr ok
test_memory ok
D-cache size: 64K
I-cache size: 32K
init_dram_uncached ok
init_icache ok
init_dcache ok
enable_caches ok
test_memory ok
nand_flash_init ok
loading fw at 256
hdr: [0x8e73ed8a : 0x400 : 0x172b38 ]
part1: Copying image to memory ... ...........
done.
part1: Checking sha1 (from 0x80060000 length 1518392) ... match
part1: sha1 calculated: 3ef4f065c098b41aef591480f96795563450c09b
starting stage2
decompressing embedded kernel image 0x81a024f0(0x170624)
got osize 48f2c4
....................done
starting linux
[    0.000000] Linux version 3.4.113-meraki-ar7100 (jenkins@dal247.meraki.com) (gcc version 4.8.3 (GCC) ) #4 Thu Dec 14 17:38:05 PST 2017
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU revision is: 00019750 (MIPS 74Kc)
[    0.000000] SoC: Qualcomm Atheros QCA9558 rev 0
[    0.000000] Clocks: CPU:720.000MHz, DDR:600.000MHz, AHB:200.000MHz, Ref:40.000MHz
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 07fb0000 @ 00050000 (usable)
[    0.000000] Wasting 2560 bytes for tracking 80 unused pages
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] Zone PFN ranges:
[    0.000000]   Normal   0x00000050 -> 0x00008000
[    0.000000] Movable zone start PFN for each node
[    0.000000] Early memory PFN ranges
[    0.000000]     0: 0x00000050 -> 0x00008000
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32432
[    0.000000] Kernel command line:  console=ttyS0,115200 machtype=Meraki ubi.mtd=3 root=/dev/mtdblock8
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes
[    0.000000] Writing ErrCtl register=00000000
[    0.000000] Readback ErrCtl register=00000000
[    0.000000] Memory: 124708k/130752k available (1989k kernel code, 6044k reserved, 404k data, 2276k init, 0k highmem)
[    0.000000] SLUB: Genslabs=9, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS:51
[    0.000000] Calibrating delay loop... 359.42 BogoMIPS (lpj=718848)
[    0.028000] pid_max: default: 32768 minimum: 301
[    0.032000] Mount-cache hash table entries: 512
[    0.036000] Performance counters: mips/74K PMU enabled, 4 32-bit counters available to each CPU, irq 13
[    0.040000] devtmpfs: initialized
[    0.044000] NET: Registered protocol family 16
[    0.048000] gpiochip_add: registered GPIOs 0 to 23 on device: ath79
[    0.052000] MIPS: machine is Meraki Access Point
[    0.056000] registering PCI controller with io_map_base unset
[    0.060000] registering PCI controller with io_map_base unset
[    0.068000] bio: create slab <bio-0> at 0
[    0.072000] PCI host bridge to bus 0000:00
[    0.076000] pci_bus 0000:00: root bus resource [mem 0x10000000-0x11ffffff]
[    0.080000] pci_bus 0000:00: root bus resource [io  0x0000]
[    0.084000] pci 0000:00:00.0: BAR 0: assigned [mem 0x10000000-0x1001ffff 64bit]
[    0.088000] pci 0000:00:00.0: BAR 6: assigned [mem 0x10020000-0x1002ffff pref]
[    0.092000] PCI host bridge to bus 0000:01
[    0.096000] pci_bus 0000:01: root bus resource [mem 0x12000000-0x13ffffff]
[    0.100000] pci_bus 0000:01: root bus resource [io  0x0001]
[    0.104000] pci 0000:01:00.0: BAR 0: assigned [mem 0x12000000-0x1201ffff 64bit]
[    0.108000] pci 0000:01:00.0: BAR 6: assigned [mem 0x12020000-0x1202ffff pref]
[    0.112000] pci 0000:00:00.0: using irq 40 for pin 1
[    0.116000] pci 0000:01:00.0: using irq 41 for pin 1
[    0.120000] Switching to clocksource MIPS
[    0.124000] NET: Registered protocol family 2
[    0.140000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.148000] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
[    0.152000] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
[    0.160000] TCP: Hash tables configured (established 4096 bind 4096)
[    0.164000] TCP: reno registered
[    0.168000] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.176000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.180000] NET: Registered protocol family 1
[    0.204000] Detected Meraki MR18
[    0.220000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.224000] msgmni has been set to 243
[    0.232000] io scheduler noop registered
[    0.232000] io scheduler deadline registered (default)
[    0.240000] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
[    0.268000] serial8250.0: ttyS0 at MMIO 0x18020000 (irq = 11) is a 16550A
[    0.272000] console [ttyS0] enabled, bootconsole disabled
[    0.272000] console [ttyS0] enabled, bootconsole disabled
[    0.284000] tun: Universal TUN/TAP device driver, 1.6
[    0.292000] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
[    0.296000] input: gpio-keys-polled as /devices/platform/gpio-keys-polled/input/input0
[    0.308000] TCP: cubic registered
[    0.312000] NET: Registered protocol family 17
[    0.316000] devtmpfs: mounted
[    0.328000] Freeing unused kernel memory: 2276k freed
[    0.336000] Made it into bootsh: Dec 14 2017 17:37:44
[    0.340000] bootsh build 25-201712141532-G0bb86dd3-hamaki
[    0.348000] Mapping 5960 bytes for /lib/modules/nand_ids.ko
[    0.352000] Mapping 13616 bytes for /lib/modules/bch.ko
[    0.360000] Mapping 4920 bytes for /lib/modules/nand_bch.ko
[    0.364000] Mapping 5232 bytes for /lib/modules/nand_ecc.ko
[    0.372000] Mapping 58104 bytes for /lib/modules/nand.ko
[    0.380000] Mapping 7748 bytes for /lib/modules/ath79_nand.ko
[    0.384000] ONFI param page 0 valid
[    0.388000] ONFI flash detected
[    0.392000] NAND device: Manufacturer ID: 0xad, Chip ID: 0xf1 (Hynix H27U1G8F2BTR-BC)
[    0.404000] Scanning device for bad blocks
[    0.464000] Creating 5 MTD partitions on "ath79-nand":
[    0.468000] 0x000000000000-0x000000080000 : "nandloader"
[    0.476000] 0x000000080000-0x000000880000 : "part1"
[    0.480000] 0x000000880000-0x000001080000 : "part2"
[    0.488000] 0x000001080000-0x000007f80000 : "ubi"
[    0.492000] 0x000007fe0000-0x000008000000 : "odm-caldata"
[    0.500000] Mapping 116568 bytes for /lib/modules/ubi.ko
[    0.508000] UBI: attaching mtd3 to ubi0
[    0.512000] UBI: physical eraseblock size:   131072 bytes (128 KiB)
[    0.520000] UBI: logical eraseblock size:    129024 bytes
[    0.524000] UBI: smallest flash I/O unit:    2048
[    0.532000] UBI: sub-page size:              512
[    0.536000] UBI: VID header offset:          512 (aligned 512)
[    0.540000] UBI: data offset:                2048
[    0.688000] UBI: max. sequence number:       1865149
[    0.700000] UBI: attached mtd3 to ubi0
[    0.704000] UBI: MTD device name:            "ubi"
[    0.708000] UBI: MTD device size:            111 MiB
[    0.716000] UBI: number of good PEBs:        888
[    0.720000] UBI: number of bad PEBs:         0
[    0.724000] UBI: number of corrupted PEBs:   0
[    0.728000] UBI: max. allowed volumes:       128
[    0.732000] UBI: wear-leveling threshold:    4096
[    0.736000] UBI: number of internal volumes: 1
[    0.740000] UBI: number of user volumes:     7
[    0.748000] UBI: available PEBs:             480
[    0.752000] UBI: total number of reserved PEBs: 408
[    0.756000] UBI: number of PEBs reserved for bad PEB handling: 8
[    0.764000] UBI: max/mean erase counter: 2609/2101
[    0.768000] UBI: image sequence number:  0
[    0.772000] UBI: background thread "ubi_bgt0d" started, PID 223
[    0.776000] Mapping 9148 bytes for /lib/modules/gluebi.ko
[    0.792000] Mapping 235308 bytes for /lib/modules/ubifs.ko
[    0.816000] Mapping 5400 bytes for /lib/modules/leds-gpio.ko
[    0.824000] Mapping 129424 bytes for /lib/modules/ag7240_mod.ko
[    0.832000] qca955x_GMAC: Length per segment 1536
[    0.836000] 955x_GMAC: qca955x_gmac_attach
[    0.844000] 955x_GMAC: qca955x_set_gmac_caps
[    0.848000] Currently in polling mode unit0
[    0.852000] Registering AR8033 Phy....
[    0.856000] qca955x_GMAC: Mac address for unit 0:bfff1000
[    0.860000] qca955x_GMAC: 00:00:00:00:00:00
[    0.864000] qca955x_GMAC: Max segments per packet :   1
[    0.872000] qca955x_GMAC: Max tx descriptor count :   100
[    0.876000] qca955x_GMAC: Max rx descriptor count :   252
[    0.880000] qca955x_GMAC: Mac capability flags    :   4200
[    0.888000] 955x_GMAC: qca955x_gmac_attach
[    0.892000] 955x_GMAC: qca955x_set_gmac_caps
[    0.896000] Currently in polling mode unit1
[    0.900000] Registering AR8033 Phy....
[    0.904000] qca955x_GMAC: Mac address for unit 1:bfff1006
[    0.908000] qca955x_GMAC: 00:00:00:00:00:00
[    0.912000] qca955x_GMAC: Max segments per packet :   1
[    0.920000] qca955x_GMAC: Max tx descriptor count :   100
[    0.924000] qca955x_GMAC: Max rx descriptor count :   252
[    0.932000] qca955x_GMAC: Mac capability flags    :   4200
[    1.560000] UBIFS: recovery needed
[    1.644000] UBIFS: recovery completed
[    1.648000] UBIFS: mounted UBI device 0, volume 1, name "storage"
[    1.652000] UBIFS: file system size:   19869696 bytes (19404 KiB, 18 MiB, 154 LEBs)
[    1.660000] UBIFS: journal size:       1032193 bytes (1008 KiB, 0 MiB, 8 LEBs)
[    1.668000] UBIFS: media format:       w4/r0 (latest is w4/r0)
[    1.672000] UBIFS: default compressor: lzo
[    1.676000] UBIFS: reserved for root:  938494 bytes (916 KiB)
In manufacturing: FALSE
In rma mode: FALSE
[    1.692000] Bootsh: trying rootfs path: /dev/mtdblock/rootfs-25-201712141532-G0bb86dd3-hamaki-1
Attempting to setup root /dev/mtdblock/rootfs-25-201712141532-G0bb86dd3-hamaki-1...
[    2.492000] copy_directory: Skipping /ro/etc/lighttpd.conf.ssl st_mode = 21b6
[    2.520000] Mapping 5400 bytes for /lib/modules/leds-gpio.ko
[    2.780000] insmod: error initializing module /lib/modules/leds-gpio.ko: File exists
[    2.788000] Mapping 129424 bytes for /lib/modules/ag7240_mod.ko
[    3.036000] insmod: error initializing module /lib/modules/ag7240_mod.ko: File exists
init started: BusyBox v1.24.1 (2017-12-14 17:16:41 PST)
[    3.312000] Algorithmics/MIPS FPU Emulator v1.5
[    3.596000] Sat Jan  1 00:00:00 UTC 2000
WARNING! THIS CONSOLE IS LOGGED! UNAUTHORIZED ACCESS FORBIDDEN!
<Meraki> [    5.236000] athr_gmac_ring_alloc Allocated 1600 at 0x87da9000
[    5.244000] athr_gmac_ring_alloc Allocated 4032 at 0x87678000
[    5.548000] 955x_GMAC: eth0 in RGMII MODE
[    5.552000] 955x_GMAC: qca955x_gmac_sgmii_res_cal cal value = 0x6
[    5.572000] Scorpion -----> 8033 PHY
[    5.576000] athrs_ar8033_reg_init: Done
[    5.580000] Setting Drop CRC Errors, Pause Frames and Length Error frames
[    5.588000] Setting PHY...
[    5.952000] sysctl -w vm.panic_on_oom=2
[    5.964000] vm.panic_on_oom = 2
[    6.932000] click: starting router thread pid 482 (87660500)
[    8.168000] elts_meraki: module license 'unspecified' taints kernel.
[    8.340000] Single synchronous check for reset
[    8.732000]
[    8.744000] boot 91 build 25-201712141532-G0bb86dd3-hamaki board ar7100 mac 00:18:0A:FC:68:60
[    8.760000] Module: dummy  .text= .data= .bss=
[    8.760000] Module: mach_meraki_mr18_radios  .text= .data= .bss=
[    8.760000] Module: proclikefs  .text= .data= .bss=
[    8.760000] Module: merakiclick  .text= .data= .bss=
[    8.760000] Module: elts_meraki  .text= .data= .bss=
[    9.036000] ramoops: platform device not found, using module parameters
[    9.100000] phram: phram-oops device: 0x4000 at 0x10000
[    9.204000] ln: /usr/bin/slowfcgi: File exists
[   11.020000] adf: module license 'Proprietary' taints kernel.
[   11.036000] asf: module license 'Proprietary' taints kernel.
[   11.260000] ath_spectral: module license 'Proprietary' taints kernel.
[   11.272000] ath_spectral: Version 2.0.0
[   11.272000] Copyright (c) 2005-2009 Atheros Communications, Inc. All Rights Reserved
[   11.284000] SPECTRAL module built on Dec 14 2017 17:32:55
[   11.316000] ath_hal: module license 'Proprietary' taints kernel.
[   11.336000] ath_hal: 0.9.17.1 (AR5416, AR9380, DEBUG, REGOPS_FUNC, WRITE_EEPROM, 11D)
[   11.356000] ath_dfs: module license 'Proprietary' taints kernel.
[   11.364000] ath_dfs: Version 2.0.0
[   11.364000] Copyright (c) 2005-2006 Atheros Communications, Inc. All Rights Reserved
[   11.392000] ath_rate_atheros: module license 'Proprietary' taints kernel.
[   11.400000] ath_rate_atheros: Copyright (c) 2001-2005 Atheros Communications, Inc, All Rights Reserved
[   11.432000] ath_dev: module license 'Proprietary' taints kernel.
[   11.444000] ath_dev: Copyright (c) 2001-2007 Atheros Communications, Inc, All Rights Reserved
[   11.468000] ath_pktlog: module license 'unspecified' taints kernel.
[   11.812000] ath_ahb: 9.5.5.36 (Atheros/multi-bss)
[   11.816000] __ath_attach: Set global_scn[0]
[   11.820000] ACBKMinfree = 48
[   11.824000] ACBEMinfree = 32
[   11.824000] ACVIMinfree = 16
[   11.828000] ACVOMinfree = 0
[   11.832000] CABMinfree = 48
[   11.836000] UAPSDMinfree = 0
[   11.840000] Bootstrap clock 40MHz
[   11.848000] Enterprise mode: 0x60000000
[   11.852000] ar9300_flash_map: mapping EEPROM at 804f10e0
[   11.856000] Restoring Cal data from DRAM
[   11.868000] ath_get_caps[6145] rx chainmask mismatch actual 3 sc_chainmak 0
[   11.872000] ath_get_caps[6119] tx chainmask mismatch actual 3 sc_chainmak 0
[   11.896000] wifi0: Qualcomm Atheros QCA955X: mem=0xb8100000, irq=47
[   11.900000] ath_pci: 9.5.5.36 (Atheros/multi-bss)
[   11.908000] PCI: Enabling device 0000:00:00.0 (0000 -> 0002)
[   11.912000] __ath_attach: Set global_scn[1]
[   11.916000] ACBKMinfree = 48
[   11.920000] ACBEMinfree = 32
[   11.924000] ACVIMinfree = 16
[   11.924000] ACVOMinfree = 0
[   11.928000] CABMinfree = 48
[   11.932000] UAPSDMinfree = 0
[   11.940000] ar9300_flash_map: mapping EEPROM at c0382270
[   11.944000] Restoring Cal data from DRAM
[   11.952000] ath_get_caps[6145] rx chainmask mismatch actual 3 sc_chainmak 0
[   11.960000] ath_get_caps[6119] tx chainmask mismatch actual 3 sc_chainmak 0
[   12.036000] wifi1: Atheros 9580: mem=0x10000000, irq=40 hw_base=0xb0000000
[   12.040000] PCI: Enabling device 0000:01:00.0 (0000 -> 0002)
[   12.048000] __ath_attach: Set global_scn[2]
[   12.052000] ACBKMinfree = 48
[   12.056000] ACBEMinfree = 32
[   12.056000] ACVIMinfree = 16
[   12.060000] ACVOMinfree = 0
[   12.064000] CABMinfree = 48
[   12.064000] UAPSDMinfree = 0
[   12.072000] ar9300_flash_map: mapping EEPROM at c0381250
[   12.080000] Restoring Cal data from DRAM
[   12.088000] ath_get_caps[6145] rx chainmask mismatch actual 1 sc_chainmak 0
[   12.096000] ath_get_caps[6119] tx chainmask mismatch actual 1 sc_chainmak 0
[   12.116000] wifi2: Atheros 9580: mem=0x12000000, irq=41 hw_base=0xb2000000
[   12.188000]
[   12.188000] !!!!! {/usr/bin/brain} opening /click/wlan_event/driver_reload failed: No such file or directory
[   12.688000] brain: unloading click config
[   12.692000] brain: spring cleaning pages
[   14.180000] wlan_vap_create : enter. devhandle=0x8779c3c0, opmode=IEEE80211_M_HOSTAP, flags=0x0
[   14.188000] wlan_vap_create : exit. devhandle=0x8779c3c0, opmode=IEEE80211_M_HOSTAP, flags=0x0.
[   15.452000] brain: loading click config
[   20.864000]
[   20.864000]  ath_txq_stuck_checker ******** Hardware Q-1 is stuck !!!!
[   36.400000] In write handler 'device_id' for 'wired0/cdp_source :: CDPSource':
[   36.408000]   Bad string passed to device_id
[   36.412000] In write handler 'device_id' for 'wired1/cdp_source :: CDPSource':
[   36.420000]   Bad string passed to device_id

One of the latest firmware versions.
I have 48 of these I'm working through, I was using the openocd jtag stuff, but I've caved and purchased a usbjtag.com u-link NT to do the job.
Biggest difference is the u-link NT uses 8 jtag points, compared to the five on the openocd jtag tutorial, you get the mr18 into trap mode, delete kernel1 and flash kernel2 with an initramfs image.
Whole thing takes less than ten minutes if the mr18 is not being a PITA, some of them you have to wait for the bootlog to timeout, others will happily erase kernel1 and kernel2 but then claim they are not in the trap mode to write, but they have to be in trap mode to erase?

Thank you for your reply.

I won't be buying a u-link NT because it's too expensive for me ($75). I wouldn't have any other use for this device, whereas I can find multiple uses for a Raspberry Pi.

I think I will buy a new AP instead if there is no alternative.

Made my way through thirty of them today over seven hours.
Five are non-operational.
Twenty five successful using usbjtag.
But with those odds, one in six not playing I'd recommend a different device.

I had similar problems with RPi4, using rpi3b fixed the issue