Microcosm Logo

Dinkey & Dinkey Pro/FD Knowledge Base
Browse By Category:
 
Look Up Error Number:
 
Search:
 

Glossary   |   Contact Us


Dongles in a Virtual Machine or Container Environment

Views: 1582
Rating: 181
Rate It:

In the vast majority of cases Dinkey Dongles will work correctly under a Virtual Machine environment and with docker containers.

In this article we will give some guidance on how to use Dinkey Dongles with some of the most popular virtual machines and also list some restrictions of using these environments.

The first section is general advice. The next section gives specific details for each different brand of VM.

Claim the Dinkey Dongle device in the VM

You must allow the virtual machine to access USB devices and to "claim" the Dinkey Dongle device. The dongle can be attached to the host or the client computer. Only one VM (or the host) can access a dongle at any one time. For docker container you must allow access to the USB dongle on the host. In this case many containers can access the same device (but this can see create its own problems - see later).

Restrictions

  1. If you are using an FD Plus or FD Net dongle then our API will not return the drive letter or mount name of the flash disk. This is because virtual machines do not preserve the USB device hierarchy. You must set the DONT_RETURN_FD_DRIVE flag otherwise the protection check will fail with error 578.
  2. There may be some restructions when using the "lock dongle to user's computer" option or when using Temporary Software Keys or Demo Software Keys.
  3. In some rare cases we have experienced intermittent problems communicating with the dongle. However, these cases are becoming rarer as USB support is improved.

VMWare

If you have to use a virtual machine setup we would recommend you use VMWare because we have encountered the least amount of problems with this setup.

Setup:

  1. If your client OS is Linux then you need to make sure you add USB support: Select the VM and then select the "Summary" tab. Choose Commands | Edit Setting | Hardware
    Then click Add, then USB Controller, and then choose the appropriate controller type for the OS.
  2. You need to capture our Dinkey Dongle device. Ensure the dongle is plugged in (to either the client PC or the ESXi host). In the vSphere client, right click the virtual machine you want to add the dongle to and choose "edit Settings". In the Hardware tab, click "Add". Select "USB Device" from the list of device types and click "Next". Choose "HID dongle" from the list of devices and click "Next" then "Finish". VMWare will then connect the dongle to the guest operating system.

Problems:

We no longer experience problems with VMWare but in the past we had reports of the following problems:

  1. On very rare occasions the client virtual machine will not capture the Dinkey Dongle. In this case restarting the virtual machine fixed the problem.
  2. We had a few reports of our dongle not working if the USB controller is USB 3 (normally this is OK). In these cases using a USB 2 controller fixed the problem.

Notes:

  1. There are no restrictions with software keys or locking the dongle to the computer.
  2. We have noticed no differences if you use VMWare vSphere ESXi (bare metal) or whether you use a host OS.

VirtualBox

Setup:

  1. You need to make sure you install USB support (you do not need USB 2 support, but it is OK to install it).
  2. In Settings, choose USB. Tick "Enable USB Controller" and add device "OEM HID Dongle" (and appropriate flash disk if using Dinkey FD) to the list of "USB Device Filters". In the virtual box the HID Dongle device should have a tick by it.

Problems:

No current problems but in the past we have had reports of following problems:

  1. The client OS failing to capture the Dinkey Dongle devices.
  2. It is possible to very occassionally receive errors communicating with the dongle - such as 486/33 or 466/33 or 461... If this is the case we would recommend checking the dongle again on failure - only abort your program on two successive dongle check failures.
  3. The protected program crashing while accessing the dongle on old versions of the VM (see Note 1 below)

Notes:

  1. There are no restrictions with software keys or locking the dongle to the computer.
  2. On versions of VirtualBox prior to approximately 4.1.31, a 32-bit protection check running on a 64-bit guest OS could intermittently crash if Hardware Virtualisation was enabled in the BIOS of the computer running VirtualBox. Disabling Hardware Virtualisation solved the problem. This was apparently a bug in VirtualBox and versions from 4.1.31 on are unaffected.

Microsoft Hyper-V

Versions of Hyper-V before Windows Server 2012 R2 do not support USB controllers. Therefore no USB devices are recognised (except for the keyboard and mouse).

Hyper-V for Windows Server 2012 R2 claims to support USB-passthrough (in enhanced session mode). However, support for USB devices appears to be very limited and none of our devices are recognised by the virtual machine.

A work-around is to use a Remote Desktop Connection or a USB-over-network solution that can share USB ports across the network.

Virtual PC

Some limited USB exists but USB HID devices are not supported. Therefore Dinkey Pro and Dinkey FD Plus/Net devices are not supported. However, Dinkey FD Lite dongles are supported as are our original Dinkey 1S/2/Net dongles.

Parallels

No reported problems.

Other notes

In most cases now the host computer supports Hardware Virtualisation and so the speed of the protection check is broadly comparable with running natively. However, with some old VMs this is not the case and so a protection check can be a lot slower in a virtual machine environment.

Docker Containers

Containers are similar to Virtual Machines except that they virtualise the necessary environment for a particular application rather than an entire Operating System.

The main problem we have found is that we need to use a system-wide Mutex to control access to the dongle from multiple processes. This Mutex would need to work across all the containers (that need to access the dongle) on a host. If this is not done then you will receive occasional errors accessing the dongle if you access them from more than one container.

To do this under Linux or Mac you must mount the host /tmp into all the containers which run programs needing to access the dongle.

Under Windows this does not appear to be possible. In this case we do not recommend that more than one docker container accesses the dongle at any one time or that a container shares access to the dongle with the host.

The "lock dongle to user's computer" feature will not work.

Temporary Software Keys and Demo Software Keys will only work until the container is restarted.

More Help

If this article did not help you to solve your problem, please use the menu at the top of the page to browse or search more articles, or to contact our support team.

Others in this Category
  
articleUsing Application Verifier with My Protected Software Causes Problems
 
articleCompatibility with Microsoft Enhanced Mitigation Experience Toolkit (EMET)
 
articleCompatibility with Veriato Investigator
 

© 2020 Microcosm Ltd.

Valid XHTML 1.0 Valid CSS 2.0