Couple of questions about graphics card on TrueNAS Core

simos.sigma

Dabbler
Joined
Aug 7, 2023
Messages
26
Hello community!!! I have some questions about graphics card and its usage on TrueNAS Core...

1. When I make a fresh installation of TrueNAS Core, does the installation find the necessary drivers for the graphics card automatically or should I install them manually (how)?
2. How can I check if TrueNAS Core recognizes my card?
3. How can I check if drivers are installed?
4. If I decide to change the graphics card later, will TrueNAS Core install the necessary drivers for the new graphics card or should I install them manually (how)?
5. Is the "ASUS GTX 560 DirectCU II OC" compatible with TrueNAS CORE 13.0-U5.3? Is there any list or something?
6. How can I take advantage of my graphics card, for example, when I am using Jellyfin?

Thank you for your precious time!!!
 

NugentS

MVP
Joined
Apr 16, 2020
Messages
2,947
TN only uses the graphics card in text mode - so drivers are not an issue.

Using the card then for things like transcoding within jails is something that I do not do - so I am unsure
 

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,703
The right answer is never going to be "install a driver".

If it's supported, the driver is there already, if not you should find different (supported) hardware.

Using graphics cards for transcoding or whatever has been a thing for some apps at different times... plex recently dropped support for hardware transcode on FreeBSD, so that's only an option on SCALE now.

I don't use Jellyfin, so haven't even looked for the possibility of support there, but here's a link to how to do something on CORE with plex (when that was possible).


Short version: you need to expose the graphics card (assuming it's compatible) into the jail using devfs_ruleset (and maybe some other settings for the jail to pass the hardware directly in).

I don't expect your journey to be smooth or even successful, so good luck.

Also, devfs_ruleset has changed quite a bit since that thread started, so don't expect all the stuff there to work either.
 

simos.sigma

Dabbler
Joined
Aug 7, 2023
Messages
26
Pfffff... I'll explode!!!

So in other words, right now, whether my GPU is on the system or not makes no difference? Jellyfin uses the CPU when it needs to transcode?

In case I decide to expose the graphics card etc, is it a good sign that I can see my card when I do lspci? Does this mean that it is compatible or do I just see it because it's just there?
root@truenas[~]# lspci
00:00.0 Host bridge: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller (rev 02)
00:01.0 PCI bridge: Intel Corporation 82G33/G31/P35/P31 Express PCI Express Root Port (rev 02)
00:1a.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 02)
00:1a.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 02)
00:1a.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 02)
00:1a.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 02)
00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 02)
00:1c.4 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 5 (rev 02)
00:1c.5 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 6 (rev 02)
00:1d.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 02)
00:1d.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 02)
00:1d.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 02)
00:1d.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 92)
00:1f.0 ISA bridge: Intel Corporation 82801IB (ICH9) LPC Interface Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801IB (ICH9) 4 port SATA Controller [AHCI mode] (rev 02)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02)
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 02)
05:00.0 VGA compatible controller: NVIDIA Corporation GF114 [GeForce GTX 560] (rev a1)
05:00.1 Audio device: NVIDIA Corporation GF114 HDMI Audio Controller (rev a1)
 

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,703
More important to see would be the device /dev/... (whatever it's supposed to be for that chip).

You might find that with dmesg | grep -i nvidia or something similar

Then you need to mess with the devfs ruleset or just open the jail wide up to get all the devices exposed so they can be used.
 

simos.sigma

Dabbler
Joined
Aug 7, 2023
Messages
26
More important to see would be the device /dev/... (whatever it's supposed to be for that chip).

You might find that with dmesg | grep -i nvidia or something similar

Then you need to mess with the devfs ruleset or just open the jail wide up to get all the devices exposed so they can be used.

When I do dmesg | grep -i nvidia I get nothing...
Code:
root@truenas[~]# dmesg | grep -i nvidia
root@truenas[~]#

In case the GPU can’t do what I am trying to do, wouldn’t it be better to just place a low-end GPU, just in case I want to send the output to a monitor? I mean, if it can’t do what I want, it is ‘useless’ for this machine...
 

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,703
I'm not aware of any examples of anyone using a GPU to output to a screen from a jail (nor a VM... which is apparently possible in SCALE) in CORE.

If you're talking about the system console, then sure, have something to allow for that (although doesn't really need to be there if you use a proper server mobo with IPMI).
 

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,703
you could also look at dmesg | grep -i vga

Or just look through the raw output from dmesg for something about the GPU.
 

simos.sigma

Dabbler
Joined
Aug 7, 2023
Messages
26
you could also look at dmesg | grep -i vga
Hm... When I do dmesg | grep -i vga I get this...
Code:
root@truenas[~]# dmesg | grep -i vga
VT(vga): text 80x25
vtvga0: <VT VGA driver>
vgapci0: <VGA-compatible display> port 0xec00-0xec7f mem 0xfc000000-0xfdffffff,0xd8000000-0xdfffffff,0xd4000000-0xd7ffffff irq 16 at device 0.0 on pci1
vgapci0: Boot video device

Or just look through the raw output from dmesg for something about the GPU.
???

If you're talking about the system console, then sure, have something to allow for that (although doesn't really need to be there if you use a proper server mobo with IPMI).
Not only for the system console, but also for making BIOS changes, or running any diagnostics from a USB stick, etc.
 
