> ## Documentation Index
> Fetch the complete documentation index at: https://eurusys-6c0957fa.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Error codes

> The complete MBKYC error code reference. Every SDK surfaces these same codes, grouped into modules by numeric range.

Every SDK surfaces the **same** error codes. An error carries a **numeric code** and a **symbolic name**; the web SDK also exposes a display form (`E` + the number, e.g. `E1003`). Codes are grouped into **modules**, each owning a numeric range.

## How errors surface per platform

| Platform      | Type                                 | Accessor                           |
| ------------- | ------------------------------------ | ---------------------------------- |
| Kotlin / Java | `MBKYCError` (via `MBKYCResult.Err`) | `error.code`                       |
| Swift         | `MBKYCError: Error`                  | `err.code.rawValue`                |
| C#            | `MBKYCException`                     | `(int)ex.ErrorCode`                |
| C             | `MBKYC_Error*`                       | `mbkyc_error_code(error)`          |
| TypeScript    | `MBKYCError`                         | `error.numericCode` / `error.code` |

<Info>
  Match on the symbolic **name** rather than hard-coding numbers — names are stable across releases. Every SDK exports the names (e.g. the typed `ErrorCode` enum, or per-module buckets like `vendor.EXTENSION_NOT_FOUND`).
</Info>

## Module map

| Module        | Range     | Area                                                        |
| ------------- | --------- | ----------------------------------------------------------- |
| `bindings`    | 1400–1599 | SDK API-surface errors (arguments, cancellation, lifecycle) |
| `backend`     | 1000–1199 | Backend, network, and authentication errors                 |
| `crypto`      | 1200–1399 | Encryption, keys, and signing errors                        |
| `smartcard`   | 600–799   | Smart card reader and session errors                        |
| `fingerprint` | 800–999   | Fingerprint reader and capture errors                       |
| `card`        | 0–199     | Card protocol and APDU errors                               |
| `transport`   | 400–599   | IPC, connection, and messaging errors                       |
| `service`     | 1600–1799 | Service verification errors                                 |
| `schema`      | 200–399   | Schema lookup and parsing errors                            |
| `vendor`      | 9000–9999 | Vendor-specific errors                                      |
| `io`          | 1800–1999 | Standard I/O errors (std::io::ErrorKind)                    |
| `usb`         | 2000–2199 | USB errors (rusb::Error)                                    |
| `pcsc`        | 2200–2399 | PC/SC smart card errors                                     |
| `ccid`        | 2400–2599 | CCID protocol errors                                        |
| `nfc`         | 2600–2799 | NFC/IsoDep errors                                           |
| `serial`      | 2800–2999 | Serial port errors                                          |
| `device`      | 3000–3199 | Device fingerprinting errors                                |
| `aidl`        | 3200–3399 | Android AIDL service errors                                 |
| `jni`         | 3400–3599 | JNI (Java Native Interface) errors                          |
| `logging`     | 3600–3799 | Logging and log export errors                               |
| `wasm`        | 3800–3999 | WASM protocol-runtime errors (host + module side)           |

## Integration errors

These are the modules you are most likely to handle in application code.

### `bindings`

Errors from the SDK API surface (your code): bad arguments, cancellation, lifecycle.

| Code | Name                        | Message                                        |
| ---- | --------------------------- | ---------------------------------------------- |
| 1400 | `INVALID_ARGUMENT`          | invalid argument                               |
| 1401 | `INITIALIZATION_FAILED`     | initialization failed                          |
| 1402 | `BINDING_CONNECTION_FAILED` | connection failed                              |
| 1403 | `DISCONNECT_FAILED`         | disconnect failed                              |
| 1404 | `READ_FAILED`               | read failed                                    |
| 1405 | `WRITE_FAILED`              | write failed                                   |
| 1406 | `CANCELLED`                 | cancelled                                      |
| 1407 | `BINDING_TIMEOUT`           | timeout                                        |
| 1408 | `NO_READER`                 | no reader                                      |
| 1409 | `NO_CARD`                   | no card                                        |
| 1410 | `AUTHENTICATION_FAILED`     | authentication failed                          |
| 1411 | `OUT_OF_MEMORY`             | out of memory                                  |
| 1412 | `NOT_INITIALIZED`           | not initialized                                |
| 1413 | `INTERNAL_ERROR`            | internal error                                 |
| 1414 | `UNKNOWN_REQUEST_TYPE`      | unknown request type                           |
| 1415 | `INVALID_READER_ID`         | invalid reader ID format                       |
| 1416 | `ALREADY_INITIALIZED`       | already initialized                            |
| 1417 | `BUSY`                      | host is busy with another lifecycle transition |

### `backend`

Backend — authentication, API key, device registration, and network errors from the Validation Gateway.

