Skip to Content
MatérielMise à jour du firmware

Mise à jour du micrologiciel

Choisissez l’API de mise à jour selon la famille de protocole, et non le seul nom commercial. Hardware SDK 1.2.0 conserve une interface JavaScript unique ; le protocole de l’appareil détermine la méthode valide.

Appareil actuelProtocoleMéthodeÉléments mis à jour
Classic, Mini, TouchV1firmwareUpdateV2Micrologiciel principal et/ou BLE
OneKey ProV1firmwareUpdateV3Bootloader + principal + BLE + ressources en un seul parcours
OneKey Pro 2, NeoV2firmwareUpdateV4Bootloader, partitions d’application, coprocesseur, ZIP de ressources

Confirmez le protocole actif avec connectProtocol dans l’objet appareil ou via getDeviceState. Ne différenciez pas le comportement selon le PID USB ou le nom BLE. Consultez Appareils et Protocol V1 et V2.

Ne lancez une mise à jour qu’après que l’utilisateur a sélectionné l’appareil cible et approuvé l’opération. Utilisez les métadonnées de publication officielles et des fichiers vérifiés pour ce modèle ; une version d’exemple ne doit jamais déterminer le micrologiciel à installer.

1. Vérifier si une mise à jour est nécessaire

const release = await HardwareSDK.checkFirmwareRelease(connectId); if (!release.success) throw new Error(release.payload.error); // payload.status: 'valid' | 'outdated' | 'required' | 'unknown' | 'none' const updateAvailable = release.payload !== null && (release.payload.status === 'outdated' || release.payload.status === 'required'); // Offer an update only when updateAvailable is true and release metadata exists.

Coprocesseur BLE : checkBLEFirmwareRelease. Abonnez-vous à FIRMWARE_EVENT (RELEASE_INFO / BLE_RELEASE_INFO) si vous souhaitez proposer la mise à jour plus tard plutôt que bloquer la première connexion.

2. S’abonner à la progression avant d’appeler la mise à jour

import { UI_EVENT, UI_REQUEST } from '@onekeyfe/hd-core'; HardwareSDK.on(UI_EVENT, (msg) => { if ( msg.type === UI_REQUEST.FIRMWARE_PROGRESS || msg.type === UI_REQUEST.FIRMWARE_TIP || msg.type === UI_REQUEST.FIRMWARE_PROCESSING ) { renderFirmwareProgress(msg.payload); } // firmwareUpdateV4 may emit REQUEST_BUTTON with reason 'firmware-update'. // Show "confirm on device". Do not uiResponse() that hint. });

3. Appeler la méthode correspondante

Classic / Mini / Touch. Choisissez la cible à partir des métadonnées de publication vérifiées pour le modèle connecté :

declare const targetFirmwareVersion: number[]; const result = await HardwareSDK.firmwareUpdateV2(connectId, { platform: 'web', updateType: 'firmware', version: targetFirmwareVersion, }); if (!result.success) throw new Error(result.payload.error);

Pro :

declare const targetFirmwareVersion: number[]; const result = await HardwareSDK.firmwareUpdateV3(connectId, { platform: 'desktop', firmwareVersion: targetFirmwareVersion, }); if (!result.success) throw new Error(result.payload.error);

Pro 2 / Neo — transmettre des binaires déjà vérifiés :

const result = await HardwareSDK.firmwareUpdateV4(connectId, { platform: 'desktop', bootloaderBinary, applicationP1Binary, applicationP2Binary, coprocessorBinary, resourceArchiveBinary, }); if (!result.success) throw new Error(result.payload.error);

platform est obligatoire pour les trois méthodes : 'native' | 'desktop' | 'ext' | 'web' | 'web-embed'.

4. Après l’appel

  1. L’appareil peut redémarrer. Attendez DEVICE.CONNECT (ou effectuez une nouvelle recherche). Une reconnexion ordinaire conserve le protocole confirmé. Consultez Déconnexions et reconnexion.
  2. Relisez getDeviceState (scope: 'firmware' si vous avez besoin des versions) avant de faire confiance à la nouvelle version.
  3. Si l’appel a échoué avec un délai de transport dépassé après l’envoi de la demande d’installation, ne rejouez pas la même mise à jour. Reconnectez-vous, lisez l’état, puis décidez.

À ne pas faire

  • Appeler firmwareUpdateV3 sur Pro 2 / Neo, ou firmwareUpdateV4 sur Classic / Pro.
  • Réessayer automatiquement une mise à jour après déconnexion ou délai dépassé.
  • Propager les utilitaires BLE retryCount dans les appels de mise à jour.
  • Installer romloader via firmwareUpdateV4.

Suivant

Dernière mise à jour le