Joined
Oct 22, 2019
Messages
3,641
5. Is the "ASUS GTX 560 DirectCU II OC" compatible with TrueNAS CORE 13.0-U5.3? Is there any list or something?
That GPU (GTX 560) was released in 2011. It performs slightly on par with an integrated Intel Iris Xe. I don't think it even supports hardware encoding.

You might as well not use transcoding, or let the CPU transcode for you (which is taxing and will produce a lot of heat.)

Alternatively, you can create a dedicated (unimportant, temporary) dataset for encoded videos to be streamed via Jellyfin or Plex, in which the originals remain untouched on your primary dataset. (This is what I do.)

"My Cool Movie, 4K, HEVC.mkv" is the original video. Lives on the "media" dataset. TV cannot play it properly. (Too sluggish or unsupported.) Solution? TRANSCODE? Or...

...encode it as "My Cool Movie, 720p, AVC.mp4", which will reside under the "media/encoded" dataset. TV can play it with no issues. No transcoding needed, because the video is streamed directly as is. Less taxing on your NAS. Since this is not the original video, it can be deleted later in the future if you wish to prune or save space.

* If you use a dedicated SSD-only pool, this is a good place to (temporarily) store your encodes for streaming.
 
Last edited:

Whattteva

Wizard
Joined
Mar 5, 2013
Messages
1,824
Not only for the system console, but also for making BIOS changes, or running any diagnostics from a USB stick, etc.
I'd probably just either use a server motherboard with IPMI and forego the GPU at all or use an Intel CPU that comes with an iGPU. I think QuickSync is also generally better and a lot more power efficient than GPU's at transcoding anyways, especially against that GPU you have.

I personally think people are going the wrong way with transcoding. I just play all my videos natively. I have a small 1 Liter PC (one of those tiny HP/Dell/Lenovo) hooked up to my TV that I got for ultra cheap on Ebay (less than $200) and it will basically play anything I throw at it natively because it is running Jellyfin native client app. I mean, it's running a full OS, so it allows me to even play YouTube and Spotify from a full-blown browser with no ads. The form factor also looks stylish and unassuming next to the TV. I often get amazed guests when they see how small, stylish, yet powerful the little unassuming box is next to the TV.

Here's how one of these looks like:
iu
 

simos.sigma

Dabbler
Joined
Aug 7, 2023
Messages
26
That GPU (GTX 560) was released in 2011. It performs slightly on par with an integrated Intel Iris Xe. I don't think it even supports hardware encoding.
I found this...
Yes, the ASUS GTX 560 DirectCU II OC supports hardware encoding. It has a dedicated encoder chip that can encode video at a much faster rate than the CPU. This can be useful for streaming or recording gameplay.
Here are the specifications of the ASUS GTX 560 DirectCU II OC:
  • GPU: NVIDIA GeForce GTX 560
  • Core clock: 822 MHz
  • Memory clock: 1202 MHz
  • Memory: 1.2 GB GDDR5
  • CUDA cores: 336
  • Memory bandwidth: 192 GB/s
  • Video encoder: NVIDIA NVENC
The NVIDIA NVENC encoder is a hardware encoder that is built into the GTX 560 DirectCU II OC. It can encode video at a much faster rate than the CPU. This can be useful for streaming or recording gameplay.

To use the NVIDIA NVENC encoder, you will need to install the NVIDIA GeForce Experience software. Once the software is installed, you can open it and click on the "Broadcast" tab. In the "Encoder" drop-down menu, select "NVIDIA NVENC". You can then configure the encoder settings as needed.

Alternatively, you can create a dedicated (unimportant, temporary) dataset for encoded videos to be streamed via Jellyfin or Plex, in which the originals remain untouched on your primary dataset. (This is what I do.)

"My Cool Movie, 4K, HEVC.mkv" is the original video. Lives on the "media" dataset. TV cannot play it properly. (Too sluggish or unsupported.) Solution? TRANSCODE? Or...

