obs studio nvenc encoding with nv-sglrun need a bit of help

I'm trying to get obs studio working with nvenc encoding on my dell xps 15 2019 using nv-sglrun,
which should be possible according to this post on bugs.freebsd.org

"At the moment there are no native FreeBSD versions of libcuda.so/libnvidia-encode.so/libnvcuvid.so, so to actually use NVENC we need to load the Linux binaries for those libs with the help of emulators/libc6-shim and the `nv-sglrun` script from that port. Something like this:"

sudo pkg install nvidia-driver linux-nvidia-libs libc6-shim obs-studio

run nv-sglrun and obs

nv-sglrun obs

but I keep getting this error

Code:
ld-elf.so.1: Cannot open "/usr/lib/librt.so.1"

I have all the nvidia drivers installed, linux enabled,
and ffmpeg has nvenc enabled

The issue seems to be the linux libraries path isn't being searched or something like that. I don't have a LIBRARY_PATH set or anything else related set as variable. After a couple of days of research and trying different things, I'm completely stuck and could do with a gentle nudge or hard kick in the right direction. I have only been back on FreeBSD for 2 weeks after a 3 year absence so I may be a bit ring rusty, I bought a dell XPS 15 2019 and was running ubuntu/fedora on it until 2 weeks go. But I have now managed to get it working with FreeBSD 14 running wayland and want to get obs studio working with nvenvc so I can make some FreeBSD videos. If anyone has a little time to help out that would be great and then hopefully I can write a how to guide and video about getting obs studio working with nvenc encoding.

I tried to output as much info as possible on my setup, hope its not too much info mods :)

nvidia-smi output

Here's the output of nvidia-smi which is some chromium running with

chrome --enable-features=Vulkan --use-vulkan --ozone-platform=wayland

CUDA isn't listed

Code:
Thu Dec 14 21:16:21 2023     
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.104.05             Driver Version: 535.104.05   CUDA Version: N/A      |
|-----------------------------------------+----------------------+----------------------+
| 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  NVIDIA GeForce GTX 1650        Off | 00000000:01:00.0 Off |                  N/A |
| N/A   46C    P8               1W /  50W |      2MiB /  4096MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
                                                                                       
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A      5337      G   ...232,262144 --enable-features=Vulkan        1MiB |
+---------------------------------------------------------------------------------------+

nv-sglrun nvidia-smi

gives this error message

Code:
ld-elf.so.1: Cannot open "/usr/lib/librt.so.1"

lib directory

listing /usr/lib/libsrt*

ls -l /usr/lib/librt*

output

Code:
-r--r--r--  1 root wheel 81646 10 Nov 08:06 /usr/lib/librt.a
lrwxr-xr-x  1 root wheel    20 10 Nov 08:06 /usr/lib/librt.so -> ../../lib/librt.so.1
-r--r--r--  1 root wheel 59192 10 Nov 08:06 /usr/lib/librtld_db.a
lrwxr-xr-x  1 root wheel    15 10 Nov 08:06 /usr/lib/librtld_db.so -> librtld_db.so.2
-r--r--r--  1 root wheel 11600 10 Nov 08:06 /usr/lib/librtld_db.so.2


pkg info ffmpeg

shortened output shows NVENC is on

Code:
NVENC          : on

my fstab with Linux mount points.

Code:
# Device        Mountpoint    FStype    Options        Dump    Pass#
/dev/gpt/efiboot0        /boot/efi    msdosfs    rw        2    2
/dev/nda0p3.eli        none    swap    sw        0    0
# linux
proc                            /proc           procfs  rw      0       0
linprocfs                       /compat/linux/proc    linprocfs    rw    0    0
linsysfs                        /compat/linux/sys    linsysfs    rw    0    0

rc.conf

rc.conf kld_list and linux

Code:
kld_list="nvidia-modeset nvidia-drm linux linux64 i915kms ext2fs"
linux_enable="YES"

nv-sglrun printenv LD_LIBMAP

nv-sglrun printenv LD_LIBMAP

