Dell Precision M6800
NVIDIA GK104GLM [Quadro K5100M]
Ubuntu Studio 22.04 LTS
Fully updated (sudo apt update && sudo apt full-upgrade
)
This answer seemed to be the most promising to get NVENC working. Its series of commands is:
sudo apt update
sudo apt remove '^nvidia'
sudo apt autoremove
sudo apt install nvidia-driver-???
sudo reboot
Where ???
is presumably the latest at the moment. Tab completion at the time of this writing gives:
aaron@aaron-ubuntustudio-m6800:~$ sudo apt install nvidia-driver-
nvidia-driver-390 nvidia-driver-435 nvidia-driver-450-server nvidia-driver-465 nvidia-driver-510 nvidia-driver-515-server nvidia-driver-525-open
nvidia-driver-418 nvidia-driver-440 nvidia-driver-455 nvidia-driver-470 nvidia-driver-510-server nvidia-driver-520
nvidia-driver-418-server nvidia-driver-440-server nvidia-driver-460 nvidia-driver-470-server nvidia-driver-515 nvidia-driver-520-open
nvidia-driver-430 nvidia-driver-450 nvidia-driver-460-server nvidia-driver-495 nvidia-driver-515-open nvidia-driver-525
aaron@aaron-ubuntustudio-m6800:~$ sudo apt install nvidia-driver-
Tried the 525 driver first, following the instructions above. Instead of a GUI desktop, it appeared to hang on the text errors saying that this GPU isn't supported. Max supported version is 470.
Okay. After some googling to figure out how to get a command prompt out of that (Ctrl+Alt+F3), I used the command history to go through that process again and choose the 470 driver. That got me the desktop, but only on the external monitors. It didn't recognize the laptop screen anymore.
Incrementally stepped down through every single non-server version - same process - looking for the latest one to support the laptop screen. Only 390 did.
Looking closer, everything above that - 418 and up - seemed to depend on everything later than itself up to 470, and so I think I always got 470 regardless. Unless I chose 390, and then I got that.
So it appears that (without some trickery at least) I have to use 390 in order for the laptop screen to work.
Meanwhile, ffmpeg doesn't seem to support NVENC on anything less than 418/470. (whatever I actually got when I installed the 418 package)
On 390:
aaron@aaron-ubuntustudio-m6800:~$ nvidia-smi
Wed Dec 21 14:20:57 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.157 Driver Version: 390.157 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Quadro K5100M Off | 00000000:01:00.0 On | N/A |
| N/A 57C P0 24W / N/A | 295MiB / 8110MiB | 1% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1654 G /usr/lib/xorg/Xorg 195MiB |
| 0 2043 G /usr/bin/kwin_x11 78MiB |
| 0 2107 G /usr/bin/plasmashell 16MiB |
+-----------------------------------------------------------------------------+
aaron@aaron-ubuntustudio-m6800:~$ ffmpeg -i Radioactive.mp4 -c:v h264_nvenc output.mp4
ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Radioactive.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
title : Radioactive
artist : EZ Wolf
date : 20141121
encoder : Lavf58.76.100
comment : https://www.youtube.com/watch?v=uhfbForokYk
description : Fun little project with Masada!
: German users: please use this link to watch it:
: https://vimeo.com/112515413
synopsis : Fun little project with Masada!
: German users: please use this link to watch it:
: https://vimeo.com/112515413
Duration: 00:02:58.72, start: 0.000000, bitrate: 4773 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 4640 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
vendor_id : [0][0][0][0]
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_nvenc))
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[h264_nvenc @ 0x557f2ebb8300] Driver does not support the required nvenc API version. Required: 11.1 Found: 8.1
[h264_nvenc @ 0x557f2ebb8300] The minimum required Nvidia driver for nvenc is (unknown) or newer
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
[aac @ 0x557f2ebbcc40] Qavg: 15980.515
[aac @ 0x557f2ebbcc40] 2 frames left in the queue on closing
Conversion failed!
aaron@aaron-ubuntustudio-m6800:~$ rm output.mp4
aaron@aaron-ubuntustudio-m6800:~$
On 418/470:
aaron@aaron-ubuntustudio-m6800:~$ nvidia-smi
Wed Dec 21 14:08:18 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.161.03 Driver Version: 470.161.03 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Quadro K5100M Off | 00000000:01:00.0 On | N/A |
| N/A 51C P8 6W / N/A | 162MiB / 8110MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1611 G /usr/lib/xorg/Xorg 100MiB |
| 0 N/A N/A 1865 G /usr/bin/kwin_x11 38MiB |
| 0 N/A N/A 1941 G /usr/bin/plasmashell 17MiB |
+-----------------------------------------------------------------------------+
aaron@aaron-ubuntustudio-m6800:~$ ffmpeg -i Radioactive.mp4 -c:v h264_nvenc output.mp4
ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Radioactive.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
title : Radioactive
artist : EZ Wolf
date : 20141121
encoder : Lavf58.76.100
comment : https://www.youtube.com/watch?v=uhfbForokYk
description : Fun little project with Masada!
: German users: please use this link to watch it:
: https://vimeo.com/112515413
synopsis : Fun little project with Masada!
: German users: please use this link to watch it:
: https://vimeo.com/112515413
Duration: 00:02:58.72, start: 0.000000, bitrate: 4773 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 4640 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
vendor_id : [0][0][0][0]
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_nvenc))
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
Output #0, mp4, to 'output.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
title : Radioactive
artist : EZ Wolf
date : 20141121
synopsis : Fun little project with Masada!
: German users: please use this link to watch it:
: https://vimeo.com/112515413
comment : https://www.youtube.com/watch?v=uhfbForokYk
description : Fun little project with Masada!
: German users: please use this link to watch it:
: https://vimeo.com/112515413
encoder : Lavf58.76.100
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 2000 kb/s, 25 fps, 12800 tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
encoder : Lavc58.134.100 h264_nvenc
Side data:
cpb: bitrate max/min/avg: 0/0/2000000 buffer size: 4000000 vbv_delay: N/A
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
vendor_id : [0][0][0][0]
encoder : Lavc58.134.100 aac
frame= 4467 fps= 69 q=28.0 Lsize= 43837kB time=00:02:58.73 bitrate=2009.3kbits/s speed=2.77x
video:40918kB audio:2801kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.268805%
[aac @ 0x560c12875c40] Qavg: 315.715
aaron@aaron-ubuntustudio-m6800:~$ rm output.mp4
aaron@aaron-ubuntustudio-m6800:~$
My ffmpeg command is based on this, then pared down to use the defaults instead of specifying things that are now deprecated:
https://trac.ffmpeg.org/wiki/HWAccelIntro#NVENC
So it seems that I can have EITHER the laptop screen OR hardware video encoding, depending on which driver I choose, but not both. At least not easily. Can someone walk me through how to get both?
Maybe then I can get rid of this error popup in OBS, AND still have a useful rig: