Openloop Hardware Wallet

Product Specification

Version 1.0.0 | Last updated 2026-08-08
Haudi Crypto, Inc. — Kazunori Asada, President & CEO


1. Product Overview

1.1 Product Name

Openloop - a multi-chain hardware wallet

1.2 Product Concept

A commercial-grade hardware wallet that is easy to use even for beginners while providing advanced security. It is compatible with major existing wallet apps (Sparrow Wallet, MetaMask, etc.) and supports multiple communication methods (QR code, USB, BLE). It also includes FIDO2/CTAP2 passkey (security key) functionality, delivering both crypto asset management and web authentication in a single device.

1.3 Target Market


2. Supported Assets

2.1 Supported Cryptocurrencies

Asset type Currency/Token Chain Implementation status
Native currency Bitcoin (BTC) Bitcoin Implemented
Native currency Ethereum (ETH) EVM-compatible chains Implemented
Native currency XRP XRP Ledger Implemented
Native currency Solana (SOL) Solana Implemented
Native currency TRON (TRX) TRON Implemented
Token ERC-20 tokens Ethereum/L2 Implemented

2.2 Supported Bitcoin Script Types

Script type Description Address format Status
P2WPKH Native SegWit (Bech32) bc1q… Supported
P2PKH Legacy 1… Supported
P2SH Script Hash 3… Supported
P2SH-P2WPKH Nested SegWit 3… Supported
P2WSH Native SegWit multisig (BIP48 m/48’/c’/0’/2’, Zpub/Vpub) bc1q… Supported
P2SH-P2WSH Nested SegWit multisig (BIP48 m/48’/c’/0’/1’, Ypub/Upub) 3… Supported
P2SH (multisig) Legacy multisig (BIP45 m/45’, xpub/tpub) 3… Supported

Multisig is supported across the three script types P2WSH / P2SH-P2WSH / P2SH. Cosigner public keys can be exported in Coldcard/Keystone format and imported into a coordinator such as Sparrow.

Bitcoin standards compliance:

Receive address features:

The receive screen displays a representative address for each currency. The custom path feature lets you specify any BIP32/BIP44-compliant derivation path.

Currency Standard derivation path (example) Network switch Custom path
Bitcoin m/84’/0’/0’/0/0 Mainnet / Testnet secp256k1
Ethereum m/44’/60’/0’/0/0 - secp256k1
XRP m/44’/144’/0’/0/0 - secp256k1 / Ed25519
Solana m/44’/501’/0’ - Ed25519
TRON m/44’/195’/0’/0/0 - secp256k1

Custom path feature:

On the receive screen, each element of a BIP32 derivation path can be specified individually. There are two entries, one per signing algorithm:

Path element Description Selectable values
Purpose BIP standard 44 (Legacy) / 49 (Nested SegWit) / 84 (Native SegWit)
Coin Type Currency identifier 0 (BTC) / 1 (BTC Test) / 60 (ETH) / 144 (XRP) / 195 (TRX) / 501 (SOL)
Account Account number 0–9
Change Receive/change/omitted (none) / 0 (receive) / 1 (change)
Index Address index/omitted (none) / 0–99

Variable path depth: setting Change/Index to (none) omits that level (3–5 levels).

Hardened derivation rules:

2.3 Total Built-in Currencies/Tokens and Networks/Chains

Category Currencies/tokens Networks Notes
Bitcoin 1 (BTC) 2 Mainnet + Testnet
Solana 1 (SOL) 3 Mainnet + Devnet + Testnet
TRON 1 (TRX) 3 Mainnet + Shasta + Nile
XRP Ledger 1 (XRP) 2 Mainnet + Testnet
EVM ~2,600 (ERC-20 / 926 unique) 215 129 Mainnet + 86 Testnet
Total ~2,600 225

2.4 Built-in EVM Networks - 215 Networks

Openloop supports all EVM networks. The list below shows the built-in networks whose network name is displayed on the device screen.

Non-built-in networks: EVM networks not on this list can still be signed for. The signing confirmation screen displays “Chain ID: XXXXX”.

EVM Mainnets (129 networks)