Code:
ld-linux.so.2                            /usr/local/lib/libc6-shim/libc6.so
ld-linux-x86-64.so.2                     /usr/local/lib/libc6-shim/libc6.so
libc.so.6                                /usr/local/lib/libc6-shim/libc6.so
libdl.so.2                               /usr/local/lib/libc6-shim/libc6.so
libm.so.6                                /usr/local/lib/libc6-shim/libc6.so
libpthread.so.0                          /usr/local/lib/libc6-shim/libc6.so
librt.so.1                               /usr/local/lib/libc6-shim/libc6.so
bsd-librt.so.1                           /usr/lib/librt.so.1
libGL.so                                 /compat/linux/usr/lib64/libGLX_nvidia.so.535.104.05
libGL.so.1                               /compat/linux/usr/lib64/libGLX_nvidia.so.535.104.05
libGLX_nvidia.so.0                       /compat/linux/usr/lib64/libGLX_nvidia.so.0
libGLX_nvidia.so.535.104.05              /compat/linux/usr/lib64/libGLX_nvidia.so.535.104.05
libcuda.so                               /compat/linux/usr/lib64/libcuda.so
libcuda.so.1                             /compat/linux/usr/lib64/libcuda.so.1
libcuda.so.535.104.05                    /compat/linux/usr/lib64/libcuda.so.535.104.05
libgl_nvidia                             /compat/linux/usr/lib64/libGLX_nvidia.so.535.104.05
libnvcuvid.so                            /compat/linux/usr/lib64/libnvcuvid.so
libnvcuvid.so.1                          /compat/linux/usr/lib64/libnvcuvid.so.1
libnvcuvid.so.535.104.05                 /compat/linux/usr/lib64/libnvcuvid.so.535.104.05
libnvidia-allocator.so.1                 /compat/linux/usr/lib64/libnvidia-allocator.so.1
libnvidia-allocator.so.535.104.05        /compat/linux/usr/lib64/libnvidia-allocator.so.535.104.05
libnvidia-cfg.so                         /compat/linux/usr/lib64/libnvidia-cfg.so
libnvidia-cfg.so.1                       /compat/linux/usr/lib64/libnvidia-cfg.so.1
libnvidia-cfg.so.535.104.05              /compat/linux/usr/lib64/libnvidia-cfg.so.535.104.05
libnvidia-egl-gbm.so                     /compat/linux/usr/lib64/libnvidia-egl-gbm.so
libnvidia-egl-gbm.so.1                   /compat/linux/usr/lib64/libnvidia-egl-gbm.so.1
libnvidia-egl-gbm.so.1.1.0               /compat/linux/usr/lib64/libnvidia-egl-gbm.so.1.1.0
libnvidia-egl-wayland.so.1               /compat/linux/usr/lib64/libnvidia-egl-wayland.so.1
libnvidia-egl-wayland.so.1.1.11          /compat/linux/usr/lib64/libnvidia-egl-wayland.so.1.1.11
libnvidia-eglcore.so.535.104.05          /compat/linux/usr/lib64/libnvidia-eglcore.so.535.104.05
libnvidia-encode.so                      /compat/linux/usr/lib64/libnvidia-encode.so
libnvidia-encode.so.1                    /compat/linux/usr/lib64/libnvidia-encode.so.1
libnvidia-encode.so.535.104.05           /compat/linux/usr/lib64/libnvidia-encode.so.535.104.05
libnvidia-fbc.so                         /compat/linux/usr/lib64/libnvidia-fbc.so
libnvidia-fbc.so.1                       /compat/linux/usr/lib64/libnvidia-fbc.so.1
libnvidia-fbc.so.535.104.05              /compat/linux/usr/lib64/libnvidia-fbc.so.535.104.05
libnvidia-glcore.so.535.104.05           /compat/linux/usr/lib64/libnvidia-glcore.so.535.104.05
libnvidia-glsi.so.535.104.05             /compat/linux/usr/lib64/libnvidia-glsi.so.535.104.05
libnvidia-glvkspirv.so.535.104.05        /compat/linux/usr/lib64/libnvidia-glvkspirv.so.535.104.05
libnvidia-gtk2.so.535.104.05             /compat/linux/usr/lib64/libnvidia-gtk2.so.535.104.05
libnvidia-gtk3.so.535.104.05             /compat/linux/usr/lib64/libnvidia-gtk3.so.535.104.05
libnvidia-ml.so                          /compat/linux/usr/lib64/libnvidia-ml.so
libnvidia-ml.so.1                        /compat/linux/usr/lib64/libnvidia-ml.so.1
libnvidia-ml.so.535.104.05               /compat/linux/usr/lib64/libnvidia-ml.so.535.104.05
libnvidia-ngx.so.1                       /compat/linux/usr/lib64/libnvidia-ngx.so.1
libnvidia-ngx.so.535.104.05              /compat/linux/usr/lib64/libnvidia-ngx.so.535.104.05
libnvidia-nvvm.so                        /compat/linux/usr/lib64/libnvidia-nvvm.so
libnvidia-nvvm.so.4                      /compat/linux/usr/lib64/libnvidia-nvvm.so.4
libnvidia-nvvm.so.535.104.05             /compat/linux/usr/lib64/libnvidia-nvvm.so.535.104.05
libnvidia-opencl.so.1                    /compat/linux/usr/lib64/libnvidia-opencl.so.1
libnvidia-opencl.so.535.104.05           /compat/linux/usr/lib64/libnvidia-opencl.so.535.104.05
libnvidia-opticalflow.so                 /compat/linux/usr/lib64/libnvidia-opticalflow.so
libnvidia-opticalflow.so.1               /compat/linux/usr/lib64/libnvidia-opticalflow.so.1
libnvidia-opticalflow.so.535.104.05      /compat/linux/usr/lib64/libnvidia-opticalflow.so.535.104.05
libnvidia-ptxjitcompiler.so              /compat/linux/usr/lib64/libnvidia-ptxjitcompiler.so
libnvidia-ptxjitcompiler.so.1            /compat/linux/usr/lib64/libnvidia-ptxjitcompiler.so.1
libnvidia-ptxjitcompiler.so.535.104.05   /compat/linux/usr/lib64/libnvidia-ptxjitcompiler.so.535.104.05
libnvidia-rtcore.so.535.104.05           /compat/linux/usr/lib64/libnvidia-rtcore.so.535.104.05
libnvidia-tls.so.535.104.05              /compat/linux/usr/lib64/libnvidia-tls.so.535.104.05

