Как заставить Win2008 работать с USB 1.1 контроллером?

Filan

(Беглое гугление не помогло, но я продолжаю, а пока решил спросить форумлокал об этом).
1. Железо ASUS P5M2, Q6600, 4x2Gb DDR2-5300 (667MHz); USB устройства различные: 1C свистки, Smart Card, даже KVM пробовал.
2. Хостовая система FreeBSD 10.0 RELEASE amd64.
3. VirtualBox OSE 4.3.10 (emulators/virtualbox-ose).
4. sysctl hw.usb.ehci.no_hs=1 (по умолчанию 0).
5. Guest: Linux/FreeBSD - независимо от п. 4 (0, 1) проброс USB устройств работает.
6. Guest: XP/2003 - с п. 4 (1) проброс USB устройств работает.
7. Guest: Win2008R2 - независимо от п. 4 (0, 1) проброс USB устройств НЕ работает.
8. В процессе гугления (которое привело к нахождению п. 4) натыкался на упоминания о том, что это не помогает для Win2008/7 по причине неумения работать этих систем с USB 1.1. Поэтому вопрос так и сформулировал: "Как заставить Win2008 работать с USB 1.1 контроллером?"
9. Предвосхищая предложения сменить систему виртуализации - обязательно сменю на Bhyve, но как только он будет удовлетворять минимальным требованиям, а пока живём с чем есть (да и ZFS очень вкусная).
10. Только что нашёл вот это, как попробую, так отпишусь.

Monstera

почетный орден извращенца не мешало бы вручить автору

Filan

Обосновать свой выпад не мешало бы педросяну.

Filan

10. Только что нашёл вот это, как попробую, так отпишусь.
Попробовал, отписываюсь.
На основании этого сделал патч, пересобрал VirtualBox, потом установил оракловый ExtPack - он ругнулся, что не нашёл какой-то модуль с названием "VBoxPuelMain", но всё равно поставился. После этого в phpvirtualbox выставил галочку "USB 2.0" (рядом с "USB"), запустил виртуалку и, о чудо!, она запустилась!111одынодын
На другом серваке попробовал без патча установить ExtPack и выставить "USB 2.0" в phpvirtualbox, но виртуалка после этого не запустилась с руганью на отсутствие поддержки USB 2.0. Так что патч решает!
Вот сам патч (как на форумлокале делать спойлеры?):
diff -abBur VirtualBox-4.3.10/Config.kmk VirtualBox-4.3.10-USB2.0/Config.kmk
--- VirtualBox-4.3.10/Config.kmk 2014-04-01 04:00:51.522625721 +0400
+++ VirtualBox-4.3.10-USB2.0/Config.kmk 2014-04-01 03:01:46.263869000 +0400
@@ -464,9 +464,9 @@
ifdef VBOX_WITH_USB
VBOX_WITH_VUSB = 1
endif
-ifdef VBOX_WITH_EHCI
- VBOX_WITH_EHCI_IMPL = 1
-endif
+#ifdef VBOX_WITH_EHCI
+# VBOX_WITH_EHCI_IMPL = 1
+#endif
ifdef VBOX_WITH_PCI_PASSTHROUGH
VBOX_WITH_PCI_PASSTHROUGH_IMPL = 1
endif
@@ -1027,7 +1027,7 @@
#
ifdef VBOX_OSE
VBOX_WITH_VRDP=
- VBOX_WITH_EHCI_IMPL=
+ VBOX_WITH_EHCI=
VBOX_WITH_USB_VIDEO_IMPL=
VBOX_WITH_EXTPACK_PUEL=
VBOX_WITH_EXTPACK_PUEL_BUILD=
diff -abBur VirtualBox-4.3.10/src/VBox/Devices/Makefile.kmk VirtualBox-4.3.10-USB2.0/src/VBox/Devices/Makefile.kmk
--- VirtualBox-4.3.10/src/VBox/Devices/Makefile.kmk 2014-03-26 23:17:10.000000000 +0400
+++ VirtualBox-4.3.10-USB2.0/src/VBox/Devices/Makefile.kmk 2014-04-01 03:04:31.564859000 +0400
@@ -65,8 +65,8 @@
ifdef VBOX_WITH_USB
VBoU_DEFS += VBOX_WITH_USB IN_USBLIB
VBoU_SDKS.win = ReorderCompilerIncs $(VBOX_WINPSDK) $(VBOX_WINDDK)
- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
- VBoU_DEFS += VBOX_WITH_EHCI_IMPL
+ if defined(VBOX_WITH_EHCI) && !defined(VBOX_WITH_EXTPACK_PUEL)
+ VBoU_DEFS += VBOX_WITH_EHCI
endif
ifdef VBOX_WITH_NEW_USB_CODE_ON_DARWIN
VBoU_DEFS.darwin += VBOX_WITH_NEW_USB_CODE_ON_DARWIN
@@ -319,8 +319,8 @@
Storage/UsbMsd.cpp
endif

- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
- VBo_DEFS += VBOX_WITH_EHCI_IMPL
+ if defined(VBOX_WITH_EHCI) && !defined(VBOX_WITH_EXTPACK_PUEL)
+ VBo_DEFS += VBOX_WITH_EHCI
VBo_SOURCES += \
USB/DevEHCI.cpp
endif
@@ -861,8 +861,8 @@

ifdef VBOX_WITH_USB
VBoGC_DEFS += VBOX_WITH_USB
- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
- VBoGC_DEFS += VBOX_WITH_EHCI_IMPL
+ if defined(VBOX_WITH_EHCI) && !defined(VBOX_WITH_EXTPACK_PUEL)
+ VBoGC_DEFS += VBOX_WITH_EHCI
VBoGC_SOURCES += \
USB/DevEHCI.cpp
endif
@@ -1026,8 +1026,8 @@
endif
ifdef VBOX_WITH_USB
VBoR0_DEFS += VBOX_WITH_USB
- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL)
- VBoR0_DEFS += VBOX_WITH_EHCI_IMPL
+ if defined(VBOX_WITH_EHCI) && !defined(VBOX_WITH_EXTPACK_PUEL)
+ VBoR0_DEFS += VBOX_WITH_EHCI
VBoR0_SOURCES += \
USB/DevEHCI.cpp
endif
diff -abBur VirtualBox-4.3.10/src/VBox/Devices/build/VBo.cpp VirtualBox-4.3.10-USB2.0/src/VBox/Devices/build/VBo.cpp
--- VirtualBox-4.3.10/src/VBox/Devices/build/VBo.cpp 2014-03-26 23:18:13.000000000 +0400
+++ VirtualBox-4.3.10-USB2.0/src/VBox/Devices/build/VBo.cpp 2014-04-01 03:05:15.726855000 +0400
@@ -134,7 +134,7 @@
if (RT_FAILURE(rc))
return rc;
#endif
-#ifdef VBOX_WITH_EHCI_IMPL
+#ifdef VBOX_WITH_EHCI
rc = pCallbacks->pfnRegister(pCallbacks, &g_DeviceEHCI);
if (RT_FAILURE(rc))
return rc;
diff -abBur VirtualBox-4.3.10/src/VBox/Devices/testcase/Makefile.kmk VirtualBox-4.3.10-USB2.0/src/VBox/Devices/testcase/Makefile.kmk
--- VirtualBox-4.3.10/src/VBox/Devices/testcase/Makefile.kmk 2014-03-26 23:18:13.000000000 +0400
+++ VirtualBox-4.3.10-USB2.0/src/VBox/Devices/testcase/Makefile.kmk 2014-04-01 03:09:37.807967000 +0400
@@ -28,7 +28,7 @@
VBOX_DEVICES_TESTS_FEATURES = \
$(if $(VBOX_WITH_RAW_MODE),VBOX_WITH_RAW_MODE,) \
$(if $(VBOX_WITH_USB),VBOX_WITH_USB,) \
- $(if $(VBOX_WITH_EHCI_IMPL),VBOX_WITH_EHCI_IMPL,) \
+ $(if $(VBOX_WITH_EHCI),VBOX_WITH_EHCI,) \
$(if $(VBOX_WITH_AHCI),VBOX_WITH_AHCI,) \
$(if $(VBOX_WITH_E1000),VBOX_WITH_E1000,) \
$(if $(VBOX_WITH_VIRTIO),VBOX_WITH_VIRTIO,) \
diff -abBur VirtualBox-4.3.10/src/VBox/Devices/testcase/tstDeviceStructSize.cpp VirtualBox-4.3.10-USB2.0/src/VBox/Devices/testcase/tstDeviceStructSize.cpp
--- VirtualBox-4.3.10/src/VBox/Devices/testcase/tstDeviceStructSize.cpp 2014-03-26 23:18:13.000000000 +0400
+++ VirtualBox-4.3.10-USB2.0/src/VBox/Devices/testcase/tstDeviceStructSize.cpp 2014-04-01 03:08:56.623839000 +0400
@@ -71,7 +71,7 @@
#ifdef VBOX_WITH_USB
# undef LOG_GROUP
# include "../USB/DevOHCI.cpp"
-# ifdef VBOX_WITH_EHCI_IMPL
+# ifdef VBOX_WITH_EHCI
# include "../USB/DevEHCI.cpp"
# endif
#endif
@@ -288,7 +288,7 @@
#endif
//CHECK_MEMBER_ALIGNMENT(E1KSTATE, csTx, 8);
#ifdef VBOX_WITH_USB
-# ifdef VBOX_WITH_EHCI_IMPL
+# ifdef VBOX_WITH_EHCI
CHECK_MEMBER_ALIGNMENT(EHCI, RootHub, 8);
# ifdef VBOX_WITH_STATISTICS
CHECK_MEMBER_ALIGNMENT(EHCI, StatCanceledIsocUrbs, 8);
diff -abBur VirtualBox-4.3.10/src/VBox/Devices/testcase/tstDeviceStructSizeRC.cpp VirtualBox-4.3.10-USB2.0/src/VBox/Devices/testcase/tstDeviceStructSizeRC.cpp
--- VirtualBox-4.3.10/src/VBox/Devices/testcase/tstDeviceStructSizeRC.cpp 2014-03-26 23:18:13.000000000 +0400
+++ VirtualBox-4.3.10-USB2.0/src/VBox/Devices/testcase/tstDeviceStructSizeRC.cpp 2014-04-01 03:08:05.776844000 +0400
@@ -66,7 +66,7 @@
#ifdef VBOX_WITH_USB
# undef LOG_GROUP
# include "../USB/DevOHCI.cpp"
-# ifdef VBOX_WITH_EHCI_IMPL
+# ifdef VBOX_WITH_EHCI
# include "../USB/DevEHCI.cpp"
# endif
#endif
@@ -1015,7 +1015,7 @@
GEN_CHECK_OFF(OHCI, StatDroppedUrbs);
GEN_CHECK_OFF(OHCI, StatTimer);
# endif
-# ifdef VBOX_WITH_EHCI_IMPL
+# ifdef VBOX_WITH_EHCI
/* USB/DevEHCI.cpp */
GEN_CHECK_SIZE(EHCIHUBPORT);
GEN_CHECK_OFF(EHCIHUBPORT, fReg);
@@ -1091,7 +1091,7 @@
GEN_CHECK_OFF(EHCI, pEOFTimerNoSyncRC);
GEN_CHECK_OFF(EHCI, pEOFTimerNoSyncR3);
GEN_CHECK_OFF(EHCI, pEOFTimerNoSyncR0);
-# endif /* VBOX_WITH_EHCI_IMPL */
+# endif /* VBOX_WITH_EHCI */
#endif /* VBOX_WITH_USB */

