Currently connecting a Ledger is a cause of many user support requests. There are two points that we could improve a little bit that could probably alleviate 90%+ of the ledger-related email we get:
U2F, Show a message "We had trouble connecting to your ledger, try reviewing our hardware wallet connection guide and try again."Sources: https://github.com/MetaMask/metamask-extension/issues/5757#issuecomment-532941266 & https://github.com/MetaMask/metamask-extension/issues/7809#issuecomment-573415606 & first-hand experience
If your hardware wallet is not connecting properly, please try the following, in this order.
Quit your browser.
Unplug your hardware wallet.
Quit any other applications or extensions you have used with your hardware wallet or have installed on your machine (like Ledger Live!)
Plug your hardware wallet back in via USB, not Bluetooth.
Use a different USB cable and/or a different USB port. Some cables and ports, especially those on USB extension devices, don't have the power required for hardware wallets.
Connect your hardware wallet, unlock it, and open the Ethereum app BEFORE opening your browser and navigating to the dapp.
Ensure "browser support" on the device enabled. If it already is on you can try turning it off and on again, but it really needs to be on in order to work.
Ensure "contract data" on the device enabled.
Try using a different browser: Google Chrome, Opera, or Brave.
Restart your computer.
Use a different browser or computer..
After making sure you have your backup of your hardware wallet's 24-word seed phrase, update the firmware on your hardware wallet. _(Note: while firmware updates do not usually require you to enter your seed phrase and restore access, it's better to be safe than sorry.)_
If you are using Linux and Ledger, you may need to add udev rules as explained here (under Linux section, scroll down).
Perform sacrifice to the crypto gods and continue to hodl while doing handstands for a period of 42 days and 42 nights and try again.
Something that would help a lot (though I'm not sure if it's feasible) is checking whether the hardware wallet is connected _before_ prompting the user to sign.
Most helpful comment
Updates for https://metamask.zendesk.com/hc/en-us/articles/360020394612-How-to-connect-a-Trezor-or-Ledger-Hardware-Wallet
Sources: https://github.com/MetaMask/metamask-extension/issues/5757#issuecomment-532941266 & https://github.com/MetaMask/metamask-extension/issues/7809#issuecomment-573415606 & first-hand experience
What to do if your Ledger or Trezor Hardware Wallet is not Working with MetaMask
If your hardware wallet is not connecting properly, please try the following, in this order.
Quit your browser.
Unplug your hardware wallet.
Quit any other applications or extensions you have used with your hardware wallet or have installed on your machine (like Ledger Live!)
Plug your hardware wallet back in via USB, not Bluetooth.
Use a different USB cable and/or a different USB port. Some cables and ports, especially those on USB extension devices, don't have the power required for hardware wallets.
Connect your hardware wallet, unlock it, and open the Ethereum app BEFORE opening your browser and navigating to the dapp.
Ensure "browser support" on the device enabled. If it already is on you can try turning it off and on again, but it really needs to be on in order to work.
Ensure "contract data" on the device enabled.
Try using a different browser: Google Chrome, Opera, or Brave.
Restart your computer.
Use a different browser or computer..
After making sure you have your backup of your hardware wallet's 24-word seed phrase, update the firmware on your hardware wallet. _(Note: while firmware updates do not usually require you to enter your seed phrase and restore access, it's better to be safe than sorry.)_
If you are using Linux and Ledger, you may need to add udev rules as explained here (under Linux section, scroll down).
Perform sacrifice to the crypto gods and continue to hodl while doing handstands for a period of 42 days and 42 nights and try again.