What the USB Armory MkII actually is
Plug a YubiKey in and it does the one thing it was built to do. Plug an Armory in and the host sees whatever you told it to be that morning. The USB Armory MkII is the second-generation open-source secure computer from F-Secure Foundry (now WithSecure Foundry) and Andrea Barisani's team, launched in 2018 and sold through Crowd Supply. The MkI ran a Freescale i.MX53 and was already unusually transparent for secure hardware; the MkII shrinks the design onto a single PCB the size of a flash drive, moves to the NXP i.MX 6ULZ, and adds a carefully chosen set of security peripherals: the NXP CAAM cryptographic engine, an ATECC608 secure element, a fully removable microSD slot, and an exposed JTAG/UART header for development.
That last item is worth pausing on. The debug header is what makes the device developable and it is also an unauthenticated door into a running system for anyone holding it, which is precisely why the fuse-locked boot chain exists and why leaving a device unfused is the most common mistake made with this platform. Underneath, the Armory is a full ARM Linux computer — 900 MHz, 512 MB of RAM — that presents to a host as any USB device class you choose: mass storage, network, HID, serial, because the i.MX 6ULZ controller supports full device-role operation. That generality is the whole platform, and the reason nothing else really occupies this category.
SoC, peripherals & the open-hardware reality
The i.MX 6ULZ is a deliberately boring chip choice, and that is the point. A single Cortex-A7 at 900 MHz, ARMv7-A with NEON, TrustZone, an MMU, 32 KB L1 and 128 KB L2 — old enough that the research community understands the silicon and its published weaknesses, new enough that NXP still issues errata and lifecycle support. You give up performance for that: this is roughly Pi Zero-class compute, and any workload that wants throughput is on the wrong board. The on-die CAAM (Cryptographic Acceleration and Assurance Module) implements AES-128/192/256, 3DES, RSA, ECC on P-256 and P-384, SHA-1/2 and a hardware PRNG, with a key-encryption-key tree rooted in fuses that the application core cannot read out. Keys derived that way are bound to that individual device — which is the security property and also means a dead board is a dead key, so anything you seal this way needs a recovery story written before you fuse it.
The CAAM matters because it is the only secure crypto engine you can realistically drive from your own bare-metal Go runtime on hardware you can buy. Foundry's TamaGo project — a Go compiler and runtime targeting ARM bare metal, no kernel underneath — was built for this device and has since been picked up by other hardware-rooted secure compute projects. Add the ATECC608A secure element, holding ECC P-256 keys the i.MX itself cannot read, and a fuse-locked HABv4 boot chain, and you get one of the few devices where "this key has never been in memory anything but the CAAM could reach" is a defensible sentence rather than a marketing one.
Schematics, PCB layout and bill of materials are published in full. No NDA-gated components, no unreplaceable signed blobs in the boot path, no closed-firmware co-processor sitting quietly on the board. That is rarer than the phrase "open hardware" suggests — most devices carrying the label close the boot ROM or hide a management core. Two honest limits remain: the i.MX boot ROM itself is NXP silicon you take on trust, and open schematics tell you what was designed, not what came off the line, so supply-chain assurance still needs your own inspection.
Software stack — TamaGo, GoTEE and INTERLOCK
Three reference stacks ship with the device, each aimed at a different deployment profile. The choice is really about how much operating system you are willing to trust, and it is not reversible cheaply once you have built on one.
| Layer | Stock distribution | Research / advanced |
|---|---|---|
| User app | Go binaries (TamaGo) or systemd services | Custom GoTEE app, signed payload, OP-TEE clients |
| Runtime | TamaGo — Go on bare metal, no kernel | GoTEE EL3 monitor + signed payload PE |
| OS | Debian armhf, INTERLOCK, Mullvad-style hardened image | OP-TEE OS / no OS (TamaGo direct) |
| Boot | U-Boot, signed HABv4 image | Closed boot ROM + fuse-locked HABv4 |
| Silicon | i.MX 6ULZ + CAAM + on-die fuses | i.MX 6ULZ TrustZone + DRAM scrub on reset |
TamaGo earns its own paragraph. It is a Go runtime executing directly on bare metal — no Linux, no microkernel, no RTOS. Compact, audited, with drivers for the i.MX peripherals you care about (USB, CAAM, GPIO, I²C, SPI), and it lets you ship the entire firmware as one statically linked Go binary. Where a full Linux distribution's attack surface is unacceptable — HSMs, hardware wallets, code-signing appliances — that changes the shape of the problem. The binary you sign is the whole executing surface. No shell, no package manager, no privileged daemon waiting to be misconfigured. The cost is everything Linux was giving you for free: no package ecosystem, no strace when something misbehaves, and any peripheral without a TamaGo driver is a driver you are now writing.
GoTEE is a TrustZone-aware monitor running two TamaGo binaries — one in the Secure World, one in the Normal World — talking over a deliberately narrow RPC channel. Think of it as OP-TEE's cousin, written in Go, with a far shorter path from "I want to test a boundary case" to running code than the C-and-make thicket around most TEE work. It is a research and teaching platform, not a certified TEE, and nobody should present it to an auditor as one.
INTERLOCK is the flagship reference application: a TLS-served file-encryption appliance with a web UI. Plug the stick in, browse to its local-only HTTPS address, upload files, and the Armory encrypts them under AES-256 keys derived from a passphrase and a CAAM-bound master key, writing ciphertext back to the host. It is a genuinely shippable artefact and the best available template for building your own Armory-hosted service. Worth being precise about the threat model it answers: the key material stays off the host, but you are still typing a passphrase into a browser on a machine you may not trust, and INTERLOCK does not fix that.
Supported attack & research vectors
- USB-class shape-shifting: enumerate as HID, mass storage, CDC-ACM, RNDIS or ECM — and change what you are between plug-ins. The USB-Ethernet path is the interesting one, because a host that ignores a new keyboard will still happily route traffic through a freshly attached network adapter, which is what makes Responder and NTLM relay work from a stick.
- Hardware-rooted key custody: ECC private keys in the ATECC608A or sealed in CAAM-encrypted blobs. A portable code-signing or commit-signing token where the key physically cannot leave. The trade is that key escrow becomes a design decision you make up front rather than a mistake you recover from later.
- Trusted execution research: GoTEE gives a clean two-world TEE for attestation, sealed storage and side-channel work, on hardware that costs a fraction of a vendor evaluation kit.
- Covert payload host: a TamaGo binary can present a perfectly ordinary labelled mass-storage volume while running a keystroke injector, an exfiltration agent or a pivot. It looks like a memory stick to a person and to most endpoint tooling — though a USB device that changes class between insertions is exactly what mature device-control policies are watching for.
- Pentester drop box: with the Ethernet expansion, the MkII sits inside a kiosk or behind a rack and beacons a SOCKS tunnel or WireGuard back to operator infrastructure. Bus-powered, so it dies whenever the host does — plan the callback interval around that, not around uptime.
- Secure-boot teaching: HABv4 fuses, signed U-Boot images and CAAM-rooted key derivation, all documented. The best device available for teaching the i.MX secure-boot pipeline, with the caveat that fuses are burned once and a teaching mistake is permanent.
Open-source community, customisation & longevity
Small community, unusually high signal. The usbarmory GitHub organisation carries the hardware files, firmware, TamaGo, GoTEE, INTERLOCK and the Debian image, and the Foundry team answers issues themselves. Hobbyists have published enclosures, carrier boards, USB-C adapters and PoE daughterboards. There is nothing resembling the Flipper's hobbyist scene — the audience is researchers and product engineers — so there is no YouTube video for your specific problem and there is not going to be. What exists instead is a handful of people who genuinely know the platform, answering in pull-request threads, and documentation written by people running the device in production. That is better than a large forum right up until the week the project goes quiet, which is the real risk to weigh before you build a product on it.
Legality & ethical posture
This is the cleanest legal posture of any device reviewed here. A generic ARM computer in a USB shell: no regulated radio, no LF or HF reader, nothing that transmits. It ships from Crowd Supply in the US and EU under ordinary commodity classifications, and customs has not been a story. All the risk is downstream and behavioural. A TamaGo binary doing HID injection or NTLM relay is legally indistinguishable from any other tool doing the same thing, and the same discipline applies: written scope, signed authorisation, an inventory of what you carried in. One thing the form factor does change is disclosure — a device that looks exactly like a memory stick is easy to leave behind and hard to explain afterwards, so count them out and count them back in.
Deployment scenarios
Scenario 1 — Hardware-rooted code-signing token
Provision an ECC P-256 key in the ATECC608A, write a TamaGo binary exposing a PKCS#11 device to the host, hand it to the build engineer as their signing token. The private key never leaves the secure element, so a compromised build host can request signatures but cannot steal the key — which means your signing-request logging matters more than it did before. INTERLOCK is the reference UI to work from.
Scenario 2 — Drop-box pivot
Plug into a kiosk or a back-of-rack USB port. The Armory enumerates as a CDC-ECM Ethernet adapter, takes a DHCP lease, and beacons WireGuard out to operator infrastructure. Tiny attack surface, no distribution footprint, signed boot chain. It is bus-powered and silent about it: if someone reboots the host or moves the cable, the tunnel is gone with no notification, so build the retrieval plan before the deployment plan.
Scenario 3 — TEE research
Reproduce the published GoTEE attestation flows, then mutate the monitor and probe the boundaries. TrustZone research has traditionally meant a vendor evaluation board and an NDA-shaped documentation problem; here the monitor source ships with the device. Results are specific to ARMv7 TrustZone on this silicon and do not transfer cleanly to ARMv8 or to a certified TEE, which is worth stating in the paper rather than in review.
Scenario 4 — Personal HSM
An INTERLOCK-style encrypted vault on a stick that lives on your keyring. CAAM-bound master key, ciphertext on the microSD, decryption happening on the Armory rather than on whatever machine you plugged into. That is a real improvement over container-on-USB schemes where the host does the crypto and therefore sees the key. It is not immunity: a hostile host still sees every plaintext byte you hand it.
How the MkII stacks up against the alternatives
| Spec | USB Armory MkII | Raspberry Pi Zero 2 W | BeagleBone Black |
|---|---|---|---|
| Form factor | USB-A stick (66 × 19 × 8 mm) | Pi Zero W board (65 × 30 mm) | BeagleBone Black (86 × 53 mm) |
| SoC | NXP i.MX 6ULZ — 1× ARM Cortex-A7 @ 900 MHz | Broadcom BCM2835 — 1× ARM11 @ 1 GHz | TI AM3358 — 1× ARM Cortex-A8 @ 1 GHz |
| RAM | 512 MB DDR3 (on-package) | 512 MB LPDDR2 | 512 MB DDR3L |
| Storage | microSD only — no eMMC | microSD only | 4 GB eMMC + microSD |
| Secure crypto IP | NXP CAAM (AES-128/256, RSA, ECC, SHA-2) | None | None |
| Secure Boot | HABv4 + per-device fuses | No (Pi 4+ optional only) | TI Secure Boot (limited) |
| TrustZone | ARMv7 TrustZone — supported via GoTEE | Not exposed | Not productised |
| Native USB role | Device + host (OTG, USB 2.0 HS) | OTG via micro-USB | Host only |
| Bus interfaces | I²C, SPI, GPIO, UART (debug header) | I²C, SPI, GPIO, UART (40-pin) | I²C, SPI, GPIO, UART, CAN, PRU |
| Power | Bus-powered, ~500 mA peak | Bus-powered, ~700 mA peak | Bus or 5 V barrel, ~600 mA |
| Street price | ~$169 (Crowd Supply, sporadic) | $15 (Pi Zero 2 W) | $60–80 (BBB rev C) |
The Pi Zero 2 W wins on price and on the sheer volume of people who have already solved your problem. The BeagleBone wins on industrial I/O. The Armory wins on one axis nothing else on this page competes for: trust posture. It is the only one where the boot chain, the secure element and the runtime are all auditable, and where you can demonstrate a private key has never left the silicon. That is a narrow advantage and it is worth being blunt about the price of it — eleven times the cost of a Pi Zero 2 W, sporadic availability, and a software stack you will partly write yourself. If nothing in your design depends on attestation, the Pi is the correct answer and this is an expensive way to feel secure.
Pros & cons
Buy the MkII if…
- You are building a signing or key-custody appliance and the key must never leave hardware.
- You need a drop box the size of a memory stick with almost no attack surface.
- You do TrustZone or TEE research and want to spend the time on the research, not the toolchain.
- You need firmware and PCB design you can audit rather than take on faith.
- You are teaching i.MX secure boot or CAAM-rooted key derivation.
Skip the MkII if…
- You want something to tinker with on a Saturday — a Flipper or a Pi is the better purchase.
- You need a display, a GPU or any video output — there is no display path at all.
- You expect a tutorial for every problem; here you read source and issue threads instead.
- You need four cores, 4 GB of RAM or NVMe — this is Pi Zero-class compute, look at a Pi 5 or an RK3588 board.
- You need hardware on a schedule — Crowd Supply runs are sporadic and wait lists are normal.
Verdict
The USB Armory MkII is a niche device with no honest competitor inside its niche. If you build portable hardware-rooted secure compute appliances, do TrustZone research, or need payloads that survive a teardown, it is the best $169 on the list. If you cannot name the specific reason you need a CAAM-bound key, a fuse-locked HAB chain or a bare-metal Go runtime, that is the answer: buy a Raspberry Pi, and come back when the requirement is real. Budget the learning too — the out-of-box experience is the weakest thing about the platform, and the first useful build takes days rather than an evening. The Armory rewards expertise the way the Flipper rewards curiosity, and neither is a criticism of the other.