| Code | Name                          | Message                                 |
| ---- | ----------------------------- | --------------------------------------- |
| 1000 | `NETWORK_ERROR`               | network error                           |
| 1001 | `BACKEND_UNREACHABLE`         | backend unreachable                     |
| 1002 | `REQUEST_TIMEOUT`             | request timeout                         |
| 1003 | `INVALID_JWT`                 | invalid JWT                             |
| 1004 | `API_KEY_REVOKED`             | API key revoked                         |
| 1005 | `SESSION_NOT_FOUND`           | session not found                       |
| 1006 | `SESSION_EXPIRED`             | session expired                         |
| 1007 | `DEVICE_NOT_REGISTERED`       | device not registered                   |
| 1008 | `DEVICE_ALREADY_REGISTERED`   | device already registered               |
| 1009 | `FINGERPRINTING_FAILED`       | fingerprinting failed                   |
| 1010 | `INVALID_REQUEST`             | invalid request                         |
| 1011 | `METHOD_NOT_ALLOWED`          | method not allowed                      |
| 1012 | `VALIDATION_FAILED`           | validation failed                       |
| 1013 | `BACKEND_ERROR`               | backend error                           |
| 1014 | `JSON_ERROR`                  | json error                              |
| 1015 | `ENCODING_ERROR`              | encoding error                          |
| 1016 | `DEVICE_FINGERPRINT_ERROR`    | device fingerprint error                |
| 1017 | `JWT_ERROR`                   | JWT error                               |
| 1018 | `SESSION_ERROR`               | session error                           |
| 1019 | `NO_READER_CONNECTED`         | no reader connected                     |
| 1020 | `NOT_IMPLEMENTED`             | not implemented                         |
| 1021 | `INVALID_HEADER`              | invalid header                          |
| 1022 | `INVALID_CLIENT_REFERENCE_ID` | invalid client reference ID             |
| 1023 | `MISSING_CLIENT_REFERENCE_ID` | missing client reference ID in response |
| 1024 | `SIGNER_ERROR`                | token signing failed                    |
| 1025 | `SIGNER_TIMEOUT`              | token signing timed out                 |

### `crypto`

Crypto — session encryption, key exchange, and signing errors.

| Code | Name                            | Message                               |
| ---- | ------------------------------- | ------------------------------------- |
| 1200 | `ENCRYPTION_FAILED`             | encryption failed                     |
| 1201 | `DECRYPTION_FAILED`             | decryption failed                     |
| 1202 | `KEY_DERIVATION_FAILED`         | key derivation failed                 |
| 1203 | `SIGNATURE_VERIFICATION_FAILED` | signature verification failed         |
| 1204 | `SIGNATURE_NOT_FOUND`           | signature not found                   |
| 1205 | `INVALID_SIGNATURE_FORMAT`      | invalid signature format              |
| 1206 | `BINARY_NOT_FOUND`              | binary not found                      |
| 1207 | `INVALID_TEAM_ID`               | invalid team ID                       |
| 1208 | `EPHEMERAL_KEY_GEN_FAILED`      | failed to generate ephemeral key pair |
| 1209 | `PUBKEY_COMPUTE_FAILED`         | failed to compute public key          |
| 1210 | `INVALID_PEER_PUBKEY`           | invalid peer public key               |
| 1211 | `ECDH_AGREEMENT_FAILED`         | ECDH agreement failed                 |
| 1212 | `NONCE_GEN_FAILED`              | failed to generate nonce              |
| 1213 | `INVALID_ENCRYPTED_DATA`        | invalid encrypted data format         |
| 1214 | `INVALID_NONCE`                 | invalid nonce length                  |
| 1215 | `INVALID_TAG`                   | invalid authentication tag length     |
| 1216 | `AGE_KEY_PARSE_FAILED`          | failed to parse age identity key      |
| 1217 | `AGE_DECRYPTION_FAILED`         | age decryption failed                 |
| 1218 | `INVALID_KEY_LENGTH`            | invalid key length                    |

### `smartcard`

Smart card — reader connection and session errors.

| Code | Name                         | Message                               |
| ---- | ---------------------------- | ------------------------------------- |
| 600  | `NOT_CONNECTED`              | not connected                         |
| 601  | `CONNECTOR_ERROR`            | connector error                       |
| 602  | `READER_ERROR`               | reader error                          |
| 603  | `INVALID_CARD_PARAMETERS`    | invalid card parameters               |
| 604  | `BAC_PARAMETERS_NOT_SET`     | BAC parameters not set                |
| 605  | `UNSUPPORTED_INTERFACE`      | unsupported interface                 |
| 606  | `UNSUPPORTED_CARD_VERSION`   | unsupported card version              |
| 607  | `INVALID_ATTRIBUTE_DATA`     | invalid attribute data                |
| 608  | `UNSUPPORTED_ENCODING`       | unsupported encoding                  |
| 609  | `INVALID_CARD_VERSION`       | invalid card version                  |
| 610  | `NO_EID_READER_AVAILABLE`    | no EID reader available               |
| 611  | `SCP_PATTERN_NOT_FOUND`      | SCP pattern not found                 |
| 612  | `INVALID_SCP`                | invalid SCP                           |
| 613  | `UNKNOWN_SMARTCARD`          | unknown smartcard                     |
| 614  | `INVALID_OBJECT_LENGTH`      | invalid object length                 |
| 615  | `NO_DATA_READ`               | no data read                          |
| 616  | `SHORT_REMAINING_LENGTH`     | short remaining length                |
| 617  | `NO_SMARTCARD_READERS`       | no smart card readers available       |
| 618  | `SMARTCARD_READER_NOT_FOUND` | smart card reader not found           |
| 619  | `SMARTCARD_CONNECT_FAILED`   | failed to connect to smart card       |
| 620  | `SMARTCARD_TRANSMIT_FAILED`  | failed to transmit APDU to smart card |
| 621  | `SMARTCARD_INVALID_SESSION`  | invalid smart card session            |
| 622  | `SMARTCARD_REMOVED`          | smart card was removed                |
| 623  | `SMARTCARD_DIP_TIMEOUT`      | timed out waiting for card insertion  |
| 624  | `INCOMPLETE_CARD_DATA`       | required field missing from card data |

### `fingerprint`

Fingerprint — sensor and capture errors.

