diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp index b8c5c8ea..39cbceb5 100644 --- a/usb/usb/Usb.cpp +++ b/usb/usb/Usb.cpp @@ -593,6 +593,10 @@ ScopedAStatus Usb::switchRole(const string& in_portName, const PortRole& in_role fp = fopen(filename.c_str(), "w"); if (fp != NULL) { int ret = fputs(convertRoletoString(in_role).c_str(), fp); + if (ret == EAGAIN) { + std::this_thread::sleep_for(std::chrono::milliseconds(700)); + ret = fputs(convertRoletoString(in_role).c_str(), fp); + } fclose(fp); if ((ret != EOF) && ReadFileToString(filename, &written)) { written = Trim(written);