Citrix workspace fails to detect USB devices

I finally got it working! :rocket:

The icaclient package in AUR is broken. Citrix does not publish an Arch version and the package seems to be missing necessary adjustments for USB support. Someone posted a patch for it (GitHub - itsjfx/aur-icaclient) but it was never merged. They updated the package today to version 25 but failed to include the patch, again.

I went through the install script in the patch and made the necessary adjustments manually. I had actually tried that before, along with countless other things, but missed the chmod parameters on the copy commands. Turns out they were there for a reason.

So this is what is necessary to get USB support to work on Arch/Garuda:

  1. Install icaclient with necessary dependencies.
  2. Go to $ICAROOT a.k.a. /opt/Citrix/ICAClient/
  3. Copy the following files from ./usb to ./ and run chmod on them:
    VDGUSB.DLL
    ctx_usb_isactive
    ctxusbd → chmod 500
    usb.conf → chmod 444
    ctxusb → chmod 4555
  4. Edit ./config/module.ini:
    In line VirtualDriver= add GenericUSB at the end
    In section [ICA 3.0] add entry GenericUSB=on
    At the end of the file add [GenericUSB] with entry DriverName = VDGUSB.DLL
  5. Edit ./usb.conf: Change DENY to ALLOW on the USB devices/types you need – or replace the entire file content with ALLOW: if you’re frustrated enough.
  6. Edit /usr/lib/systemd/system/ctxusbd.service:
    Update ExecStart to ExecStart=/opt/Citrix/ICAClient/ctxusbd
  7. Make sure the update to the service is applied, for example by overkilling it with:
    sudo systemctl disable ctxusbd
    sudo systemctl enable --now ctxusbd
    reboot

Within the Citrix session, bring up the menu and go to Preferences → Devices. Then plugin the device and click Refresh. If everything works, the device should now show up and you can check the box to redirect it to the session.

3 Likes