Я просто оставлю это здесь
Пост является вольным переводом заметки Олега Репина на сайте linksysinfo.org.
При работе с роутером некоторых новых USB-дисков, в частности Seagate FlexAgent GoFlex Desk 2TB USB3.0, может наблюдаться неадекватно медленная скорость передачи данных. Вероятно, есть возможность "снять с ручника" ваш новый USB-винт следующим способом.
1. Диагностика проблемы.
Посмотрите на вывод $ cat /proc/bus/usb/devices и найдите секцию с упоминанием вашего винчестера. Обратите внимание на выделенный цветом фрагмент:
Code:
$ cat /proc/bus/usb/devices
T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0001 Rev= 2.06
S: Manufacturer=Linux 2.6.22.19 ohci_hcd
S: Product=OHCI Host Controller
S: SerialNumber=0000:00:04.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 2
B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev= 2.06
S: Manufacturer=Linux 2.6.22.19 ehci_hcd
S: Product=EHCI Host Controller
S: SerialNumber=0000:00:04.1
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=04fc ProdID=0c25 Rev= 1.03
S: Manufacturer=Sunplus Technology Inc.
S: Product=USB to Serial-ATA bridge
S: SerialNumber=WDC WD5000 WD-WXF1EB0RU496
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 2mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
Если в секции с упоминанием USB диска вы увидели Spd=12, а не Spd=480, то это означает, что винчестер работает с роутером по протоколу USB1, что сильно ограничивает скорость передачи данных.
2.Решение.
Для того, чтобы USB диск заработал на полной скорости в файл /tmp/local/sbin/pre-mount необходимо внести строчку:
Code:
echo -n Y > /sys/module/usbcore/parameters/old_scheme_first
сохранить flashfs и перезагрузить роутер. Всё!
3.Тех.подробности
Причину можно найти в Linux USB FAQ, цитирую:
Quote:
In the 2.6.10 kernel the method of enumerating devices was changed to follow a similar algorithm as Windows (while the standard allows both many devices require the Windows method). It seems some devices do not like this new method though. If you have started having a problem since this kernel with some of your devices you might want to use the option "old_scheme_first=y" with the usbcore module.
что, собственно, Олег и описал.
Некий популярный автор томатовского клона недавно сделал соответствующий коммит с патчем к ядру для принудительного использования "старого способа" нумерации USB-устройств. Комментарий к коммиту звучит как USB Speed improved, что, конечно, немного не правда.
В любом случае, в нашей прошивке по умолчанию используется "новая схема" нумерации USB-устройств и появление указанной проблемы теоретически возможно.
Пожалуйста, дайте знать если эта проблема у вас обнаружилась.