Network name Chain ID Native currency
Ethereum 1 ETH
Optimism 10 ETH
Flare Network 14 FLR
Songbird 19 SGB
Elastos 20 ELA
KardiaChain 24 KAI
Cronos 25 CRO
Rootstock RSK 30 RBTC
Telos 40 TLOS
XDC Network 50 XDC
BNB Smart Chain 56 BNB
Syscoin NEVM 57 SYS
OKT Chain 66 OKT
Meter 82 MTR
Viction 88 VIC
Gnosis Chain 100 XDAI
Velas 106 VLX
Fuse 122 FUSE
Huobi ECO Chain 128 HT
Unichain 130 UNI
Polygon 137 POL
Monad 143 MON
Sonic 146 S
Manta Pacific 169 ETH
HashKey Chain 177 HSK
Mint 185 ETH
X Layer 196 OKB
BitTorrent 199 BTT
opBNB 204 BNB
Lens 232 GHO
TAC 239 TAC
Fantom 250 FTM
Fraxtal 252 frxETH
Kroma 255 ETH
Boba Network 288 ETH
Hedera 295 HBAR
zkSync Era 324 ETH
PulseChain 369 PLS
Cronos zkEVM 388 zkCRO
SX Network 416 SX
World Chain 480 ETH
Astar 592 ASTR
Flow EVM 747 FLOW
QL1 766 QOM
Bittensor EVM 964 TAO
Stable 988 FREE
HyperEVM 999 HYPE
Conflux eSpace 1030 CFX
Metis Andromeda 1088 METIS
Polygon zkEVM 1101 ETH
WEMIX 1111 WEMIX
Core 1116 CORE
Lisk 1135 ETH
Moonbeam 1284 GLMR
Moonriver 1285 MOVR
Glue 1300 GLUE
Sei 1329 SEI
Story 1514 IP
Gravity 1625 G
Soneium 1868 ETH
LightLink 1890 ETH
Swellchain 1923 ETH
Milkomeda C1 2001 milkADA
Ronin 2020 RON
Vanar 2040 VANRY
Kava 2222 KAVA
Goat 2345 BTC
Abstract 2741 ETH
Morph 2818 ETH
Peaq 3338 PEAQ
Botanix 3637 BTC
SX Rollup 4162 SX
Merlin Chain 4200 BTC
IoTeX 4689 IOTX
Mantle 5000 MNT
Somnia 5031 STT
Superseed 5330 ETH
Saga 5464 SAGA
DuckChain 5545 TON
Nibiru 6900 NIBI
ZetaChain 7000 ZETA
Cyber 7560 ETH
Canto 7700 CANTO
Kaia 8217 KAIA
Base 8453 ETH
IOTA EVM 8822 IOTA
Evmos 9001 EVMOS
Plasma 9745 FSN
SmartBCH 10000 BCH
BEVM 11501 BTC
Immutable zkEVM 13371 IMX
0G 16661 A0GI
Map Protocol 22776 MAPO
Oasis Sapphire 23294 ROSE
Mezo 31612 BTC
ApeChain 33139 APE
Mode 34443 ETH
Energi 39797 NRG
EDU Chain 41923 EDU
Arbitrum One 42161 ETH
Arbitrum Nova 42170 ETH
Celo 42220 CELO
Etherlink 42793 XTZ
Hemi 43111 ETH
Avalanche C-Chain 43114 AVAX
Zircuit 48900 ETH
Sophon 50104 SOPH
Superposition 55244 ETH
Ink 57073 ETH
Linea 59144 ETH
Henesys 68414 HNS
Berachain 80094 BERA
Blast 81457 ETH
Zedxion 83872 ZEDX
Plume 98866 ETH
Taiko 167000 ETH
Bitlayer 200901 BTC
Scroll 534352 ETH
Katana 747474 ETH
XRPL EVM 1440000 XRP
Zora 7777777 ETH
Corn 21000000 BTCN
Neon EVM 245022934 NEON
Degen 666666666 DEGEN
Ancient8 888888888 ETH
Aurora 1313161554 ETH
Rari Chain 1380012617 ETH
Harmony 1666600000 ONE
SKALE Europa 2046399126 sFUEL

EVM Testnets (86 networks)

Network name Chain ID Native currency
Ethereum Sepolia 11155111 ETH
Ethereum Holesky 17000 ETH
Optimism Sepolia 11155420 ETH
Arbitrum Sepolia 421614 ETH
Base Sepolia 84532 ETH
Polygon Amoy 80002 POL
zkSync Sepolia 300 ETH
Linea Sepolia 59141 ETH
Scroll Sepolia 534351 ETH
Polygon zkEVM Cardona 2442 ETH
BNB Testnet 97 tBNB
Avalanche Fuji 43113 AVAX
Fantom Testnet 4002 FTM
Cronos Testnet 338 TCRO
Flare Coston2 114 C2FLR
Songbird Coston 16 CFLR
Rootstock Testnet 31 tRBTC
Telos Testnet 41 TLOS
XDC Apothem 51 TXDC
OKT Chain Testnet 65 OKT
Meter Testnet 83 MTR
Viction Testnet 89 VIC
Gnosis Chiado 10200 XDAI
Fuse Sparknet 123 SPARK
Huobi ECO Testnet 256 HT
opBNB Testnet 5611 tBNB
Fraxtal Testnet 2522 frxETH
Kroma Sepolia 2358 ETH
Boba Sepolia 28882 ETH
Hedera Testnet 296 HBAR
PulseChain Testnet 943 tPLS
Cronos zkEVM Testnet 282 zkTCRO
Conflux eSpace Testnet 71 CFX
Metis Sepolia 59902 tMETIS
WEMIX Testnet 1112 tWEMIX
Core Testnet 1115 tCORE
Lisk Sepolia 4202 ETH
Moonbase Alpha 1287 DEV
Soneium Minato 1946 ETH
LightLink Pegasus 1891 ETH
Ronin Saigon 2021 RON
Kava Testnet 2221 TKAVA
Abstract Testnet 11124 ETH
Morph Holesky 2810 ETH
Merlin Testnet 686868 BTC
IoTeX Testnet 4690 IOTX
Mantle Sepolia 5003 MNT
ZetaChain Athens 7001 aZETA
Canto Testnet 7701 CANTO
Kaia Kairos 1001 KAIA
IOTA EVM Testnet 1075 IOTA
Evmos Testnet 9000 tEVMOS
SmartBCH Testnet 10001 BCHT
BEVM Testnet 11503 BTC
Immutable zkEVM Testnet 13473 tIMX
Oasis Sapphire Testnet 23295 TEST
ApeChain Curtis 33111 APE
Mode Sepolia 919 ETH
Energi Testnet 49797 tNRG
Celo Alfajores 44787 CELO
Zircuit Testnet 48899 ETH
Berachain Bartio 80084 BERA
Blast Sepolia 168587773 ETH
Taiko Hekla 167009 ETH
Bitlayer Testnet 200810 BTC
Zora Sepolia 999999999 ETH
Neon EVM Devnet 245022926 NEON
Aurora Testnet 1313161555 ETH
Harmony Testnet 1666700000 ONE
Flow EVM Testnet 545 FLOW
X Layer Testnet 195 OKB
BitTorrent Donau 1029 BTT
Sonic Blaze 57054 S
Lens Sepolia 37111 GHO
World Chain Sepolia 4801 ETH
Story Aeneid 1513 IP
Gravity Sepolia 13505 G
Unichain Sepolia 1301 ETH
Manta Pacific Sepolia 3441006 ETH
Mint Sepolia 1687 ETH
HashKey Testnet 133 HSK
Etherlink Testnet 128123 XTZ
Hemi Sepolia 743111 ETH
Ink Sepolia 763373 ETH
Plume Testnet 98864 ETH
XRPL EVM Devnet 1440002 XRP

2.5 Built-in ERC-20 Tokens - ~2,600 Tokens