librt.so recap

running nv-sglrun nvidia-smi

nv-sglrun nvidia-smi

Code:
ld-elf.so.1: Cannot open "/usr/lib/librt.so.1"

nv-sglrun printenv LD_LIBMAP output

Code:
librt.so.1 /usr/local/lib/libc6-shim/libc6.so

listing /usr/lib

Code:
ls -l /usr/lib/librt*

shortened ouput

Code:
lrwxr-xr-x  1 root wheel    20 10 Nov 08:06 /usr/lib/librt.so -> ../../lib/librt.so.1

pkg prime-list of user installed packages

Code:
ImageMagick7
abook
adwaita-qt5
adwaita-qt6
alacritty
apg
aria2
aspell
bat
beadm
cantarell-fonts
chromium
dictd
dnscrypt-proxy2
doas
emacs-devel
en-aspell
fd-find
ffmpeg
firacode
firefox
foreign-cdm
fzf
git
gstreamer1-plugins-opus
hs-pandoc
kanshi
libc6-shim
libnotify
libva-intel-driver
libva-nvidia-driver
libva-utils
libvdpau-va-gl
linux-nvidia-libs
linux-widevine-cdm
mixertui
mpv
mpv-mpris
musicpc
musicpd
mutt
ncmpc
noto-basic
noto-emoji
nvidia-driver
nvidia-drm-515-kmod
nvidia-settings
oath-toolkit
obs-studio
openvpn
pavucontrol
pkg
playerctl
poudriere
qt5-wayland
qt5ct
qt6-wayland
ripgrep
ripgrep-all
seatd
socat
sox
sudo
swayidle
swaylock-effects
tmux
tofi
translate-shell
transmission-gtk
tree-sitter
ts
urlview
virtual_oss
w3m
wayfire
wayfire-plugins-extra
wayland-protocols
wcm
weechat
wev
wf-shell
wget2
wl-clipboard
wlogout
wlrobs
xdg-desktop-portal-wlr
yt-dlp
zsh
zsh-completions
zsh-syntax-highlighting

