Закрытие USB последовательного порта зависает любое приложение VirtualBox

Вопрос или проблема

Я установил Ubuntu 22.04 на VirtualBox (хост – Ubuntu 24.04, если это имеет значение) и у меня есть плата ESP32-S3, подключенная через USB. Установлены дополнения для гостевой ОС. При подключении устройства внутри виртуальной машины оно правильно отображается как /dev/ttyACM0:

[  121.563256] usb 1-2: новое устройство USB нового полного формата номер 3 с использованием ohci-pci
[  122.069667] usb 1-2: Найдено новое USB-устройство, idVendor=303a, idProduct=1001, bcdDevice= 1.01
[  122.069673] usb 1-2: Новые строки USB-устройства: Mfr=1, Product=2, SerialNumber=3
[  122.069676] usb 1-2: Продукт: USB JTAG/серийный отладочный модуль
[  122.069678] usb 1-2: Производитель: Espressif
[  122.069679] usb 1-2: Серийный номер: 24:58:7C:F4:95:E4
[  122.086870] cdc_acm 1-2:1.0: ttyACM0: USB ACM устройство
[  122.086913] usbcore: зарегистрирован новый интерфейсный драйвер cdc_acm
[  122.086915] cdc_acm: драйвер USB Abstract Control Model для USB-модемов и ISDN-адаптеров

С использованием любого приложения, такого как Cutecom или Visual Studio Code, я могу успешно открыть последовательный порт и обмениваться данными. Но когда я закрываю его, приложение зависает, я не могу его больше использовать или закрыть.

Более того, виртуальная машина по-прежнему функциональна, но я не могу ее выключить. Она просто игнорирует команду sudo halt или даже из Gnome. Я даже не могу выключить машину из интерфейса VirtualBox, мне приходится убивать процесс хоста.

Единственное, что мне удалось сделать, это проверить dmesg после закрытия последовательного порта:

[  266.942786] ohci-pci 0000:00:06.0: счетчик кадров не обновляется; отключен
[  266.942799] ohci-pci 0000:00:06.0: HC отключился; идет очистка

И из поиска в интернете это, похоже, связано с USB CDC, но я не смог найти решение.

Я нашел решение этой проблемы.
Выключите виртуальную машину.
Перейдите в настройки -> USB и выберите контроллер USB 3.0 (xHCI) вместо контроллера USB 2.0.
После этого всё заработало для меня.

У меня такая же проблема. Каждый раз, когда мой код на Python закрывает последовательный порт на ttyUSB, виртуальная машина Ubuntu 20.04 зависает. Вы нашли какое-либо решение?
Спасибо.

Ответ или решение

Для решения проблемы, связанной с зависанием приложений в VirtualBox при закрытии USB последовательного порта, выполните следующие шаги:

  1. Отключение виртуальной машины: Убедитесь, что ваша виртуальная машина выключена. Это можно сделать через интерфейс VirtualBox.

  2. Настройки USB:

    • Перейдите в настройки вашей виртуальной машины, выберите вкладку «USB».
    • Измените контроллер USB с USB 2.0 (EHCI) на USB 3.0 (xHCI). Это важно, так как контроллер USB 3.0 обычно лучше поддерживает современные устройства и устранит проблемы, связанные с зависанием.
  3. Обновление VirtualBox: Убедитесь, что вы используете последнюю версию VirtualBox, так как обновления могут содержать исправления ошибок, касающихся работы с USB устройствами.

  4. Проверка установки расширений: Убедитесь, что у вас установлены дополнения VirtualBox (Guest Additions) для улучшения производительности и совместимости между хостом и виртуальной машиной.

  5. Настройка прав доступа: В некоторых случаях необходимо предоставить дополнительные права на доступ к USB-устройствам. Убедитесь, что ваш пользователь в хост-системе добавлен в группу vboxusers.

  6. Дополнительные проверки: Попробуйте использовать другие программы для работы с последовательным портом, такие как screen или minicom, чтобы проверить, сохраняется ли проблема только в некоторых приложениях.

  7. Анализ сообщений системы: Если проблема не исчезает, проверьте вывод dmesg после закрытия приложений, работающих с USB. Это может помочь выявить специфические ошибки взаимодействия.

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

Оцените материал
Добавить комментарий

Капча загружается...