Openloop supports all ERC-20 tokens. The firmware ships with ~2,600 tokens spanning 129 mainnets (out of all 215 networks) — including the same token deployed across multiple chains, with 926 distinct tokens — and their token information (symbol, decimals, name) is displayed automatically.

Non-built-in tokens: ERC-20 tokens not on this list can still be signed for. The signing confirmation screen displays “ERC-20 Token”, and the token can be identified by its contract address.

Breakdown by Token Category

Category Token count (approx.) Representative examples
Stablecoins 150+ USDT, USDC, DAI, JPYC, USDE, TUSD, FRAX
DeFi tokens 400+ UNI, AAVE, LINK, CRV, SKY, COMP, SNX
Memecoins 100+ SHIB, DOGE, PEPE, FLOKI, BONK
L2/infrastructure tokens 200+ ARB, OP, MATIC, IMX, LDO, BLUR
Gaming/NFT 150+ AXS, SAND, MANA, ENJ, GALA, APE
AI tokens 50+ FET, AGIX, RNDR, OCEAN
Others 1,500+ Various project tokens

Major Stablecoins (excerpt)

Token name Symbol Decimals Supported chains
Tether USD USDT 6 17
USD Coin USDC 6 29
Dai Stablecoin DAI 18 9
JPY Coin JPYC 18 4
Ethena USDe USDE 18 23
Frax FRAX 18 24

Major DeFi Tokens (excerpt)

Token name Symbol Decimals Supported chains
Uniswap UNI 18 12
Chainlink LINK 18 70
Aave AAVE 18 11
Sky SKY 18 1
Lido DAO LDO 18 4
Arbitrum ARB 18 4

Notes:

2.6 Ethereum Extensions

Supported Ethereum standards:

Standard Description Status
EIP-55 Address checksum (mixed-case) Supported
EIP-155 Replay protection (chain ID signing) Supported
EIP-191 Personal Sign (message signing) Supported
EIP-712 Typed Structured Data signing Supported
EIP-1559 Type 2 transaction (Priority Fee) Supported
EIP-2718 Typed Transaction Envelope Supported
EIP-2930 Access List (Type 1) Not supported (rejected at signing)
EIP-4527 QR Code eth-sign-request Supported
EIP-7702 Set Code for EOAs (smart account delegation) Supported
ERC-20 Token standard Supported
ERC-721 NFT standard (clear-signing of transferFrom / safeTransferFrom / approve / setApprovalForAll) Supported
ERC-1155 Multi-token standard (safeTransferFrom / safeBatchTransferFrom) Supported
Legacy (Type 0) Legacy transactions (including pre-EIP-155) Supported

Smart contract support:

EIP-7702 smart account delegation:

Multisig support:

Automatic transaction type detection:

Type Display name Detection condition
Send “Send” value > 0, data = empty
ERC-20 Transfer “ERC-20 Transfer” data = 0xa9059cbb…
Contract Interaction “Contract Interaction” data ≠ empty, methodSig ≠ transfer
Contract Creation “Contract Creation” to = null
Off-chain Signature “Off-chain Signature” EIP-712 request
Smart Account Auth “Smart Account Auth” EIP-7702 Authorization signing

2.7 XRP Ledger Support

Supported signing algorithms:

Standard Description Status
ECDSA secp256k1 secp256k1 signing Supported
EdDSA Ed25519 Ed25519 signing Supported

Dual signing algorithms:

XRP Ledger supports two signing algorithms, secp256k1 and Ed25519. Openloop determines the algorithm automatically from the address prefix:

Transaction handling:

Type Display name Detection condition
Payment “XRP Payment” TransactionType=0x0000
Other “XRP Transaction” Anything else

Derivation paths:

XRP technical specifications:

Item Value
Transaction format XRP Binary Format (direct binary signing)
Hash prefix 0x53545800 (“STX\0”)
Signature hash secp256k1: SHA-512 Half (first 32 bytes) / Ed25519: RFC 8032 (signs the prefixed message directly)
Decimals 6 (1 XRP = 10^6 drops)

2.8 Solana Support

Supported signing algorithms:

Standard Description Status
Ed25519 EdDSA signing (RFC 8032) Supported
Versioned Transaction v0 transaction (Address Lookup Table support) Supported
Legacy Transaction Legacy transaction Supported

Transaction parsing:

Type Display name Detection condition
SOL Transfer “SOL Transfer” System Program Transfer instruction
SPL Token Transfer “SPL Token Transfer” Token Program Transfer instruction
Other “Solana Transaction” Anything else

Derivation paths:

2.9 TRON Support

Supported interfaces: USB, BLE (Air Gap QR not supported)

Supported signing algorithms:

Standard Description Status
ECDSA secp256k1 secp256k1 signing Supported

TRON technical specifications:

Item Value
Curve secp256k1 (same as Ethereum)
Address generation keccak256 → 0x41 prefix → Base58Check(SHA256D) → “T…” address
TX signature hash SHA-256 (different from Ethereum’s keccak-256)
V value 27 + recovery_id (fixed, no EIP-155)
BIP44 path m/44’/195’/0’/0/0
Decimals 6 (1 TRX = 10^6 SUN)

Transaction parsing:

Type Display name Detection condition
TRX Transfer “TRX Transfer” TransferContract
TRC-20 Transfer “TRC-20 Transfer” TriggerSmartContract + transfer()
Other “TRON Transaction” Anything else

Derivation paths:

Ethereum compatibility and differences:

Because TRON is derived from Ethereum, it shares much in common, but there are important differences:

Item Ethereum TRON
Curve secp256k1 secp256k1 (same)
Address hash keccak256 keccak256 (same)
Address prefix 0x (hex) 0x41 → Base58Check → “T…”
TX signature hash keccak-256 SHA-256
V value EIP-155 (chainId-dependent) 27 + recovery_id (fixed)
Coin Type (BIP44) 60 195

2.10 Supported Signing Methods

Signing type BTC ETH XRP SOL TRX Supported interfaces
Transaction signing *1 USB, BLE, Air Gap *1
Message signing (personal_sign) - USB, BLE
Typed data signing (EIP-712) - - - - USB, BLE
PSBT signing - - - - USB, BLE, Air Gap
Authorization signing (EIP-7702) - - - - USB, BLE
Batch signing (signAllTransactions) - - - - USB, BLE
Sign + broadcast - USB, BLE

*1 TRX supports USB/BLE only (Air Gap QR not supported)

Broadcast (transaction submission):

Broadcasting a signed transaction is performed through Openloop Connect:

Currency Method Broadcast method Supported networks
BTC sendTransfer Blockstream/mempool.space API Mainnet, Testnet
ETH eth_sendTransaction Via dApp (WalletConnect) All EVM chains
SOL solana_signAndSendTransaction Solana JSON-RPC sendTransaction Mainnet, Devnet, Testnet
TRX tron_signAndSendTransaction TronGrid API broadcastTransaction Mainnet, Shasta, Nile

3. FIDO2/CTAP2 Passkey Functionality

Openloop also operates as a FIDO2/CTAP2-compliant security key.

Certification status: Openloop has not currently obtained FIDO Alliance FIDO Certified Authenticator certification (FIDO2 Certified). While its CTAP2/WebAuthn implementation is spec-compliant, official FIDO Alliance certification and AAGUID registration (FIDO Metadata Service) may be considered for the future.

3.1 Overview

Item Specification
Protocol CTAP2 (FIDO_2_0 / FIDO_2_1)
Backward compatibility U2F (FIDO U2F V2)
Transport USB HID (CTAPHID, OS native) / BLE (via the Credential Provider in Openloop Connect)
Signing algorithms ES256 (P-256/NIST) / EdDSA (Ed25519)
Discoverable Credentials Supported
User Presence (UP) Confirmation dialog on the device screen
User Verification (UV) Authentication with the device PIN
Maximum credentials 100
Credential ID length 32 bytes
Credential ID derivation 32 bytes. Cryptographically bound to this device using an SE050 key, and issues different credential IDs for USB and BLE (supporting transport-based classification by RPs)

Behavior by Transport

Transport Path Connect involvement
USB CTAPHID OS standard FIDO authenticator stack (Win: webauthn.dll, Mac/Linux: native) → directly to the device Not required
BLE (via Connect) iOS: ASCredentialProviderViewController / Android: CredentialProviderService → tunnels CTAP2 to the device via the BLE transport inside Connect Required (Openloop Connect mobile app)

Because the same Openloop device generates a different credential_id per transport, USB and BLE can be registered as separate credentials with an RP. For RPs that filter by transport (e.g. Google), this is essential when you want to use both transports.

3.2 Security Design

3.3 Supported Browsers and Platforms

USB CTAPHID Path

Platform Chrome Edge Firefox Safari
Windows -
macOS -

Behavior details:

Note: the wait-for-response behavior on macOS Safari/Firefox is a limitation of the OS-side AuthenticationServices/authenticator-rs framework, not an issue on the Openloop device side. Cancellation via CTAPHID_CANCEL works correctly on all platforms.

BLE (Openloop Connect) Path

Platform Browser Required OS version
iOS Safari (via the Credential Provider Extension) iOS 17+
Android Chrome / Edge (via the Credential Provider Service) Android 14+

Behavior details:

3.4 User Interface

3.5 U2F Backward Compatibility

Supports U2F_REGISTER, U2F_AUTHENTICATE, and U2F_VERSION of U2F (Universal 2nd Factor, also known as CTAP1)

3.6 PIV/PKCS#11 Functionality

Openloop includes a PIV (Personal Identity Verification)-compliant APDU interface and can be used, via a PKCS#11 library, for SSH authentication and Firefox client certificate authentication.

Item Specification
Protocol PIV (NIST SP 800-73-compatible subset)
Communication USB HID (APDU framing)
Signing algorithms ECDSA P-256 / Ed25519 / RSA-2048
Slots 9A (Authentication), 9C (Digital Signature), 9D (Key Management), 9E (Card Authentication)
PIV ON/OFF Toggleable in the device settings screen
PIV PIN Optional (6–8 ASCII characters, stored only as non-plaintext)

Dual-mode signing:

Condition Behavior Use case
PIN authenticated over USB Silent signing (no confirmation screen) Automation / CI/CD
PIN not sent Confirmation screen shown on the device Interactive use

PKCS#11 library:

3.7 Behavior on Factory Reset

Passkey-related data and PIV data are all erased.


4. Communication Methods

4.1 QR Code Communication Implemented

Use case: integration with desktop apps such as Sparrow Wallet (air-gapped operation)

Supported input formats:

Format Description Status
BBQr V0/V1 Multi-frame, multi-part (Bitcoin) Supported
UR crypto-psbt Bitcoin PSBT (Blockchain Commons) Supported
UR eth-sign-request Ethereum signing request (EIP-4527) Supported
UR sol-sign-request Solana signing request (Keystone-compatible) Supported
UR xrp-sign-request XRP signing request Supported
Base64 PSBT Single QR (Bitcoin) Supported
ZLIB compression wbits=-10 (BBQr) Supported

Supported output formats (switchable in settings):

Format Description Recommended use
BBQr ZLIB compression, QR v4-5 Sparrow Wallet (recommended)
UR Fountain codes Keystone, AirGap Vault, Solflare
Base64 Single QR, uncompressed General/debugging

QR code specifications:

4.2 USB Communication Implemented

Protocol: USB HID

USB mode selection:

The USB mode can be selected from the settings screen. Mode changes take effect immediately, with no restart required.

Mode VID PID Description
Native 0x303A 0x8341 Default. Espressif VID + Openloop PID (officially allocated)
Compatible 0x2C97 0x1011 For when compatibility with existing wallet apps is required

Common settings:

Item Value
Manufacturer “Openloop”
Product “Openloop Wallet”
Interfaces HID + FIDO HID + CDC (composite device, up to 4 interfaces)
HID packet size 64 bytes

