Проблемы с пробросом устройств в Citrix Receiver 13.3 под Ubuntu 16.04

Чтобы уже подключенные к системе устройства пробрасывались в сессию при открытии сессии нужно в /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
Enter your comment. Wiki syntax is allowed:
 
  • citrix/citrix_usb_redirection_troubleshooting.txt
  • Last modified: 2019/02/11 09:13
  • by 127.0.0.1