La risposta generica a questa domanda è sì, il VBUS (+ 5V dal cavo) deve essere collegato al dispositivo anche se è autoalimentato. Il motivo è il seguente:
Per avviare il processo di connessione sul lato host, il dispositivo deve richiamare D + (nel caso della modalità FS / HS) o D- (nel caso del dispositivo LS).
Tuttavia, le specifiche USB hanno un requisito obbligatorio che nessun dispositivo USB dovrebbe generare corrente su alcun pin di interfaccia a meno che non sia collegato a un cavo, vedere la sezione 7.1.5.1, che recita,
La sorgente di tensione sulla resistenza di pull-up deve essere derivata o controllata dall'alimentazione fornita sul cavo USB in modo tale che quando VBUS viene rimosso, la resistenza di pull-up non fornisce corrente sulla linea dati a cui è collegata.
Se un dispositivo USB non ha questo controllo, una delle linee di dati sarà una fonte di corrente. L'asserzione prematura dei pull-up era fonte di problemi per alcuni host USB legacy. Ecco perché è stata istituita questa regola e c'è un test speciale per questo nel programma di certificazione USB-IF.
Pertanto, USB VBUS è un segnale "banda laterale" importante nel protocollo di connessione USB. Pertanto, i normali CI di dispositivi USB dispongono di un pin di ingresso separato per rilevare la presenza di host USB. Alcuni produttori di circuiti integrati (ad es. FT232H, MCP2221, ecc.) Ignorano questo requisito, supponendo che il loro chip verrà utilizzato esclusivamente nella configurazione alimentata dal bus, in cui il requisito del controllo pull-up viene automaticamente soddisfatto. Tuttavia, quando si progettano questi chip in progetti autoalimentati, sono necessari alcuni sforzi extra per collegare l'abilitazione dei pull-up con la presenza di VBUS sulla porta USB.
Per quanto riguarda il protocollo "handshake" di connessione USB, USB non si basa sulla corrente prelevata da VBUS. Il protocollo è questo: la porta host deve avere VBUS attivo; VBUS è collegato al dispositivo; il dispositivo vede il VBUS e tira su 1,5k su uno dei cavi D + / D; l'host vede questa connessione e dopo un ritardo di 100 ms asserisce la segnalazione USB_RESET (SE0 ecc.).