Three-stage USB configuration switching:

Mode USB setting Passkey setting Interface configuration
CDC only OFF - CDC (2 interfaces)
HID + CDC ON OFF Ledger HID + CDC (3 interfaces)
HID + FIDO HID + CDC ON ON Ledger HID + FIDO HID + CDC (4 interfaces)

USB identifiers:

Supported applications:

USB settings:

USB OTA update:

4.3 BLE Communication Implemented

Protocol: Ledger Nano X-compatible GATT

Item Value
Service UUID 13D63400-2C97-0004-0000-4C6564676572
Notify Characteristic 13D63400-2C97-0004-0001-4C6564676572
Write Characteristic 13D63400-2C97-0004-0002-4C6564676572
Device name “Openloop”
MTU 247 bytes

Security:

Item Setting
Pairing method Secure Connections (LE SC)
Security level Level 2 (MITM protection)
Authentication method Numeric Comparison (6-digit code)
Encryption AES-CCM (128-bit)
Bonding NVS-persisted (up to 3 devices)

Pairing:

Supported applications:

BLE OTA update:

Supported OTA tools:

4.4 APDU Protocol (common to USB/BLE) Implemented

APDU command processing is implemented in the apdu_handler component and is shared by both the USB HID and BLE transport layers. Wallet applications have access to the same functionality whether connected over USB or BLE.

APDU CLA support levels:

Protocol Compatibility Notes
CLA=0xE0 (Legacy) Partial support Main commands for Bitcoin/Ethereum/XRP/Solana/TRON
CLA=0xE1 (Bitcoin v2) Minimal GET_EXTENDED_PUBKEY, GET_MASTER_FINGERPRINT only
CLA=0xB0 (Common) Supported OPEN_APP, GET_BATTERY_STATUS
CLA=0xF0 (Openloop) Proprietary BTC PSBT signing, chain_id-tagged signing, GET_DEVICE_INFO

Emulated app versions:

App Version Notes
Dashboard (BOLOS) 2.0.6 For Ledger Live dashboard recognition
Bitcoin 2.0.6 Because the Legacy Protocol (CLA=0xE0) is used
Ethereum 1.17.0 MetaMask/Safe/Rabby-compatible (EIP-7702 support)
XRP 2.5.2 Meets the XRP Toolkit 2.0.0+ requirement
Solana 1.0.0 hw-app-solana-compatible
TRON 1.0.0 TronScan-compatible

Automatic app switching:

To ensure connectivity with each wallet software, Openloop automatically switches its app mode based on the received APDU command. The user can choose the initial value with “Default currency” on the home screen, and it updates automatically in response to host wallet operations.

Trigger Behavior
OPEN_APP (CLA=0xB0, INS=0x01 / CLA=0xE0, INS=0xD8) → specified currency mode (Bitcoin/Ethereum/XRP/Solana/Tron)
BIP32 path coin_type detection → corresponding currency mode (0’=BTC, 1’=BTC testnet, 60’=ETH, 144’=XRP, 501’=SOL, 195’=TRON)
Bitcoin signing INS (0x42, 0x44, 0x48, 0x4A) → automatically Bitcoin mode
CLA=0xF0 (Openloop proprietary command) → currency mode according to the command
Air Gap QR scan → detected currency mode

Connection handshake / status query commands (read-only):

CLA INS Command Status Description
0xE0 0x01 GET_VERSION Get firmware/app version (Ledger-compatible)
0xB0 0x01 OPEN_APP / GET_APP_INFO Lc=0 queries the current app, Lc>0 switches apps
0xE0 0xD8 OPEN_APP App switching (Safe/MetaMask-compatible)
0xF0 0xA0 GET_DEVICE_INFO Get device identity + state + capability information
0xB0 0xA7 GET_BATTERY_STATUS Get remaining battery level

Supported APDU commands - CLA=0xE0 (Bitcoin Legacy Protocol):

INS Command Status Description
0x40 GET_WALLET_PUBLIC_KEY Get public key/address
0x42 GET_TRUSTED_INPUT Process previous transaction
0x44 UNTRUSTED_HASH_TX_INPUT_START Start input hash
0x48 UNTRUSTED_HASH_SIGN Transaction signing
0x4A UNTRUSTED_HASH_TX_INPUT_FINALIZE Finalize output hash

Supported APDU commands - CLA=0xE1 (Bitcoin v2 Protocol):

INS Command Status Description
0x00 GET_EXTENDED_PUBKEY Get xpub (Sparrow support)
0x01 REGISTER_WALLET Register wallet policy
0x02 GET_WALLET_ADDRESS Policy-based address
0x03 SIGN_PSBT PSBT signing (※ supported via CLA=0xF0 or QR)
0x05 GET_MASTER_FINGERPRINT 4-byte master fingerprint

Supported APDU commands - CLA=0xE0 (Ethereum Protocol):

INS Command Status Description
0x02 GET_PUBLIC_KEY Get public key/address
0x04 SIGN Transaction signing
0x06 GET_APP_CONFIGURATION Get app information
0x08 SIGN_PERSONAL_MESSAGE Message signing (EIP-191)
0x0C SIGN_EIP712 EIP-712 signing (64-byte prehash version / Safe support)
0x14 PROVIDE_ERC20_TOKEN_INFO Set ERC-20 token info (clear-signing)
0x16 PROVIDE_NFT_INFO Set NFT info (clear-signing)
0x1A EIP712_STRUCT_DEFINITION EIP-712 v2 streaming: type definition (Ledger ETH App v1.10+ / MetaMask Mobile, Rabby)
0x1C EIP712_STRUCT_IMPLEMENTATION EIP-712 v2 streaming: value (root / array / field)
0x1E EIP712_FILTERING ack only (filtering not implemented — the host falls back to displaying raw fields)
0x34 SIGN_AUTH_7702 EIP-7702 Authorization signing

Supported APDU commands - CLA=0xE0 (XRP Protocol):

INS Command Status Description
0x02 GET_ADDRESS Get XRP address
0x04 SIGN_TX Transaction signing

