On this page
Common Params
Most chain and device methods take a params object; initialization, event and lifecycle APIs have their own signatures. The keys on this page are the shared set for address, signing, and device methods. They are not universal: openWalletSession rejects useEmptyPassphrase, initSession, deviceId, and passphraseState even when those values are false or spread from a shared defaults object. Chain- and device-specific fields (path, coin, tx, message, …) stay on each method page.
This page is the parameter reference. For the call lifecycle, see the Core API Guide. For response IDs (connectId, deviceId, uuid, session_id, …), see Identifiers.
| Param | Type | Purpose | Notes |
|---|---|---|---|
passphraseState | string | Bind the call to a specific hidden wallet | Obtain once via openWalletSession (or deprecated getPassphraseState); pass on every later call that must stay on that wallet. Cannot be combined with useEmptyPassphrase. This is a wallet fingerprint, not firmware session_id. |
useEmptyPassphrase | boolean | Force the standard wallet | Prevents a leftover hidden-wallet session from silently changing the address. Cannot be combined with passphraseState. |
initSession | boolean | Force session init before the call | Pair with passphraseState on the compatibility path. New code should prefer openWalletSession({ mode }) instead of mixing mode with this flag. |
deriveCardano | boolean | Pre-derive the Cardano sub-tree | Set on the first Cardano call in a session. |
retryCount | number | Connection establishment retry limit | Used by Core while establishing/initializing the connection. It does not replay a completed or failed signing operation. |
pollIntervalTime | number | Polling interval (ms) between retries | Paired with retryCount during connection setup. |
timeout | number | Connection-attempt timeout (ms) | Does not set the signing/firmware-transfer timeout. |
detectBootloaderDevice | boolean | Fail fast if the device is in Bootloader | Use on signing paths where Bootloader is never valid. |
skipWebDevicePrompt | boolean | Skip the WebUSB chooser on re-entry | WebUSB only. Reuses prior WebUSB authorization. |
keepSession | boolean | Hold the transport after the call | Controls whether Device.run() releases the link. Not a wallet binding and not replaced by passphraseState or openWalletSession. Keep it on USB consecutive signing / check-then-upgrade and Electron BLE firmware windows. |
Transport-specific notes
| Param | WebUSB | Bridge | node-usb | Android BLE | iOS BLE | Desktop BLE |
|---|---|---|---|---|---|---|
skipWebDevicePrompt | ✅ | — | — | — | — | — |
retryCount / pollIntervalTime / timeout | Connection setup | Connection setup | Connection setup | Connection setup | Connection setup | Connection setup |
passphraseState / useEmptyPassphrase / initSession | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
deriveCardano / detectBootloaderDevice | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Common combos
Standard wallet — avoid accidental hidden-wallet prompts
await HardwareSDK.evmGetAddress(connectId, deviceId, {
path: "m/44'/60'/0'/0/0",
useEmptyPassphrase: true,
});Hidden wallet — reuse a binding across calls
const opened = await HardwareSDK.openWalletSession(connectId, {
mode: 'select-hidden',
});
if (!opened.success) throw new Error(opened.payload.error);
if (opened.payload.walletType !== 'hidden') {
throw new Error('A hidden wallet was not opened');
}
const hiddenWallet = {
passphraseState: opened.payload.passphraseState,
};
await HardwareSDK.evmGetAddress(connectId, opened.payload.deviceId, {
path: "m/44'/60'/0'/0/0",
...hiddenWallet,
});Deprecated compatibility path: getPassphraseState(connectId, { initSession: true }), then pass { initSession: true, passphraseState } on later calls. See Wallet Sessions.
BLE conservative retries (discovery / address / signing only)
const bleDefaults = {
retryCount: 3,
pollIntervalTime: 1000,
timeout: 30_000,
};Do not spread bleDefaults onto firmwareUpdateV2 / V3 / V4. See Disconnects and reconnection.
HD path
A method’s minimum path length is an SDK input check, not a guarantee that every path of that length is supported. Firmware also enforces chain-specific derivation and hardening rules.
path: string | number[] follows BIP44. ed25519 chains (Solana, NEAR, …) must be fully hardened.
| Chain | Example path | Notes |
|---|---|---|
| EVM | m/44'/60'/0'/0/0 | Standard EVM account |
| BTC (Nested SegWit) | m/49'/0'/0'/0/0 | Use 84' for Native SegWit |
| Solana | m/44'/501'/0'/0' | Fully hardened |
| NEAR | m/44'/397'/0'/0'/1' | Fully hardened |
| Cardano | m/1852'/1815'/0'/0/0 | Stake at .../2/0 |
| TRON | m/44'/195'/0'/0/0 | EVM-style path |
Number-array example: [(44 | 0x80000000) >>> 0, (0 | 0x80000000) >>> 0, 0x80000000, 0, 0]
Forbidden-path errors: check length and hardening on the chain method page.
On Protocol V1, select-hidden can return a standard wallet when passphrase protection is disabled. Check walletType before saving or using passphraseState.