USB che si disconnette e riconnette in Windows: come trovare la vera causa

Windows scollega e ricollega continuamente un dispositivo USB? Ecco come identificare la periferica responsabile e diagnosticare problemi di driver, alimentazione, porte e risparmio energetico.

Il caratteristico suono di Windows che segnala la disconnessione di una periferica USB, seguito pochi secondi dopo da quello della riconnessione e poi, magari, da una nuova disconnessione è sintomo di un problema. A volte il dispositivo smette di funzionare per un istante e torna operativo. In altri casi, Windows continua a rilevare e perdere la stessa periferica, anche quando nessuno tocca il cavo o il connettore.

Il fenomeno può interessare mouse, tastiere, webcam, stampanti, adattatori Bluetooth, schede audio, hub USB e unità di archiviazione esterne. Non sempre, però, il responsabile è immediatamente riconoscibile: un dispositivo USB integrato nel computer potrebbe provocare disconnessioni ripetute senza alcun segnale visibile, mentre Windows continua a riprodurre i suoni di collegamento e scollegamento.

Ai fini della risoluzione della problematica, l’approccio più efficace consiste nel raccogliere indizi precisi, identificare il dispositivo coinvolto e comprendere in quale fase della comunicazione USB si verifica il malfunzionamento.

Perché Windows continua a scollegare e ricollegare un dispositivo USB

Quando si collega un dispositivo USB, Windows avvia una procedura chiamata enumerazione. Il controller USB rileva la presenza del dispositivo sulla porta, ne determina le caratteristiche e acquisisce i “descrittori” necessari per identificarlo. Il sistema operativo associa quindi i driver appropriati e rende disponibili le funzionalità della periferica.

Se il collegamento si interrompe, il sistema può rilevare una modifica dello stato della porta e avviare nuovamente la procedura di identificazione.

Una perdita di alimentazione, ad esempio, può provocare il riavvio dell’elettronica del dispositivo; un cavo difettoso può compromettere la comunicazione senza interrompere l’alimentazione; un firmware instabile può rendere la periferica temporaneamente non responsiva. Anche il passaggio tra stati di funzionamento e risparmio energetico può generare problemi, soprattutto se il driver o il dispositivo gestisce male il ripristino dell’attività.

Identificare il dispositivo che si disconnette senza scollegare tutto

Il primo controllo può essere condotto premendo Windows+X quindi scegliendo Gestione dispositivi: dal menu Visualizza si può selezionare Dispositivi per connessione, anziché la visualizzazione tradizionale per categoria. In questa modalità Windows organizza l’hardware in una struttura gerarchica, rendendo più semplice riconoscere i dispositivi che dipendono dai controller USB e dagli hub intermedi.

Osservando l’albero mentre si verifica il problema, è possibile individuare eventuali periferiche che scompaiono e riappaiono.

Gestione dispositivi Windows: dispositivi per connessione

Il metodo presenta tuttavia un limite: se la disconnessione dura poche frazioni di secondo, il dispositivo potrebbe tornare disponibile prima che sia possibile identificarlo visivamente.

Inoltre, i dispositivi USB compositi complicano l’analisi: una singola periferica può esporre più funzioni, ciascuna rappresentata da una voce distinta in Gestione dispositivi. Una webcam con microfono integrato, ad esempio, può comparire contemporaneamente tra le periferiche video e audio.

Usare PowerShell per identificare le periferiche che scompaiono

Attraverso PowerShell, Windows mette a disposizione la cmdlet Get-PnpDevice, che permette di interrogare i dispositivi gestiti dal sistema Plug and Play del sistema operativo. Per visualizzare quelli attualmente presenti si può aprire una finestra PowerShell e digitare quanto segue:

Get-PnpDevice -PresentOnly |
    Select-Object Class, FriendlyName, InstanceId, Status

Il parametro -PresentOnly consente di limitare l’elenco ai dispositivi che Windows considera presenti, mentre InstanceId restituisce l’identificativo della specifica istanza hardware. Si possono in questo modo riconoscere identificativi come:

USB\VID_046D&PID_C52B\...
USB\VID_0781&PID_5581\...
USB\VID_0BDA&PID_8153\...

Le componenti VID e PID rappresentano, rispettivamente, gli identificativi del produttore e del prodotto USB. È possibile confrontare due “istantanee” successive dell’elenco Plug and Play, registrando quali istanze scompaiono e quali tornano disponibili. Un semplice meccanismo di monitoraggio approntato mediante PowerShell consente di automatizzare il controllo:

$previous = @{}