Supported APDU commands - CLA=0xE0 (Solana Protocol, Ledger Solana-compatible):

INS Command Status Description
0x05 GET_PUBKEY Get public key (raw 32-byte Ed25519)
0x06 SIGN_MESSAGE Transaction signing (P2 chunking support)
0x07 SIGN_OFFCHAIN_MESSAGE Off-chain message signing

Supported APDU commands - CLA=0xE0 (TRON Protocol, routed by coin_type=195’):

INS Command Status Description
0x02 GET_ADDRESS Get TRON address (Base58Check “T…”)
0x04 SIGN_TX Transaction signing (SHA-256 hash)
0x08 SIGN_MESSAGE Message signing (personal_sign)

Supported APDU commands - CLA=0xF0 (Openloop proprietary protocol):

INS Command Status Description
0xA0 GET_DEVICE_INFO Get device identity + state + capability information
0x70 BTC_SIGN_PSBT Receive and sign PSBT
0x71 BTC_GET_SIGNED_PSBT Get signed PSBT
0x72 BTC_GET_ACCOUNT_XPUB Get account xpub (BIP32 derivation)
0x73 BTC_SIGN_MESSAGE Bitcoin message signing (BIP-137)
0x08 ETH_SIGN_MESSAGE chain_id-tagged message signing
0x0C ETH_SIGN_EIP712 chain_id-tagged EIP-712 signing

GET_DEVICE_INFO response format (16 bytes):

Offset Content Size
0-1 Magic “OL” (0x4F 0x4C) 2
2-3 Model ID (BE). Openloop V1 = 0x0001 2
4 HW Revision 1
5-7 Main FW Version (major, minor, patch) 3
8-10 Recovery FW Version (major, minor, patch) 3
11-12 State bitmask (LE) 2
13-14 Features bitmask (LE) 2
15 Reserved 1

State bitmask (16-bit):

bit Name Meaning
0 WALLET_PROVISIONED Wallet has been generated
1-3 LANG Language index (3 bits, 0=EN, 1=JA)
4 USB_ENABLED USB communication ON
5 USB_VID_COMPAT USB VID compatible mode (0x2C97). 0 means standard (0x303A)
6 BLE_ENABLED BLE communication ON
7 BLE_PAIRED BLE paired
8 FIDO_ENABLED FIDO/Passkey functionality ON
9 PIV_ENABLED PIV/PKCS#11 functionality ON
10-15 reserved For future expansion

The Features bitmask is a bitmask representing hardware capabilities. Because the bit layout may change with firmware version, the public API does not treat it as a fixed value.


5. User Interface

5.1 Hardware Specifications

Item Specification
Device Openloop
Screen size 2.0-inch IPS LCD
Resolution 320 × 240 pixels
Touch input Capacitive touch panel
Camera GC0308 (0.3 MP) for QR scanning
Speaker AW88298 (I2S audio)

5.2 Screen Layout

Swipe navigation (8 screens):

Screen Function
Home Displays receive address
Send Camera preview, PSBT/transaction scanning, confirmation and signing
Receive Displays address QR code
Wallet New wallet, wallet linking, wallet deletion, recovery phrase
Passkey/PIV Passkey ON/OFF, credential list/deletion/reset, PIV ON/OFF, PIV PIN management
Security PIN setup, change, deletion
Currency Displays supported networks and supported tokens, BTC Air Gap QR format switching
Settings Audio, language settings, USB settings, BLE settings, factory reset, about this product

Other functional screens:

Screen Access method
QR scan Camera preview and signing flow on the SEND screen
Animated QR display Displays signed data as a QR code after signing
Signed transaction display Detailed review of the signing result

5.3 Multilingual Support

5.4 Audio Feedback

Sound Timing
Startup sound On app startup
Click sound On button tap
Progress sound On reading a QR frame
Success sound On successful operation
Error sound On authentication failure or operation failure
Payment sound On successful transaction signing

6. Security

6.1 Security Implementation: SE050 DualSecure + eFuse

Secure Element SE050:

Item Specification
Chip NXP SE050 (EAL6+ certified)
Connection I2C (400 kHz)
Signing keys ECDSA secp256k1 / EdDSA Ed25519

DualSecure encryption:

The entropy (the source data of the mnemonic) is protected with dual keys — one on the ESP32 side and one on the SE050 side — and cannot be decrypted unless both are present. The ESP32-side key is burned into eFuse and is non-readable; the SE050-side private key never leaves the chip.

Signing key management:

Key type Supported currencies
secp256k1 Bitcoin, Ethereum
EdDSA Ed25519 XRP, Solana

Signing keys are managed inside the SE050, and signing always completes inside the SE050 (private keys are never extracted from the secure element). Frequently used keys are kept on the device, and only the keys needed for signing are prepared on demand, speeding up repeated signing.

Encrypted storage:

Item Specification
Entropy encryption AES-256-GCM (256-bit key, 16-byte authentication tag for tamper detection)
Key derivation Key derivation based on the SE050 ECDH shared secret
Wallet storage area NVS encryption (XTS-AES, key derived at runtime from the eFuse HMAC key and never stored in flash)
Firmware integrity Secure Boot V2 (RSA-3072 signature verification) boots only signed images
eFuse Keys burned into eFuse (irreversible and non-readable)

PIN authentication:

EULA acceptance on first boot:

Physical confirmation:

6.2 Security Highlights

6.3 Comparison with Commercial Wallets

Wallet Signing method Security level
Openloop Hardware signing inside the SE050 High
Ledger Nano Signing inside the SE High
Trezor Software signing inside the MCU Medium
Keystone Signing inside the SE High
Jade Software signing inside the MCU Medium

6.4 Security Best Practices

OTA firmware signature verification:

Item Specification
Algorithm RSA-3072 + SHA-256 (RSA-PSS)
Verification timing On OTA completion (inside esp_ota_end())
On verification failure OTA error (current FW retained)

7. Hardware Specifications

7.1 Hardware Specifications

