NiceDCV and Rocky 9.3 Info

Given the state of HP Anywhere and Rocky 9.3, I moved to get NiceDCV working on one of my physical machines. It’s been a bit of a grind and getting X to start cleanly in a GPU enabled console session has been painful. Today I got it all working without dongles and without connected monitors. In the interest of helping others, I wanted to add here what worked for me.

First, I made a binary edid of the monitor I wanted to use. In my case an EIZO CG279X. Once that was generated I put it in /etc/X11 to be referenced by the xorg. X utilized the edid to correctly set the remote monitor, but was flaking out setting a screen res. Soooo, secondly, I added a metamodes option on the default screen defining a startup res of 2560x1440. Since I didn’t define any real modes for that res and timing that definition is basically garbage, X tosses it out but then it queries the GPU and the EDID and everything starts to work. I did set it up for dual monitors, but I’m currently only using a single GUI display.

Of course if you want to use a dongle or connected monitor you don’t have to go through this. You can plugin in a EDID DP dongle and you’re off to the races quite easily. This is for those that don’t want to do that which is a little silly perhaps.

What I can say is that pen pressure is working perfectly as well as all hotkeys as far as I can tell. Sound works but most importantly the tablet feel, for me is FAR superior to Teradici. Cost-wise [edit] 150 USD for a perpetual license isn’t a bad upshot.

Anyway, here’s my xorg.conf:

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 535.161.07


Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    InputDevice    "DCV Stylus Pen"
    InputDevice    "DCV Stylus Eraser"
    InputDevice    "DCV Touchscreen"
EndSection

Section "Files"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/input/mice"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "InputDevice"
    Identifier     "DCV Stylus Pen"
    Driver         "dcvinput"
EndSection

Section "InputDevice"
    Identifier     "DCV Stylus Eraser"
    Driver         "dcvinput"
EndSection

Section "InputDevice"
    Identifier     "DCV Touchscreen"
    Driver         "dcvinput"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "NVIDIA RTX A5000"
    BusID          "PCI:97:0:0"
#   Option         "ConnectedMonitor" "DFP-0, DFP-1"
    Option         "ConnectedMonitor" "DFP-0"
#   Option         "CustomEDID" "DFP-0:/etc/X11/CG279X_EDID_v02.bin; DFP-1:/etc/X11/CG279X_EDID_v02.bin"
    Option         "CustomEDID" "DFP-0:/etc/X11/CG279X_EDID_v02.bin"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    Option         "metamodes" "2560_1440 +0+0"
    EndSubSection
EndSection

3 Likes

What client platform are you using?

In my testing, using Ubuntu 22.04 for the client, I had to switch the OS from using PulseAudio to PipeWire or else I got audio crackling.

Good-
I also found the performance to be much better than Teradici.

  1. Full screen playback was much smoother.
  2. Tablet felt native.
  3. Bandwidth automatically adjusts to connection.
  4. Panning big batch setups was smooth
  5. True Hybrid. Local GUI stays actives. No need to switch in or out of remote mode.
  6. Untested but should be able to render Burn. When in Teradici mode, this does not work

Bad-

  1. Installation and configuration is complex
  2. Window sizes are fixed to a few static resolutions. Unlink Teradici which adapts to whatever the window size is.
    a. We use the Dell 40" logically split 80/20. DCV doesn’t like the /20 screen resolution which is (w)1280x(h)2160
  3. Client is minimal. You have to type in all parameters every time. No remembering connections.

Also, according to this chart, DCV Standard is $90 bucks/year or $150 perpetual. You only need the “Pro” version if you are doing GPU Sharing.

2 Likes

Using Mac and PC clients. Regarding the connection on the client, you can save the client connection as a clickable file on the client-side that has everything except password saved.

There’s also a browser based client [edit] which you can choose to install so you can just point Chrome at the server and drive it without a client installed at all. In that instance you can bookmark hosts but you still have to enter your creds.

Thanks for the correction on the license cost too man.

are you installing more than just the nice-dcv-server RPM to get the web based functionality?

In the nice-dcv-el9-aarch64.tgz archive it’s this guy:
nice-dcv-web-viewer-2023.1.16388-1.el9.x86_64.rpm

…one extra rpm to install.

Took a quick look. You can easily create a dcv connection bookmark file (this is on Mac OS). The contents look like this:

[connect]
host=*host*
port=8443
user=*user*
password=*pass*
weburlpath=

[version]
format=1.0

