-
Notifications
You must be signed in to change notification settings - Fork 376
Problem with WebUSB + Chrome 91.X #607
Comments
Device shows up and appears to be behaving properly in chrome://usb-internals/ Ultimately, I am trying to use
Any clients that have Chrome auto-update turned on are now affected and unable to use their devices. Please advise. cc @meriadec as you fixed |
I didn't mention but I already tried to flip the bit in chrome://flags to It still does not work, the behavior is: First try - |
Bump - this is a major issue, please advise. I am continuing to debug further. Is anyone from Ledger able to assist? |
Can confirm that Ledger's WebUSB transport is broken in Chrome version 91 and up. Works with Brave (based on chromium v90) in the meantime. Would be really nice if Ledger could implement a fix for their transport. It has been a bit unreliable as of late, especially on Windows machines & newer version of Chrome. |
@humanumbrella Are you using the latest version of the WebUSB transport (5.51.1)? |
Confirming this issue. Transport.open returns a rejected promise with the message At the moment the only way to make Ledger work on MacOS on chrome 91 is to use WebHID transport it seems |
I have multiple setups, some with latest everything (transport/firmware/btc app) and some not on latest. Even with toggling |
Okay, same here. Hoping Ledger comments on this asap. |
I wrote here and in their Ledger Devs slack #support channel yesterday. It's getting late on a Friday night in France so I am assuming it will be quiet, but hoping to be surprised! |
I made a sandbox to test connection with different transports: On Linux (Ubuntu 20.04):
On Windows:
Can someone try on MacOS please |
@Velenir How did you manage to get the WebUSB transport working on Chrome 91? Ledger's docs say that U2F is deprecated on all platforms/transports and should be avoided. |
@MattG561 https://user-images.githubusercontent.com/5121491/120099625-39b50180-c145-11eb-9314-c37137daec19.mp4 While U2F is deprecated it's the only transport that is supported on Firefox, so have to use it there. |
I've found that it's not working on Firefox either. It may be unrelated but when I try to connect on V.88.0.1 I get "Uncaught (in promise) Error: navigator.usb is undefined" |
Looks like Brave just updated to Chromium v91, Ledger WebUsb no longer working there either. @skoold2003 WebUsb never worked in Firefox, it's not supported. If you're talking about U2F, it's still working for me in FF today. |
We've tried via WebHID and it works. @humanumbrella const transport = await TransportWebHID.create() |
Any help from Ledger on this one, @gre ? Obviously based on commentary here there is a major problem in the latest Chrome update regarding WebUSB connection. My team can move to add in support for WebHID, which appears to be working, but would really like to know why WebUSB is not working, especially if it's something trivial. Also, the ledgerjs README shows WebHID as experimental, so I am a little hesitant to promote that at the moment. Please advise. |
@humanumbrella I think we have to update this README that do not reflect the technical reality anymore. It's clear that Chrome want to sunset our usage of U2F for bidirectional communication as it was documented in https://github.com/LedgerHQ/ledgerjs/blob/master/docs/migrate_webusb.md Right now, both WebUSB and WebHID are in Drafts stages ( https://wicg.github.io/webusb/ and https://wicg.github.io/webhid/ ). WebHID is more and more the direction we would recommend but there is still a ❓ regarding more browser to support it and which technology will be favorized in the future (as soon as these specs leave the Draft phase). |
@gre - thank you very much for this information! I will proceed with getting our team to include WebHID support. Can you confirm whether anyone at Ledger can look at this WebUSB problem? I genuinely believe it's something trivial about a timeout or command rate limiting or something. The reason that I believe this is because the browser is fully able to both see and pair with the device (which seems to be the hard part) but then on an attempt at any communication with the device, an error is thrown. |
It would really be unfortunate to allocate resources to fixing a potentially trivial problem. Would love it if we can get WebUSB working again. |
Sorry for the post/delete spam, I didn't want to send down a wild goose chase but ultimately that's what I'm on. I am not sure, but I think that this recently added webusb related 'fix' could be the source of the problem --> https://chromium-review.googlesource.com/c/chromium/src/+/2829452
We could really use some help from a Ledger dev here. |
Can confirm that Ledger Nano S / Nano X work fine in Windows Chrome 91.X - so maybe this^ crash fix for Windows breaks it everywhere else? Not sure... |
I'm very surprised that such a large issue hasn't been addressed yet. It's been almost a week without any sign that they're actively working on this. |
Please help us confirm this fixes works https://github.com/LedgerHQ/ledgerjs/releases/tag/v5.53.0 I've also deployed a new version of https://ledger-repl.vercel.app/ that ease the test on this and that we can all test to confirm it's working. (project is https://github.com/LedgerHQ/ledger-repl , access to previous version that had the bug https://ledger-repl-a2770cdok.now.sh/ ) |
@humanumbrella @gre I'm noticing an error with WebUSB when attempting to disconnect the device.
Will throw the following error: I've never encountered this with WebUSB when it was working (pre Chrome 91.X). |
@MattG561 @kwunyeung @refi93 @hritique @JacobR & everyone: Apologies for a too quick attempt to fix the problem that ends up being incomplete to fully resolve this connectivity issue. I'm issuing right now a 5.53.1 that will revert the incomplete fix attempt back to 5.52.0. We are searching for a better solution now. While the fixes works most of the time, there are cases that we later identified with more extensive QA that makes it actually not "openable" again. Thanks for your reactivity and again sorry for the too fast release. Next time we will do a beta bump version instead of using I'm done on my side for today but we will continue the investigation tomorrow. One quick thought I had tonight is we may attempt something like (pseudo code)
i'm not sure if this idea is viable but worth a try. But more expertise on the topic will be done to maybe rebuild from ground up this transport. |
Could you also share on which OS are we all having issues? We have identified in our side that it's possibly mainly on Mac OS. |
@gre The issue mentioned above was solved on my end and was not due to the update (as far as I know). I am still bumping into the same problem you've described above with the device not being openable again. Environment info: |
@gre I tried with version Environment info: |
I'm having the same issue in https://explore-fetchhub.fetch.ai/ and https://cosmoscan.io both in Cosmos ecosystem. But I confirm that I could connect with Metamask (ETH), Zillet.io (Zilliqa), Solflare (Solana) and other apps correctly. The problem for me it's only with apps based in Cosmos. message: "navigator.usb is undefined" Environment info: |
@gre @jarcodallo You are connecting with the app open on the device, yes? I can confirm that BTC app 1.6.1 with @pochocosta WebUSB does not work in Firefox. It works for us in Chromium 91.X with The Caravan Test Suite is an easy way to see if it's working with the Bitcoin app.
There is no need to restore using the test suite, though you can if you want to. The point is that the test will fail but the device will respond. |
Is this issue related to https://crbug.com/1215767? |
FYI there is an active issue on the Chromium project (base project of Chrome) where Ledger took part in the discussion https://bugs.chromium.org/p/chromium/issues/detail?id=1215767 The bug has been identified in Chrome 91 and revert has been successfully tested official builds can be found here: https://www.google.com/chrome/canary/ it's not clear if the fix is meant to be ported in Chrome 91 / 92, despite some comments on the ticket mention that they are on the fix target |
Afaict this is no longer an issue. The Chromium issue is closed. Cheers |
Mostly an FYi as I am still searching for answers.
After updating to Chrome 91, when attempting to connect to either Ledger device (X or S), I am seeing the opportunity to pair the device as normal, what looks like a successful pairing, but then when I try to do any operation, I am getting
The device was disconnected.
This is for existing applications that work fine on Chrome 90.X.
The text was updated successfully, but these errors were encountered: