Proteção contra curto-circuito é o papel do hardware na interface USB. USB 2.0 s7.1.1 diz
A USB transceiver is required to withstand a continuous short circuit of D+ and/or D- to VBUS, GND, other data line, or the cable shield at the connector, for a minimum of 24 hours without degradation.
O Linux reportará um curto-circuito se o hardware do transceptor USB reportar essa condição ao Linux. Veja fonte / drivers / usb / core / hub.c: port_event () . Neste caso, o Linux evita o envio de dados para a porta de 0,1 a 0,5s, a fim de fornecer um tempo uniforme de curto prazo para dissipar e desabilitar a porta se a condição de sobrecorrente persistir.
Se você estiver desenvolvendo hardware USB, poderá optar por usar um hub alimentado por USB (com proteção contra sobrecorrente, consulte o atributo USB wHubCharacteristics
) como um dispositivo de sacrifício para proteger seu computador mais caro , ao invés de confiar no transceptor USB do seu computador operando dentro da especificação. Observe que, em alguns projetos USB, a proteção contra sobrecorrente é implementada usando um polifusão , e eles têm um número limitado de eventos de acionamento e também podem algum tempo para retomar a operação, presumivelmente tempo você prefere gastar trocando em outro hub e continuar a desenvolver o seu dispositivo.
Quando um dispositivo USB é inserido, o Linux verifica se as configurações USB propostas não excedem a corrente nominal da porta (consulte drivers / usb / core / generic.c: usb_choose_configuration () ), mas isso é para condições sem erro, onde pode-se supor que os dispositivos não atraem mais corrente do que o solicitado seu software.