Переподключение usb устройств не вынимая их из порта

()

Думаю каждый забывал в своем компьютере флешку или жесткий диск. Как правило на флешке в этот небольшое количество нужных прямо здесь и сейчас файлов. Если вы можете получить доступ к компьютеру извне, то вы сможете достать файлы, но хуже, когда вы отключили устройство в системе. Тогда вроде устройство подключено к компьютеру, но система его не видит. Есть довольно простой способ исправить проблему, о котором и будет рассказано ниже. Было проверено на дистрибиве Debian

Автор статьи нашел следующее решение, правда требующее прав суперпользователя.

Сперва следует посмотреть список прерываний:

#cat /proc/interrupts

У автора на двух компьютерах usb устройство висит на 23м прерывании и обрабатывается модулем ehci_hcd, следовательно для обновления устройств выполняем следующие команды:

modprobe -r ehci_hcd; modprobe ehci_hcd

если работаете через ssh, то можно выполнить команды последовательно, но при работе с usb клавиатуры после выполнения первой команды устройства отключатся, что не есть хорошо. Надеюсь данная заметка вам пригодилась.

Ключевые слова: usb.

Подписаться на обновления: RSS-лента Канал в TamTam Telegram канал Канал в ICQ

Комментарии:

Alex 2012-02-14 14:08:04 (#)

А мы, домохозяйки-пользователи бубунты, используем для этого иконку в трее :-) она и отмонтировать может и обратно примонтировать :-)

Anonymous 2012-02-14 15:28:10 (#)

А мы, домохозяйки-пользователи бубунты, используем для этого иконку в трее :-) она и отмонтировать может и обратно примонтировать :-)

Особенно через ssh, да :-D

Ladm 2012-02-14 20:33:43 (#)

буду премного благодарен за более простое решение данной задачи.

SinClaus 2012-04-08 15:00:19 (#)

mount / umount не работают?

Ladm 2012-04-21 22:37:04 (#)

SinClaus, проблема в том, что при извлечении устройства оно пропадает из /dev, следовательно mount уже не катит. Нужна команда на переопрос подключенных устройств.

Anonymous 2012-07-05 08:31:18 (#)

А мы, домохозяйки-пользователи бубунты, используем для этого иконку в трее :-) она и отмонтировать может и обратно примонтировать :-)Будучи домохозяйками, вы даже не поняли о чём речь

Anonymous 2013-10-05 01:23:33 (#)

Будучи домохозяйками, вы даже не поняли о чём речь

Спасибо, порадовал коммент)))

Автору, где же была твоя статья, когда я заказывал для этого устройство для управления сетевыми нагрузками (управляем по usb, разрываем-замыкаем цепь +5v во флешках, модемах)

Anonymous 2015-04-28 05:43:23 (#)

/* usbreset -- send a USB port reset to a USB device */
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>

#include <linux/usbdevice_fs.h>

int main(int argc, char **argv)
{
	const char *filename;
	int fd;
	int rc;

	if (argc != 2) {
		fprintf(stderr, "Usage: usbreset device-filenamen");
		return 1;
	}
	filename = argv[1];

	fd = open(filename, O_WRONLY);
	if (fd < 0) {
		perror("Error opening output file");
		return 1;
	}

	printf("Resetting USB device %sn", filename);
	rc = ioctl(fd, USBDEVFS_RESET, 0);
	if (rc < 0) {
		perror("Error in ioctl");
		return 1;
	}
	printf("Reset successfuln");

	close(fd);
	return 0;
}


Execute those commands:

cc usbreset.c -o usbreset
chmod +x usbreset
lsusb
             Bus 004 Device 002: ID 04e8:60a6 Samsung Electronics Co., Ltd
sudo ./usbreset /dev/bus/usb/004/002


Script for reset by name:

	bus=`lsusb | grep 'Samsung Electronics' | awk '{print $2}'`
	dev=`lsusb | grep 'Samsung Electronics' | awk '{print $4}' | awk '{print substr($0,0,3)}'`
	/some_path/usbreset /dev/bus/usb/$bus/$dev

Новый комментарий

Жирный текстКурсивный текстПодчёркнутый текстЗачёркнутый текстПрограммный кодСсылкаИзображение




© 2006-2024 Вадим Калинников aka MooSE
Политика конфиденциальности