March 18, 2026
MerakiMR18PythonJTAGOpenWrtOpenOCDdeep-dive
The plumbing
I got my mind on my money and my money on my mind — Lil Wayne, “Money On My Mind”
Every previous post in this series focused on the dramatic stuff—cache coherency nightmares, hand-encoded MIPS assembly, twenty-minute UART transfers. But none of that works without the plumbing. The mr18_flash.py script has about 300 lines of infrastructure code that handles three things: talking to a bench power supply, talking to OpenOCD over telnet, and managing the OpenOCD process itself. It’s not glamorous. It’s the kind of code you write at 1am because you’re tired of manually typing commands into four different terminals. Let’s walk through it.
Read more →
March 17, 2026
MerakiMR18MIPSAssemblyJTAGOpenWrtdeep-dive
Encoding instructions by hand like it’s 1985
Post 4 mentioned that I hand-encoded every MIPS instruction as hex constants directly in Python. Here’s what that actually looks like in practice—every trampoline, every encoding decision, and the one-bit typo that almost ruined everything.
Read more →
March 16, 2026
MerakiMR18RouterJTAGOpenWrt
The last mile: a PHY bug and a 20-minute serial transfer
Crocodile leather patches, baby, oh (We made it on our own) — Yeat ft. EsDeeKid, “Made It On Our Own”
Read more →
March 16, 2026
MerakiMR18RouterJTAGOpenWrt
I know you’re somewhere out there, somewhere far away — Bruno Mars, “Talking to the Moon”
Okay so the kernel booted. Like actually booted. I saw Linux version 6.6.73 scroll across the UART console. The CPU was running, the scheduler was active, idle task spinning. I set up my host Ethernet at 192.168.1.2/24, pointed my browser at 192.168.1.1, and… nothing. Ping? Nothing. Telnet? Nothing. ARP? Nothing.
Read more →
March 15, 2026
MerakiMR18RouterJTAGOpenWrt
The cache coherency nightmare and other fun MIPS things
I be going through some things, you don’t know what I’ve been thinkin’ — YG ft. Kendrick Lamar, “Really Be (Smokin N Drinkin)”
Read more →
March 14, 2026
MerakiMR18RouterJTAGOpenWrt
Everything is wired up, let’s flash
She said, “Where we goin’?” I said, “The moon” — Travis Scott, “SICKO MODE”
Alright so we left off with all the wires connected, the bench power supply ready, and my ESP-Prog looking like a spaghetti monster grew on my desk. Time to actually make this thing do something.
Read more →
March 13, 2026
MerakiMR18RouterJTAGOpenWrt
I mean, where the fuck should I really even start?
I got hoes that I’m keepin’ in the dark — Drake ft. Rick Ross, “Money In The Grave”
Okay, but really though, where do I start? Right now we know that the Meraki MR18 is cloud-locked by Cisco. Without an active Meraki dashboard license there are many niceties that I don’t have access to such as:
Read more →
March 13, 2026
MerakiMR18RouterJTAGOpenWrt
This is my first blog—I am not very proficient in writing, especially not technical writing and my grammar sucks, but hey who cares. I will have a series of posts talking about how I managed to install OpenWrt on a Meraki MR18 access point. I will try to explain things as I go to not leave readers in the dark, but some background technical understanding/ability to research more in-depth confusing topics will greatly help the reader.
Read more →