Native USB and isolation

Hi,

Recently I have been working on a design with the Due, and the device I am designing needs USB isolation. For the isolation part I am using an AdUM 4160 USB isolation evaluation board, this board is supposed to be 'invisible' to the devices. The Arduino Due and the USB isolator have their own 5V supply(a 5V powerbank).

However, I am having some problems with the native USB port on the Arduino Due: the device is not properly recognized. When I switch to the programming port or when I connect the native USB port directly to my PC, there are no problems and the device is properly recognized.

The datasheet of the evaluation board states the USB isolator works in low and full speed mode, and High speed handshakes are blocked, so both the device and the PC will be forced to use low or full speed mode. Could that be the problem?(Although the sam3x datasheet states the processor supports low/full/high speed?)

Has someone an idea what the cause of the problem is? I tried looking on the forum, but I could not find anyone with the same problem.

Currently I am using Windows 7, and when I connect the native USB through the USB isolator, the error the device manager gives is 'device could not start'.

Regards,

Some more information:

When I connect the Due, with the AduM4160 evaluation board between the native Usb and my Pc, The computer recognizes a Bossa Programming Port, and states "The device is working properly". When I try to upload a sketch, the program returns a board not found errror. When I reset the Due, the programming port is gone and the computer recognizes the Arduino Due as an Arduino DueUSB Composite Device, but with the earlier stated problem "device could not start".

Hi again,

Today, I repaired Ubuntu on my Pc, and tried the same setup. It seems to work: The Due is recognised(but only when I use an USB 2.0 port), and I can upload sketches through the native USB with the usb isolator in place. However, after an upload, I have to manually reset the Due, and wait some time before it is recognised again by the Arduino IDE. It seems the problem lies with Windows?(or its driver?).

Since the setup is supposed to work independently of the OS, and the project deadline is almost due, I will convert my code to use the programming port, and hope it does not introduce to much lag.

I have been having trouble with a USB isolator on a arduino DUE native interface and I have read a few posts with similar problems. I have made a change to the software and now have it working. I wanted to post these changes and see if someone knowledgeable about the USB drivers could explain why this works.

In my case I could get the isolator to work on a windows xp and windows 10 systems but never on a windows 7 system. The USB interface would always work in the bootloader mode on all systems.

In the CDC.cpp file I changed the following line of code in the _cdcInterface declaration:

// CDC data interface
D_INTERFACE(CDC_DATA_INTERFACE,2,CDC_DATA_INTERFACE_CLASS,0,0),
D_ENDPOINT(USB_ENDPOINT_OUT(CDC_ENDPOINT_OUT),USB_ENDPOINT_TYPE_BULK,512,0),
D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_IN ),USB_ENDPOINT_TYPE_BULK,512,0)

To:

// CDC data interface
D_INTERFACE(CDC_DATA_INTERFACE,2,CDC_DATA_INTERFACE_CLASS,0,0),
D_ENDPOINT(USB_ENDPOINT_OUT(CDC_ENDPOINT_OUT),USB_ENDPOINT_TYPE_BULK,64,0),
D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_IN ),USB_ENDPOINT_TYPE_BULK,64,0)

I did this because I found a _cdcOtherInterface with this change and made this change as an experiment. To my surprise it worked. I do have a lot of testing to do to make sure there are no problems but so far it seems to be working fine.

--Gordon