Issues passing through SATA controller to VM

I recently got a sata controller so that I could pass through my Blu-ray Drive to my windows VM. Unfortunately, when I select the controller as a device in the windows VM, it gives me

Error: Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 211, in call_method
result = await self.middleware.call_with_audit(message[‘method’], serviceobj, methodobj, params, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1529, in call_with_audit
result = await self._call(method, serviceobj, methodobj, params, app=app,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1460, in _call
return await methodobj(*prepared_call.args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 179, in nf
return await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 49, in nf
res = await f(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/plugins/vm/vm_lifecycle.py”, line 58, in start
await self.middleware.run_in_thread(self._start, vm[‘name’])
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1367, in run_in_thread
return await self.run_in_executor(io_thread_pool_executor, method, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1364, in run_in_executor
return await loop.run_in_executor(pool, functools.partial(method, *args, **kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.11/concurrent/futures/thread.py”, line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/plugins/vm/vm_supervisor.py”, line 68, in _start
self.vms[vm_name].start(vm_data=self._vm_from_name(vm_name))
File “/usr/lib/python3/dist-packages/middlewared/plugins/vm/supervisor/supervisor.py”, line 158, in start
raise CallError(f’Failed setting up devices before VM start:\n{errors}')
middlewared.service_exception.CallError: [EFAULT] Failed setting up devices before VM start:
[EFAULT] Unable to detach pci_0000_04_00_0 PCI device: error: Could not find matching device ‘pci_0000_04_00_0’
error: Node device not found: no node device with matching name ‘pci_0000_04_00_0’

I have tried finding a solution online but haven’t seen anything. The controller does appear when I run LSPCI however it appears as an IDE interface.
IOMMU is enabled in bios.

Specs:
Ryzen 7 5800x
32GB DDR4
Aorus B550 Elite AX v2

Any and all help is apreciated.

Been there, tried for like 12h to get a bluray player passed through to a vm. Couldn’t get it to work. Have been other posts in the past by others with similar results.

My advice would be to give up… Not really positive or (argueably) helpful, but yeah.

Even when I managed to get it through without errors it’d never work on the vm. Didn’t matter if I passed it through an hba, a portmultiplier, or any other way.

OK, thanks for the advice. I have seen people do it with USB adapters, will try that.

Haven’t tried usb yet! Let me know how it goes! If you going for a usb enclosure for bluray I’ve had better luck with ones that have a standalone power source vs getting all power from usb port

That was my plan. From what I read, most optical drives need more power than a USB port can provide.

Found this one online that I think will work well. Link to Product

1 Like