Linux는 너무 많은 전력을 소비하는 USB 장치의 전력을 차단합니까?

Linux는 너무 많은 전력을 소비하는 USB 장치의 전력을 차단합니까?

Arduino를 단락시키면 Linux에서 문제가 있음을 감지하고 포트를 비활성화합니까? Mabook은 경고를 표시하고 장치를 비활성화합니다.

답변1

단락 보호는 USB 인터페이스의 하드웨어 기능입니다. USB 2.0 s7.1.1 라고

USB 트랜시버는 성능 저하 없이 최소 24시간 동안 커넥터의 D+ 및/또는 D-가 VBUS, GND, 기타 데이터 라인 또는 케이블 차폐에 대한 지속적인 단락을 견딜 수 있어야 합니다.

USB 트랜시버 하드웨어가 Linux에 단락 상태를 보고하면 Linux는 단락 상태를 보고합니다. 바라보다소스/드라이버/usb/core/hub.c:port_event(). 이 경우 Linux는 짧고 균일한 소멸 시간을 제공하기 위해 0.1~0.5초 동안 포트에 데이터를 보내는 것을 방지하고, 과전류 상태가 지속되면 포트를 비활성화합니다.

당신이라면 어떨까요?개발하다wHubCharacteristicsUSB 하드웨어 컴퓨터가 사양 내에서 작동하는 USB 트랜시버에 의존하는 대신 USB 전원 허브(과전류 보호 기능, USB 속성 참조)를 희생 장치로 사용하여 더 비싼 컴퓨터를 보호할 수도 있습니다 . 일부 USB 설계에서는 과전류 보호가 다음을 사용하여 구현됩니다.다중 퓨즈이러한 트리거 이벤트는 개수가 제한되어 있으며 작업을 재개하는 데 시간이 걸릴 수 있습니다. 아마도 다른 허브로 교체하는 데 시간을 보내고 장치 개발을 계속하는 것이 더 나을 것입니다.

USB 장치가 연결되면 Linux는 권장 USB 구성이 포트의 현재 정격을 초과하는지 확인합니다(참조:드라이버/usb/코어/generic.c:usb_choose_configuration()), 그러나 이는 오류가 아닌 조건을 위한 것이며 장치가 소프트웨어에 필요한 것보다 더 많은 전류를 소비하지 않는다고 가정할 수 있습니다.

관련 정보