Добрый день уважаемые читатели блога сайт, сегодня хочу рассказать как удалить данные о USB Флешках в реестре Windows . Эта статья является продолжением статьи . Вся информация о любых USB носителях, когда-либо подключаемых к компьютеру, хранится в системном реестре. Если к компьютеру подключается много флешек разных моделей и производителей, то со временем в реестре скапливается очень много мусора. В результате процесс определения и подключения нового устройства начинает занимать значительное время и тормозит систему.
Выход один. Нужно периодически чистить разделы реестра, который хранят данные о подключаемых флешках и других USB накопителях. Очистка этих разделов позволит ускорить подключение новых USB устройств и работу системы в целом.
Чистку надо производить с помощью системной программы Regedit. Запускается она так.
Пуск - Выполнить - Regedit
Разделы реестра, хранящие данные о любом USB накопителе, когда-либо подключаемом к ПК - Флешки, внешние хард диски, а так же фотоаппараты, телефоны, флеш плееры и другие устройства, которые при подключении к ПК были распознаны как внешний USB накопитель. Здесь можно удалить все подразделы с префиксом Disc.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\USBSTOR
Из скринов видно, что подключались так же и хабы и HDD через хаб
Если чистить в ручную не хотите, то есть и бесплатное ПО, например USB Oblivion . Запускаем утилиту
Ставим галку Произвести реальную очистку
Видим, что все завершено и было удалено много записей из реестра. Проверим реестр. Обратите внимание что папку USBSTOR нету.
Ну и на по следок посмотрим программой USBDeview, тоже все чисто.
Вот уважаемые читатели где хранится данные о ваших флешках, так что если, что то нужно удалить то начинайте.
Для резервирования интернет соединения я использую 3G модем Huawei E173, подключенный в USB порт маршрутизатора. Соединение через него всегда поднято в режиме горячего резерва (для переключения на модем достаточно сбросить default route с основного соединения). Но есть одна проблема - периодически модем "зависает" и соединение теряется.
Как правило достаточно перезапустить pppd, но вчера модем перестал реагировать совсем. В логе появились сообщения, которые относятся к проблемам скорее аппаратным.
Xhci_hcd 0000:02:00.0: WARN Event TRB for slot 1 ep 4 with no TDs queued?
xhci_hcd 0000:02:00.0: WARN Event TRB for slot 1 ep 4 with no TDs queued?
xhci_hcd 0000:02:00.0: WARN Event TRB for slot 1 ep 4 with no TDs queued?
xhci_hcd 0000:02:00.0: ERROR Transfer event TRB DMA ptr not part of current TD
xhci_hcd 0000:02:00.0: ERROR Transfer event TRB DMA ptr not part of current TD
xhci_hcd 0000:02:00.0: ERROR Transfer event TRB DMA ptr not part of current TD
Перезапуск pppd ничего не дал, похоже модем не отвечает ни на одну команду.
Apr 24 10:02:11 inet chat: abort on (\nBUSY\r)
Apr 24 10:02:11 inet chat: abort on (\nERROR\r)
Apr 24 10:02:11 inet chat: abort on (\nNO ANSWER\r)
Apr 24 10:02:11 inet chat: abort on (\nNO CARRIER\r)
Apr 24 10:02:11 inet chat: abort on (\nNO DIALTONE\r)
Apr 24 10:02:11 inet chat: abort on (\nRINGING\r\n\r\nRINGING\r)
Apr 24 10:02:11 inet chat: send (^MAT^M)
Apr 24 10:02:11 inet chat: timeout set to 12 seconds
Apr 24 10:02:11 inet chat: expect (OK)
Apr 24 10:02:23 inet chat: alarm
Apr 24 10:02:23 inet chat: Failed
Попытки переинициализировать модем программно не увенчались успехом, поскольку его устройство (/dev/ttyUSB0) не отвечает на AT команды. Остается только отключить и снова включить модем в порт. Но сначала решил попробовать метод, на который наткнулся недавно в интернете.
Для сброса нужной шины USB нам потребуется скомпилировать бинарник. Чтобы не компилировать его каждый раз снова и пользоваться им на практически любой машине я буду компилировать его статически.
$ wget https://gist.githubusercontent.com/x2q/5124616/raw -O usbreset.c
$ gcc -Wall -static -o usbreset usbreset.c
$ sudo install -o root -g root -m 0755 usbreset /usr/local/sbin
$ lsusb | grep Huawei
Bus 001 Device 002: ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem
$ sudo usbreset /dev/bus/usb/001/002
Error in ioctl: No such device
Несмотря на ошибку в логе появились записи, свидетельствующие о "перезагрузке" модема.
$ dmesg | tail
usb 1-6: New USB device strings: Mfr=3, Product=2, SerialNumber=0
usb 1-6: Product: HUAWEI Mobile
usb 1-6: Manufacturer: HUAWEI Technology
usb 1-6: configuration #1 chosen from 1 choice
option 1-6:1.0: GSM modem (1-port) converter detected
usb 1-6: GSM modem (1-port) converter now attached to ttyUSB0
option 1-6:1.1: GSM modem (1-port) converter detected
usb 1-6: GSM modem (1-port) converter now attached to ttyUSB1
option 1-6:1.2: GSM modem (1-port) converter detected
usb 1-6: GSM modem (1-port) converter now attached to ttyUSB2
Попробуем подключиться к нему и выполнить несколько AT команд.
Программа может сбросить канал с помощью регистра сброса каналов. Конфигурация канала и маркер данных остаются без изменений. Только банки и биты статусов возвращаются в свое изначальное состояние.
Для полного сброса канала программа должна запретить, а потом разрешить канал.
23.11. Доступ к данным каналов
Для записи или чтения из FIFO канала ЦПУ должно выбрать номер канала с помощью регистра UPNUM и записать или считать данные из регистра UPDATX.
23.12. Организация управляющего канала
Управляющая передача состоит из трех фаз:
- SETUP,
- данные (IN или OUT),
- статус (OUT or IN).
Программное обеспечение должно менять маркер после каждой фазы. Изначально маркеры данных устанавливаются следующим образом (только для управляющих каналов):
- SETUP: Data0,
- OUT: Data1,
- IN: Data1 (ожидание изменения маркера данных).
23.13. Управление OUT каналами
Первоначально канал должен быть сконфигурирован и не остановлен. Заметьте: если программное обеспечение переключается в режим приостановки (сброс SOFEN) даже если банк готов к отправке, USB контроллер автоматически выйдет из приостановленного состояния и банк будет отправлен.
Бит TXOUT устанавливается аппаратно, когда текущий банк освобождается. Это приводит к прерыванию, если установлен бит TXOUTE. Бит FIFOCON устанавливается в тоже время. ЦПУ записывает данные в FIFO и сбрасывает бит FIFOCON для разрешения USB контроллеру послать данные. Если OUT канал состоит из нескольких банков, то он также переключается к следующему банку данных. Биты TXOUT and FIFOCON изменяются в соответствии с состоянием нового банка.
23.14. Управление IN каналами
Первоначально канал должен быть сконфигурирован. Перед запросом хостом данных у устройства, программа должна задать режим IN передач, используя бит INMODE:
- INMODE = 0. В расчет принимается регистр INRQX. Хост контроллер осуществляет запрос данных (INRQX+1) раз через выбранный канал перед остановкой канала. Этот режим позволяет избежать лишних запросов данных через канал.
- INMODE = 1. USB контроллер постоянно посылает IN запрос данных пока программа не остановит канал.
Запрос данных начинается после сброса бита PFREEZE. Каждый раз, когда текущий банк заполняется, устанавливаются биты RXIN и FIFOCON. Программа может подтвердить получение прерывания сбросив бит RXIN. Программа считывает данные и сбрасывает бит FIFOCON для освобождения текущего банка. Если IN канал состоит из нескольких каналов, сброс FIFOCON приведет к переключению на следующий банк. Биты RXIN and FIFOCON изменяются в соответствии с состоянием нового банка.
23.14.1. Ошибка CRC (только для изохронных каналов)
CRC ошибка может возникнуть при приеме данных, если USB контроллер получает поврежденный пакет. В этой ситуации возникает прерывание STALLEDI/CRCERRI. Это не предотвращает возникновения прерывания RXINI.
Устройство (модем), которое действительно пошло. Иногда он отлично работает, но в других случаях он отказывается подключаться. Единственное решение, которое я нашел, чтобы исправить его, когда оно попадает в плохое состояние, – это физически отключить устройство и подключить его обратно. Однако у меня не всегда есть физический доступ к компьютеру, в который он подключен, M ищет способ сделать это через командную строку.
Эта статья предполагает запуск:
$ sudo modprobe -w -r usb_storage; sudo modprobe usb_storageОднако я получаю «неизвестный вариант -w». Эта слегка измененная команда:
$ sudo modprobe -r usb_storage
Ошибка с сообщением FATAL: используется модуль usb_storage. Если я пытаюсь убить -9 процессов, отмеченных перед запуском, они отказываются умирать (я думаю, потому что они сильно привязаны к ядру).
Кто-нибудь знает, как это сделать?
ПРИМЕЧАНИЕ. Я перекрестно разместил это на сервере, поскольку я не знал, что было бы более подходящим. Я удалю и / или свяжусь с тем, на кого ответят в первую очередь.
5 Solutions collect form web for “Жесткий сброс USB в Ubuntu 10.04”
У меня Ubuntu 14.04.4. Я понятия не имею, работает ли это в 10.04. Я тестировал его на Cyborg Rumble Pad (и универсальном USB-накопителе).
Сразу после подключения устройства:
Dmesg | grep usb | tail -n 20
Я получаю (возможно, между прочим):
[ 2875.790610] usb 2-1.2: new full-speed USB device number 7 using ehci-pci [ 2875.887485] usb 2-1.2: New USB device found, idVendor=0738, idProduct=cb02 [ 2875.887489] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 2875.887490] usb 2-1.2: Product: Cyborg Rumble Pad - PC/Xbox 360 [ 2875.887492] usb 2-1.2: Manufacturer: Saitek [ 2875.887493] usb 2-1.2: SerialNumber: 0CFE6B97
2-1.2 часть – строка 2-1.2 . Он определяет порт USB. Хорошая новость заключается в том, что он не должен меняться, если я не подключу устройство к другому порту, поэтому мне нужно получить строку только один раз.
Затем я иду в нужное место:
Cd /sys/bus/usb/drivers/usb
И вызывать как root (например, sudo bash):
Echo 2-1.2 > unbind ; sleep 3 ; echo 2-1.2 > bind
В результате мой Rumble Pad повторно инициализирует себя, как если бы он был включен и снова. Я также тестировал свой USB-накопитель. Он (его светодиод) ведет себя так, как будто ничего не произошло, но мой KDE реагирует и спрашивает, хочу ли я монтировать.
Все время питание устройства. Этот метод не будет работать, если ваш модем сбрасывается из-за отсутствия питания.
Вы просто ищете устройство, которое хотите сбросить (lsusb):
# lsusb Bus 005 Device 004: ID 0951:1642 Kingston Technology DT101 G2
А потом:
# usbreset /dev/bus/usb/005/004
Почему вы пытаетесь выгрузить модуль usb_storage , когда ваше устройство является модемом USB?
Sudo lshw и найдите запись для вашего USB-модема. Должна быть configuration: строка вроде этого (ваш драйвер будет отличаться, очевидно):
Configuration: ... driver=iwlagn ...
Убедитесь, что модуль загружен (подставляя правильное имя драйвера):
Lsmod | grep iwlagn
То просто выполните:
Sudo modprobe -r iwlagn && sleep 2 && sudo modprobe iwlagn
Мне нравится sleep там на всякий случай, когда устройству требуется некоторое время, чтобы отключить питание.
Это решение «выход», но это может сработать.
- Получите второй, старый, не очень мощный ПК. Установите Debian на него. Установите на нем usbip .
- Затем установите usbip на свой сервер.
- Подключите модем к второму ПК. Настройте usbip на обеих машинах, чтобы модем, подключенный к второму ПК, доступен через VHCI с сервера.
- Настройте ssh на втором ПК или на других средствах, которые вы можете удалять в него и выдавать команды.
- Когда устройство выходит из строя, войдите в систему и перезагрузите второй компьютер с помощью команды reboot , а затем, когда он вернется, снова подключитесь к любым средствам, usbip предоставляет usbip (я никогда не использовал usbip). Это должно привести к сбросу устройства. Вероятно, вы могли бы написать это.
Самый простой способ отключить произвольные USB-устройства из командной строки (т. Е. С реальным циклом питания на USB):
- Купить 4-портовый USB-концентратор DELOCK 87445 (google для
) - Эта аппаратная часть совместима с hub-ctrl.c (google для
). Поэтому произвольные порты могут быть включены / выключены. Дополнительную информацию см. Также по адресу: .