USB RAW device unable to be used in Bulk Transfer Mode

Updated Apr 5, 2023

Reported In

Hardware

  • USB Cable

Driver

  • NI-VISA

Other

3rd Party USB Device

Issue Details

I use the NI-VISA Driver wizard to make a driver for my device. NI-MAX detects my device, but when I open the VISA test panel it shows "Bulk in Pipe= No Pipe Present" and if I set these values and apply changes it shows an error HEX 0xBFFF003A: Unable to start operation because setup is invalid (due to attributes being set to an inconsistent state).


Solution

Some USB devices have alternate configurations. You can view the configurations of your particular device by using a program such as USBView. 

For example, your USB device might have an alternate setting 0x01 whereas the default is 0x00. This alternate setting has the endpoints (and therefore pipes) you are looking for. Be sure to check your particular device for the proper alternate setting. 

In order to switch the VISA session to a different alternate setting, you need to modify the property VI_ATTR_USB_ALT_SETTING. Unfortunately, this can't be done through a VISA Test Panel and must be done programmatically.

If you are using LabVIEW, see the VISA shipping example found in the NI Example Finder: Hardware Input and Output >> VISA >> USB RAW - Bulk.vi.


The example will need to be modified:

During initialization, a VISA Property Node set to write should be dropped, and the following property selected: USB Settings >> Alternate Setting. Write the proper alternate setting (for example 0x01) to that property.

Depending on which pipes the customer would like to use, they may also have to write to the 'Bulk-In Pipe' or 'Bulk-Out Pipe' properties. The values to write are the 'bEndpointAddress' values in each endpoint descriptor.