| Code | Name                              | Message                            |
| ---- | --------------------------------- | ---------------------------------- |
| 800  | `NO_FINGERPRINT_READER_AVAILABLE` | no fingerprint reader available    |
| 801  | `FINGERPRINT_READER_ERROR`        | fingerprint reader error           |
| 802  | `FINGERPRINT_READER_NOT_FOUND`    | fingerprint reader not found       |
| 803  | `FINGERPRINT_CONNECT_FAILED`      | fingerprint connect failed         |
| 804  | `FINGERPRINT_CAPTURE_FAILED`      | fingerprint capture failed         |
| 805  | `FINGERPRINT_CAPTURE_TIMEOUT`     | fingerprint capture timeout        |
| 806  | `INVALID_FINGERPRINT_SESSION`     | invalid fingerprint session        |
| 807  | `LOW_FINGERPRINT_QUALITY`         | low fingerprint quality            |
| 808  | `IMAGE_ENCODE_ERROR`              | failed to encode fingerprint image |

### `card`

Card — Emirates ID chip protocol (APDU / status-word) errors.

| Code | Name                                 | Message                                                                                 |
| ---- | ------------------------------------ | --------------------------------------------------------------------------------------- |
| 0    | `INVALID_RESPONSE_LEN`               | Response length does not match expected value                                           |
| 1    | `INVALID_COMMAND_HEADER`             | Command APDU header is malformed or invalid                                             |
| 2    | `MORE_DATA_AVAILABLE`                | Card indicates additional data is available for retrieval                               |
| 3    | `MUTUAL_AUTH_FAILED`                 | Mutual authentication between terminal and card failed                                  |
| 4    | `APPLICATION_BLOCKED`                | Application on card is blocked and cannot be accessed                                   |
| 5    | `CARD_ERROR`                         | General card error occurred during operation                                            |
| 6    | `INVALID_HOST_DATA`                  | Data provided by host is invalid or malformed                                           |
| 7    | `APPLICATION_NOT_FOUND`              | Requested application not found on card                                                 |
| 8    | `OBJECT_NOT_FOUND`                   | Requested object not found on card                                                      |
| 9    | `OBJECT_APPLICATION_NOT_FOUND`       | Object's parent application not found on card                                           |
| 10   | `TAG_OBJECT_NOT_FOUND`               | Object with specified tag not found                                                     |
| 11   | `ATTRIBUTE_NOT_FOUND`                | Requested attribute not found                                                           |
| 12   | `INSUFFICIENT_BUFFER_LEN`            | Buffer size is insufficient for the operation                                           |
| 13   | `OBJECT_ATTRIBUTE_NOT_FOUND`         | Attribute not found within the specified object                                         |
| 14   | `TRANSCEIVE_ERR`                     | Error occurred during APDU transmission                                                 |
| 15   | `INVALID_CARD_PARAMS`                | Card parameters are invalid or misconfigured                                            |
| 16   | `BAC_PARAMS_NOT_SET`                 | Basic Access Control parameters have not been set                                       |
| 17   | `BODY_TOO_LARGE`                     | Request body exceeds maximum allowed size                                               |
| 18   | `EMPTY_BODY`                         | Request body is empty when data was expected                                            |
| 19   | `UNSUPPORTED_INTERFACE`              | Card interface type is not supported                                                    |
| 20   | `UNSUPPORTED_CARD_VERSION`           | Card version is not supported                                                           |
| 21   | `INVALID_ATTR_DATA`                  | Attribute data is invalid or corrupted                                                  |
| 22   | `UNSUPPORTED_ENCODING`               | Data encoding format is not supported                                                   |
| 23   | `ATTR_NOT_FOUND`                     | Attribute not found in data structure                                                   |
| 24   | `INVALID_CARD_VERSION`               | Card version format is invalid                                                          |
| 25   | `NO_EID_READER_AVAILABLE`            | No eID card reader is available                                                         |
| 26   | `SCP_PATTERN_NOT_FOUND`              | Secure Channel Protocol pattern not found                                               |
| 27   | `INVALID_SCP`                        | Secure Channel Protocol configuration is invalid                                        |
| 28   | `UNKNOWN_EID`                        | eID card type is not recognized                                                         |
| 29   | `INVALID_OBJECT_LENGTH`              | Object length field is invalid                                                          |
| 30   | `NO_DATA_READ`                       | No data was read from the card                                                          |
| 31   | `SHORT_REMAINING_LENGTH`             | Remaining data length is shorter than expected                                          |
| 32   | `SW_FILE_NOT_FOUND`                  | card returned SW 6A82 (file not found)                                                  |
| 33   | `SW_RECORD_NOT_FOUND`                | card returned SW 6A83 (record not found)                                                |
| 34   | `SW_SECURITY_STATUS_NOT_SATISFIED`   | card returned SW 6982 (security status not satisfied; PIN or secure messaging required) |
| 35   | `SW_AUTH_METHOD_BLOCKED`             | card returned SW 6983 (authentication method blocked)                                   |
| 36   | `SW_CONDITIONS_OF_USE_NOT_SATISFIED` | card returned SW 6985 (conditions of use not satisfied)                                 |
| 37   | `SW_INCORRECT_P1_P2`                 | card returned SW 6A86 (incorrect P1 P2)                                                 |
| 38   | `SW_INS_NOT_SUPPORTED`               | card returned SW 6D00 (INS not supported)                                               |
| 39   | `SW_CLA_NOT_SUPPORTED`               | card returned SW 6E00 (CLA not supported)                                               |
| 40   | `SW_UNCLASSIFIED`                    | card returned a non-success status word not mapped to a specific code; see logs         |
| 41   | `SW_OFFSET_OUT_OF_RANGE`             | card returned SW 6B00 (wrong P1 P2; usually offset past end of file)                    |