Item Specification
CPU ESP32-S3 Dual-core Xtensa LX7 (240 MHz)
RAM 512KB SRAM + 8MB PSRAM
Flash 16MB
Display 2.0-inch IPS LCD (320×240) with touch
Camera GC0308 (0.3 MP) for QR scanning
Speaker AW88298 I2S audio amplifier (22.05 kHz/16-bit)
USB USB Type-C
Bluetooth BLE 5.0 (NimBLE)
Wi-Fi 2.4 GHz 802.11 b/g/n (not used)
Power USB-powered / built-in Li-Po battery

7.2 Flash Partition Layout

Partition Type Offset Size Purpose
nvs data (nvs) 0x9000 32KB Settings data storage
nvs_secure data (nvs) 0x11000 32KB Wallet data (encrypted)
otadata data (ota) 0x19000 8KB OTA boot information
phy_init data (phy) 0x1B000 4KB Radio calibration
factory app (factory) 0x20000 4MB OTA Recovery Mini (recovery FW)
ota_0 app (ota_0) 0x420000 4MB Main firmware slot 1
ota_1 app (ota_1) 0x820000 4MB Main firmware slot 2
coredump data (coredump) 0xC20000 64KB Crash dump storage
nvs_data data (nvs) 0xC30000 256KB CTAP2 credentials, registry data
jp_font_14 data 0xC70000 768KB Japanese font (JIS X 0208)

OTA update:

7.3 Recovery Mode

An emergency recovery feature for when the main firmware cannot boot.

Three conditions for entering recovery mode:

Condition Trigger Protection level
Power button long-press Release the power button during the startup sound User operation
3 consecutive crashes The main FW crashes 3 times in a row Application level
APP ROLLBACK Partition corrupted/invalid Bootloader level

Power button operation:

  1. Turn the device off
  2. Hold the power button and turn it on
  3. Release the power button when the startup sound (after about 1 second) plays
  4. Releasing within 3 seconds enters recovery mode

OTA Recovery Mini features:

Feature Description
USB OTA HID + CDC composite USB device (both transports supported simultaneously)
BLE OTA Via the Openloop-dedicated BLE service
Settings screen Language switching, USB/BLE enablement, BLE pairing
Boot main FW “Boot main” button (ota_0 → ota_1 fallback)
Automatic power-off Automatic shutdown after 5 minutes of inactivity with no USB/BLE connection
RSA signature verification RSA-3072 + SHA256 signature verification on main FW update

Note: the recovery FW only supports updating the main FW. The recovery FW itself cannot be OTA-updated.

Supported OTA tools:

7.4 Crash Dump (Coredump)

Automatically saves debug information when the device crashes.

Item Specification
Storage coredump partition (64KB)
Save timing On panic/abort
Contents Stack trace, register state
Readout Used by developers for failure analysis

8. Software Composition

8.1 Technology Stack

Component Version
ESP-IDF v5.4
LVGL 9.4.0-dev
ESP-BSP Openloop custom BSP
mbedTLS 3.6.2
NimBLE ESP-IDF built-in version
TinyUSB ESP-IDF built-in version
secp256k1 Bitcoin Core (submodule)
trezor_crypto trezor-crypto fork

8.2 Key Components

Component Function
apdu_handler APDU protocol processing
usb_hid USB HID transport
usb_cdc USB CDC transport (OTA/serial log)
ble_comm BLE GATT transport
wire_protocol Unified wire protocol
psbt Bitcoin PSBT parser/serializer
bbqr / bbqr_wrapper BBQr encode/decode
esp32_bc-ur UR (Uniform Resources) processing
secure_storage DualSecure encrypted storage
nvs_wallet Wallet settings NVS management
se050 SE050 secure element control
network_registry EVM network management (215 chains)
token_registry ERC-20 token management (~2,600 tokens)
delegate_registry EIP-7702 delegate contract management
ethereum ETH/ERC-20 transaction processing
xrp XRP transaction processing
solana Solana transaction processing, AirGap UR
bitcoin_utils Bitcoin-related utilities
currency_abstraction Multi-currency abstraction layer (BTC/ETH/XRP/SOL/TRX)
aes_gcm AES-256-GCM encryption
cbor_rpc Device control/update protocol processing
operation_lock Operation mutual exclusion
audio_manager Audio feedback
language Multilingual support (EN/JA)
ui_common Common UI components
ctap2 FIDO2/CTAP2 protocol stack (MakeCredential, GetAssertion, U2F)
piv PIV/PKCS#11 smart card functionality
ctaphid CTAPHID packet framing (HID transport layer)
usb_hid_cbor FIDO HID packet transport + CBOR processing
ota_manager OTA update management (USB/BLE)
trezor_crypto Cryptographic library (ed25519, secp256k1, SHA, HMAC, etc.)

8.3 Binary Size


9. Compatibility with Existing Wallets

9.1 Supported Wallet Apps

App Communication BTC ETH XRP SOL TRX Notes
MetaMask Mobile BLE - - - - iOS/Android, recommended
MetaMask (PC) USB - - - - WebHID, EIP-712 support
Sparrow Wallet QR / USB - - - - P2WSH multisig support
Safe (Gnosis Safe) USB - - - - EIP-712 multisig support
Rabby Wallet USB / BLE - - - - Multi-chain support
XRP Toolkit USB - - - - XRP only
Solflare USB / BLE - - - - Solana only, Ledger-compatible
TronScan USB - - - - Ledger HID-compatible, Shasta/Mainnet
WalletConnect dApps WalletConnect - - Via Openloop Connect, 600+ dApps
FIDO2 websites USB HID - - - - - Passkey registration/authentication (Windows/macOS)
AirGap Vault QR - UR-compatible
Keystone QR - - UR-compatible
Ledger Live - Not supported (device attestation)

9.2 Protocol Compatibility

