Issues with using NXP - MCU-LINK Pro

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.ini
Fri Sep 18 07:12:09 2026 LOG_INFO    Server licensed to=1000000039b0b907 max_devices=unlimited
Fri Sep 18 07:12:09 2026 LOG_INFO    Listening on all network interfaces at TCP port 7575
Fri Sep 18 07:12:09 2026 LOG_INFO    Found High speed device [2109:3431] "0x2109, USB2.0 Hub" at address 11
Fri 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 112
Fri 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 1
Fri Sep 18 07:12:21 2026 LOG_INFO    Device 112 [1fc9:0143] SURPRISE UNBOUND from connection 1
Fri 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 112
Fri Sep 18 07:13:07 2026 LOG_INFO    Device 112 [1fc9:0143] BOUND to connection 1
Fri Sep 18 07:13:45 2026 LOG_INFO    Device 112 [1fc9:0143] SURPRISE UNBOUND from connection 1
Fri 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 112
Fri Sep 18 07:14:26 2026 LOG_INFO    Device 112 [1fc9:0143] BOUND to connection 1
Fri Sep 18 07:14:45 2026 LOG_INFO    Device 112 [1fc9:0143] SURPRISE UNBOUND from connection 1
Fri 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 112
Fri Sep 18 07:14:52 2026 LOG_INFO    Device 112 [1fc9:0143] BOUND to connection 1
Fri Sep 18 07:15:52 2026 LOG_INFO    Device 112 [1fc9:0143] SURPRISE UNBOUND from connection 1
Fri 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 112
Fri 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.172
Device 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               0
Device 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

#2

SURPRISE UNBOUND usually 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=1

then 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.

 

 

#3

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=unlimited
2026-09-18 11:11:36 INFO :Windows USB mode
2026-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 3
2026-09-18 11:11:36 INFO :Found High speed device [1fc9:0143] "NXP Semiconductors, MCU-LINK Pro (r1EB) CMSIS-DAP V3.172" at address 4
2026-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 1
2026-09-18 11:11:55 INFO :Executed empty hook for onReset.1fc9.0143
2026-09-18 11:11:55 INFO :Device 4 [1fc9:0143] SURPRISE UNBOUND from connection 1
2026-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 4
2026-09-18 11:11:57 INFO :Device 4 [1fc9:0143] BOUND to connection 1
2026-09-18 11:11:57 INFO :Executed empty hook for onReset.1fc9.0143
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)
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

 

#4

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?)

 

#5

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.