I just did this! It wasn't too bad. In my case I passed an NVidia P400 through to Docker in an Ubuntu 20.04 VM. The version of Ubuntu may matter for old GPUs. Here's my summary approach: 1) Prevent TrueNAS from using the device. 1a) From the TrueNAS shell, find the device: pciconf -lv You should see something like the following: vgapci1@pci0:131:0:0: class=0x030000 rev=0xa1 hdr=0x00 vendor=0x10de device=0x1cb3 subvendor=0x10de subdevice=0x11be vendor = 'NVIDIA Corporation' device = 'GP107GL \[Quadro P400\]' class = display subclass = VGA none146@pci0:131:0:1: class=0x040300 rev=0xa1 hdr=0x00 vendor=0x10de device=0x0fb9 subvendor=0x10de subdevice=0x11be vendor = 'NVIDIA Corporation' device = 'GP107GL High Definition Audio Controller' class = multimedia subclass = HDA You will need both the GPU device and the audio device. Note the IDs in the first part of each entry: vgapci1@pci0:131:0:0 none146@pci0:131:0:1 1b) Set system tuneables to exclude the device Add vmm_load with a value of YES Add ptdevs with a value of 131/0/0 131/0/1 (that is, the IDs found in step 1a above, separated with a space) 1c) Reboot TrueNAS 2) Prepare the VM OS (necessary for old GPUs) 2a. Once your Ubuntu VM is up and running, head to the shell and CD into /etc/modprobe.d/ cd /etc/modprobe.d/ 2b. Create a new file: sudo nano blacklist-nvidia-nouveau.conf 2c. Add the following to the new file then save/close: blacklist nouveau options nouveau modeset=0 2d. Create another new file: sudo nano nvidia.conf 2e. Add the following to the new file then save/close: options nvidia NVreg\_OpenRmEnableUnsupportedGpus=1 2f. Update kernel init ram fs: sudo update-initramfs -u 2g. Reboot the VM. 3) Add the GPU devices to the VM 3a. Shutdown the VM 3b. For each device: Click Devices, Add, Change the device to PCI Passhthrough, select the device. I believe the order needs to be unique. 3c. Reboot the VM 4) Install the NVidia drivers and Utilities sudo apt install nvidia-driver-460-server sudo apt install nvidia-utils-460-server 5) Verify that the VM OS can access the GPU. nvidia-smi will return a table of output if the GPU is found. lspci | grep NVIDIA nvidia-smi The GPU is now available to the VM. Continue if you want to pass the GPU through to Docker. 6) Install Docker 7) Install the NVidia Container Toolkit distribution=$(. /etc/os-release;echo VERSION\_ID) \\ && curl -s -L [https://nvidia.github.io/libnvidia-container/gpgkey] \\ (https://nvidia.github.io/libnvidia-container/gpgkey) | sudo apt-key add - \\ && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit 8) Verify that the GPU can be accessed from Docker. sudo ctr image pull docker.io/nvidia/cuda:11.0.3-base-ubuntu20.04 sudo ctr run --rm -t \\ --runc-binary=/usr/bin/nvidia-container-runtime \\ --env NVIDIA\_VISIBLE\_DEVICES=all \\ docker.io/nvidia/cuda:11.0.3-base-ubuntu20.04 \\ cuda-11.0.3-base-ubuntu20.04 nvidia-smi I am deeply indebted to craftycraft who covered most of this in the TrueNAS community thread listed below. I only had to make minor modifications to his approach in order to make this work for me. Resources: https://docs.nvidia.com/ai-enterprise/deployment-guide-vmware/0.1.0/nouveau.html https://www.truenas.com/community/threads/guide-nvidia-quadro-p400-gpu-passthrough-to-vm-and-docker-for-jellyfin-transcoding.104750/ https://ubuntu.com/server/docs/nvidia-drivers-installation Answer from raw65 on reddit.com
🌐
TrueNAS Community
truenas.com › forums › virtualized truenas
Passthrough for SATA drives | TrueNAS Community
August 8, 2022 - If you are serious about PCI Passthrough, you really should get a proper HBA card. The LSI 9211-8i (SAS 2008 family) is excellent for this application. Passing through USB drives may not be the best option for stability. Cheers, ... TrueNAS Core 13.0-U6 HP DL380 G9 1@E-2630Lv4 192GB ECC DDR4 RAM 4@1GigE LAG (Access) 2@10GigE iSCSI (Round-Robin) 9300-8i 9300-8e 2 @ Intel 3700 16GB SSD (SLOG) - spinning rust pool 35TiB production pool (2x6 RaidZ2, SSD Mirrored ZIL) 36TiB bigbackup pool (2x2 Mirror) 910GiB SSD fast pool (2x2 Mirror)
🌐
Reddit
reddit.com › r/truenas › can gpu passthrough work on a truenas core vm? or should i switch to scale?
r/truenas on Reddit: Can GPU passthrough work on a TrueNas Core VM? Or should I switch to Scale?
July 9, 2024 -

I’ve heard it both ways from articles, forums, and other posts, but most of them are several years old.

I originally went with Core due to hearing it’s more stable and easier for beginners. I’m in my first month of usage and feel like I made a mistake. I’d like to pass through my GPU to transcode media for premiere proxies and Plex, but am having a tough time considering my build. Not sure if I’m doing something wrong or if it’s just that Core still doesn’t support hardware transcoding well enough.

My Build:

Motherboard: Asus Rog Zenith Extreme Alpha X399 CPU: Ryzen Threadripper 2970wx (24 Core, 4.2GHz) GPU: 2080TI Second GPU: Radeon Pro WX2100 RAM: 128GB Dominator Platinum DDR4 3200Mhz

These parts (aside from the second Gpu I added) were from my first computer and I just reused them as I experiment with my first server. As I’m new, there were several things I didn’t take into account. Threadripper has no iGPU, so I added the second GPU in hopes I could use that as the main GPU and then passthrough the original one to the TrueNas Core VM (Hypervisor is Proxmox).

So… can I do this? Or do I have to upgrade to Scale? I’ve heard a couple people have issues upgrading and I was afraid that my inexperience may put me in the that camp. I would hate to mess something up or lose data. It also would suck to lose my jails, but if this is the only way to get transcoding, I might just need to figure it out. Any thoughts or resources that a newbie could understand would be extremely appreciated.

Top answer
1 of 3
4
I just did this! It wasn't too bad. In my case I passed an NVidia P400 through to Docker in an Ubuntu 20.04 VM. The version of Ubuntu may matter for old GPUs. Here's my summary approach: 1) Prevent TrueNAS from using the device. 1a) From the TrueNAS shell, find the device: pciconf -lv You should see something like the following: vgapci1@pci0:131:0:0: class=0x030000 rev=0xa1 hdr=0x00 vendor=0x10de device=0x1cb3 subvendor=0x10de subdevice=0x11be vendor = 'NVIDIA Corporation' device = 'GP107GL \[Quadro P400\]' class = display subclass = VGA none146@pci0:131:0:1: class=0x040300 rev=0xa1 hdr=0x00 vendor=0x10de device=0x0fb9 subvendor=0x10de subdevice=0x11be vendor = 'NVIDIA Corporation' device = 'GP107GL High Definition Audio Controller' class = multimedia subclass = HDA You will need both the GPU device and the audio device. Note the IDs in the first part of each entry: vgapci1@pci0:131:0:0 none146@pci0:131:0:1 1b) Set system tuneables to exclude the device Add vmm_load with a value of YES Add ptdevs with a value of 131/0/0 131/0/1 (that is, the IDs found in step 1a above, separated with a space) 1c) Reboot TrueNAS 2) Prepare the VM OS (necessary for old GPUs) 2a. Once your Ubuntu VM is up and running, head to the shell and CD into /etc/modprobe.d/ cd /etc/modprobe.d/ 2b. Create a new file: sudo nano blacklist-nvidia-nouveau.conf 2c. Add the following to the new file then save/close: blacklist nouveau options nouveau modeset=0 2d. Create another new file: sudo nano nvidia.conf 2e. Add the following to the new file then save/close: options nvidia NVreg\_OpenRmEnableUnsupportedGpus=1 2f. Update kernel init ram fs: sudo update-initramfs -u 2g. Reboot the VM. 3) Add the GPU devices to the VM 3a. Shutdown the VM 3b. For each device: Click Devices, Add, Change the device to PCI Passhthrough, select the device. I believe the order needs to be unique. 3c. Reboot the VM 4) Install the NVidia drivers and Utilities sudo apt install nvidia-driver-460-server sudo apt install nvidia-utils-460-server 5) Verify that the VM OS can access the GPU. nvidia-smi will return a table of output if the GPU is found. lspci | grep NVIDIA nvidia-smi The GPU is now available to the VM. Continue if you want to pass the GPU through to Docker. 6) Install Docker 7) Install the NVidia Container Toolkit distribution=$(. /etc/os-release;echo $ID$VERSION\_ID) \\ && curl -s -L [https://nvidia.github.io/libnvidia-container/gpgkey] \\ (https://nvidia.github.io/libnvidia-container/gpgkey) | sudo apt-key add - \\ && curl -s -L [https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list](https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list) | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit 8) Verify that the GPU can be accessed from Docker. sudo ctr image pull docker.io/nvidia/cuda:11.0.3-base-ubuntu20.04 sudo ctr run --rm -t \\ --runc-binary=/usr/bin/nvidia-container-runtime \\ --env NVIDIA\_VISIBLE\_DEVICES=all \\ docker.io/nvidia/cuda:11.0.3-base-ubuntu20.04 \\ cuda-11.0.3-base-ubuntu20.04 nvidia-smi I am deeply indebted to craftycraft who covered most of this in the TrueNAS community thread listed below. I only had to make minor modifications to his approach in order to make this work for me. Resources: https://docs.nvidia.com/ai-enterprise/deployment-guide-vmware/0.1.0/nouveau.html https://www.truenas.com/community/threads/guide-nvidia-quadro-p400-gpu-passthrough-to-vm-and-docker-for-jellyfin-transcoding.104750/ https://ubuntu.com/server/docs/nvidia-drivers-installation
2 of 3
2
When I researched this sometime last year, passthrough involved a script to get it to work. I don't remember all the details now but I decided to go with Scale because passthrough was a simple drop-down to enable in the app. Was much easier than messing with a script but there was that learning curve going from jails to apps. And now TrueNAS is moving away from true chart apps and going to docker, which i personally prefer. Passthrough in docker is easier too if I remember correctly. With that said, i suggest getting a separate drive to use as boot drive and install Scale to that. Play around with it and compare. That's how I did it with mine, so that if Scale didn't work I could just go back to Core easy peasy. Of course, make sure you back up your configuration so you have it in case something goes wrong.
🌐
Reddit
reddit.com › r/proxmox › disk passthrough vs hba passthrough for virtualized truenas
r/Proxmox on Reddit: Disk Passthrough vs HBA Passthrough for virtualized TrueNAS
March 3, 2024 -

I have been researching virtualizing TrueNAS on Proxmox and there is a mix of answers between just passing through the disks to the TrueNAS vm or passing through an HBA card. The thing I don't understand is that people say if you just use disk passthrough the disks are virtualized, but how? How if I am connecting my disks to my server and then passing through the disks to the VM would I be dealing with virtualized disks or even nested ZFS?

I even found this thread on the Proxmox forums where a Proxmox staff member says to pass through the disks but then someone calls them out saying they're wrong. I would much rather have to deal with disk passthrough given my current setup, but if its going to cause issues I will go through the necessary server re-configuring to passthrough my HBA card. So definitively, which way is correct?

🌐
XDA Developers
xda-developers.com › home › storage › here's how i fixed my truenas disk errors by properly doing hdd passthrough in proxmox
Here's how I fixed my TrueNAS disk errors by properly doing HDD passthrough in Proxmox
July 12, 2025 - And, as it turns out, both TrueNAS and ZFS really prefer having full control over the storage controller. Enabling passthrough for the drive rather than the SATA controller resulted in these ZFS errors, and also made it impossible for the S.M.A.R.T tests to run as the adapter doesn't actually support it.
🌐
TrueNAS Community
truenas.com › forums › virtualized truenas
Best practices for boot/data drive setup (TN Scale on Proxmox) | TrueNAS Community
May 20, 2023 - TrueNAS needs direct physical access to the drive on which ZFS is. The thing is, the boot itself is also ZFS, so the best is to also passthrough the boot device. But corruption of the boot device is nowhere near of the consequences of corruption in the data pool.
🌐
TrueNAS Community
truenas.com › forums › truenas scale › virtualization
Windows Gaming & GPU passthrough (4k 120hz) | TrueNAS Community
February 25, 2023 - • With GPU passthrough, will the windows VM take full, or close to full advantage of the GPU performance + connected screen specs, such as its resolution and refresh rate? Thanks in advance! ... When you pass through a whole GPU it is dedicated to the VM, so you will see Windows booting and so on. At this stage, TrueNAS won't be able to do anything with the GPU.
Find elsewhere
🌐
TrueNAS Community
truenas.com › forums › truenas scale › truenas scale bluefin
Passthrough a PCIE slot? | TrueNAS Community
February 26, 2024 - I know it's in the 3rd slot of my motherboard, and that lane is controlled by CPU 1. Is it possible to just pass the PCIE slot completely and allow the virtual machine to deal with drivers? Running TrueNAS-SCALE-23.10.2 ... Is it possible to just pass the PCIE slot completely and allow the virtual machine to deal with drivers? Click to expand... this is how PCIe passthrough works.
🌐
TrueNAS Community
truenas.com › forums › virtualized truenas
SOLVED - Running TrueNAS Scale in Proxmox with physical disk passthrough with H710 in IT mode | TrueNAS Community
February 8, 2024 - Click to expand... If I install on a disk on the HBA, everything goes smoothly. The issue is I want to install on the boot volume created for the VM by proxmox. Once I get through the installation. If the PCI hardware is passed as RAW, when booting into TrueNAS, it goes back to the install screen.
🌐
TrueNAS Community
truenas.com › forums › virtualized truenas
Best practices new virtualized installation in Proxmox | TrueNAS Community
March 21, 2024 - www.truenas.com The short version is: Full hardware passthrough of the controller (SATA or SAS) is best. Since your SSD is NVMe, that sorts the problem of the isolated controller not being available to Proxmox. Use AHCI/non-RAID mode for your controller in the UEFI setup.
🌐
Tamertemel
blog.tamertemel.net › 2024 › 04 › 04 › best-approach-for-a-truenas-vm
Best approach for a TrueNAS VM – Electrical Engineering and Systems Science
No. With disk pasthrough your TrueNAS is still using virtual disks. To be able to directly access the real physical disks you need to PCI passthrough a dedicated HBA.
🌐
Proxmox
forum.proxmox.com › home › forums › proxmox virtual environment › proxmox ve: installation and configuration
How to passthrough existing TrueNAS disks into a VM on Proxmox without data loss? | Proxmox Support Forum
August 25, 2025 - If you have an HBA card, you can passthrough the entire controller so that TrueNAS gets direct access to all disks attached. That way you’ll also retain SMART data, native sector sizes, and avoid virtualization overhead.
🌐
Proxmox
forum.proxmox.com › home › forums › proxmox virtual environment › proxmox ve: installation and configuration
Best approach for running TrueNAS and VM with (i)GPU passthrough | Proxmox Support Forum
February 23, 2023 - Can I use an external HDD bay like https://www.orico.cc/us/product/detail/6764.html ? I'm not sure how the disks will be recognized via USB. The best way is to passthrough whole USB device inside TrueNAS.
🌐
TrueNAS Community
truenas.com › forums › truenas scale
SOLVED - Usb Passthrough via pci Passthrough | TrueNAS Community
March 6, 2022 - I also try to instal usbutils but i got a permission denied, so i stp to try things and ask some help here Thanks for you help Have a good day Gontran Im on a the last version of truenas Scale ... In 22.02 they haven't added the ability to passthrough a single USB device (it is supported by KVM, just not in the SCALE middleware/UX).
🌐
Proxmox
forum.proxmox.com › home › forums › proxmox virtual environment › proxmox ve: installation and configuration
[SOLVED] - Best practice for Truenas virtualized on Proxmox | Proxmox Support Forum
September 13, 2023 - Click to expand... You should always pass-through a controller, never disks. Background, while old still valid: https://www.truenas.com/community/r...guide-to-not-completely-losing-your-data.212/ ... Best regards, Udo B.
🌐
TrueNAS Community
truenas.com › forums › truenas scale
GPU Passthrough to VM Question | TrueNAS Community
June 21, 2023 - Correct - in order to do full isolation of a GPU and pass it through to a VM as a PCIe device, the host OS (TrueNAS SCALE) still needs to have a GPU for itself, even if you aren't using it for containerized Apps such as Plex/Jellyfin.
🌐
TrueNAS Community
truenas.com › forums › truenas core
Best Practice for Specific Scenario | TrueNAS Community
September 11, 2023 - If not is there any way of running another hypervisor program on TrueNAS Core - I have mild experience with VMWare which seems to be more flexible with passthrough. Secondly (and I haven't tried this yet) is GPU passthrough - I'm assuming this would be somewhat fairly straightforward if I didn't have anything plugged into the GPU.
🌐
Reddit
reddit.com › r/truenas › truenas and linux vm with gpu passthrough
r/truenas on Reddit: TrueNAS and Linux VM with GPU Passthrough
February 26, 2024 - Can I recommend an alternative? Run Proxmox and put Truenas in a VM if you'd like along whatever other VM's or LXC containers. You can pass whatever hardware you want to each VM and divvy up your resources accordingly.