freebsd dotfiles

root dotfiles dell xps 15 2019

dotfiles dell xps 15 2019

Things I've tried. I've had a look at this post about cuda for some pointers.


which mentions using LD_LIBMAP

Code:
$ env LD_LIBMAP="`nv-sglrun printenv LD_LIBMAP | grep -v libGL`" blender

and this post form vermaden which mentions using /etc/libmap.conf

i tried rediredcting the output of nv-sglrun LD_LIBMAP into a file

nv-sglrun printenv LD_LIBMAP > cuda.conf

and creating a libmap conf file for obs

Code:
[/usr/local/bin/obs]
ld-linux.so.2                            /usr/local/lib/libc6-shim/libc6.so
ld-linux-x86-64.so.2                     /usr/local/lib/libc6-shim/libc6.so
libc.so.6                                /usr/local/lib/libc6-shim/libc6.so
libdl.so.2                               /usr/local/lib/libc6-shim/libc6.so
libm.so.6                                /usr/local/lib/libc6-shim/libc6.so
libpthread.so.0                          /usr/local/lib/libc6-shim/libc6.so
librt.so.1                               /usr/local/lib/libc6-shim/libc6.so
bsd-librt.so.1                           /usr/lib/librt.so.1
libGL.so                                 /compat/linux/usr/lib64/libGLX_nvidia.so.535.104.05
libGL.so.1                               /compat/linux/usr/lib64/libGLX_nvidia.so.535.104.05
libGLX_nvidia.so.0                       /compat/linux/usr/lib64/libGLX_nvidia.so.0
libGLX_nvidia.so.535.104.05              /compat/linux/usr/lib64/libGLX_nvidia.so.535.104.05
libcuda.so                               /compat/linux/usr/lib64/libcuda.so
libcuda.so.1                             /compat/linux/usr/lib64/libcuda.so.1
libcuda.so.535.104.05                    /compat/linux/usr/lib64/libcuda.so.535.104.05
libgl_nvidia                             /compat/linux/usr/lib64/libGLX_nvidia.so.535.104.05
libnvcuvid.so                            /compat/linux/usr/lib64/libnvcuvid.so
libnvcuvid.so.1                          /compat/linux/usr/lib64/libnvcuvid.so.1
libnvcuvid.so.535.104.05                 /compat/linux/usr/lib64/libnvcuvid.so.535.104.05
libnvidia-allocator.so.1                 /compat/linux/usr/lib64/libnvidia-allocator.so.1
libnvidia-allocator.so.535.104.05        /compat/linux/usr/lib64/libnvidia-allocator.so.535.104.05
libnvidia-cfg.so                         /compat/linux/usr/lib64/libnvidia-cfg.so
libnvidia-cfg.so.1                       /compat/linux/usr/lib64/libnvidia-cfg.so.1
libnvidia-cfg.so.535.104.05              /compat/linux/usr/lib64/libnvidia-cfg.so.535.104.05
libnvidia-egl-gbm.so                     /compat/linux/usr/lib64/libnvidia-egl-gbm.so
libnvidia-egl-gbm.so.1                   /compat/linux/usr/lib64/libnvidia-egl-gbm.so.1
libnvidia-egl-gbm.so.1.1.0               /compat/linux/usr/lib64/libnvidia-egl-gbm.so.1.1.0
libnvidia-egl-wayland.so.1               /compat/linux/usr/lib64/libnvidia-egl-wayland.so.1
libnvidia-egl-wayland.so.1.1.11          /compat/linux/usr/lib64/libnvidia-egl-wayland.so.1.1.11
libnvidia-eglcore.so.535.104.05          /compat/linux/usr/lib64/libnvidia-eglcore.so.535.104.05
libnvidia-encode.so                      /compat/linux/usr/lib64/libnvidia-encode.so
libnvidia-encode.so.1                    /compat/linux/usr/lib64/libnvidia-encode.so.1
libnvidia-encode.so.535.104.05           /compat/linux/usr/lib64/libnvidia-encode.so.535.104.05
libnvidia-fbc.so                         /compat/linux/usr/lib64/libnvidia-fbc.so
libnvidia-fbc.so.1                       /compat/linux/usr/lib64/libnvidia-fbc.so.1
libnvidia-fbc.so.535.104.05              /compat/linux/usr/lib64/libnvidia-fbc.so.535.104.05
libnvidia-glcore.so.535.104.05           /compat/linux/usr/lib64/libnvidia-glcore.so.535.104.05
libnvidia-glsi.so.535.104.05             /compat/linux/usr/lib64/libnvidia-glsi.so.535.104.05
libnvidia-glvkspirv.so.535.104.05        /compat/linux/usr/lib64/libnvidia-glvkspirv.so.535.104.05
libnvidia-gtk2.so.535.104.05             /compat/linux/usr/lib64/libnvidia-gtk2.so.535.104.05
libnvidia-gtk3.so.535.104.05             /compat/linux/usr/lib64/libnvidia-gtk3.so.535.104.05
libnvidia-ml.so                          /compat/linux/usr/lib64/libnvidia-ml.so
libnvidia-ml.so.1                        /compat/linux/usr/lib64/libnvidia-ml.so.1
libnvidia-ml.so.535.104.05               /compat/linux/usr/lib64/libnvidia-ml.so.535.104.05
libnvidia-ngx.so.1                       /compat/linux/usr/lib64/libnvidia-ngx.so.1
libnvidia-ngx.so.535.104.05              /compat/linux/usr/lib64/libnvidia-ngx.so.535.104.05
libnvidia-nvvm.so                        /compat/linux/usr/lib64/libnvidia-nvvm.so
libnvidia-nvvm.so.4                      /compat/linux/usr/lib64/libnvidia-nvvm.so.4
libnvidia-nvvm.so.535.104.05             /compat/linux/usr/lib64/libnvidia-nvvm.so.535.104.05
libnvidia-opencl.so.1                    /compat/linux/usr/lib64/libnvidia-opencl.so.1
libnvidia-opencl.so.535.104.05           /compat/linux/usr/lib64/libnvidia-opencl.so.535.104.05
libnvidia-opticalflow.so                 /compat/linux/usr/lib64/libnvidia-opticalflow.so
libnvidia-opticalflow.so.1               /compat/linux/usr/lib64/libnvidia-opticalflow.so.1
libnvidia-opticalflow.so.535.104.05      /compat/linux/usr/lib64/libnvidia-opticalflow.so.535.104.05
libnvidia-ptxjitcompiler.so              /compat/linux/usr/lib64/libnvidia-ptxjitcompiler.so
libnvidia-ptxjitcompiler.so.1            /compat/linux/usr/lib64/libnvidia-ptxjitcompiler.so.1
libnvidia-ptxjitcompiler.so.535.104.05   /compat/linux/usr/lib64/libnvidia-ptxjitcompiler.so.535.104.05
libnvidia-rtcore.so.535.104.05           /compat/linux/usr/lib64/libnvidia-rtcore.so.535.104.05
libnvidia-tls.so.535.104.05              /compat/linux/usr/lib64/libnvidia-tls.so.535.104.05

