diff --git a/cmd/geth/main.go b/cmd/geth/main.go
index c2d719d95602562af70f4f60a4f3e2e3ed2bb369..ad7b639a3f174d4e357f673805a47bd4babcef62 100644
--- a/cmd/geth/main.go
+++ b/cmd/geth/main.go
@@ -88,6 +88,7 @@ func init() {
 		utils.BootnodesFlag,
 		utils.DataDirFlag,
 		utils.KeyStoreDirFlag,
+		utils.NoUSBFlag,
 		utils.EthashCacheDirFlag,
 		utils.EthashCachesInMemoryFlag,
 		utils.EthashCachesOnDiskFlag,
diff --git a/cmd/geth/usage.go b/cmd/geth/usage.go
index 4577281546a87c7eb7d99113978796d6185f11fd..9f06a308b3ba86469627b8c620ea620a48e85892 100644
--- a/cmd/geth/usage.go
+++ b/cmd/geth/usage.go
@@ -67,6 +67,7 @@ var AppHelpFlagGroups = []flagGroup{
 			configFileFlag,
 			utils.DataDirFlag,
 			utils.KeyStoreDirFlag,
+			utils.NoUSBFlag,
 			utils.NetworkIdFlag,
 			utils.TestNetFlag,
 			utils.DevModeFlag,
diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index b35574c86a2e99e8b16f7ae954d3eb5be475e03e..af9585bd057dbde3e89ebae599a52933e7dedba3 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -115,6 +115,10 @@ var (
 		Name:  "keystore",
 		Usage: "Directory for the keystore (default = inside the datadir)",
 	}
+	NoUSBFlag = cli.BoolFlag{
+		Name:  "nousb",
+		Usage: "Disables monitoring for and managine USB hardware wallets",
+	}
 	EthashCacheDirFlag = DirectoryFlag{
 		Name:  "ethash.cachedir",
 		Usage: "Directory to store the ethash verification caches (default = inside the datadir)",
@@ -729,6 +733,9 @@ func SetNodeConfig(ctx *cli.Context, cfg *node.Config) {
 	if ctx.GlobalIsSet(LightKDFFlag.Name) {
 		cfg.UseLightweightKDF = ctx.GlobalBool(LightKDFFlag.Name)
 	}
+	if ctx.GlobalIsSet(NoUSBFlag.Name) {
+		cfg.NoUSB = ctx.GlobalBool(NoUSBFlag.Name)
+	}
 }
 
 func setGPO(ctx *cli.Context, cfg *gasprice.Config) {
diff --git a/node/config.go b/node/config.go
index 1bab4c5745f89cc4bfca9bacc61b7ef570de72ab..61e0008ef95b7859bf499b9b7fa0ec77fd849300 100644
--- a/node/config.go
+++ b/node/config.go
@@ -82,6 +82,9 @@ type Config struct {
 	// scrypt KDF at the expense of security.
 	UseLightweightKDF bool `toml:",omitempty"`
 
+	// NoUSB disables hardware wallet monitoring and connectivity.
+	NoUSB bool `toml:",omitempty"`
+
 	// IPCPath is the requested location to place the IPC endpoint. If the path is
 	// a simple file name, it is placed inside the data directory (or on the root
 	// pipe path on Windows), whereas if it's a resolvable path name (absolute or
@@ -389,10 +392,12 @@ func makeAccountManager(conf *Config) (*accounts.Manager, string, error) {
 	backends := []accounts.Backend{
 		keystore.NewKeyStore(keydir, scryptN, scryptP),
 	}
-	if ledgerhub, err := usbwallet.NewLedgerHub(); err != nil {
-		log.Warn(fmt.Sprintf("Failed to start Ledger hub, disabling: %v", err))
-	} else {
-		backends = append(backends, ledgerhub)
+	if !conf.NoUSB {
+		if ledgerhub, err := usbwallet.NewLedgerHub(); err != nil {
+			log.Warn(fmt.Sprintf("Failed to start Ledger hub, disabling: %v", err))
+		} else {
+			backends = append(backends, ledgerhub)
+		}
 	}
 	return accounts.NewManager(backends...), ephemeral, nil
 }