/* VMMDev/VBoev.cpp */

hoha32

Не так давно пробрасывал usb-1.1 устройство (HP 2200D вроде как такой) из линухового хоста в венду 2012r1
относительно успешно (древние принтеры от HP я так и не научился готовить в венде 8 и подобных), проблем с выставлением USB2.0 тоже не было (через VBoxManage), впрочем другие устройства я не пробовал подключать
насчёт патча - странно внедрять оный почти трёхлетней давности

Filan

Не так давно пробрасывал usb-1.1 устройство
Ключевое слово выделил. С устройсвами проблем нет - я же говорил о контроллерах.
проблем с выставлением USB2.0 тоже не было (через VBoxManage)
А VirtualBox какой брал? Бинарную сборку с сайта Oracle, да ещё и ExtPack ставил?
насчёт патча - странно внедрять оный почти трёхлетней давности
Это по сути обратный патч от коммита №37752.

hoha32

Ключевое слово выделил. С устройсвами проблем нет - я же говорил о контроллерах.

Посмотрел на твой первый пост и всё равно ничего не понял.
Венда видит контроллеры, в зависимости от настроек VBoxManage это либо простой, либо USB2.0 контроллер.
А VirtualBox какой брал? Бинарную сборку с сайта Oracle, да ещё и ExtPack стаивил?
Да, по-простому.