and then copying the cuda.conf to /usr/local/etc/libmap.d/

sudo cp cuda.conf /usr/local/etc/libmap.d/

That didn't work I just keep getting this error
Code:
ld-elf.so.1: Cannot open "/usr/lib/librt.so.1"
 
i have managed to get cuda to show up in the nvidia-smi output by creating a symlink
from /usr/local/lib/libc6-shim/libc6.so to /usr/lib/librt.so.1

Code:
sudo ln -s /usr/local/lib/libc6-shim/libc6.so /usr/lib/librt.so.1

run nv-slgrun nvidia-smi

Code:
nv-slgrun nvidia-smi

nv-slgrun nvidia-smi output

Code:
Fri Dec 15 20:18:55 2023       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.104.05             Driver Version: 535.104.05   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| 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  NVIDIA GeForce GTX 1650        Off | 00000000:01:00.0 Off |                  N/A |
| N/A   41C    P8               1W /  50W |      0MiB /  4096MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
                                                                                        
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|  No running processes found                                                           |
+---------------------------------------------------------------------------------------+

i tried creating a libmap conf file for nv-slgrun.conf instead of using a symlink

nv-slgrun.conf

Code:
librt.so.1                               /usr/local/lib/libc6-shim/libc6.so

and copying it to /usr/local/etc/libmap.d/

