VMware Horizon Community
mvogt1
Enthusiast
Enthusiast

usb redirection on RHEL 7.4

Hello,

today I tried to get USB redirection working on a RHEL 7.4 VM, with NVidia Grid.

But without success so far.

I downgrade the kernel to 7.3 and used the usb_vhci_iocifc,usb_vhci_hcd kernel drivers.

I see many log files in "debug" mode, "everything" is doing "something"

but the vmware-view gui only shows "USB Initializing".

The same vmware-view works (and redirects the smartcard reader) when connecting to a "Windows 10" instead.

The problem is: I don't see any errors, so the debug log on the RHEL VM is not really helpfull.

How can I figure out, what's wrong with my setup?

regards,

Martin

Reply
0 Kudos
10 Replies
mvogt1
Enthusiast
Enthusiast

First interesting finding:

- When using the windows Horizon view client the USB devices are forwarded, they are listed in the top menu bar.

- Except my smartcard reader, which is not forwarded (which is the only one I'm really interested in)

Reply
0 Kudos
bluefirestorm
Champion
Champion

Smartcard reader devices are made shareable by default between VMs in Workstation Pro, Fusion and ESXi VMs. It creates a virtual CCID device in the VM (if it is successful).

Some smartcard readers are not successfully shared and the device does not show up in the USB connectable device list.

You could add the following lines to the vmx configuration file of the VM; or /etc/vmware/config if you want all VMs to behave that way without having to go through every single VM vmx configuration file.

usb.generic.allowCCID = "TRUE"

usb.ccid.disable = "TRUE"

Reply
0 Kudos
jtrutwin
Contributor
Contributor

I'm having the same problems (also RHEL 7.4).  Did you have any luck?  Followed the steps in the Linux setup guide but it doesn't work.

Reply
0 Kudos
mvogt1
Enthusiast
Enthusiast

Ok, smartcards seem to be handled differently from other USB devices.

For my understanding, this work as follows in Horizon agent:

pcscd speaks with smartcardreades and uses a socket for communication with pcsclite, a library which gives access to smardcard readers.

The socket is used to activate pcscd.

The Linux Horizon Agent comes with its own pcscd in version 1.7.4 (rather old, and has stability problems).

If you hook the pcscd into the socket you can forward the calls over the network.

The protocol over the socket has its own major,minor version numbering (between daemon

and libpcsclite) ans should be tested, but its seem not to be the case.

If I fix the wrong access to the socket, from pcsclite in RHEL 7.4 I can see that pcscd, startet with -d -f (debug, foreground)

reacts to the first reader commands (EXTABLISH_CONTEXT, for example).

Most likely this is send over the wire and then some component crashes because libpcsclite in RHEL is not version 1.7.4.

Reply
0 Kudos
mvogt1
Enthusiast
Enthusiast

When using libpcsclite from fedora core 16 (1.7.4) I can use my smartcard from the windows client.

(And fixing some socket path with some symbolic links)

But not from a RHEL 7.4 workstation.

Most likely because of the the same problem, that the pcscd daemon on the workstation

(client from which I run vmware-view) is incompatible with the 1.7.4 protocol.

Reply
0 Kudos
mvogt1
Enthusiast
Enthusiast

I tried to replace pcscd and libpcsclite on RHEL 7.4 with the ones from fc16, but I was not able to get the

linux vmware-view client to access the smartcard.

On the server side I can see an ESTABLISH_CONTEXT and that's it, although it should have worked.

(in therory)

But maybe there are other issues as well.

==> I would say, that vmware should release a new pcscd, compatible with RHEL 7.4.

Reply
0 Kudos
bluefirestorm
Champion
Champion

Have you tried the vmx configuration change at all? You already spent hours looking at the debug log surely spending a few more minutes to try the vmx configuration should not hurt.

usb.generic.allowCCID = "TRUE"

usb.ccid.disable = "TRUE"

Certainly the difference in behaviour in smartcard card readers is because of the creation of the virtual CCID device. Perhaps what you are seeing in the debug inside the RHEL 7.4 VM is the attempt to connect to a virtual CCID and failing.

For a Windows 10 VM, a virtual CCID (shareable) will appear in Device Manager as a "Microsoft CCID device" instead of "<some vendor name> <some CCID model>"; and it would be using the Microsoft CCID driver instead of the CCID vendor driver.

Reply
0 Kudos
txiong
VMware Employee
VMware Employee

1. For the "USB Initializing", please double check client version and broker version. LinuxVDI's USB Redirection requires:

    - client 4.5 or later

    - broker 7.2 or later

2. Smartcard redirection.

    Techinically, Horizon has two solution to redirect a smartcard to remote desktop:

      - Smartcard redirection, which can share the smartcard between remote desktops and client at same time. LinuxVDI's smartcard redirection only supports RHEL 6.x now.

      - USB Redirection, which will "unplug" the smartcard reader from client host and "plug" it into remote desktop. This option is disabled by defaut.

Reply
0 Kudos
mvogt1
Enthusiast
Enthusiast

>For the "USB Initializing", please double check client version and broker version. LinuxVDI's USB Redirection requires:

>client 4.5 or later

I checked the installed version:

- linux client 4.6 from Help->About

>broker 7.2 or later

Broker is 7.4, the current version.

So it should already work with the Linux client.

Windows clients works, Linux client is "USB initializing.."

Reply
0 Kudos
txiong
VMware Employee
VMware Employee

Would you please help to collect and upload the Client/Broker/Agent DCT bundle? Thanks.

Reply
0 Kudos