=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- От: "Махрин Василий Викторович - Vasiliy V.Makhrin" Кому: Wolfis Тема: Re: Укрощение USB устройств -------------------------------------------------------------------------------- Здравствуйте, Wolfis. Николай Петрович! Спасибо. Я рад, что Вы нас не забываете Вы писали 22 августа 2010 г., 17:41:25: W> Вот тут тема случилась переодическое подвисание усб модема, помогает W> только физический перетык. Но это не всегда хорошо во первых это надо W> встать, залесь взад компа.... Во вторых не всегда я есть рядом, а W> качаться торрентам надо. В результате проведённого расследования был W> выведен следующий код W> #include W> #include W> #include W> #include W> #include W> #include W> int main(int argc, char **argv) W> { W> const char *filename; W> int fd; W> int rc; W> if (argc != 2) { W> fprintf(stderr, "Usage: usbreset device-filename\n"); W> return 1; W> } W> filename = argv[1]; W> fd = open(filename, O_WRONLY); W> if (fd < 0) { W> perror("Error opening output file"); W> return 1; W> } W> printf("Resetting USB device %s\n", filename); W> rc = ioctl(fd, USBDEVFS_RESET, 0); W> if (rc < 0) { W> perror("Error in ioctl"); W> return 1; W> } W> printf("Reset successful\n"); W> close(fd); W> return 0; W> } W> Штука делает программный рестарт USB устройства W> Компиляция: W> Для успешной сборки нужен gcc и установленные исходные тексты ядра W> преходим в папку с исходником и делаем W> gcc ./usbreset.c -o usbreset W> Первый параметр - имя файла с исходниками, второй имя выполняемого W> файла который будет на выходе W> Использование: W> ./usbreset /путь/до/файла/устройства W> в моём случае это выглядит так W> vulh@logovo ~ $ sudo lsusb W> ... bla bla bla ... W> Bus 004 Device 002: ID 0403:6001 Future Technology Devices W> International, Ltd FT232 USB-Serial (UART) IC W> Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub W> ... bla bla bla... W> Future Technology Devices International - это модем, значить имя W> устройства /dev/bus/usb/004/002 W> Это видно по строке Bus 004 Device 002: листинга устройств W> потом W> vulh@logovo ~/Документы/usbreset $ ./usbreset /dev/bus/usb/004/002 W> Resetting USB device /dev/bus/usb/004/002 W> Reset successful W> Ура модем перемигнул всеми лампочками и начал искать сеть=) W> Это может сработать не срвсеми стройствами, только с теми, кторые это W> поддерживают. Продумываю другой метод ресета более топорный пока тольо W> так. W> Ну а теперь мысли, что если эту тулзу натравить на ваши сканеры? W> Сканер завис - хренак ему ресет и работаем дальше W> по хорошему желательно отлавать програмно момент зависания устройства W> попробуйте завесить сканер и сразу после этого дать dmesg | tail W> маловероятно, но есть шанс увидеть какую нибудь спецефическую строку W> зависания, если таковая будет то можно отловить её grep`ом и стравить W> ресет W> скрипт который жахает этот ресет по id напишу как нить, может быть W> ваша контора это сделает быстрей просто грепим lsusb по имени W> устройства и генерируем путь W> мне просто сейчас мальца не до этого, у меня то модем один и порт у W> него один, а у вас куча сканеров и портов=) В любом случае имеет смысл W> добавить этот функционал в скрипт поиска сканеров W> Прилагаю к письму исходник W> Wolfis ... W> ... -------- С уважением Махрин Василий Викторович. Vasilij V. Makhrin. Тел. в Туле (4872) 37-15-13 555-156 8-910-551-52-92 (Тульская сеть МТС) www.e-academy7.narod.ru vas_vic@klax.tula.ru НП "Учебный центр компьютерных технологий" (Тула, компьютерные курсы) ====Н=П==="=У=Ц=К=Т="============================ =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-