Protocol Compatibility Supported currencies
Ledger Bitcoin App Compatible BTC
Ledger Bitcoin v2 Partial BTC (xpub/fingerprint)
Ledger Ethereum App Compatible ETH/EVM/TRX
Ledger XRP App Compatible XRP
Ledger Solana App Compatible SOL
Ledger TRON App Compatible TRX
BIP174 (PSBT) Compatible BTC
UR crypto-psbt Compatible BTC
UR sol-sign-request/sol-signature Compatible SOL
UR xrp-sign-request Compatible XRP
BBQr V0/V1 Compatible BTC
EIP-191 (personal_sign) Compatible ETH/TRX
EIP-712 (Typed Data) Compatible ETH
CTAP2 (FIDO2) Compatible Passkey
U2F (FIDO) Compatible Passkey (backward compatibility)
WalletConnect v2 Compatible ETH/SOL/TRX

9.3 Comparison with Competing Products

Table 1: Basic specifications

Product Secure element Screen Communication
Openloop SE050 EAL6+ Touch Air Gap, USB, BLE
Ledger Nano X EAL5+ Buttons USB, BLE
Ledger Stax EAL6+ Touch (E-Ink) USB, BLE
Trezor Safe 5 EAL6+ Touch USB
Trezor Safe 7 TROPIC01 Touch USB, BLE
Keystone 3 Pro EAL5+ ×3 Touch Air Gap
Jade Plus Virtual SE Buttons Air Gap, USB, BLE

Table 2: Supported ecosystems

Product Bitcoin EVM XRP Solana TRON Currencies/tokens
Openloop (215 chains) Ed25519/secp256k1 ~2,600
Ledger secp256k1 5,500+
Trezor 9,000+
Keystone 5,500+
Jade BTC only

Table 3: Feature comparison

Feature Openloop Ledger Nano X Keystone Jade
Air Gap
USB
Bluetooth
Touchscreen
Chain/token name display
Passkey (FIDO2)
Multi-chain

Openloop highlights:

9.4 Native Mode Strategy

Openloop has two operating modes: “Compatible mode” and “Native mode”.

Mode VID/PID Use case
Native mode 0x303A / 0x8341 Used with Openloop Connect, the Web SDK, etc. (default)
Compatible mode 0x2C97 / 0x1011 Used with existing wallet apps (Sparrow, Rabby, etc.)

The connection methods that operate in native mode keep expanding, and the reliance on compatible mode is declining.

Connection methods that support native mode:

Connection method Path Platform
WalletConnect Via Openloop Connect All platforms
LocalWebSocket Via Openloop Connect Desktop / Android
Safari Web Extension Via Openloop Connect iOS
WebHID Direct connection from the browser Desktop (Chrome, etc.)

Advantages of native mode:

With WalletConnect-compatible dApps (600+), WebHID-capable web apps, and Web3 dApps via a browser extension, an environment is taking shape in which native mode alone is fully sufficient as a practical wallet.


10. References

10.1 Bitcoin Technical Standards (BIP)

Standard Description URL
BIP-39 Mnemonic code https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki
BIP-32 HD Wallets https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
BIP-44 Multi-account hierarchy https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki
BIP-84 Native SegWit derivation path https://github.com/bitcoin/bips/blob/master/bip-0084.mediawiki
BIP-143 SegWit Sighash https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki
BIP-174 PSBT https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki

10.2 Ethereum Technical Standards (EIP/ERC)

Standard Description URL
EIP-155 Replay protection https://eips.ethereum.org/EIPS/eip-155
EIP-712 Typed Structured Data https://eips.ethereum.org/EIPS/eip-712
EIP-1559 Fee Market Change https://eips.ethereum.org/EIPS/eip-1559
EIP-2718 Typed Transaction https://eips.ethereum.org/EIPS/eip-2718
EIP-4527 QR Code Data https://eips.ethereum.org/EIPS/eip-4527
EIP-7702 Set Code for EOAs https://eips.ethereum.org/EIPS/eip-7702
ERC-20 Token standard https://eips.ethereum.org/EIPS/eip-20

10.3 XRP Ledger Technical Standards

Standard Description URL
XLS-11d Secret Numbers https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0011d-secret-numbers
XLS-12d Secp256k1 Keys https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0012d-secp256k1-keys
XRP Binary Format Transaction serialization https://xrpl.org/docs/references/protocol/binary-format
XRP Signing Signing algorithm https://xrpl.org/docs/concepts/transactions/finality-of-results/sign-the-transaction
XRP Address Address format (Base58Check) https://xrpl.org/docs/concepts/accounts/addresses
Payment Tx Basic payment transaction https://xrpl.org/docs/references/protocol/transactions/types/payment

Openloop implementation details:

10.4 Solana Technical Standards

Standard Description URL
Ed25519 EdDSA signing https://ed25519.cr.yp.to/
Solana Transaction Transaction format https://solana.com/docs/core/transactions
sol-sign-request Keystone-compatible QR signing request https://github.com/KeystoneHQ/Keystone-developer-hub/blob/main/research/solana-qr-data-protocol.md
Solana JSON-RPC RPC API https://solana.com/docs/rpc

Openloop implementation details:

10.5 TRON Technical Standards

Standard Description URL
TIP-1 TRON Address Standard https://github.com/tronprotocol/tips/blob/master/tip-1.md
TRON Protocol Protocol Buffers definitions https://github.com/tronprotocol/protocol
TronGrid API TRON HTTP/JSON-RPC API https://www.trongrid.io/

Openloop implementation details:

10.6 FIDO2/CTAP2 Technical Standards

Standard Description URL
CTAP2 Client to Authenticator Protocol https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html
WebAuthn Web Authentication API https://www.w3.org/TR/webauthn-2/
U2F Universal 2nd Factor https://fidoalliance.org/specs/fido-u2f-v1.2-ps-20170411/
CTAPHID HID Protocol https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#usb

10.7 QR Code / Air Gap Communication Standards

Standard Description URL
UR Uniform Resources https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-005-ur.md
BBQr Bitcoin Efficient QR https://bbqr.org/
crypto-psbt PSBT UR Type https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-006-urtypes.md

© 2026 Haudi Crypto, Inc. All rights reserved.