This TamaGo based unikernel allows USB Mass Storage interfacing for the USB armory Mk II internal eMMC card as well as any inserted external microSD card.
Pre-compiled binary releases are available here.
Build the TamaGo compiler (or use the latest binary release):
wget https://github.com/usbarmory/tamago-go/archive/refs/tags/latest.zip
unzip latest.zip
cd tamago-go-latest/src && ./all.bash
cd ../bin && export TAMAGO=`pwd`/go
Build the armory-ums.imx
application executable (note that on secure booted
units the imx_signed
target should be used with the relevant
HAB_KEYS
set.
git clone https://github.com/usbarmory/armory-ums && cd armory-ums
make CROSS_COMPILE=arm-none-eabi- imx
Note that the command above embeds build and VCS information that is useful for understanding the origin of a binary, but this prevents the same binary from being reproducibly built elsewhere. To strip this information so that the binary can be reproducibly built elsewhere:
REPRODUCIBLE=1 make imx
The resulting armory-ums.imx
file can be executed over USB using
SDP.
SDP mode requires boot switch configuration towards microSD without any card inserted, however armory-ums detects microSD card only at startup. Therefore, when starting with SDP, to expose the microSD over mass storage, follow this procedure:
- Remove the microSD card on a powered off device.
- Set microSD boot mode switch.
- Plug the device on a USB port to power it up in SDP mode.
- Insert the microSD card.
- Launch
imx_usb armory-ums.imx
.
Alternatively, to expose the internal eMMC card, armory-ums can be flashed on any microSD.
Once running, the USB armory Mk II can be used like any standard USB drive, exposing both internal eMMC card as well as the external microSD card (if present).
Card | Evaluation order | LED status¹ |
---|---|---|
external microSD | 1st | white |
internal eMMC | 2nd | blue |
¹ LED on indicates successful detection
Andrea Barisani
andrea.barisani@withsecure.com | andrea@inversepath.com
armory-ums | https://github.com/usbarmory/armory-ums
Copyright (c) WithSecure Corporation
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation under version 3 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
See accompanying LICENSE file for full details.