### `transport`

Transport — connection, timeout, and messaging errors to local services.

| Code | Name                     | Message                |
| ---- | ------------------------ | ---------------------- |
| 400  | `INVALID_MESSAGE_FORMAT` | invalid message format |
| 401  | `INVALID_PAYLOAD_DATA`   | invalid payload data   |
| 402  | `UNKNOWN_MESSAGE_TYPE`   | unknown message type   |
| 403  | `CONNECTION_FAILED`      | connection failed      |
| 404  | `CONNECTION_LOST`        | connection lost        |
| 405  | `TIMEOUT`                | timeout                |
| 406  | `SERVICE_BUSY`           | service busy           |
| 407  | `SERIALIZATION_ERROR`    | serialization error    |
| 408  | `VALIDATION_ERROR`       | validation error       |
| 409  | `MESSAGE_TOO_LARGE`      | message too large      |
| 410  | `CONNECTION_CLOSED`      | connection closed      |
| 411  | `PROTOCOL_ERROR`         | protocol error         |
| 412  | `INVALID_SOCKET_NAME`    | invalid socket name    |

### `service`

Service — signed-service verification errors.

| Code | Name                            | Message                                 |
| ---- | ------------------------------- | --------------------------------------- |
| 1600 | `SERVICE_NOT_ALLOWED`           | Service vendor/type not in allowed list |
| 1601 | `SERVICE_VERSION_MISMATCH`      | Service version outside supported range |
| 1602 | `SERVICE_DEPRECATED`            | service has been deprecated             |
| 1603 | `SERVICE_INVALID_SIGNATURE`     | service signature verification failed   |
| 1604 | `SERVICE_NOT_FOUND`             | service not found                       |
| 1605 | `SERVICE_BIND_FAILED`           | failed to bind to service               |
| 1606 | `SERVICE_VERSION_UNAVAILABLE`   | failed to get service version           |
| 1607 | `SERVICE_INIT_FAILED`           | service initialization failed           |
| 1608 | `SERVICE_RUNTIME_ERROR`         | service runtime error                   |
| 1609 | `SERVICE_SIGNAL_HANDLER_FAILED` | signal handler setup failed             |

### `schema`

Schema — card data schema lookup and parsing errors.

| Code | Name                           | Message                      |
| ---- | ------------------------------ | ---------------------------- |
| 200  | `APPLICATION_NOT_FOUND`        | application not found        |
| 201  | `OBJECT_NOT_FOUND`             | object not found             |
| 202  | `OBJECT_APPLICATION_NOT_FOUND` | object application not found |
| 203  | `TAG_OBJECT_NOT_FOUND`         | tag object not found         |
| 204  | `ATTRIBUTE_NOT_FOUND`          | attribute not found          |
| 205  | `INSUFFICIENT_BUFFER_LENGTH`   | insufficient buffer length   |
| 206  | `OBJECT_ATTRIBUTE_NOT_FOUND`   | object attribute not found   |

### `vendor`

Vendor — vendor-specific and extension errors (e.g. browser extension not found).

| Code | Name                           | Message                                     |
| ---- | ------------------------------ | ------------------------------------------- |
| 9000 | `VENDOR_ERROR`                 | vendor error                                |
| 9001 | `MORPHO_RESPONSE_TOO_SHORT`    | Morpho response too short                   |
| 9002 | `MORPHO_INVALID_MAGIC`         | Morpho invalid sync magic                   |
| 9003 | `MORPHO_DEVICE_NOT_FOUND`      | Morpho device not found                     |
| 9004 | `MORPHO_CAPTURE_TIMEOUT`       | Morpho capture timeout                      |
| 9005 | `MORPHO_USB_ERROR`             | Morpho USB error                            |
| 9006 | `MORPHO_PERMISSION_DENIED`     | Morpho USB permission denied                |
| 9007 | `MORPHO_SERIAL_ERROR`          | Morpho serial port error                    |
| 9008 | `MORPHO_IMAGE_TOO_SHORT`       | Morpho image data too short                 |
| 9009 | `MORPHO_JNI_ERROR`             | Morpho JNI error                            |
| 9010 | `MORPHO_OPEN_FAILED`           | Morpho SDK device open failed               |
| 9011 | `MORPHO_CAPTURE_FAILED`        | Morpho capture failed                       |
| 9012 | `MORPHO_INVALID_DEVICE_PATH`   | Morpho invalid device path                  |
| 9100 | `SUPREMA_DEVICE_NOT_FOUND`     | Suprema device not found                    |
| 9101 | `SUPREMA_BAD_HANDSHAKE`        | Suprema device handshake failed             |
| 9102 | `SUPREMA_BULK_READ_INCOMPLETE` | Suprema bulk read incomplete                |
| 9103 | `SUPREMA_CAPTURE_TIMEOUT`      | Suprema capture timeout                     |
| 9104 | `SUPREMA_CAPTURE_FAILED`       | Suprema capture failed                      |
| 9105 | `SUPREMA_USB_ERROR`            | Suprema USB error                           |
| 9106 | `SUPREMA_PERMISSION_DENIED`    | Suprema USB permission denied               |
| 9107 | `SUPREMA_INVALID_LUT`          | Suprema embedded LUT is malformed           |
| 9108 | `SUPREMA_NO_FINGER`            | Suprema sensor saw no finger within timeout |
| 9200 | `ZHIANG_DEVICE_NOT_FOUND`      | Zhiang device not found                     |
| 9201 | `ZHIANG_BAD_AB_BLOCK`          | Zhiang AB calibration block is malformed    |
| 9202 | `ZHIANG_USB_ERROR`             | Zhiang USB error                            |
| 9203 | `ZHIANG_CAPTURE_TIMEOUT`       | Zhiang capture timeout                      |
| 9204 | `ZHIANG_CAPTURE_FAILED`        | Zhiang capture failed                       |
| 9205 | `ZHIANG_LOW_QUALITY`           | Zhiang quality streak threshold not reached |
| 9206 | `ZHIANG_PERMISSION_DENIED`     | Zhiang USB permission denied                |
| 9207 | `ZHIANG_JPEG_DECODE_ERROR`     | Zhiang MJPEG frame decode failed            |
| 9208 | `ZHIANG_NO_FINGER`             | Zhiang sensor saw no finger within timeout  |
| 9900 | `EXTENSION_NOT_FOUND`          | browser extension not found                 |
| 9999 | `UNKNOWN_ERROR`                | unknown error                               |