Code:
sudo cp nv-sglrun.conf /usr/local/etc/libmap.d/

but that didnt work

so cuda now shows up in nvidia-smi

but trying to run obs using nv-slgrun like this seg faults

Code:
nv-slgrun obs


Code:
shim init
debug: Attempted path: share/obs/obs-studio/locale/en-US.ini
debug: Attempted path: /usr/local/share/obs/obs-studio/locale/en-US.ini
debug: Attempted path: share/obs/obs-studio/locale.ini
debug: Attempted path: /usr/local/share/obs/obs-studio/locale.ini
debug: Attempted path: share/obs/obs-studio/locale/en-GB.ini
debug: Attempted path: /usr/local/share/obs/obs-studio/locale/en-GB.ini
info: Using preferred locale 'en-GB'
debug: Attempted path: share/obs/obs-studio/themes/Yami.qss
debug: Attempted path: /usr/local/share/obs/obs-studio/themes/Yami.qss
info: Platform: Wayland
info: CPU Name: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
info: CPU Speed: 2600.00MHz
info: Physical Cores: 6, Logical Cores: 12
info: Physical Memory: 15484MB Total, 10046MB Free
info: Kernel Version: FreeBSD 14.0-RELEASE
info: Distribution: FreeBSD "14.0"
info: Session Type: wayland
info: Qt Version: 6.5.3 (runtime), 6.5.3 (compiled)
info: Portable mode: false
info: OBS 29.1.3 (freebsd)
info: ---------------------------------
info: ---------------------------------
info: audio settings reset:
        samples per sec: 48000
        speakers:        2
        max buffering:   960 milliseconds
        buffering type:  dynamically increasing
info: ---------------------------------
info: Initializing OpenGL...
info: Using EGL/Wayland
warning: queue 0x217392ca7390 destroyed while proxies still attached:
  wl_registry@33 still attached
info: Initialized EGL 1.5
[1]    10154 segmentation fault (core dumped)  nv-sglrun obs
 
using a symlink doesnt fix the issue

adding the following code to ~/.config/mpv/mpv.conf

Code:
hwdec=auto

give an error cuda not found in the terminal

here is error i get with nv-slgrun is

Code:
ld-elf.so.1: Cannot open "/usr/lib/librt.so.1"

running nv-sglrun printenv LD_LIBMAP

Code:
nv-sglrun printenv LD_LIBMAP > output

output

Code:
librt.so.1                               /usr/local/lib/libc6-shim/libc6.so
bsd-librt.so.1                           /usr/lib/librt.so.1

seems like the issue is with bsd-librt.so.1 librt.so.1 and libc6.so

looking at the ld-elf.so.1 error and the man page
i see mention of things like LD_LIBRARY_PATH environment variable, origin rpath


still cant work out why /usr/lib/librt.so.1 doesnt exist

running pkg upgrade -f shows

Number of packages to be reinstalled: 487

just wondering if something has got out of sync somewhere along the line

/etc/os-release

NAME=FreeBSD
VERSION="14.0-RELEASE-p3"
VERSION_ID="14.0"
ID=freebsd
ANSI_COLOR="0;31"
PRETTY_NAME="FreeBSD 14.0-RELEASE-p3"
CPE_NAME="cpe:/o:freebsd:freebsd:14.0"
HOME_URL="https://FreeBSD.org/"
BUG_REPORT_URL="https://bugs.FreeBSD.org/"

uname -a
FreeBSD pollux 14.0-RELEASE-p3 FreeBSD 14.0-RELEASE-p3 #0: Mon Dec 11 04:56:01 UTC 2023 root@amd64-builder.daemonology.net:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64

doesnt seem to be a mismatch

looks like using centos maybe the issue and i need to setup ubuntu
 