function Get-PresentDevices {
    $devices = @{}

    Get-PnpDevice -PresentOnly -ErrorAction SilentlyContinue |
        ForEach-Object {
            $devices[$_.InstanceId] = $_.FriendlyName
        }

    return ,$devices
}

$previous = Get-PresentDevices

Write-Host "Monitoraggio PnP attivo. CTRL+C per terminare."

while ($true) {
    Start-Sleep -Milliseconds 500

    $current = Get-PresentDevices

    foreach ($id in $previous.Keys) {
        if (-not $current.ContainsKey($id)) {
            Write-Host "$(Get-Date -Format 'HH:mm:ss.fff') DISCONNESSO: $($previous[$id]) [$id]" -ForegroundColor Red
        }
    }

    foreach ($id in $current.Keys) {
        if (-not $previous.ContainsKey($id)) {
            Write-Host "$(Get-Date -Format 'HH:mm:ss.fff') CONNESSO: $($current[$id]) [$id]" -ForegroundColor Green
        }
    }

    $previous = $current
}

Lo script non modifica la configurazione del computer e può essere eseguito con i normali privilegi dell’utente. Ogni mezzo secondo acquisisce l’elenco delle periferiche presenti e lo confronta con quello precedente. Quando rileva una differenza, visualizza l’ora, il tipo di cambiamento, il nome del dispositivo e il relativo identificativo.

Connessione disconnessione dispositivi USB Windows 11

Una disconnessione e riconnessione interamente comprese tra due campionamenti possono sfuggire al controllo. Inoltre, il monitor rileva anche dispositivi non USB, sebbene l’identificativo e il nome aiutino a distinguerli (nell’esempio si vede la comparsa di smart TV e Xbox).

Risalire alla porta USB e all’hub coinvolto con USBView

Identificare il dispositivo è soltanto una parte del lavoro: bisogna anche comprendere a quale controller e a quale porta USB sia collegato, soprattutto quando il computer dispone di diversi hub interni o esterni. Uno degli strumenti più utili è USBView, documentato da Microsoft.

USBView è un’utilità Microsoft che rappresenta la struttura delle connessioni USB: controller host, hub, porte e dispositivi. Per ciascuna periferica consente di esaminare anche informazioni come i descrittori USB e le caratteristiche della connessione.

Il vantaggio rispetto a Gestione dispositivi consiste nella possibilità di osservare la topologia del bus e distinguere una periferica direttamente collegata al computer da una che passa attraverso un hub.

Supponiamo, ad esempio, che una tastiera e una webcam smettano di funzionare contemporaneamente: se entrambe dipendono dallo stesso hub, il problema potrebbe interessare proprio l’hub o il suo collegamento al computer, non necessariamente i due dispositivi. USBView permette di verificare la relazione tra le periferiche, ma non è un registratore storico delle disconnessioni: deve essere utilizzato insieme alle altre tecniche diagnostiche.

USB Device Tree Viewer (UsbTreeView) è un’alternativa gratuita e portabile, derivata proprio dal codice di USBView Microsoft, con funzionalità aggiuntive integrate. Come abbiamo già spiegato, UsbTreeView è la scelta migliore: mostra la gerarchia dei controller, gli hub e le porte USB, oltre a informazioni sui dispositivi collegate alla gestione hardware di Windows.

Analizzare gli eventi USB di Windows: il metodo più avanzato

Quando la periferica è stata identificata ma la causa rimane sconosciuta, possiamo utilizzare Event Tracing for Windows (ETW), l’infrastruttura di Windows che permette di raccogliere informazioni diagnostiche direttamente dai componenti del sistema operativo.

Microsoft documenta specificamente l’uso degli eventi ETW per analizzare problemi di enumerazione USB, transizioni di stato delle porte, attività dei controller e gestione dell’alimentazione. Anziché limitarsi a sapere che una periferica è scomparsa, si possono esaminare gli eventi generati dallo stack USB nel momento in cui si manifesta il problema.

Per raccogliere una traccia diagnostica è possibile utilizzare logman, già presente in Windows. Apriamo il Prompt dei comandi come amministratore ed eseguiamo:

logman create trace -n usbtrace -o "%TEMP%\usbtrace.etl"
logman update trace -n usbtrace -p Microsoft-Windows-USB-USBXHCI
logman update trace -n usbtrace -p Microsoft-Windows-USB-UCX
logman update trace -n usbtrace -p Microsoft-Windows-USB-USBHUB3
logman start usbtrace

La sequenza che abbiamo presentato configura e avvia una sessione di tracciamento per i principali componenti dello stack USB moderno. A questo punto bisogna riprodurre il problema, attendere che si verifichino alcune disconnessioni e interrompere la registrazione:

logman stop usbtrace
logman delete usbtrace

