Jump to content

Endy

Members
  • Content Count

    182
  • Joined

  • Last visited

Community Reputation

13 Good

About Endy

  • Rank
    Advanced Member
  • Birthday January 25

Converted

  • Gender
    Male
  • Location
    Pea Ridge, AR

Recent Profile Visitors

854 profile views
  1. I have a Dell H310 flashed to IT mode. I just plugged it in and it worked. It was previously used in my old server using forward breakout cables and now it's connected to the backplane in my CSE-846.
  2. @mafoster I took a quick look and some of it is out of my realm of experience because I have not tried to set up a vm for Catalina or using an AMD video card. There is one thing I did see. It looks like you were able to stub the video card, but you may want to follow this video: https://www.youtube.com/watch?v=QlTVANDndpM&t=601s Be aware that changes made to the vm in xml are overwritten if you make any other changes using the gui view.
  3. I am not even seeing bluetooth listed in the devices (entirely possible it's there and I am just not seeing it) and I don't use it, so I don't think I am gonna be much help there. The problem with the onboard audio is the same as with that 3rd usb device. It may be possible to get it working, but I haven't tried it. More info here:
  4. I think there have been a couple. One by jonp and one by Spaceinvader One. <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x0f' slot='0x00' function='0x0'/> </source> <rom file='/mnt/user/General Storage/NVIDIA.GTX1080Ti.11264.170118.rom'/> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/> </hostdev> I think this is your problem. You left off multifunction='on'. So it should look like this: <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x0f' slot='0x00' function='0x0'/> </source> <rom file='/mnt/user/General Storage/NVIDIA.GTX1080Ti.11264.170118.rom'/> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0' multifunction='on'/> </hostdev> And then you may or may not need to change the Bus of the last device because of the number gap from Bus 4 to Bus 6. I'm not sure how that is handled by the vm and it may not be a problem at all. I know that I have seen it somewhere, but I just don't recall where.
  5. I didn't really go into actually setting up Windows and installing drivers. Spaceinvader One has a video for that as well. But basically this is where the VirtIO drivers come in and I'd have to watch the video again to tell you what exactly is needed. Yes, the slots were the same. On a Windows 7 vm, the bus was the same but the slots were different, just like in the video. I do not know why that is. But basically, because the graphics and sound are one device and that's the way we want them to be seen by the vm, both the bus and the slot need to match. This is one of those things that I know I have dealt with in the past, but my memory fails me to the specifics. Again, I think this may be in the video for setting up a Windows 10 vm. I think I have also recently read a post about that here on the forum somewhere? I would say with the new vfio-pci.cfg plugin, it is much much easier now to determine which usb port is which and plan accordingly. But it's also good to have options.
  6. I’ve seen a lot of people asking questions and having problems getting graphics cards and onboard usb controllers passed through on Ryzen X570 systems. I had some issues myself that thanks to a couple of people here on the forums I was able to get resolved. This guide is about setting up a Windows 10 vm using a single graphics card with onboard usb passed through. Because I have managed to get it working, I thought it might be a good idea to write a little guide based on my setup in case it can help some other people. While this was specific to my motherboard and hardware, there are parts that should be applicable for other hardware combinations. Let’s start with my hardware. I’m using a Ryzen 7 3800X with the AsRock X570 Taichi. The graphics card is a Geforce GTX 1070. BIOS First step is to make sure the bios is up to date. At the time I am writing this the newest bios for my motherboard is 2.70 dated 12-9-2019. This is the AGESA version: Update AMD AGESA Combo-AM4 1.0.0.4 Patch B Once updated, boot into the bios once then restore default settings, save, reboot and go back into the bios. To enable IOMMU I found this at level1techs: https://forum.level1techs.com/t/x570-taichi-iommu-groups/145762/2 After some trial and error, I found that in order to passthrough the motherboard usb controllers, I had to change some usb options from Auto to Enabled. Because there is one controller that can’t be passed through, not all of these probably need to be changed, but I’m not sure which ones are for which controllers. Doesn’t seem to be causing me any issues at the moment. Go to Advanced>AMD CBS>FCH Common Options>USB Configuration Options and change XHCI Controller to Enabled. While there go to MCM USB enable and set XHCI2 enable and XHCI3 enable to Enabled. Next is Advanced>AMD CBS>Chipset Common Options>Chipset USB Configuration Options. Change XHCI Controller0 enable and XHCI Controller1 enable to Enabled. The last thing is to set the boot device to the Unraid usb non uefi. (Supposedly booting the usb using uefi can cause problems, but I have not experienced those myself so I can’t comment on that. This is the better safe than sorry approach.) Save settings and reboot. Isolating Cores This next step may be considered optional, but it’s about making sure the vm has the best chance of performing as best it can. In Unraid go to Settings>CPU Pinning. At the bottom you can choose which CPU cores you would like to isolate. Unraid like to use core 0, so I stay away from that one and usually start at the other end. Keep in mind to match the hyperthreads together. In my case I went with cores 4-7 and the matching hyperthreads 12-15. Syslinux Next, in Unraid, go to the Main tab and click on Flash then scroll down to Syslinux Configuration. To edit these click on Menu View and it will change to Raw View. I like to have a separate menu option for hardware passthrough so I just copy everything for ‘label Unraid OS’, delete ‘menu default’ under ‘label Unraid OS’, then paste in the new menu item with the other menu items. Make sure to rename it and that it says ‘menu default’ so that’s the one that Unraid will boot into automatically. The only other change is to add ‘video=efifb:off’ after ‘ initrd=/bzroot’. I admit that I am not sure on the details of why this is necessary, but I believe it has to do with passing through the only graphics card in the system. label Unraid OS HWPT menu default kernel /bzimage append isolcpus=4-7,12-15 initrd=/bzroot video=efifb:off vfio-pci.cfg To stub the graphics card and usb controller I highly recommend using the VFIO-PCI CFG plugin. So far it works really well and makes things much easier. Plus, it gives useful information like if your device can be reset and also which devices are attached to which usb controllers (very useful for figuring out which usb ports belong to which usb controllers). The plugin can be found in Community Apps. Once installed you can find it in the Settings tab. Go there and it’s a good time to double check that the IOMMU groups are looking like they should. Then it’s as easy as selecting which devices you want to stub. Check the graphics card and it’s audio controller. For the onboard usb controllers, it’s tempting to try using the one that is off on in it’s own group. In my case that was this one: Group 33 10:00.3 [RESET] 1022:149c USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller However, that one will not work and was one of the problems I ran into, but thanks to an explanation by @Skitals it makes sense why that one would not work. The address is Bus:Device:Function. Notice that the Function for that usb controller is 3. That means that despite being in it’s own IOMMU group, it belongs to another device and therefore, can’t be passed through. Good thing there are two other usb controllers on this motherboard in this group: Group 20 03:08.0 [RESET] 1022:57a4 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 57a4 0a:00.0 [RESET] 1022:1485 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP 0a:00.1 1022:149c USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller 0a:00.3 [RESET] 1022:149c USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller Select the three Oa:00 devices. Make sure the usb drive that Unraid uses is not in one of the usb ports for those two controllers and then reboot. For reference, here’s a picture that shows the back panel of the X570 Taichi. The ports colored in red belong to the usb controller that’s off in it’s own group. The yellow and green colored ports belong to the two other usb controllers. I have not yet tried to figure out which controllers the mother usb headers belong to. vm xml – graphics card Before creating the vm, we’ll need a dump of the vbios. While it is possible to download from techpowerup, that may or may not be the right vbios for your exact card. I found it was easiest to put Hiren’s BootCD on a usb drive and swap that with the unraid usb drive, boot into that, dump the vbios with GPUZ and save that to the usb drive. Take that usb drive to another computer and edit the vbios with a hex editor to remove the header as seen in this Spaceinvader One video: https://www.youtube.com/watch?v=1IP-h9IKof0&t=438s Put the Unraid usb drive back in the server and start it up. (Now is a good time to make sure it’s still booting into Legacy mode and not uefi as I noticed mine had switched at this point.) Put the vbios file somewhere on your Unraid server so that the vm will be able to access it. (Maybe a vbios folder in with your ISO folders.) Time to create a Windows 10 vm. Go to the VMS tab, Add VM, Windows 10. I’ll just mention the things that I actually change and the rest of the settings will stay at defaults. Logical CPUs - change this to match the the cores you isolated earlier Initial and Max Memory – change these to the desired amount of RAM for the vm, I’m using 8192 MB for both Machine – Q35 OS Install ISO – point this to your Windows 10 install ISO VirtIO Drivers ISO – might want to make sure you have the latest version (virtio-win-0.1.171.iso as of the time I am writing this) They can be found here under Direct downloads virtio-win iso: https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/index.html Note: You can set your default virtio iso in Settings>VM Manager. Graphics Card – set to your graphics card Graphics ROM BIOS – point this to the vbios file you got from your graphics card earlier Sound Card – set to the graphics card audio controller Other PCI Devices – I had some issues with this but so far I have found two ways that seem to work. The first is to just select the usb controller that ends in .3. (In the reference photo above, I believe it’s the usb ports colored in yellow.) The other way is to select the 2 usb controllers and the non-essential instrumentation. Then the xml also needs to be edited which will be explained below. Uncheck Start VM after creation Click Create Now the xml of the vm needs to be edited, so go in to edit it and click on Form View to change it to XML View. Now we need to follow this video by Spaceinvader One. There is one thing I noticed that was different for my setup and that was that it was the Bus that was different and not the Slot, so I went ahead and changed the Bus to match. https://www.youtube.com/watch?v=QlTVANDndpM&t=601s Usb Controller If both usb controllers were selected, then the xml needs to be edited in a similar fashion as to the way the graphics card xml was edited. Here’s mine for an example: <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x0a' slot='0x00' function='0x0'/> </source> <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0' multifunction='on'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x0a' slot='0x00' function='0x1'/> </source> <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x1'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x0a' slot='0x00' function='0x3'/> </source> <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x2'/> </hostdev> I should also mention that I changed the Bus since before it was audio was 5, non-essentials device was 6, usb controller was 7 and usb controller was 8. With the audio moved to Bus 4 with the graphics card, I changed the other 3 devices to the now vacated Bus 5. That should about cover it. If you are trying to use a previous vm and it doesn’t start and no error comes up and it’s just nothing on the screen, try removing the vm and recreating it. (Thanks to @testdasi for that one.)
  7. After having tried a bunch of different DVR options, Emby has become my favorite, but yes, it does require Emby Premier, but includes guide data. (Well worth the lifetime imo.) Easy to setup and use. There are other options like SageTV and TVHeadend. They all were much harder to setup and the interface's left something to be desired.
  8. I have an AsRock X570 Taichi and what I had to do to get the onboard usb to passthrough was to go into the bios and switch all of the usb options from Auto to Enabled.
  9. Yes, if you boot into GUI mode, then you need to add it there.
  10. Thanks for this. It's starting to make sense. In all my searching I would keep finding these things that people say to do, but usually not with any explanations as to why. Yes, that was already done. Kind of like I was saying before, I saw it mentioned somewhere to do it, but no explanation of why. Thank you both for the help. So far everything is now working.
  11. Ok so I just added the 0a:00.3 usb controller to the vm and now I can get it to start with vnc. The message that comes up is: Guest has not initialized the display (yet). @testdasi like you said, I deleted the template and started again. Now it's working. Thank you. I still need to install the nvidia driver and make sure that works.
  12. There was no display and I did get the vbios from my card, I did not download it from techpowerup.
  13. Ok, trying to start with just vnc instead of the graphics card I get this
  14. Success! The vm now starts and Unraid doesn't lock up. I am still having the no video problem. @testdasi I assume what I need to do is to use vnc to setup the vm and then try to add the graphics card afterwards so that then I could RDP into it? Mine is the same (except that it's 0a:00.0 and oa:00.1). What about 03:08.0 [RESET] 1022:57a4 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 57a4 since that is in the same iommu group? I think what I typically read is that everything in a group needs to be passed through? So far it seems to be working without that passed through.
  15. I did my best to map out which usb ports go to which motherboard controller. USB devices connected to the controller I was trying to pass through no longer show up in System Devices, but the Unraid USB stick does. Yes, the USB controller can be reset. It looks like Skitals might have the answer for me on this one. I dumped the bios myself and removed the header as shown in SpacerInvaderOne's video. Being a fresh vm, I haven't been able to get in far enough to actually install Windows 10 so no RDP. That makes a lot of sense. I will try that out and report back.