AnsweredAssumed Answered

Problems with USBTMC interface of B2901A SMU

Question asked by simon.reinhardt on Nov 16, 2018

I have trouble with the USBTMC interface of a new B2901A SMU.


Specifically, I am using the USB::TMC driver, based on libusb [1].


The same code works properly with other instruments, like the Keysight34470A DMM, Agilent34410A, and YokogawaGS200.


The USBTMC interface of the B2901A is properly identified by the driver, but sending DEV_DEP_MSG_OUT command messages,  like "*CLS" or "*IDN?" results in a timeout. This is the debug log produced by libusb library when sending a "*CLS" DEV_DEP_MSG_OUT command message:


[ 1.129470] [00004317] libusb: debug [libusb_alloc_transfer] transfer 0x7fdedfb159e0
[ 1.129482] [00004317] libusb: debug [libusb_submit_transfer] transfer 0x7fdedfb159e0
[ 1.129489] [00004317] libusb: debug [add_to_flying_list] arm timerfd for timeout in 5000ms (first in line)
[ 1.129497] [00004317] libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with length 20
[ 1.129511] [00004317] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 1.129518] [00004317] libusb: debug [handle_events] poll() 3 fds with timeout in 60000ms
[ 6.129526] [00004317] libusb: debug [handle_events] poll() returned 1
[ 6.129584] [00004317] libusb: debug [handle_events] timerfd triggered
[ 6.129599] [00004317] libusb: debug [libusb_cancel_transfer] transfer 0x7fdedfb159e0
[ 6.129907] [00004317] libusb: debug [disarm_timerfd]
[ 6.129954] [00004317] libusb: debug [handle_events] poll() 3 fds with timeout in 0ms
[ 6.129965] [00004317] libusb: debug [handle_events] poll() returned 1
[ 6.129975] [00004317] libusb: debug [reap_for_handle] urb type=3 status=-2 transferred=0
[ 6.129980] [00004317] libusb: debug [handle_bulk_completion] handling completion status -2 of bulk urb 1/1
[ 6.129986] [00004317] libusb: debug [handle_bulk_completion] abnormal reap: urb status -2
[ 6.129991] [00004317] libusb: debug [handle_bulk_completion] abnormal reap: last URB handled, reporting
[ 6.129996] [00004317] libusb: debug [usbi_handle_transfer_cancellation] detected timeout cancellation
[ 6.130001] [00004317] libusb: debug [disarm_timerfd]
[ 6.130006] [00004317] libusb: debug [usbi_handle_transfer_completion] transfer 0x7fdedfb159e0 has callback 0x7fdedaf9dff0
[ 6.130012] [00004317] libusb: debug [sync_transfer_cb] actual_length=0
[ 6.130019] [00004317] libusb: debug [libusb_free_transfer] transfer 0x7fdedfb159e0

 


Why should the USBTMC interface of the B2901A behave different than the Agilent/Keysight DMMs?

 

Please let me know if you need more information. I will check whether other open source implementations of USBTMC like the usbtmc kernel driver, or python-usbtmc, and pyvisa-py are also affected.

 


Best regards,

 

Simon Reinhardt

 

 

 

 

 

[1] USB::TMC - Perl interface to USB Test & Measurement (USBTMC) backend. - metacpan.org 

Outcomes