Hi All,
Just wanted to append my recent experience with this issue and some details about my environment -- hopefully it will help work towards the permanent resolution of this issue:
Windows 10 LTSB2016 (1607), fully patched including Feb2019 updates
Horizon 7.6.0, non-persistent pools (refresh after logoff)
Horizon Clients 3.5.2, 4.2.0, and later (up to current)
AppVolumes 2.14.2.11
UEM 9.5.0.832, running in Group Policy mode, some DirectFlex applications enabled
Mix of both 10Zig and Dell Wyse Thin Clients (300+ clients, various models)
Before any troubleshooting, we experienced the following symptoms:
- Users with NO AppVolumes AppStacks attached, with or without UEM profile information, are able to use USB Redirection normally and as expected
- "USB Initializing" is displayed in the Horizon toolbar during the logon process, and switches to showing a list of available devices once the logon cycle finishes and the desktop is displayed
- Users with some AppVolumes AppStacks attached, with or without UEM profile information, are able to use USB Redirection normally and as expected
- "USB Initializing" is displayed in the Horizon toolbar during the logon process, and switches to showing a list of available devices once the logon cycle finishes and the desktop is displayed
- Users with some other AppVolumes AppStacks attached, with or without UEM profile information, are not able to use USB Redirection after logon
- "USB Initializing" is displayed in the Horizon toolbar during the logon process, but switches to "USB Redirection is not available for this desktop" once the logon cycle finishes and desktop is displayed
- Disconnecting and Reconnecting to the desktop (immediately after the logon cycle finishes) resolves the issue, and a list of available device is displayed in the Horizon Toolbar
Before troubleshooting the issue, I had assumed that the fault was with Exclusions listed (or not listed) in the AppStack's snapvol.cfg. My initial assumption was that some Group Policy based settings were being reverted\overwritten by the AppStack. In the past we have created some AppStacks using Domain Joined computers, so maybe some policy settings had become embedded in the stack. However, after inspecting the snapvol.cfg, it appears that all proper Exclusions exist to keep Group Policy related items out of the stack. Searching elsewhere for answers, I stumbled upon this thread. I am not using Horizon Smart Policies within UEM in any capacity, nor do I have any near-term plans to do so, so I figured that disabling the Smart Policies would be an easy test.
I implemented BOTH the 'HorizonLogic' AND 'UemFlags' registry keys per the other posts in this thread -- and the issue is resolved! I am not sure which key correctly resolved the issue, however I don't see any harm in leaving them both set for the time being.
We now see the following behavior at logon:
- Users, with or without any AppVolumes AppStacks attached, with or without UEM profile information, are able to use USB Redirection normally and as expected
- Available USB Devices are IMMEDIATELY listed and shown as attached during the logon process -- no more 'USB Initializing' in the Horizon Toolbar
- After the logon cycle finishes and the desktop is displayed, Horizon Toolbar shows 'USB Unavailable' for about 5-10 seconds, then comes back to the list of available USB Devices again. Users do not need to disconnect\reconnect to their session in order to map devices
It does seem that a mix of AppVolumes\UEM\Horizon Agent interplay is happening here, where potentially some critical registry key is being virtualized inappropriately by the AppStack and UEM and\or Horizon Agent cannot perform the relevant queries required to perform USB Redirection decisions during the logon cycle. However rather than futz with all my snapvol.cfg files to determine the missing exclusion (we have many AppStacks built), this global disablement of Smart Policies was the easier way to resolve the issue.
EDIT: It appears that the above keys did not fully resolve the issue in all scenarios. After some more troubleshooting, it appears that original poster was on the correct track: Some AppStacks have virtualized the Registry Keys under "HKLM\Software\VMware, Inc.\Vmware UEM\SessionData". Having these Keys virtualized precludes the 'UemState'=DONE Key from being recognized properly during session creation. I can see in the snapvol.cfg that "exclude_registry=\REGISTRY\MACHINE\SOFTWARE\VMware" is now commented-out (prefixed with #), and a secondary entry for "exclude_registry=\REGISTRY\MACHINE\SOFTWARE\VMware, Inc.\VMware VDM" has been created beneath it. It looks like some AppVolumes update likely changed this key -- I wonder what would have been the reasoning for this? I can't imagine why I would want to capture any of the settings in "HKLM\Software\VMware, Inc." into an AppStack, although I'm sure it's necessary depending on the VMware product being installed into the AppStack. I am working now to exclude & remove these Registry Trees from my (many) existing AppStacks and templates -- if removing the keys does not fully resolve the issue I will report back. I will also be looking to revert my previous workarounds after these changes, since I realize they may not be necessary in my configuration.