I finally got it working!
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:
- Install
icaclient
with necessary dependencies. - Go to $ICAROOT a.k.a.
/opt/Citrix/ICAClient/
- Copy the following files from
./usb
to./
and runchmod
on them:
VDGUSB.DLL
ctx_usb_isactive
ctxusbd →chmod
500
usb.conf →chmod
444
ctxusb →chmod
4555 - Edit
./config/module.ini
:
In lineVirtualDriver=
addGenericUSB
at the end
In section[ICA 3.0]
add entryGenericUSB=on
At the end of the file add[GenericUSB]
with entryDriverName = VDGUSB.DLL
- Edit
./usb.conf
: Change DENY to ALLOW on the USB devices/types you need – or replace the entire file content withALLOW:
if you’re frustrated enough. - Edit
/usr/lib/systemd/system/ctxusbd.service
:
Update ExecStart toExecStart=/opt/Citrix/ICAClient/ctxusbd
- 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.