First, that librt issue is fixed in https://github.com/shkhln/libc6-shim/commit/1a4333055abd778081d71c9c11675afed152c64e. The port wasn't updated for a while after that because I didn't expect to see such late changes in 14, so naturally the fix missed the quarterly branch.

Second, OBS indeed tends to crash with the substituted libGL, thus sh -c 'LD_LIBMAP="`nv-sglrun printenv LD_LIBMAP | grep -v libGL`" obs'.

Third, libc6-shim doesn't really use Linuxulator (syscalls). There are few places where it relies on linprocfs, but that's mostly out of laziness.
 
And, to be clear, I absolutely hated the last tutorial video, so please don't do that again.
which video was that

i wasnt having a go at you or your work
sorry if something i said offended you in some way

i get people who dont like my tutorials so your not the only one
 
which video was that

i wasnt having a go at you or your work
sorry if something i said offended you in some way

i get people who dont like my tutorials so your not the only one
Haters will hate, relax. Get used to this. Keep going, you're doing a great job. So far you weren't proven wrong.
 
i can confirm that the commit work

nvidia nvenc video encoder works with obs studio

im using freebsd 14 p3 on a dell xps 15 2019 with a Nvidia GeForce GTX 1650 graphics card
running wayland with wlroots using wayfire and the nvidia nvenc encoder works with dmabuf as the capture source


obs-nvenc.png



changing /usr/local/bin/with-glibc-shim as per the commit on line 27

you need to enable write access to the file with chmod before you can edit it

Code:
sudo chmod +w /usr/local/bin/with-glibc-shim
sudo vi /usr/local/bin/with-glibc-shim

change line 27 from

Code:
  if libdir_suffix == '' && File.exist?("/usr/librt.so.1")

to

Code:
  if libdir_suffix == '' && File.exist?("/lib/librt.so.1")

run obs

Code:
sh -c 'LD_LIBMAP="`nv-sglrun printenv LD_LIBMAP | grep -v libGL`" obs'

nvenc encoding is now available

run nv-sglrun nvidia-smi

Code:
nv-sglrun nvidia-smi

nvidia-smi out showing cuda

Code:
Sun Dec 17 02:04:01 2023     
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.104.05             Driver Version: 535.104.05   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| 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  NVIDIA GeForce GTX 1650        Off | 00000000:01:00.0 Off |                  N/A |
| N/A   42C    P8               1W /  50W |      0MiB /  4096MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
                                                                                      
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|  No running processes found                                                           |
+---------------------------------------------------------------------------------------+

running nvidia-smi with obs open doesnt show cuda
but does show the running obs process

Code:
nvidia-smi

Code:
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.104.05             Driver Version: 535.104.05   CUDA Version: N/A      |
|-----------------------------------------+----------------------+----------------------+
| 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  NVIDIA GeForce GTX 1650        Off | 00000000:01:00.0 Off |                  N/A |
| N/A   47C    P0              12W /  50W |    162MiB /  4096MiB |      2%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A     41972      C   obs                                         161MiB |
+---------------------------------------------------------------------------------------+

whereas if you run nv-sglrun nvidia-smi it will show cuda but not the running obs process

the only thing i can think that i mentioned in one of the videos is that it might be better to use poudriere to build ports
if that came across the wrong way i apologize

ive usually drunk about a gallon of yorkshire gold tea when i do the videos
and im trying to remember what i did to get something to work

obs desktop entry for your desktop launcher

which will run obs with LD_LIBMAP so that nvenc encoding is available
rather than running the command from the terminal

create a desktop entry called com.obsproject.Studio.desktop
in ~/.local/share/applications/


Code:
vi ~/.local/share/applications/com.obsproject.Studio.desktop

add the following code to com.obsproject.Studio.desktop

Code:
[Desktop Entry]
Version=1.0
Name=OBS
GenericName=Streaming/Recording Software
Comment=Free and Open Source Streaming/Recording Software
Exec=sh -c 'LD_LIBMAP="`nv-sglrun printenv LD_LIBMAP | grep -v libGL`" obs'
Icon=com.obsproject.Studio
Terminal=false
Type=Application
Categories=AudioVideo;Recorder;
StartupNotify=true
StartupWMClass=obs
 
Back
Top