...encode it as "My Cool Movie, 720p, AVC.mp4", which will reside under the "media/encoded" dataset. TV can play it with no issues. No transcoding needed, because the video is streamed directly as is. Less taxing on your NAS. Since this is not the original video, it can be deleted later in the future if you wish to prune or save space.

* If you use a dedicated SSD-only pool, this is a good place to (temporarily) store your encodes for streaming.
I am not sure I understand how to do that... Maybe because right now my head is full of, "everything". I'll study it later for sure!!! I can't understand how I'll "connect" that with Jellyfin...
 

Heracles

Wizard
Joined
Feb 2, 2018
Messages
1,401
I personally think people are going the wrong way with transcoding.
Completely agree with that one.

Here, my way around transcoding is : Transcoding :smile:

Actually, what I did is that I converted all my videos (DVD, Bluray, others) to format that will direct play or direct stream on everything. I did that with handbrake and MakeMKV. So I transcoded but once and for all. I did that before adding the files to Jellyfin and now everything plays directly.
 

Whattteva

Wizard
Joined
Mar 5, 2013
Messages
1,824
I am not sure I understand how to do that... Maybe because right now my head is full of, "everything". I'll study it later for sure!!! I can't understand how I'll "connect" that with Jellyfin...
You don't really "connect" it. He is saying that you could pre-encode your movies to an encoding that your TV supports natively and serve that file instead of the original file.
 

Whattteva

Wizard
Joined
Mar 5, 2013
Messages
1,824
Here, my way around transcoding is : Transcoding :smile:
I could be wrong on this, but I think the term "transcoding" specifically refers to doing it in real-time. I'd call that alternative approach "Pre-encoding".
 

simos.sigma

Dabbler
Joined
Aug 7, 2023
Messages
26
Actually, what I did is that I converted all my videos (DVD, Bluray, others) to format that will direct play or direct stream on everything. I did that with handbrake and MakeMKV. So I transcoded but once and for all. I did that before adding the files to Jellyfin and now everything plays directly.
This is what I am doing right now for some video files that need transcoding on Jellyfin!!!

One question about that… I know it should be in a separate thread… I have a video file and I am trying to add two audio tracks to it using Avidemux, one for English and one for Greek. Whichever one I put as the second track, when I choose it, Jellyfin does “remuxing”. But not for the first track… Is this normal?
Playback Info
Player: Html Video Player
Play method: Remuxing
Protocol: http
Stream type: HLS

Video Info
Player dimensions: 2560x1287
Video resolution: 1920x1080
Dropped frames: 0
Corrupted frames: 0

Remuxing Info
Video codec: H264 (direct)
Audio codec: AAC (direct)

Original Media Info
Container: mp4
Size: 824.2 MiB
Bitrate: 5.1 Mbps
Video codec: H264 High
Video bitrate: 4.7 Mbps
Video range type: SDR
Audio codec: AAC LC
Audio bitrate: 191 kbps
Audio channels: 2
Audio sample rate: 48000 Hz
 

ChrisRJ

Wizard
Joined
Oct 23, 2020
Messages
1,919
@simos.sigma , I think you went for TrueNAS Core with misguided expectations about what it is intended to be used for. What I mean to say is that somehow you were made to believe that TrueNAS Core makes a good base for multimedia stuff.

Would you mind letting us know how you came to choose TrueNAS Core and what you want to achieve overall?
 
Joined
Oct 22, 2019
Messages
3,641
Actually, what I did is that I converted all my videos (DVD, Bluray, others) to format that will direct play or direct stream on everything. I did that with handbrake and MakeMKV. So I transcoded but once and for all. I did that before adding the files to Jellyfin and now everything plays directly.
You don't really "connect" it. He is saying that you could pre-encode your movies to an encoding that your TV supports natively and serve that file instead of the original file.
I could be wrong on this, but I think the term "transcoding" specifically refers to doing it in real-time. I'd call that alternative approach "Pre-encoding".

:cough cough: :wink:

Alternatively, you can create a dedicated (unimportant, temporary) dataset for encoded videos to be streamed via Jellyfin or Plex, in which the originals remain untouched on your primary dataset. (This is what I do.)

"My Cool Movie, 4K, HEVC.mkv" is the original video. Lives on the "media" dataset. TV cannot play it properly. (Too sluggish or unsupported.) Solution? TRANSCODE? Or...

...encode it as "My Cool Movie, 720p, AVC.mp4", which will reside under the "media/encoded" dataset. TV can play it with no issues. No transcoding needed, because the video is streamed directly as is. Less taxing on your NAS. Since this is not the original video, it can be deleted later in the future if you wish to prune or save space.

* If you use a dedicated SSD-only pool, this is a good place to (temporarily) store your encodes for streaming.
 
Top