## Lower-level errors

These modules cover the hardware, transport, and platform layers. You won't usually branch on them directly, but they appear in logs and bug reports. Expand a module for its full list.

<Accordion title="io (1800–1999) — Standard I/O errors (std::io::ErrorKind)">
  | Code | Name                        | Message                   |
  | ---- | --------------------------- | ------------------------- |
  | 1800 | `NOT_FOUND`                 | entity not found          |
  | 1801 | `PERMISSION_DENIED`         | permission denied         |
  | 1802 | `CONNECTION_REFUSED`        | connection refused        |
  | 1803 | `CONNECTION_RESET`          | connection reset          |
  | 1804 | `HOST_UNREACHABLE`          | host unreachable          |
  | 1805 | `NETWORK_UNREACHABLE`       | network unreachable       |
  | 1806 | `CONNECTION_ABORTED`        | connection aborted        |
  | 1807 | `NOT_CONNECTED`             | not connected             |
  | 1808 | `ADDR_IN_USE`               | address in use            |
  | 1809 | `ADDR_NOT_AVAILABLE`        | address not available     |
  | 1810 | `NETWORK_DOWN`              | network down              |
  | 1811 | `BROKEN_PIPE`               | broken pipe               |
  | 1812 | `ALREADY_EXISTS`            | entity already exists     |
  | 1813 | `WOULD_BLOCK`               | operation would block     |
  | 1814 | `NOT_A_DIRECTORY`           | not a directory           |
  | 1815 | `IS_A_DIRECTORY`            | is a directory            |
  | 1816 | `DIRECTORY_NOT_EMPTY`       | directory not empty       |
  | 1817 | `READ_ONLY_FILESYSTEM`      | read-only filesystem      |
  | 1818 | `FILESYSTEM_LOOP`           | filesystem loop           |
  | 1819 | `STALE_NETWORK_FILE_HANDLE` | stale network file handle |
  | 1820 | `INVALID_INPUT`             | invalid input             |
  | 1821 | `INVALID_DATA`              | invalid data              |
  | 1822 | `TIMED_OUT`                 | operation timed out       |
  | 1823 | `WRITE_ZERO`                | write zero                |
  | 1824 | `STORAGE_FULL`              | storage full              |
  | 1825 | `NOT_SEEKABLE`              | not seekable              |
  | 1826 | `QUOTA_EXCEEDED`            | quota exceeded            |
  | 1827 | `FILE_TOO_LARGE`            | file too large            |
  | 1828 | `RESOURCE_BUSY`             | resource busy             |
  | 1829 | `EXECUTABLE_FILE_BUSY`      | executable file busy      |
  | 1830 | `DEADLOCK`                  | deadlock                  |
  | 1831 | `CROSSES_DEVICES`           | crosses devices           |
  | 1832 | `TOO_MANY_LINKS`            | too many links            |
  | 1833 | `INVALID_FILENAME`          | invalid filename          |
  | 1834 | `ARGUMENT_LIST_TOO_LONG`    | argument list too long    |
  | 1835 | `INTERRUPTED`               | operation interrupted     |
  | 1836 | `UNSUPPORTED`               | unsupported               |
  | 1837 | `UNEXPECTED_EOF`            | unexpected end of file    |
  | 1838 | `OUT_OF_MEMORY`             | out of memory             |
  | 1839 | `IN_PROGRESS`               | operation in progress     |
  | 1899 | `OTHER`                     | other I/O error           |
</Accordion>

<Accordion title="usb (2000–2199) — USB errors (rusb::Error)">
  | Code | Name             | Message                     |
  | ---- | ---------------- | --------------------------- |
  | 2000 | `IO`             | USB I/O error               |
  | 2001 | `INVALID_PARAM`  | invalid USB parameter       |
  | 2002 | `ACCESS`         | USB access denied           |
  | 2003 | `NO_DEVICE`      | USB device not found        |
  | 2004 | `NOT_FOUND`      | USB entity not found        |
  | 2005 | `BUSY`           | USB resource busy           |
  | 2006 | `TIMEOUT`        | USB operation timed out     |
  | 2007 | `OVERFLOW`       | USB overflow                |
  | 2008 | `PIPE`           | USB pipe error              |
  | 2009 | `INTERRUPTED`    | USB operation interrupted   |
  | 2010 | `NO_MEM`         | USB insufficient memory     |
  | 2011 | `NOT_SUPPORTED`  | USB operation not supported |
  | 2012 | `BAD_DESCRIPTOR` | USB malformed descriptor    |
  | 2099 | `OTHER`          | other USB error             |
