From da77531eff781b194d66602912289ab6f1081c1a Mon Sep 17 00:00:00 2001 From: meriadec Date: Wed, 28 Mar 2018 16:39:46 +0200 Subject: [PATCH] Fix device detection when an app is opened --- src/internals/usb/devices.js | 11 +++++++++-- src/internals/usb/manager/constants.js | 3 +++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/internals/usb/devices.js b/src/internals/usb/devices.js index e735149c..a21b2188 100644 --- a/src/internals/usb/devices.js +++ b/src/internals/usb/devices.js @@ -38,8 +38,15 @@ export default (send: IPCSend) => ({ async function isValidHIDDevice(devicePath: string): Promise { try { const transport: Transport<*> = await CommNodeHid.open(devicePath) - await transport.send(...APDUS.GET_FIRMWARE) - return true + try { + await transport.send(...APDUS.GET_FIRMWARE) + return true + } catch (err) { + // if we are inside an app, the first call should have failed, + // so we try this one + await transport.send(...APDUS.GET_FIRMWARE_FALLBACK) + return true + } } catch (err) { return false } diff --git a/src/internals/usb/manager/constants.js b/src/internals/usb/manager/constants.js index c67191e1..834a7b03 100644 --- a/src/internals/usb/manager/constants.js +++ b/src/internals/usb/manager/constants.js @@ -4,4 +4,7 @@ export const BASE_SOCKET_URL = 'ws://api.ledgerwallet.com/update/install' // List of APDUS export const APDUS = { GET_FIRMWARE: [0xe0, 0x01, 0x00, 0x00], + // we dont have common call that works inside app & dashboard + // TODO: this should disappear. + GET_FIRMWARE_FALLBACK: [0xe0, 0xc4, 0x00, 0x00], }