Allowing a microcontroller device to connect to a Citrix XenDesktop instance

4

0

What we're trying to achieve

We wish to connect a microcontroller, Adafruit Circuit Playground Express (CPX), to the USB ports of the thin client and stream data to the virtual machine environment to be read by an application and sent to a server for data collection. This is to be done on all computers in our office.

The environment

System Architectural Diagram

Current Environment:

  • Dell Wyse 5060 series running ThinOS

  • Citrix XenDesktop: Windows 7

Future Environment:

  • Dell Wyse 5060 series running ThinOS

  • Citrix XenDesktop: Windows 10

A solution on the current environment would be preferable, although if that’s not possible and a Windows 10 solution is, we’d love to hear it.

The Adafruit CPX is running CircuitPython, and the app we want to connect to is built using Electron.

The kind of information we want to send is a (pseudo) live stream of sensor information picked up by the CPX, as well as occasional instructive messages from the Electron App to the CPX.

The problem

When plugging the CPX into the thin client, Windows 7 doesn’t register it as connected. Logging into the actual ThinOS however does register the device as connected (VID/PID and name), leading us to believe that the connection isn’t passing through into the XenDesktop instance. It also seems to be device specific, as regular storage USBs connect fine.

What we've tried already

We tried plugging in some other microcontroller devices with different infrastructures, to see if they would connect - and they did, so it seems to be infrastructure specific. The devices we tried are below.

Successful Win7 COM Port Connection

  • Arduino Nano (FTDI Drivers) - ESP32 - (CP2102 USB to UART driver)

  • ATtiny85 - Unanticipated Connection Type (“Other Devices”, expected COM Port)

  • Arduino Leonardo

No Win7 Connection, ThinOS Successful:

  • Adafruit Feather M0

  • Adafruit Circuit Playground Express

All the devices were 10 bit other than the Adafruit microcontrollers, which were 32 bit.

We added a USB device redirection policy for the devices on the Citrix side, but it didn’t appear to change anything.

The thinOS is able to see the VendorID (VID) and ProductID (PID) of all devices we connect and appears to pass them through. With the policies enabled all devices connect, but require drivers installed on the Windows 7 (Citrix). The non-adafruit devices appear in device manager as connected to a COM port. For the 10 bit devices standard drivers are installed and they appear on the COM port and in the arduino IDE.

For the 32 bit devices (CPX and feather) the manufacturer drivers are installed (as required for Windows 7 only) but do not show the devices. We then also tried connecting these devices to a different endpoint - a Windows 10 laptop, and none of them had a successful connection.

It appears to be a driver issue, however we’ve installed the correct drivers and included the USB device redirection policy.

Any suggestions would be really appreciated!

Baptiste Higgs

Posted 2018-07-12T02:20:54.700

Reputation: 43

3

Try these Adafruit Windows Drivers. You may also try this Code.org CSD procedure.

– harrymc – 2018-07-25T08:11:10.200

Answers

2

Given that you've tried the correct drivers and it doesn't appear in the Citrix environment on a non-thin client either, it appears to be a policy issue.
Looking up the device you are attempting to use I see it appears as a disk drive and assuming you are using the device like other microcontrollers you probably are sending data via the serial port (COM port on windows).

There are many policies for device redirection in Citrix, the one you should try is the COM port redirection, and maintain your USB device redirection policy.

As @harrymc pointed out in the comments you can also try the updated drivers.

AidenRay

Posted 2018-07-12T02:20:54.700

Reputation: 86