</Accordion>

<Accordion title="pcsc (2200–2399) — PC/SC smart card errors">
  | Code | Name                      | Message                        |
  | ---- | ------------------------- | ------------------------------ |
  | 2200 | `INTERNAL_ERROR`          | PC/SC internal error           |
  | 2201 | `CANCELLED`               | PC/SC operation cancelled      |
  | 2202 | `INVALID_HANDLE`          | PC/SC invalid handle           |
  | 2203 | `INVALID_PARAMETER`       | PC/SC invalid parameter        |
  | 2204 | `INVALID_TARGET`          | PC/SC invalid target           |
  | 2205 | `NO_MEMORY`               | PC/SC no memory                |
  | 2206 | `WAITED_TOO_LONG`         | PC/SC waited too long          |
  | 2207 | `INSUFFICIENT_BUFFER`     | PC/SC insufficient buffer      |
  | 2208 | `UNKNOWN_READER`          | PC/SC unknown reader           |
  | 2209 | `TIMEOUT`                 | PC/SC timeout                  |
  | 2210 | `SHARING_VIOLATION`       | PC/SC sharing violation        |
  | 2211 | `NO_SMARTCARD`            | PC/SC no smartcard             |
  | 2212 | `UNKNOWN_CARD`            | PC/SC unknown card             |
  | 2213 | `CANT_DISPOSE`            | PC/SC can't dispose            |
  | 2214 | `PROTO_MISMATCH`          | PC/SC protocol mismatch        |
  | 2215 | `NOT_READY`               | PC/SC not ready                |
  | 2216 | `INVALID_VALUE`           | PC/SC invalid value            |
  | 2217 | `SYSTEM_CANCELLED`        | PC/SC system cancelled         |
  | 2218 | `COMM_ERROR`              | PC/SC communication error      |
  | 2219 | `UNKNOWN_ERROR`           | PC/SC unknown error            |
  | 2220 | `INVALID_ATR`             | PC/SC invalid ATR              |
  | 2221 | `NOT_TRANSACTED`          | PC/SC not transacted           |
  | 2222 | `READER_UNAVAILABLE`      | PC/SC reader unavailable       |
  | 2223 | `SHUTDOWN`                | PC/SC shutdown                 |
  | 2224 | `PCI_TOO_SMALL`           | PC/SC PCI too small            |
  | 2225 | `READER_UNSUPPORTED`      | PC/SC reader unsupported       |
  | 2226 | `DUPLICATE_READER`        | PC/SC duplicate reader         |
  | 2227 | `CARD_UNSUPPORTED`        | PC/SC card unsupported         |
  | 2228 | `NO_SERVICE`              | PC/SC no service               |
  | 2229 | `SERVICE_STOPPED`         | PC/SC service stopped          |
  | 2230 | `ICC_INSTALLATION`        | PC/SC ICC installation error   |
  | 2231 | `ICC_CREATE_ORDER`        | PC/SC ICC create order error   |
  | 2232 | `UNSUPPORTED_FEATURE`     | PC/SC unsupported feature      |
  | 2233 | `DIR_NOT_FOUND`           | PC/SC directory not found      |
  | 2234 | `FILE_NOT_FOUND`          | PC/SC file not found           |
  | 2235 | `NO_DIR`                  | PC/SC no directory             |
  | 2236 | `NO_FILE`                 | PC/SC no file                  |
  | 2237 | `NO_ACCESS`               | PC/SC no access                |
  | 2238 | `WRITE_TOO_MANY`          | PC/SC write too many           |
  | 2239 | `BAD_SEEK`                | PC/SC bad seek                 |
  | 2240 | `INVALID_CHV`             | PC/SC invalid CHV              |
  | 2241 | `UNKNOWN_RES_MNG`         | PC/SC unknown resource manager |
  | 2242 | `NO_SUCH_CERTIFICATE`     | PC/SC no such certificate      |
  | 2243 | `CERTIFICATE_UNAVAILABLE` | PC/SC certificate unavailable  |
  | 2244 | `NO_READERS_AVAILABLE`    | PC/SC no readers available     |
  | 2245 | `COMM_DATA_LOST`          | PC/SC communication data lost  |
  | 2246 | `NO_KEY_CONTAINER`        | PC/SC no key container         |
  | 2247 | `SERVER_TOO_BUSY`         | PC/SC server too busy          |
  | 2248 | `PIN_CACHE_EXPIRED`       | PC/SC PIN cache expired        |
  | 2249 | `NO_PIN_CACHE`            | PC/SC no PIN cache             |
  | 2250 | `READ_ONLY_CARD`          | PC/SC read-only card           |
  | 2251 | `SECURITY_VIOLATION`      | PC/SC security violation       |
  | 2252 | `WRONG_CHV`               | PC/SC wrong CHV                |
  | 2253 | `CHV_BLOCKED`             | PC/SC CHV blocked              |
  | 2254 | `EOF`                     | PC/SC end of file              |
  | 2255 | `CANCELLED_BY_USER`       | PC/SC cancelled by user        |
  | 2256 | `CARD_NOT_AUTHENTICATED`  | PC/SC card not authenticated   |
  | 2257 | `CACHE_ITEM_NOT_FOUND`    | PC/SC cache item not found     |
  | 2258 | `CACHE_ITEM_STALE`        | PC/SC cache item stale         |
  | 2259 | `CACHE_ITEM_TOO_BIG`      | PC/SC cache item too big       |
  | 2260 | `UNSUPPORTED_CARD`        | PC/SC unsupported card         |
  | 2261 | `UNRESPONSIVE_CARD`       | PC/SC unresponsive card        |
  | 2262 | `UNPOWERED_CARD`          | PC/SC unpowered card           |
  | 2263 | `RESET_CARD`              | PC/SC reset card               |
  | 2264 | `REMOVED_CARD`            | PC/SC removed card             |
