Skip to Content
Hardware IntegrationOverview

Introduction

Developer-focused documentation for integrating OneKey hardware in Web and Native apps.

This page is the orientation layer — pick the right SDK package for your platform and install it. For the end-to-end walkthrough (search → events → PIN/passphrase → first signing call) plus parameters, events, and error handling, see the Core API Guide.

Choose Your Transport

USB integrations should use @onekeyfe/hd-common-connect-sdk; use @onekeyfe/hd-web-sdk only when the host mandates an iframe/plugin setup.

Connection Methods

MethodDescriptionSupported devices
USB / WebUSBWired USB; Web via WebUSB, native via low-level pluginAll OneKey devices
Bluetooth BLE (native)Native apps over BLE (not Web Bluetooth); requires OS Bluetooth & permissionOneKey Pro, Touch, Classic 1s / Classic 1s Pure; Mini does not support BLE
Air-Gap (QR)Offline QR signingOneKey Pro only

Platform Guide

Platform (Stack)TransportSDK PackageGuide
Web (Browser)WebUSB@onekeyfe/hd-common-connect-sdk WebUSB Connection Guide
React NativeBLE@onekeyfe/hd-ble-sdk React Native BLE
Android (Native)BLE@onekeyfe/hd-common-connect-sdk Android BLE
iOS (Native)BLE@onekeyfe/hd-common-connect-sdk iOS BLE
FlutterBLE@onekeyfe/hd-common-connect-sdk Flutter BLE

Low-level protocol and custom channels: Low-Level Transport Plugin & Protocol

Install SDK

Pick one entry by runtime:

# Web / desktop WebUSB (recommended) npm i @onekeyfe/hd-common-connect-sdk # React Native BLE npm i @onekeyfe/hd-ble-sdk # Native host with low-level plugin (Android/iOS/Flutter bridge) npm i @onekeyfe/hd-common-connect-sdk # Plugin iframe host only (plugin-only) npm i @onekeyfe/hd-web-sdk

Transport details:

Initialize the SDK

Use the initialization method that matches your runtime—avoid mixing SDK entries.

Web / Desktop WebUSB

Use @onekeyfe/hd-common-connect-sdk:

import HardwareSDK from '@onekeyfe/hd-common-connect-sdk'; await HardwareSDK.init({ env: 'webusb', debug: process.env.NODE_ENV !== 'production', fetchConfig: true, });

React Native BLE

Use @onekeyfe/hd-ble-sdk:

import HardwareSDK from '@onekeyfe/hd-ble-sdk'; await HardwareSDK.init({ debug: __DEV__, });

Native Bridge / Low-level

Use @onekeyfe/hd-common-connect-sdk:

import HardwareSDK from '@onekeyfe/hd-common-connect-sdk'; await HardwareSDK.init({ env: 'lowlevel', debug: process.env.NODE_ENV !== 'production', fetchConfig: true, });
EnvironmentUse Case
webusbBrowser WebUSB (no iframe)
lowlevelNative apps bridging JS via low-level adapter
react-nativeCustom RN bridge or Electron BLE
emulatorBuilt-in emulator transport

Plugin Iframe Host

Use @onekeyfe/hd-web-sdk (plugin-only):

import { HardwareSDK } from '@onekeyfe/hd-web-sdk'; await HardwareSDK.init({ debug: process.env.NODE_ENV !== 'production', connectSrc: 'https://jssdk.onekey.so/1.1.19/', // iframe host });

Next steps

After HardwareSDK.init(...) returns, the rest of the flow — device discovery, event wiring, PIN/passphrase handling, signing — is documented end-to-end in the Core API Guide:

Device and Transport Compatibility

Support status for Bluetooth, USB, and Air-Gap connections

DeviceBluetoothUSBAir-Gap
OneKey Classic 1s
OneKey Classic 1s
OneKey Classic 1s
SupportedSupportedN/A
OneKey Classic 1s Pure
OneKey Classic 1s Pure
Battery-free edition
SupportedSupportedN/A
OneKey Mini
OneKey Mini
Compact USB-only wallet
N/ASupportedN/A
OneKey Touch
OneKey Touch
Full touchscreen experience
SupportedSupportedN/A
OneKey Pro
OneKey Pro
Premium with fingerprint security
SupportedSupportedSupported

Air-Gap Mode: OneKey Pro supports air-gapped signing via QR codes — no USB or Bluetooth connection required, providing the highest level of security. See Air-Gap Integration for details.

Core Packages

PackagePurposeNPMVersion
@onekeyfe/hd-common-connect-sdkUnified SDK surface for Web/Native; recommended entry for transportsnpm npm
@onekeyfe/hd-ble-sdkPure React Native BLE stack (recommended for RN projects)npm npm
@onekeyfe/hd-transport-react-nativeReact Native transport side-effects/bridgenpm npm
@onekeyfe/hd-transport-web-deviceWeb transport for device access in web contextsnpm npm
@onekeyfe/hd-transport-emulatorEmulator transport (develop and test without a physical device)npm npm
@onekeyfe/hd-transport-httpHTTP bridge transportnpm npm
@onekeyfe/hd-transport-lowlevelLow-level host adapter contract (for native integrations)npm npm
@onekeyfe/hd-coreCore events, constants, message wiringnpm npm
@onekeyfe/hd-sharedShared utilities and typesnpm npm
@onekeyfe/hd-web-sdkWeb SDK wrapper (not recommended; prefer hd-common-connect-sdk)npm npm

Further reading

Support

For users: This documentation is primarily for developers. If you encounter issues while using our products, please consult our Help Center or submit a support ticket.


Try It Out

Last updated on