Filan

Венда видит контроллеры, в зависимости от настроек VBoxManage это либо простой, либо USB2.0 контроллер.
В OSE нет USB 2.0 контроллера, только USB 1.1 (тот самый "простой" контроллер).
Да, по-простому.
Это PUEL версия, а не OSE. В ней есть немного кода, которого нет в OSE версии.

hoha32

Теперь понял. Я с ose обломался ещё на этапе сборки, когда хотел собрать ну совсем без иксов с поддержкой rdp.

Filan

Я с ose обломался ... с поддержкой rdp
 :p
А я использую VNC.

hoha32

очепятка, пока вспоминал аббревиатуру VNC написал это %)

Filan

На основании этого сделал патч, пересобрал VirtualBox, потом установил оракловый ExtPack - он ругнулся, что не нашёл какой-то модуль с названием типа "VBoxModPuel", но всё равно поставился. После этого в phpvirtualbox выставил галочку "USB 2.0" (рядом с "USB"), запустил виртуалку и, о чудо!, она запустилась!111одынодын
С этим патчем вот это уже не нужно:
4. sysctl hw.usb.ehci.no_hs=1 (по умолчанию 0).

serega1604

Это PUEL версия, а не OSE. В ней есть немного кода, которого нет в OSE версии.
а что-же они тогда говорят что распространяется бинарник под GPL?
да и вообще они под PUEL распространяют теперь только extension pack.

Filan

а что-же они тогда говорят что распространяется бинарник под GPL?
Надеюсь это вопрос не ко мне.
да и вообще они под PUEL распространяют теперь только extension pack.
Установи ExtPack на OSE версию и посмотри на отсутствие какого модуля оно ругается. Это сообщение наводит на мысль, что этого модуля в OSE просто нет.
Ничего не мешает им брать OSE, добавлять свои модули и собирать собственный бинарник уже с этими модулями.

serega1604

лично меня такое поведение наводит на мысль что ты когда собирал что-нибудь выключил или кто-то своими прямыми ручками чудесный патч наложил, который отключает нужный тебе модуль.

Filan

По твоим постам складывается впечатление, что ты не совсем в теме (или совсем не).
Всё что ты тут сказал неверно. Вроде уже разобрались, что virtualbox puel (бинарные сборки с сайта oracle) != virtualbox ose (сам ты его собрал, или бинарный пакет из репозитория своего дистрибутива поставил). А ты возвращаешься опять к началу.
Если я тебя не правильно понял, то жду саксес стори вида: "сам собрал из сырцов, установил extpack без ошибок и всё заработало", дистрибутив/версия virtualbox/etc.

serega1604

Вроде уже разобрались, что virtualbox puel (бинарные сборки с сайта oracle) != virtualbox ose
ты застрял где-то в районе 3.* - начиная с 4.0 под puel распространяется _только_ extension pack, все остальное - под gpl.
если в твоем дистрибутиве не умеют предоставлять тебе нормальные исходники/по-нормальному скомпилированный пакет, то это лично твои проблемы.

Filan

 
если в твоем дистрибутиве не умеют предоставлять тебе нормальные исходники/по-нормальному скомпилированный пакет, то это лично твои проблемы.