Il file usbtrace.etl, salvato nella directory temporanea, contiene gli eventi raccolti e può essere esaminato con strumenti compatibili con ETW, tra cui Windows Performance Analyzer. La disponibilità e il livello di dettaglio degli eventi dipendono dai provider e dalla configurazione della traccia.

Capire se il problema dipende dal risparmio energetico USB

Una delle cause possibili delle disconnessioni intermittenti è la gestione energetica: Windows utilizza un meccanismo chiamato USB Selective Suspend, che consente di sospendere una singola porta o periferica inattiva senza interrompere necessariamente il funzionamento delle altre.

Si tratta di una funzionalità normale, progettata per ridurre i consumi, particolarmente utile sui notebook. Il problema generalmente si manifesta quando un driver, il firmware del dispositivo o un hub gestisce male il passaggio da uno stato a basso consumo al normale funzionamento.

La sospensione selettiva, però, non equivale a una disconnessione USB: una periferica sospesa correttamente rimane riconosciuta dal sistema.

Se il problema compare soprattutto dopo alcuni minuti di inattività, possiamo provare a disattivare temporaneamente la sospensione selettiva USB.

Premiamo quindi Windows+R, digitiamo powercfg.cpl e premiamo Invio. Accanto alla combinazione energetica in uso, clicchiamo su Modifica impostazioni combinazione, quindi su Cambia impostazioni avanzate risparmio energia. Espandiamo Impostazioni USB, Impostazione sospensione selettiva USB, selezioniamo Disabilitata e confermiamo con Applica. Sui notebook, modifichiamo l’opzione relativa all’alimentazione in uso (batteria o rete elettrica).

Verifichiamo se le disconnessioni continuano e, terminata la prova, ripristiniamo Abilitata. Su alcuni sistemi, soprattutto quelli che adottano Modern Standby, l’opzione potrebbe non essere esposta nell’interfaccia.

Driver difettoso o dispositivo che perde l’alimentazione?

Una volta individuata la periferica, è importante verificare il comportamento in condizioni differenti:

Comportamento osservato Prima ipotesi da verificare
Disconnessione quando si muove il cavo Contatto o connettore difettoso
Problema soltanto attraverso un hub Hub, alimentazione o collegamento upstream
Disconnessione dopo inattività Gestione energetica e ripresa dalla sospensione
Problema durante trasferimenti intensi Stabilità elettrica, termica o del controller
Più dispositivi scompaiono insieme Hub o controller condiviso
Periferica instabile su più computer Dispositivo, cavo o firmware
Problema comparso dopo un aggiornamento Driver, firmware o regressione software

Un’unità rimovibile SSD USB che si disconnette soltanto durante la copia di file di grandi dimensioni potrebbe avere un problema di alimentazione, ma anche un bridge USB-SATA o USB-NVMe instabile, oppure un difetto termico. In casi simili conviene verificare il comportamento con un altro cavo, collegando il dispositivo direttamente al computer e provando una porta differente.

Verificare gli errori Plug and Play e i driver

Windows offre anche un altro strumento integrato, PnPUtil, con il quale è possibile individuare i dispositivi associati a condizioni di errore. Dal Prompt dei comandi o da PowerShell si può impartire l’istruzione seguente:

pnputil /enum-devices /problem

Il comando restituisce i dispositivi con un codice di problema Plug and Play: non tutte le disconnessioni USB sono però registrate in questo elenco. Se conosciamo già l’identificativo dell’istanza interessata, possiamo interrogarla direttamente:

pnputil /enum-devices /instanceid "ID_ISTANZA" /properties

La stringa ID_ISTANZA va sostituita con il valore ottenuto durante il monitoraggio.

Per gli errori di installazione e configurazione dei driver, un’ulteriore fonte è il file \Windows\INF\setupapi.dev.log. Contiene informazioni sulle operazioni Plug and Play e sull’installazione dei driver. Cercando l’ID della periferica si possono individuare eventuali errori associati alla configurazione o all’avvio del dispositivo.

La procedura più affidabile per arrivare alla causa

Il metodo più efficace per risolvere problemi di disconnessioni e riconnessioni continue di dispositivi USB in Windows consiste nel procedere per esclusione, evitando di modificare contemporaneamente più impostazioni.

Diagnosi disconnessioni e riconnessioni USB Windows 11

Incrociando le informazioni Plug and Play, la topologia USB, gli eventi ETW e alcuni test hardware mirati, un problema solo all’apparenza “casuale” può trasformarsi in un malfunzionamento identificabile, riproducibile e quindi risolvibile.

Ti consigliamo anche

Link copiato negli appunti