</Accordion>

<Accordion title="ccid (2400–2599) — CCID protocol errors">
  | Code | Name                     | Message                           |
  | ---- | ------------------------ | --------------------------------- |
  | 2400 | `NO_CARD`                | no card present in reader         |
  | 2401 | `PROTOCOL_ERROR`         | CCID protocol error               |
  | 2402 | `RESPONSE_TOO_SHORT`     | CCID response too short           |
  | 2403 | `TIMEOUT`                | CCID timeout waiting for response |
  | 2404 | `SLOT_ERROR`             | CCID slot error                   |
  | 2405 | `POWER_ON_FAILED`        | failed to power on card           |
  | 2406 | `POWER_OFF_FAILED`       | failed to power off card          |
  | 2407 | `SET_PARAMETERS_FAILED`  | failed to set card parameters     |
  | 2408 | `UNEXPECTED_DATA_BLOCK`  | expected DataBlock response       |
  | 2409 | `UNEXPECTED_PARAMETERS`  | expected Parameters response      |
  | 2410 | `UNEXPECTED_SLOT_STATUS` | expected SlotStatus response      |
  | 2411 | `T1_BLOCK_TOO_SHORT`     | T=1 block too short               |
  | 2412 | `T1_LENGTH_MISMATCH`     | T=1 block data length mismatch    |
  | 2413 | `T1_UNEXPECTED_R_BLOCK`  | unexpected T=1 R-block            |
</Accordion>

<Accordion title="nfc (2600–2799) — NFC/IsoDep errors">
  | Code | Name                | Message                         |
  | ---- | ------------------- | ------------------------------- |
  | 2600 | `JNI_ERROR`         | NFC JNI operation failed        |
  | 2601 | `NOT_CONNECTED`     | IsoDep not connected            |
  | 2602 | `NULL_RESPONSE`     | NFC APDU response is null       |
  | 2603 | `NULL_ATR`          | NFC ATR response is null        |
  | 2604 | `TRANSCEIVE_FAILED` | NFC transceive operation failed |
  | 2605 | `TAG_LOST`          | NFC tag was lost                |
</Accordion>

<Accordion title="serial (2800–2999) — Serial port errors">
  | Code | Name                   | Message                          |
  | ---- | ---------------------- | -------------------------------- |
  | 2800 | `NO_DEVICE`            | serial device not found          |
  | 2801 | `INVALID_PORT`         | invalid serial port              |
  | 2802 | `OPEN_FAILED`          | failed to open serial port       |
  | 2803 | `CONFIGURATION_FAILED` | serial port configuration failed |
  | 2804 | `READ_FAILED`          | serial read failed               |
  | 2805 | `WRITE_FAILED`         | serial write failed              |
  | 2806 | `TIMEOUT`              | serial operation timed out       |
  | 2807 | `PARITY_ERROR`         | serial parity error              |
  | 2808 | `FRAMING_ERROR`        | serial framing error             |
  | 2809 | `BREAK_CONDITION`      | serial break condition           |
  | 2810 | `BUFFER_OVERFLOW`      | serial buffer overflow           |
</Accordion>

<Accordion title="device (3000–3199) — Device fingerprinting errors">
  | Code | Name                   | Message                                   |
  | ---- | ---------------------- | ----------------------------------------- |
  | 3000 | `COLLECTION_FAILED`    | failed to collect hardware identifiers    |
  | 3001 | `SERIALIZATION_FAILED` | failed to serialize fingerprint data      |
  | 3002 | `JNI_ERROR`            | JNI error during device fingerprinting    |
  | 3003 | `PLATFORM_UNSUPPORTED` | platform not supported for fingerprinting |
</Accordion>

<Accordion title="aidl (3200–3399) — Android AIDL service errors">
  | Code | Name                    | Message                     |
  | ---- | ----------------------- | --------------------------- |
  | 3200 | `JNI_ERROR`             | AIDL JNI operation failed   |
  | 3201 | `METHOD_FAILED`         | AIDL method call failed     |
  | 3202 | `CARD_NOT_PRESENT`      | card not present            |
  | 3203 | `SENSOR_ENABLE_FAILED`  | failed to enable sensor     |
  | 3204 | `SENSOR_DISABLE_FAILED` | failed to disable sensor    |
  | 3205 | `USB_MODE_FAILED`       | failed to set USB host mode |
</Accordion>