Это всё демагогия. Покажи как в твоём дистрибутиве устанавливается ExtPack на OSE. К примеру в Ubuntu, сначала пакет virtualbox-ose сделали метапакетом с зависимостью на virtualbox, в потом и вовсе убрали - что это как не замена OSE на PUEL (virtualbox сборки Oracle)? Согласно лицензии собственная сборка не может называться "VirtualBox 4.3.10" - обязательно надо модифицировать название:
As of version 4.0 we also no longer require third-party builds of VirtualBox to be distributed under the name of VirtualBox OSE. However we do still kindly request that they be clearly marked as third-party builds in some way, and that the version string (the "VBOX_VERSION_STRING" build variable), which appears at the top of the log file, be changed to reflect this. One way of doing this is by setting VBOX_VERSION_STRING on the build command line, which might look as follows:
$ kmk VBOX_VERSION_STRING='$(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).\
$(VBOX_VERSION_BUILD)'_my_distribution_name

Вот тебе скриншотик с ошибкой установки ExtPack на VirtualBox OSE собственной сборки:

Для чистоты эксперимента скачай исходники и собери самостоятельно, а потом попробуй установить ExtPack. Посмотрим на результат.

serega1604

К примеру в Ubuntu, сначала пакет virtualbox-ose сделали метапакетом с зависимостью на virtualbox, в потом и вовсе убрали - что это как не замена OSE на PUEL (virtualbox сборки Oracle)?
ты бредишь, можешь пойти на packages.ubuntu.com, скачать там исходники пакета virtualbox и собрать пакет сам.
Согласно лицензии собственная сборка не может называться "VirtualBox 4.3.10" - обязательно надо модифицировать название:
у тебя странный английский, с моего английского то что ты привел переводится как "начиная с версии 4.0 мы больше не требуем называть чужие сборки virtualbox-ose, но тем не менее просим как-нибудь указывать, что это не оракловая сборка, например в версии дописывать название дистрибутива." убунта примерно так и делает, если ты приглядишься повнимательнее.
Вот тебе скриншотик с ошибкой установки ExtPack на VirtualBox OSE собственной сборки:
ты своими кривыми руками не смог собрать по-человечески virtualbox и теперь строишь какие-то теории заговора, молодец.
Для чистоты эксперимента скачай исходники и собери самостоятельно, а потом попробуй установить ExtPack. Посмотрим на результат.
твои фантазии это все равно не развеет, так что увольте.

Filan

ты своими кривыми руками не смог собрать по-человечески virtualbox и теперь строишь какие-то теории заговора, молодец.
Собери своими прямыми ручёнками и докажи обратное - о чём я говорю с самого твоего появления в треде. Или только языком чесать горазд?
твои фантазии это все равно не развеет, так что увольте.
Видимо действительно слабо. Тогда, plz, больше не флуди в этом треде.
Частично проверил сам - в виртуалке с убунту 14.04 установил виртуалбокс 4.3.6 из репозитория убунты. ExtPack установился без ошибок, включить USB 2.0 получилось, и виртуалка с убунту 14.04 внутри загрузилась. Никакие USB устройства пробрасывать не пробовал - по сути только проверил старт виртуалки при включенном USB 2.0 и установку ExtPack-а.
Заглянул в /usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack/
drwxr-xr-x 2 root root  4096 апр.   5 19:17 darwin.amd64
drwxr-xr-x 2 root root 4096 апр. 5 19:17 darwin.x86
-rwxr-xr-x 1 root root 9546 апр. 5 19:17 ExtPack-license.html
-rwxr-xr-x 1 root root 21878 апр. 5 19:17 ExtPack-license.rtf
-rwxr-xr-x 1 root root 8998 апр. 5 19:17 ExtPack-license.txt
-rwxr-xr-x 1 root root 30273 апр. 5 19:17 ExtPack.manifest
-rwxr-xr-x 1 root root 6 апр. 5 19:17 ExtPack.signature
-rwxr-xr-x 1 root root 470 апр. 5 19:17 ExtPack.xml
drwxr-xr-x 2 root root 4096 апр. 5 19:17 linux.amd64
drwxr-xr-x 2 root root 4096 апр. 5 19:17 linux.x86
-rwxr-xr-x 1 root root 49152 апр. 5 19:17 PXE-Intel.rom
drwxr-xr-x 2 root root 4096 апр. 5 19:17 solaris.amd64
drwxr-xr-x 2 root root 4096 апр. 5 19:17 win.amd64
drwxr-xr-x 2 root root 4096 апр. 5 19:17 win.x86

