Windows 10 VCI V4 Driver Speed Issue

Hello

We use your USB-to-Can V2 adapters and other IXXAT CAN solutions in our products which comprises various custom electronics boards that all communicate on bus and interface with custom software we write using your SDK for .NET. We have an application that is currently .NET Framework 4.8 that was written many years ago and is battle tested. It transfers a hex file over CAN to custom boards that have a bootloader that takes in the file and upgrades the firmware. The software is all done in-house and is used to interface with our hardware. We use the software internally and also supply production versions to our customers.


The issue is at some point earlier this year (2021) the software has had an unexplained slowdown in writing files to the target devices but only on Windows 10. I will outline some of my testing:

.NET Framework 4.8 x86 VB Windows Forms App. Simple one page.
Nuget <package id="Ixxat.Vci4.StrongName" version="4.0.436" targetFramework="net48" />

Windows 10 Pro 1.0.19073

  • Average time to send the file 5min 20sec
  • Average time to send can packets per row 4.2sec

Windows 7 Pro 6.1.7601 SP1

  • Average time to send the file 60sec
  • Average time to send can packets per row 0.6sec

Test File 403kB
USB-TO-CAN USED : HW447227, HW495229, HW37992
VCI 4 versions tested: 4.0.939.0 and 4.0.793.0


Variants .NET app | w10(793) w10(939) w7(793) w7(939)
1.1.1 x86 ---------> SLOW ---- SLOW ---- FAST ---- FAST
1.2.5 x86 ---------> SLOW ---- SLOW ---- FAST ---- FAST
1.2.7 x86 ---------> SLOW ---- SLOW ---- FAST ---- FAST


We happened to have the older driver installer 4.0.793.0 around since we bundle it with some of our installers. I tried other variations of Debug and Release and x64(not working since somewhere it is defaulting to the 32bit dll of vcinet).
My suspicions:

  1. Windows 10 Update has changed something wrt the how the driver interact with the system.
  2. Windows 10 Update USB speed ?? I tested some but not likely
  3. Windows 10 .NET CLR change
  4. Update Changes how Win 10 interacts with 32bit code/drivers

I am getting the end of what I can test include many not shown. Internally we are doing some limiting because of firmware/hardware limitations but the change in speed happened without any software releases. The program has bee consistent on speed since it was developed. I know there have been many under-the-hood updates to windows 10 in preparation of Windows 11 and .NET 6 releasing but its just a guess. Also having access to older driver versions to test would be helpful.

I would like some advice on attempting to build for x64 or AnyCPU. It builds and runs but I get an exception when connecting as it is using the 32bit dll. This software was grandfathered to me and we have other apps that do use the 64bit version so this must be an implementation or build configuration problem or I need to upgrade to .NET core. I am looking at the documentation but any quick advice would be appreciated.

Side issue: On testing 4.0.939.0 versus 4.0.793.0 on windows7SP1 the windows detection of the USB devices became very unstable with the newer version. I was able to get it to work sometimes but once a device failed for a given USB port it would no longer detect the device at all. I seems windows update was thinking it was something else and trying to install a driver from the internet. Once I changed back it detected the device correctly with windows updating.

Last questions. Is there a newer version of the SDK available or about to be or Nuget packages I may try? I would assume there is a Windows 11 rc a some point?

Hi Jeff,

Looking this over I think it would be best to open a case on support.hms-networks.com. This will allow us to pull in the Ixxat support team and get input from the developers on this. Can you open a case or i can pull your info and copy this post over.

Deryck,

If you could that would be great! Thank you.

Jeff

Hi Deryck,

have the identical problem here.
Could I can have the solution as well, please?
Best regards,

FYI

It turns out my original problem was my fault (and partly Microsoft’s). The code had an unnecessary thread delay within a tight loop of 2ms. My assumption is that there has been some windows changes to thread.delay() where it is much slower to spool up many consecutive delays at a time. Removal of this delay when running on Windows 10/11 completely removed the issue. Windows 7 and earlier versions of Windows 10 it made no difference and ran quickly. So you may want to take a look at your read or data processing loops just in case it is cause.

Jeff

Hi @jeff.boyd,

Thank you for sharing this! I have been seeing a lot of USB issues lately (not just with IXXAT products, but in general) and suspected there was a change in Windows causing this. I will forward this to the developers and see if this is something that can be fixed. I appreciate you letting us know!

Kyle

No problem. This was a super annoying to figure out and I only found it by accident. On the topic of USB, the new USB-to-Can V2 Hardware version 1.5(printed on back) are not as stable as previous versions. We don’t have very many but if you don’t interact with them right they crash the driver as you can hear windows remove and install the device driver. It happens on slow computers and all versions of windows7,10,11. I have got it to work in most cases. It seems if you close the VCI device and then immediately open again for something else it kills it somehow. In this case a few milliseconds of async delay seems to cure it! Really noticed it on Pentium silver chips as they are quite limited. I think the device isn’t disposed before I try and connect again… Just guessing though.