Title: How to get the broadcom pci 1570 web cam working in Linux using qemu with OS X VM
Objective: Alright, I'll try to make this short and sweet ...ughhh I hope. Anwyays, this article will detail / outline the steps I performed to get the Broadcom PCIE 1570 web cam found in late 2013 MacBook Pro's (MBPr) to work in a Linux environment.
So first thing is first, the Broadcom PCIE 1570 web cam is only working / tested in a OS X (10.10 Yosemite) VM running qemu. Secondly, I am sure you read the article where I outline building SPICE support for qemu, if not you can check it out here. Third, as always your gonna need a lot patience. :-/
So, with that being said, let's get started. So you already have qemu installed (yay). As of writing this, I am presently running qemu 2.1.50 (I'll admit I haven't done a
git pull in quite some time.) If you haven't set up your qemu / OS X VM environment yet I first suggest you read this. It's the #1 hit doing a google search for qemu os x so it's not exactly hard to find. After you have the qemu / OS X (10.10) you'll probably run into the same problem I blogged about earlier in the month. Well if you haven't read this, now is a good time to do so. ;) If your like most people and too lazy to read the article well run the below command in a root shell because I was unable to get
sudo to work with the command.
echo 1 > /sys/module/kvm/parameters/ignore_msrsNext, after you have everything setup ...this would be a good time to backup ;) is to modify the kernel boot flag if your running GRUB, (sorry I can't help you people running syslinux, as I have never ran it.) Add the below line to your grub.cfg
intel_iommu=onAfter that, your gonna want to enable to the following kernel modules,
lspci -vOnce you have those enabled, and you found your device it is time to find vfio group of the broadcom 1570 device / web cam. In my particular case I did the following.
readlink /sys/bus/pci/devices/0000\:04\:00.0/iommu_groupwhich should give you output like the following,
../../../../kernel/iommu_groups/11Normally this is where most people would tell you to unbind the driver, but since there isn't a driver for this device we need not worry about this step :)
lspci -n -s 04:00.0The above command should give you output such as the following,
04:00.0 0480: 14e4:1570Almost there, ...bind vfio-pci
echo 14e4 1570 > /sys/bus/pci/drivers/vfio-pci/new_idchown the device node so it is accessible by qemu,
chown $USER:users /dev/vfio/11Last ...last thing is to allocate some memory for the device.
ulimit -l 2621440
Now it's time to test your new web cam with the below command,
sudo qemu-system-x86_64 -enable-kvm -m 4096 -cpu core2duo -machine q35 -usb -device usb-kbd -device usb-mouse -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -kernel VM/chameleon_svn2570_boot -smbios type=2 -device ide-drive,bus=ide.2,drive=MacHDD -drive id=MacHDD,if=none,file=VM/osx-yosemite.img -netdev user,id=hub0port0 -device e1000-82545em,netdev=hub0port0,id=mac_vnet0 -monitor stdio -device qxl-vga -device vfio-pci,host=04:00.0
If all is well you should see something like the following,
current_user.id = article.meta_description = "How to get the broadcom pci 1570 web cam working in Linux using qemu with OS X VM"