Вопрос или проблема
Я установил 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 последовательного порта, выполните следующие шаги:
-
Отключение виртуальной машины: Убедитесь, что ваша виртуальная машина выключена. Это можно сделать через интерфейс VirtualBox.
-
Настройки USB:
- Перейдите в настройки вашей виртуальной машины, выберите вкладку «USB».
- Измените контроллер USB с USB 2.0 (EHCI) на USB 3.0 (xHCI). Это важно, так как контроллер USB 3.0 обычно лучше поддерживает современные устройства и устранит проблемы, связанные с зависанием.
-
Обновление VirtualBox: Убедитесь, что вы используете последнюю версию VirtualBox, так как обновления могут содержать исправления ошибок, касающихся работы с USB устройствами.
-
Проверка установки расширений: Убедитесь, что у вас установлены дополнения VirtualBox (Guest Additions) для улучшения производительности и совместимости между хостом и виртуальной машиной.
-
Настройка прав доступа: В некоторых случаях необходимо предоставить дополнительные права на доступ к USB-устройствам. Убедитесь, что ваш пользователь в хост-системе добавлен в группу
vboxusers
. -
Дополнительные проверки: Попробуйте использовать другие программы для работы с последовательным портом, такие как
screen
илиminicom
, чтобы проверить, сохраняется ли проблема только в некоторых приложениях. -
Анализ сообщений системы: Если проблема не исчезает, проверьте вывод
dmesg
после закрытия приложений, работающих с USB. Это может помочь выявить специфические ошибки взаимодействия.
Если после выполнения всех этих шагов проблема продолжает возникать, возможно, стоит обратиться за помощью к сообществу VirtualBox или обратиться к документации на официальном сайте для получения дополнительной информации о возникшей проблеме.