USB 가젯 상태 변경 감지

USB 가젯 상태 변경 감지

질문: 가젯 자체에서 호스트 컴퓨터에 가젯이 연결된 시기를 어떻게 감지할 수 있나요?

배경: g_mass_storageLinux 커널 모듈은 USB OTG 포트를 통해 대용량 저장 장치를 제공하는 데 사용될 수 있습니다. 나는 이것을 사용하여 USB를 통해 Linux와 이 모듈을 실행하는 장치로 파일을 전송할 수 있도록 하고 싶습니다.

불행하게도 이것은 내 모듈에서 직접 지원되지 않으며 클라이언트와 호스트 모두에서 스토리지에 액세스하는 것은 기껏해야 불안정할 가능성이 높습니다. 하지만 USB 호스트가 연결되지 않은 경우에만 저장소에서 읽거나 쓰도록 Linux 시스템(USB 클라이언트)을 제어하면 이 문제를 피할 수 있습니다.

매우 순진한 해결책은 dmesg출력을 구문 분석하는 것입니다. 적어도 삽입된 시기는 분명하게 알 수 있지만 제거된 시기는 알 수 없습니다.

내 연구에 따르면 /sys/거기 어딘가에 가젯 상태 플래그가 있는 것으로 나타났습니다.이 체인을 보세요, 하지만 어디에 있는지 잘 모르겠습니다.

대신 가젯을 Linux 시스템에 연결하면 사용할 수 있다는 것을 알지만 udev모니터 udev에는 가젯 자체의 상태가 표시되지 않는 것 같습니다.

답변1

/sys/class/udc/YOUR_UDC/state를 살펴보세요.

당신은 또한 볼 수 있습니다https://www.kernel.org/doc/Documentation/ABI/stable/sysfs-class-udcsysfs API에 대한 자세한 내용.

관련 정보