Чтобы уже подключенные к системе устройства пробрасывались в сессию при открытии сессии нужно в /opt/Citrix/ICAClient/config/module.ini в секцию [WFClient] добавить строку
DesktopApplianceMode=True
Кроме того, для того чтобы web-камера пробрасывалась через виртуальные каналы (не Generic USB) в /opt/Citrix/ICAClient/config/module.ini должно быть выставлено:
Multimedia=On
Если девайсы не пробрасываются совсем, а в /var/log/syslog при подключении появляются сообщения типа:
wfica: ctxusb: No such process
Значит не хватает прав и нужно запустить подключение через sudo. Например - просто запустить firefox для доступа к web-интерфейсу так:
sudo firefox
Либо скачивать launch.ica и подсовывать его wfica:
sudo /opt/Citrix/ICAClient/wfica ~/Downloads/launch.ica
https://docs.citrix.com/en-us/xenapp-and-xendesktop/7-6/xad-whats-new/xad-xaxd76-knownissues.html
Этот баг описан:
HDX RealTime Webcams are not supported for these applications: Citrix GoToMeeting when hosted on Server OS Machines with Windows 2012 operating systems. [#346430] GoToMeeting (on any platform) if the webcam is attached after a meeting has started. [#346140] Microsoft Lync 2013 and Adobe Connect with VDAs on Windows 8, Windows 8.1, and Windows 2012 operating systems. [#340784, 348506, 459732] Microsoft Office Communications Server (OCS) video calls if the Webcam is attached after the call is in progress. [#370236] Microsoft Silverlight. This is an intermittent issue. As a workaround, on the user device, enable the legacy codec by adding a DWORD registry key value name EnableDeepcompress_Client at HKEY_CURRENT_USER\Software\Citrix\HdxRealTime and setting it to 0. [#379779] 64-bit video conferencing applications. Video compression for 64-bit applications is not supported. [#366515]
По идее, web-камера должна пробрасываться через виртуальные каналы (не Generic USB), при условии, что в /opt/Citrix/ICAClient/config/module.ini выставлено:
Multimedia=On
Однако, оказалось, что в Windows Server 2012 и Windows 8 это не работает и пробросить камеру можно только Generic USB. При этом, в режиме Generic USB при разрешении 640×480 и 30 кадрах в секунду клиент генерирует трафик в сторону сервера со скоростью 80 Мбит в секунду.
https://www.citrix.com/content/dam/citrix/en_us/documents/downloads/citrix-receiver/citrix-receiver-for-linux-oem-reference-guide-version-133.pdf https://www.citrix.com/content/dam/citrix/en_us/documents/downloads/citrix-receiver/Linux/Citrix_Receiver_for_Linux_OEM_Reference_Guide_13_4.pdf
После установки HDX Real Time Optimization Pack for Linux в каталоге $ICAROOT появляется плагин HDXRTME.so, который и должен пробрасывать камеру, однако при настройках по-умолчанию он этого не делает. Более того. В версии Citrix Receiver 13.3 этот плагин даже не подгружется (судя по strace). В версии Citrix Receiver 13.4 он загружается, однако камера по прежнему не пробрасывается.
В документации Citrix написано как отлаживать этот процесс. нужно заменить файл $/ICAROOT/util/gst_read на скрипт, который будет запускать этот файл с ключом -d. Длеаем так:
cd /opt/Citrix/ICAClient/util/ sudo mv gst_read gst_read.bin sudo nano ./gst_read
Вставляем туда вот что:
#!/bin/bash /opt/Citrix/ICAClient/util/gst_read.bin -d $@ 2>&1 >/tmp/gst_read.log
И делаем его исполняемым.
sudo chmod a+x ./gst_read
В результате логи будут падать в файл /tmp/gst_read.log Кроме того, можно просто попытаться запустить gst_read и посмотреть что он скажет:
/opt/Citrix/ICAClient/util/gst_read.bin -b 20
По идее в результате gst_read должен считать 20 кадров в буфер и показать. У меня сразу возникла ошибка:
/opt/Citrix/ICAClient/util$ ./gst_read.bin -b 20 Failed to create element of type 'v4l2src'
В логах примерно такое:
Enable H264 = 0 debug = 1 num_buffers = 20 height = 288 width = 352 device = /dev/video0 Failed to create element of type 'v4l2src'
Причина, судя по всему, в том, что в комплекте с Ubuntu 16.04 идет gstreamer 1.0, а gst_read пытается использовать gstreamer0.10. Устанавливаем его:
sudo apt-get install gstreamer0.10-alsa gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-pulseaudio gstreamer0.10-tools gstreamer0.10-x libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libx264-148 x264
После этого при запуске:
/opt/Citrix/ICAClient/util/gst_read.bin -d $@ 2>&1 >/tmp/gst_read.log
Открывается окошко и показывает картинку с камеры.
По-умолчанию, конвейер для Citrix Receiver 13.3 с кодеком theora в gstreamer такой:
gst-launch-0.10 v4l2src ! ffmpegcolorspace ! videoscale ! capsfilter ! theoraenc ! appsink