Почему VirtualBox не подключает одно конкретное устройство?

Установил виртуалку Windows 7 32-разрядную. Хост - Windows 10 Pro 64 -разрядная. Шестой VirtualBox не работал, поставил 5.2.44 - последняя пятая версия. Для неё же поставил Extended, чтобы можно было захватывать USB-порты. Чтобы подхватить виртуалкой USB-устройство нужно подключить его и в специальном меню в запущенной виртуалке выбрать это устройство. Устройство не может быть одновременно подключено к хосту и гостю, поэтому с хоста оно пропадает и появляется в госте. Таким образом я легко могу подключить флешку или переходник USB RS232 от Prolific - виртуальный компорт. Но при этом не могу подключить такой же переходник на Миландре, собственноручно разработанный. Этот переходник неоднократно проверен на W7, W8 и W10 - обычных, не виртуальных - всё работает.

Я подсоединяю USB кабель к компу, и хост его нормально определяет, как и должен. Затем я в VIrtual Box с запущенной виртуалкой захожу в устройства-USB- и нажимаю на этот переходник. Его состояние меняется с "Занят" на "Захвачен" и так и остаётся. При этом из хоста он не пропадает. Мало того, если запустить Terminal на хосте, можно увидеть, что с переходником можно работать. В гостевой ОС он не появляется. Но при этом, если он "Захвачен" его пункт в устройствах USB не пропадает даже если физически отключить устройство. Пропадает только при перезагрузке хоста - это единственный способ вернуть состояние "Занят". Если он в состоянии "Занят", то он пропадает при физическом отключении. Для сравнения, другие устройства пропадают сразу при физическом отключении - не зависимо от того, в каком они состоянии и куда подключены.

Так вот в этом вопрос: почему виртуалка не ест мой переходник? Это очень сложный вопрос, на который может ответить только тот, у кого это было. Я пишу сюда в надежде, что такие люди тут есть. Если вы не знаете, можете хотя бы подсказать, куда лучше обратиться, если не сюда.

Что делал:

  1. Погуглил, почему VirtualBox может не работать с USB. По инструкции зашёл в реестр хоста и удалил строку о фильтре - не помогло.
  2. Затем в VirtualBox настроил фильтр по PID/VID - чтобы устройство сразу переходило в виртуалку при подключении. Тоже не помогло. Теперь при подключении устройство сразу переходило в состояние "Занят" и не появлялось в системе. После этого я понял, что скорее всего проблема не в VirtualBox'e, если бы проблема была в нём, то он бы не хватал ни одно устройство, а не только моё.
  3. Думал, что может быть в виртуалку нужно сначала установить драйвер. Но нет. Когда я подключал первый раз Prolific, и на виртуалке не было драйвера, оно просто отображалось в виртуалке как неизвестное устройство, пока я не установил драйвер. Все-равно я установил свой драйвер, но не помогло.

Значит, проблема в устройстве? Какие тут могут быть проблемы?

  1. Чужой вендор. Я ставил VID от STM=0483. Также менял вендор на другие. Ни на что это не влияло. Но вообще-то это не должно так работать. Откуда у VirtualBox понимание, что подключено устройство с чужим вендором? Может я и подключил то устройство, какое нужно. Оно же по вендору определяется. Система думает, что это STM, но то, что на самом деле нет, она это никак не узнает.
  2. USB 1.1 - это тот стандарт, на котором работает переходник. Prolific работает на 2.0 и вообще все мои остальные устройства работают на 2.0 и выше. Но как узнать, что дело в стандарте? Как это проверить? Я выставлял в настройках виртуалки разные стандарты USB, но ничего не менялось.
  3. Быть может, в моём коде отсутствует функция на перезагрузку устройства? Ну конечно. Только её не бывает ни в одном переходнике. Код написан таким образом, чтобы работать, пока переходник не выдернут из гнезда. Когда система перезагружает устройство, она отключает ему питание, потом включает обратно, и в микроконтроллере происходит переинициализация. И так делается с каждым устройством. Тоже самое происходит если нажимать "Обновить конфигурацию" в диспетчере. В этом случае мой переходник обновляется нормальным образом.

Какие есть идеи? Что еще проверить? Как исправить?


Ответы (0 шт):