…save it as something_maningful.dcv and then double click and it connects directly. If you don’t want a password in there just remove that line and the users prompted for the pass.

1 Like

Yeah… I just have to account the other people here, who are used to single click Teradici connections presented in a nice app window.

But the browser thing might be the way to go. I haven’t played with it.

This might be a better way to do the non console trick. from the link.


Section "Device"
    Identifier "DummyDevice"
    Driver "dummy"
    Option "UseEDID" "false"
    VideoRam 512000
EndSection

Section "Monitor"
    Identifier "DummyMonitor"
    HorizSync   5.0 - 1000.0
    VertRefresh 5.0 - 200.0
    Option "ReducedBlanking"
EndSection

Section "Screen"
    Identifier "DummyScreen"
    Device "DummyDevice"
    Monitor "DummyMonitor"
    DefaultDepth 24
    SubSection "Display"
        Viewport 0 0
        Depth 24
        Virtual 4096 2160
    EndSubSection
EndSection

The X-Dummy install? It’s meant for machines without a GPU so I didn’t go down that road but I’m down to try it.

more so the Xorg entries which don’t seem to require a EDID binary blob, and allows you to create arbitrary Virtual resolution.

I don’t think you would need to install the VirtualDisplay rpm.

1 Like

You can generate EDID blobs (if necessary) using the NVIDIA Settings tool:

1 Like

good to know.

You can avoid the EDID route and have access to most/all resolutions by adding this option to the screen section:

    Option         "ModeValidation" "NoDFPNativeResolutionCheck,NoVirtualSizeCheck,NoEdidMaxPClkCheck,NoMaxPClkCheck,NoHorizSyncCheck,NoVertRefreshCheck,NoWidthAlignmentCheck,AllowNonEdidModes"

Add this to the GPU/device section to tell the GPU/xorg its connected. Choose whatever output your GPU has:

    Option         "ConnectedMonitor" "DFP-2"

For reference, here is my xorg.conf. I don’t have anything physically connected to my GPU.

# nvidia-settings: X configuration file generated by nvidia-settings

Section "ServerLayout"
    Identifier     "Layout0"
    Screen	0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    InputDevice  "DCV Stylus Pen"
    InputDevice  "DCV Stylus Eraser"
    InputDevice  "DCV Touchscreen"
    Option         "Xinerama" "0"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/input/mice"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    HorizSync       18.0 - 18.0
    VertRefresh     24.0 - 60.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName	   "NVIDIA RTX A5000"
    Option         "ConnectedMonitor" "DFP-2"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "DFP-2"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    Option         "ModeValidation" "NoDFPNativeResolutionCheck,NoVirtualSizeCheck,NoMaxPClkCheck,NoHorizSyncCheck,NoVertRefreshCheck,NoWidthAlignmentCheck,AllowNonEdidModes"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "InputDevice"
  Identifier "DCV Stylus Pen"
  Driver "dcvinput"
EndSection

Section "InputDevice"
  Identifier "DCV Stylus Eraser"
  Driver "dcvinput"
EndSection

Section "InputDevice"
  Identifier "DCV Touchscreen"
  Driver "dcvinput"
EndSection
1 Like

That worked a treat. Thanks Taylor.

…literally might be the longest option-string ever.

1 Like

I’m starting to think that DCV is a better choice than Teradici. Still have not switched over for production, but apart from a few configuration quirks, it just feels a little bit smoother, and much cheaper.

1 Like

Agreed. For me at least on the interaction-side like we talked about the pen is soooo much better. Audio is the weak-link perhaps but it’s still workable. I dig the browser client as an option and the image quality is damn nice.

Like I mentioned at dinner, with the Arch stuff it’s all DCV so that was the large motivator in changing but so far I think it’s the right call. Oh, and works with Rocky 9.3.

What issues are you having with the Audio? 2 channel works out of the box. Just needed to switch to Pipewire on Ubuntu for the native app. Didn’t try the web client yet.

I’m not really having any audio issues here on the mac… just referring back to what you had mentioned earlier.

Oh…yeah, I had been doing the optional configuration for 5.1 channel audio, but then realized it was totally un-neccesary since all the end points just have stereo speakers. So that works with no additional config.

On the Ubuntu clients just install Pipewire and no more crackling audio.

sudo apt install pipewire-media-session- wireplumber pipewire-audio-client-libraries

I know you guys got the no monitor connected situation handled, but here is some official guidance from #1 DCV reseller.