LINUX.ORG.RU
ФорумAdmin

Как отключить питание USB порта?


0

2

Возникла проблема. Уходя, забыл флешку воткнутую в компьютер. Перед тем как ее забыть сделал из гнома «безопасное извлечение», теперь мне нужно достать из этой флешки несколько файлов, но это сделать не могу, т.к. после этого вот «извлечения» нужно физически обесточить эту флешку, чтобы разделы снова определялись.

Что было опробовано:

# reboot

# for i in /sys/bus/usb/devices/usb* ; do «0» > $i/power/autosuspend_delay_ms; done

# rmmod usb_storage && modprobe usb_storage

★★★★★

Последнее исправление: Siado (всего исправлений: 3)

Ответ на: комментарий от Siado

Да, странно. Помню что в одной системе этого хватало. А в другой приходилось убирать-добавлять какие-то *hci модули. ohci или uhci. Попробуй еще их поудалять-позагружать.

Kiborg ★★★
()

Питание USB-порта выключить нельзя (которое +5V), можно только убрать напряжение на сигнальных линиях.

Deathstalker ★★★★★
()
Ответ на: комментарий от Deathstalker

Питание USB-порта выключить нельзя (которое +5V), можно только убрать напряжение на сигнальных линиях.

зависит от порта. есть с управляемым питанием.

ktk ★★★★
()
Ответ на: комментарий от vasily_pupkin

Пробовал, не помогает.

Siado ★★★★★
() автор топика
//gcc -o usb-reset usb-reset.c -lusb
#include <usb.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
      struct usb_bus *busses;
      usb_init();
      usb_find_busses();
      usb_find_devices();
      busses = usb_get_busses();
      struct usb_bus *bus;
      int c, i, a;
      /* ... */
      for (bus = busses; bus; bus = bus->next) {
        struct usb_device *dev;
        int val;
        usb_dev_handle *junk;
        for (dev = bus->devices; dev; dev = dev->next) {
          char buf[1024];
          junk = usb_open ( dev );
          usb_get_string_simple(junk,2,buf,1023);
          if ( junk == NULL ){
            printf("Can't open %p (%s)\n", dev, buf );
          } else {
            val = usb_reset(junk);
            printf( "reset %p %d (%s)\n", dev, val, buf );
          }
          usb_close(junk);
        }
      }

}

Попробуй от root-а, но это контроллеры сбрасываются, все USB отвалятся.

ilovewindows ★★★★★
()
Последнее исправление: ilovewindows (всего исправлений: 2)
lsusb
Bus 001 Device 006: ID 3538:0054 Power Quotient International Co., Ltd Flash Drive (2GB)
Bus 002 Device 002: ID 046d:c31c Logitech, Inc. Keyboard K120 for Business
Bus 002 Device 003: ID 046d:c05a Logitech, Inc. Optical Mouse M90
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

идёшь в нужный тебе root hub(в данном случае root hub от usb 2.0)
/sys/devices/pci0000:00/0000:00:13.5/usb1# cat idVendor 
1d6b
/sys/devices/pci0000:00/0000:00:13.5/usb1# cat idProduct 
0002

#echo 0 > authorized

потом
#echo 1 > authorized

все устройства на хабе должны заресетиться, но сначала они отключатся, так что будь осторожен.

dimon555 ★★★★★
()
Ответ на: комментарий от dimon555

Это тоже не помогает.

З.ы. основная проблема уже конечно решена методом физического переподключения. Но все равно надо знать способ как такое исправить.

Siado ★★★★★
() автор топика

А просто вручную смонтировать флешку не вариант? «Безопасное извлечение» в гноме разделы из /dev убирает?

cPunk ★★
()
Ответ на: комментарий от ilovewindows

Господя, модераторский детсад, флуд от нефлуда уже не отличаете, идите в тему про вероятности, я там очков на -50 нафлудил.

ilovewindows ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.