Hello
I am having trouble accessing endpoints of the MCU-LINK Pro (NXP Semiconductors) device using VirtualHere. The symptoms are very unusual: it seems all endpoints from the USB device are acquired, but it does not pass all application data, so it does not fully function. However, the device is fully functional on the host device (where the VH server is running) and also fully functional on the client when connected directly.
I tried running various operation systems Raspbian on RPi4, Ubuntu on x86_x64 and Windows as servers and client on Windows 11. All servers are licensed, so no limitation of device numbers are present. But all combinations exhibit similar behavior.
Actually I am seeing 2 behaviors for various versions of VirtualHere servers.
1. Linux version - rpi4 optimalizations - version 4.8.8, client 6.0.2
After acquiring MCU-LINK all endpoints are visible in device manager. I am able to open both VCOMs, I am able to receive data but not to send. After attempt of sending any data over Putty I receive a window from Putty "Error writting device" and device is disconnected (unacquired)
Ubuntu without optimalizations and Windows server behaves the same
2. RPi server version 4.7.0 - Windows client 6.0.2
After acquiring MCU-LINK all endpoints are visible in device manager. If I wait at least 1 minute from opening VCOM in Putty. I am able to read and write data to device. In case I will be faster with sending data it fails with the exact the same way as previous case.
Here is a log, after unsuccessful write attempts followed by unacquiring device as SURPRISE UNBOUND
Fri Sep 18 07:12:09 2026 LOG_INFO >>> Starting VirtualHere USB Server v4.8.8 (Built: Jul 29 2026, 10:02:08)<<<Fri Sep 18 07:12:09 2026 LOG_INFO Using configuration /usr/sbin/config.iniFri Sep 18 07:12:09 2026 LOG_INFO Server licensed to=1000000039b0b907 max_devices=unlimitedFri Sep 18 07:12:09 2026 LOG_INFO Listening on all network interfaces at TCP port 7575Fri Sep 18 07:12:09 2026 LOG_INFO Found High speed device [2109:3431] "0x2109, USB2.0 Hub" at address 11Fri Sep 18 07:12:09 2026 LOG_INFO Found High speed device [1fc9:0143] "NXP Semiconductors, MCU-LINK Pro (r1EB) CMSIS-DAP V3.172" at address 112Fri Sep 18 07:12:16 2026 LOG_INFO 10.171.65.184 connected as connection 1 (Standard TCP)Fri Sep 18 07:12:20 2026 LOG_INFO Device 112 [1fc9:0143] BOUND to connection 1Fri Sep 18 07:12:21 2026 LOG_INFO Device 112 [1fc9:0143] SURPRISE UNBOUND from connection 1Fri Sep 18 07:12:21 2026 LOG_INFO Unmanaging device 112 [1fc9:0143]Fri Sep 18 07:12:21 2026 LOG_INFO Found High speed device [1fc9:0143] "NXP Semiconductors, MCU-LINK Pro (r1EB) CMSIS-DAP V3.172" at address 112Fri Sep 18 07:13:07 2026 LOG_INFO Device 112 [1fc9:0143] BOUND to connection 1Fri Sep 18 07:13:45 2026 LOG_INFO Device 112 [1fc9:0143] SURPRISE UNBOUND from connection 1Fri Sep 18 07:13:45 2026 LOG_INFO Unmanaging device 112 [1fc9:0143]Fri Sep 18 07:13:46 2026 LOG_INFO Found High speed device [1fc9:0143] "NXP Semiconductors, MCU-LINK Pro (r1EB) CMSIS-DAP V3.172" at address 112Fri Sep 18 07:14:26 2026 LOG_INFO Device 112 [1fc9:0143] BOUND to connection 1Fri Sep 18 07:14:45 2026 LOG_INFO Device 112 [1fc9:0143] SURPRISE UNBOUND from connection 1Fri Sep 18 07:14:45 2026 LOG_INFO Unmanaging device 112 [1fc9:0143]Fri Sep 18 07:14:46 2026 LOG_INFO Found High speed device [1fc9:0143] "NXP Semiconductors, MCU-LINK Pro (r1EB) CMSIS-DAP V3.172" at address 112Fri Sep 18 07:14:52 2026 LOG_INFO Device 112 [1fc9:0143] BOUND to connection 1Fri Sep 18 07:15:52 2026 LOG_INFO Device 112 [1fc9:0143] SURPRISE UNBOUND from connection 1Fri Sep 18 07:15:52 2026 LOG_INFO Unmanaging device 112 [1fc9:0143]Fri Sep 18 07:15:53 2026 LOG_INFO Found High speed device [1fc9:0143] "NXP Semiconductors, MCU-LINK Pro (r1EB) CMSIS-DAP V3.172" at address 112Fri Sep 18 07:15:56 2026 LOG_INFO Connection 1 successfully removed (reason:server shutdown)Fri Sep 18 07:15:56 2026 LOG_INFO Unmanaging device 11 [2109:3431]Fri Sep 18 07:15:57 2026 LOG_INFO Unmanaging device 112 [1fc9:0143]Fri Sep 18 07:15:58 2026 LOG_INFO >>> Shutdown <<<
Here is a verbose log from lsusb from RPi4 maybe it will be helpful.
Bus 001 Device 041: ID 1fc9:0143 NXP Semiconductors MCU-LINK Pro (r1EB) CMSIS-DAP V3.172Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 idVendor 0x1fc9 NXP Semiconductors idProduct 0x0143 bcdDevice 3.23 iManufacturer 1 NXP Semiconductors iProduct 2 MCU-LINK Pro (r1EB) CMSIS-DAP V3.172 iSerial 3 BSYGVSPVIX15T bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x00c4 bNumInterfaces 6 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 2 MCU-LINK Pro (r1EB) CMSIS-DAP V3.172 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 8 MCU-LINK NXP TRACE HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.00 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 34 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 2 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x000a 1x 10 bytes bInterval 3 Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 2 bInterfaceCount 2 bFunctionClass 2 Communications bFunctionSubClass 2 Abstract (modem) bFunctionProtocol 0 iFunction 5 VCOM Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 2 Abstract (modem) bInterfaceProtocol 0 iInterface 5 VCOM CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x01 call management bDataInterface 3 CDC ACM: bmCapabilities 0x02 line coding and serial state CDC Union: bMasterInterface 2 bSlaveInterface 3 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0010 1x 16 bytes bInterval 16 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 5 VCOM Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 4 bInterfaceCount 2 bFunctionClass 2 Communications bFunctionSubClass 2 Abstract (modem) bFunctionProtocol 0 iFunction 10 VCOM2 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 4 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 2 Abstract (modem) bInterfaceProtocol 0 iInterface 10 VCOM2 CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x01 call management bDataInterface 5 CDC ACM: bmCapabilities 0x02 line coding and serial state CDC Union: bMasterInterface 4 bSlaveInterface 5 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x86 EP 6 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0010 1x 16 bytes bInterval 16 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 5 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 10 VCOM2 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0Device Status: 0x0000 (Bus Powered)
I am planning to redesing our company automation to include VirtualHere sw as part of automation next year due to VH is running on multiple platforms, but this is a blocker for us.
Petr
.
SURPRISE UNBOUNDusually means that the firmware inside the USB device has rebooted (e.g probably a crash/watchdog).I think what might be happening is the MCU-LINK firmware doesnt like the secondary reset and set configuration when its redirected via virtualhere.
Can you do this on the VirtualHere Server
systemctl stop virtualhere
edit the /usr/local/etc/virtualhere/config.ini file and add the line
ClaimPorts=1then save and reboot the pi. When it reboots, try it again via virtualhere. If it still fails then right click on the device in the Virtualhere Client and select Custom Event Handler and paste in this
onReset.$VENDOR_ID$.$PRODUCT_ID$=then press OK. Then unplug/replug the MCU-LINK then try again via virtualhere.
Let me know how it goes.
.
Thank you for the quick response.
For the combination of RPi/Linux server with Windows client, this helped a lot. However, after opening the Virtual COM port, I need to wait at least 10 seconds before performing any write operation, otherwise the device is unacquired. If the 10-second interval is maintained, everything works well.
For the Windows server with Windows client combination, there is still an issue and the device is not working properly.
2026-09-18 11:11:36 INFO :>>> Starting VirtualHere USB Server v4.8.8 (Built: Jul 29 2026, 11:36:14)<<<2026-09-18 11:11:36 INFO :Server licensed to=HSQMNW3 max_devices=unlimited2026-09-18 11:11:36 INFO :Windows USB mode2026-09-18 11:11:36 INFO :Listening on all network interfaces at TCP port 7575 (IPv6 dual-stack)2026-09-18 11:11:36 INFO :Found Full speed device [1366:0105] "SEGGER, J-Link" at address 32026-09-18 11:11:36 INFO :Found High speed device [1fc9:0143] "NXP Semiconductors, MCU-LINK Pro (r1EB) CMSIS-DAP V3.172" at address 42026-09-18 11:11:49 INFO :10.18.48.3 connected as connection 1 (Standard TCP)2026-09-18 11:11:54 INFO :Device 4 [1fc9:0143] BOUND to connection 12026-09-18 11:11:55 INFO :Executed empty hook for onReset.1fc9.01432026-09-18 11:11:55 INFO :Device 4 [1fc9:0143] SURPRISE UNBOUND from connection 12026-09-18 11:11:55 INFO :Unmanaging device 4 [1fc9:0143]2026-09-18 11:11:55 INFO :Found High speed device [1fc9:0143] "NXP Semiconductors, MCU-LINK Pro (r1EB) CMSIS-DAP V3.172" at address 42026-09-18 11:11:57 INFO :Device 4 [1fc9:0143] BOUND to connection 12026-09-18 11:11:57 INFO :Executed empty hook for onReset.1fc9.01432026-09-18 11:12:23 WARNING :Error 31 from GetOverlappedResult for ep 0x86 on device 4, A device attached to the system is not functioning. (0x0000001f)2026-09-18 11:12:23 WARNING :Error 31 from GetOverlappedResult for ep 0x86 on device 4, A device attached to the system is not functioning. (0x0000001f)2026-09-18 11:12:23 WARNING :Error 31 from GetOverlappedResult for ep 0x86 on device 4, A device attached to the system is not functioning. (0x0000001f)2026-09-18 11:12:23 WARNING :Error 31 from GetOverlappedResult for ep 0x86 on device 4, A device attached to the system is not functioning. (0x0000001f)2026-09-18 11:12:23 WARNING :Error 31 from GetOverlappedResult for ep 0x86 on device 4, A device attached to the system is not functioning. (0x0000001f)2026-09-18 11:12:23 WARNING :Error 31 from GetOverlappedResult for ep 0x86 on device 4, A device attached to the system is not functioning. (0x0000001f)2026-09-18 11:12:23 WARNING :Error 31 from GetOverlappedResult for ep 0x86 on device 4, A device attached to the system is not functioning. (0x0000001f)2026-09-18 11:12:23 WARNING :Error 31 from GetOverlappedResult for ep 0x86 on device 4, A device attached to the system is not functioning. (0x0000001f)2026-09-18 11:12:23 WARNING :Error 31 from GetOverlappedResult for ep 0x86 on device 4, A device attached to the system is not functioning. (0x0000001f)2026-09-18 11:12:23 WARNING :Error 31 from GetOverlappedResult for ep 0x86 on device 4, A device attached to the system is not functioning. (0x0000001f)2026-09-18 11:12:23 WARNING :Error 31 from GetOverlappedResult for ep 0x86 on device 4, A device attached to the system is not functioning. (0x0000001f)2026-09-18 11:12:23 WARNING :Error 31 from GetOverlappedResult for ep 0x86 on device 4, A device attached to the system is not functioning. (0x0000001f)Petr
.
OK looks like it doesnt like the duplicate setConfiguration on windows. Try this:
In the virtualhere client when you see the MCU-LINK connected to the windows server, right click on the MCU-Link and select Custom Event Handler... and paste in this:
onSetConfiguration.$VENDOR_ID$.$PRODUCT_ID$=then press ok. Unplug and replug the MCU-LINK then try it again via virtualhere.
(The 10second delay is strange, does it also take 10sec on the windows server after you make that change above?)
.
Using onSetConfiguration.$VENDOR_ID$.$PRODUCT_ID$ in the event handler removes "Error 31 from GetOverlappedResult", so the Windows server logs seem to be clean without any hiccups. However VCOM is not functional even if I wait more than 10s.