<Accordion title="jni (3400–3599) — JNI (Java Native Interface) errors">
  | Code | Name                        | Message                                           |
  | ---- | --------------------------- | ------------------------------------------------- |
  | 3400 | `UNINITIALIZED_VM`          | JavaVM singleton uninitialized                    |
  | 3401 | `WRONG_VALUE_TYPE`          | invalid JValue type cast                          |
  | 3402 | `WRONG_OBJECT_TYPE`         | invalid object type                               |
  | 3403 | `INVALID_CTOR_RETURN`       | invalid constructor return type                   |
  | 3404 | `INVALID_ARG_LIST`          | invalid arguments passed to Java method           |
  | 3405 | `OBJECT_FREED`              | object behind weak reference freed                |
  | 3406 | `CLASS_NOT_FOUND`           | Java class not found                              |
  | 3407 | `METHOD_NOT_FOUND`          | Java method not found                             |
  | 3408 | `FIELD_NOT_FOUND`           | Java field not found                              |
  | 3409 | `JAVA_EXCEPTION`            | Java exception was thrown                         |
  | 3410 | `ENV_METHOD_NOT_FOUND`      | JNI Env method pointer is null                    |
  | 3411 | `NULL_PTR`                  | null pointer in JNI operation                     |
  | 3412 | `TRY_LOCK`                  | mutex already locked                              |
  | 3413 | `FIELD_ALREADY_SET`         | JNI field already set                             |
  | 3414 | `THROW_FAILED`              | JNI throw failed                                  |
  | 3415 | `PARSE_FAILED`              | JNI signature parse failed                        |
  | 3416 | `INVALID_UTF16`             | invalid UTF-16 surrogate pair                     |
  | 3417 | `INVALID_UTF32`             | invalid UTF-32 unit                               |
  | 3418 | `UNSUPPORTED_VERSION`       | unsupported JNI version                           |
  | 3419 | `THREAD_ATTACHMENT_GUARDED` | thread can't be detached while AttachGuards exist |
  | 3420 | `CAUGHT_EXCEPTION`          | caught Java exception                             |
  | 3421 | `UNKNOWN`                   | unknown JNI error                                 |
  | 3422 | `THREAD_DETACHED`           | thread not attached to Java VM                    |
  | 3423 | `WRONG_VERSION`             | JNI version error                                 |
  | 3424 | `NO_MEMORY`                 | JNI out of memory                                 |
  | 3425 | `VM_ALREADY_CREATED`        | Java VM already created                           |
  | 3426 | `INVALID_ARGUMENTS`         | invalid JNI arguments                             |
  | 3427 | `OTHER`                     | other JNI error                                   |
</Accordion>

<Accordion title="logging (3600–3799) — Logging and log export errors">
  | Code | Name                          | Message                                       |
  | ---- | ----------------------------- | --------------------------------------------- |
  | 3600 | `LOG_DIR_NOT_SET`             | log directory not configured                  |
  | 3601 | `LOG_DIR_NOT_FOUND`           | log directory does not exist                  |
  | 3602 | `LOG_DIR_NOT_A_DIR`           | log path is not a directory                   |
  | 3603 | `LOG_APPENDER_INIT_FAILED`    | failed to create rolling file appender        |
  | 3604 | `LOG_SUBSCRIBER_INIT_FAILED`  | failed to initialize tracing subscriber       |
  | 3610 | `EXPORT_OUTPUT_DIR_NOT_FOUND` | export output parent directory does not exist |
  | 3611 | `EXPORT_FILE_CREATE_FAILED`   | failed to create export archive file          |
  | 3612 | `EXPORT_DIR_READ_FAILED`      | failed to read log directory                  |
  | 3613 | `EXPORT_FILE_OPEN_FAILED`     | failed to open log file for reading           |
  | 3614 | `EXPORT_FILE_APPEND_FAILED`   | failed to append file to archive              |
  | 3615 | `EXPORT_TAR_FINALIZE_FAILED`  | failed to finalize tar archive                |
  | 3616 | `EXPORT_COMPRESSION_FAILED`   | failed to finalize zstd compression           |
</Accordion>

<Accordion title="wasm (3800–3999) — WASM protocol-runtime errors (host + module side)">
  | Code | Name                        | Message                                                                |
  | ---- | --------------------------- | ---------------------------------------------------------------------- |
  | 3800 | `MODULE_LOAD_FAILED`        | WASM module bytes failed to load                                       |
  | 3801 | `MODULE_INSTANTIATE_FAILED` | WASM module instantiation failed                                       |
  | 3802 | `MODULE_OP_NOT_EXPORTED`    | WASM module does not export the requested card-action                  |
  | 3803 | `MODULE_TRAP`               | WASM module trapped during execution                                   |
  | 3804 | `MODULE_UNKNOWN_NAMESPACE`  | requested namespace is not known to the WASM module                    |
  | 3805 | `MODULE_UNKNOWN_PARAMETER`  | requested parameter is not known to the WASM module                    |
  | 3806 | `MODULE_INVALID_CONTEXT`    | WASM module failed to decode the per-invocation context                |
  | 3807 | `MODULE_INVALID_RESULT`     | host failed to decode the WASM module's emitted result                 |
  | 3808 | `MODULE_FUEL_EXHAUSTED`     | WASM module exceeded its compute budget                                |
  | 3809 | `MODULE_TIMEOUT`            | WASM module execution exceeded its deadline                            |
  | 3810 | `HOST_TRANSPORT`            | host\_transmit\_apdu failed at the transport layer                     |
  | 3811 | `HOST_BUF_TOO_SMALL`        | host output buffer too small; module should retry with a larger buffer |
  | 3812 | `HOST_MEMORY_FAULT`         | WASM module passed an invalid pointer or length to a host import       |
  | 3813 | `HOST_INVALID_UTF8`         | path string passed to host\_backend\_call was not valid UTF-8          |
  | 3814 | `MODULE_SERIALIZE_FAILED`   | WASM module failed to msgpack-encode its emitted result                |
  | 3815 | `HOST_SIGNATURE_INVALID`    | WASM module signature did not verify against the trusted key           |
  | 3816 | `HOST_NO_MEMORY_EXPORT`     | WASM module did not export linear memory                               |
  | 3817 | `HOST_CONTEXT_TOO_LARGE`    | per-invocation context exceeded the host's staging capacity            |
  | 3818 | `BACKEND_NETWORK`           | host\_backend\_call failed at the network/IO layer                     |
</Accordion>