Каталогов freebsd.* не вижу.
/usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack/linux.amd64/
-rwxr-xr-x 1 root root    5320 апр.   5 19:17 VBoxEhciR0.r0
-rwxr-xr-x 1 root root 275567 апр. 5 19:17 VBoxEhciR3.so
-rwxr-xr-x 1 root root 3756 апр. 5 19:17 VBoxEhciRC.rc
-rwxr-xr-x 1 root root 712891 апр. 5 19:17 VBoxHostWebcam.so
-rwxr-xr-x 1 root root 171929 апр. 5 19:17 VBoxPciRawDrv.so
-rwxr-xr-x 1 root root 6504 апр. 5 19:17 VBoxPciRawR0.r0
-rwxr-xr-x 1 root root 212077 апр. 5 19:17 VBoxPciRawR3.so
-rwxr-xr-x 1 root root 133234 апр. 5 19:17 VBoxPuelMain.so
-rwxr-xr-x 1 root root 356243 апр. 5 19:17 VBoxUsbCardReaderR3.so
-rwxr-xr-x 1 root root 417396 апр. 5 19:17 VBoxUsbWebcamR3.so
-rwxr-xr-x 1 root root 7277435 апр. 5 19:17 VBoxVRDP.so

Вот он где VBoxPuelMain.so.
Если мне не изменяет память, то бинарники FreeBSD не умеют динамичаски линковаться с shared библиотеками Linux и dlopen на них не работает (пруфы привествуются), несмотря на наличие и работостпособность linuxulator-а. Так что ошибки при установке ExtPack вполне закономерны. А вот работа USB 2.0 после патча и установки ExtPack с ошибкой, по прежнему вызывает вопросы. Или всё же dlopen работает? Тогда почему VBoxPuelMain не работает? Или USB 2.0 уже есть в исходниках? Но это врядли - иначе непонятно почему оно не работало без ExtPack?... Если будет время и желание, то может ещё поковыряю, а пока слегка задолбался... :-D

serega1604

Собери своими прямыми ручёнками и докажи обратное - о чём я говорю с самого твоего появления в треде. Или только языком чесать горазд?
именно, а ещё я умею читать, в отличие от.
Видимо действительно слабо. Тогда, plz, больше не флуди в этом треде.
нет уж, я буду флудить там где мне вздумается.
Частично проверил сам - в виртуалке с убунту 14.04 установил виртуалбокс 4.3.6 из репозитория убунты. ExtPack установился без ошибок, включить USB 2.0 получилось, и виртуалка с убунту 14.04 внутри загрузилась. Никакие USB устройства пробрасывать не пробовал - по сути только проверил старт виртуалки при включенном USB 2.0 и установку ExtPack-а.
неужели, и как же это так получилось на ose-версии-то? @сарказм@
то как extpack работает или неработает на конкретных системах мне не интересно, можешь меня об этом больше не оповещать.

Filan

то как extpack работает или неработает на конкретных системах мне не интересно, можешь меня об этом больше не оповещать.
Тогда чё ты вообще полез в этот тред? Здесь речь именно об этом.

serega1604

>Тогда чё ты вообще полез в этот тред?
Рассказать тебе об особенностях лицензирования некоторых продуктов oracle, а то некоторые даже прочитав лицензию все равно несут бред.
>Здесь речь именно об этом
Ты название темы читал, дорогой? А я вот читал, ни слова там об этом не вижу.

Filan

Ты название темы читал, дорогой? А я вот читал, ни слова там об этом не вижу.

Прочитай первый пост ещё раз и внимательно.
Не говоря уже о дельнейших изысканиях. Или я по твоему должен каждый раз корректировать название темы, если вдруг тема отклонилась от первоначальной? Интересно я это должен делать потому что ты так сказал? Тебе что больше заняться нечем? Ничего полезного, не говоря уже чтобы по теме, от тебя нет последние постов 5. И даже больше - в каждом посте хамишь.
Оставить комментарий
Имя или ник:
Комментарий: