Беспроводная передача карты Broadcom в Ubuntu VM

Я пытаюсь настроить свою беспроводную карту, через которую пройдут в QEMU VM (только для проверки передачи устройства и как это работает). Я могу использовать Wi-Fi на своей хост-машине очень хорошо.

lspci на хосте показывает, что следующая информация имела отношение к карте: enter image description here

Используемый драйвер ядра является "wl".

Теперь, я пытаюсь развязать драйвер хоста и связать драйвер vfio-pci с моей беспроводной картой следующим образом:

#!/bin/bash

# content of /etc/modprobe.d/local.conf is
# options vfio-pci ids=14e4:4331

# content of /etc/modprobe.d/vfio.conf is
# options vfio_iommu_type1 allow_unsafe_interrupts=1

set -e

BDF="03:00.0"
GRP=12

echo "[+] loading vfio-pci"
sudo modprobe vfio-pci

echo "[+] Finding iommu group"
readlink /sys/bus/pci/devices/0000:${BDF}/iommu_group

echo "[+] Devices in the group"
ls /sys/bus/pci/devices/0000:${BDF}/iommu_group/devices

echo "[+] Unbinding device driver"
echo 0000:${BDF} | sudo tee /sys/bus/pci/devices/0000:${BDF}/driver/unbind

echo "[+] Finding vendor, device ID"
lspci -n -s ${BDF}
val=$(lspci -n -s ${BDF} | cut -d' ' -f3)
vendor=$(echo $val|cut -d':' -f1)
deviceid=$(echo $val|cut -d':' -f2)
echo "-- vendor is ${vendor}"
echo "-- deviceid is ${deviceid}"

echo "[+] Binding to vfio-pci"
echo "${vendor} ${deviceid}" | sudo tee /sys/bus/pci/drivers/vfio-pci/new_id

echo "[+] Checking /dev/vfio"
ls /dev/vfio

echo "[+] checking dmesg for vfio logs"
dmesg | grep -i vfio

На данном этапе выполнение lspci показывает, что устройство связано с драйвером vfio-pci.

enter image description here

Теперь, я загружаю Ubuntu в QEMU с устройством, через которое проходят как следующие аргументы:

-device vfio-pci,host=03:00.0,id=net0

Однако при проверке "lspci-v" в VM, я вижу, что драйвер, связанный с устройством, bcma-pci-bridge.

enter image description here

Мои сомнения/вопросы:

  1. Я передаю устройство VM правильным способом? На основе lspci output/dmesg вывод, эта часть, кажется, корректна.
  2. "bcma-pci-bridge" использует ожидаемое поведение? Там какой-либо путь состоит в том, чтобы заставить VM использовать "wl" драйвер с устройством? После того как я настроил это, я хотел бы к вводить-по-абсолютному-адресу-и-подталкивать "wl" драйвер, таким образом, будет полезно смочь установить его этот путь.
4
задан 13 April 2020 в 22:29

2 ответа

В первую очередь, я передаю устройства своему VMs, использующему точно этот метод некоторое время, и я никогда не получаю проблемы.

Используя похожий метод для vfio связывают Вас, может вынуждать периферийное устройство связать с определенным драйвером.

Процедура следующим образом, развяжите от формирователя тока, modprobe wl затем свяжите карту Wi-Fi с ним.

Я не могу гарантировать, что это будет работы, я предполагаю bcma-pci-bridge используется из-за переотображения iommu, однако когда я связываю свой Wi-Fi Intel с VM, это использует тот же драйвер в качестве хоста.

Попробуйте этот сценарий в своем VM

#!/bin/bash

set -e

BDF="00:04.0"

echo "[+] Unbinding old wifi device driver"
echo 0000:${BDF} | sudo tee /sys/bus/pci/devices/0000:${BDF}/driver/unbind

echo "[+] Finding vendor, device ID"
lspci -n -s ${BDF}
val=$(lspci -n -s ${BDF} | cut -d' ' -f3)
vendor=$(echo $val|cut -d':' -f1)
deviceid=$(echo $val|cut -d':' -f2)
echo "-- vendor is ${vendor}"
echo "-- deviceid is ${deviceid}"
modprobe wl
echo "[+] Binding to wl driver"
echo "${vendor} ${deviceid}" | sudo tee /sys/bus/pci/drivers/wl/new_id
0
ответ дан 25 April 2020 в 10:48

У меня была подобная проблема с внутренними машинами, не берущими мою карту, таким образом, я создал новую виртуальную сеть в virt-manager с набором NAT для передачи моей беспроводной карте. Я затем использую virtio и просто выберите ту сеть в настройках VM.

forwarding to wirelesscard

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

2
ответ дан 25 April 2020 в 10:48

Другие вопросы по тегам:

Похожие вопросы: