I've recently got myself the Siglent SPD3303D PSU. I'm having some trouble making it work properly over USBTMC on Linux.
It appears just fine as a USB device; dmesg says:
[ 1549.407970] usb 1-1.2: new full-speed USB device number 5 using ehci-pci
[ 1549.502781] usb 1-1.2: New USB device found, idVendor=0483, idProduct=7540
[ 1549.502791] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1549.502795] usb 1-1.2: Product: SPD3000 SERIES
[ 1549.502799] usb 1-1.2: Manufacturer: STMicroelectronics
[ 1549.502803] usb 1-1.2: SerialNumber: SPD30CE4140019
It creates a /dev/usbtmc0 device node.
I can control the power supply just fine by blind-writing down that device node. Any changes made this way are reflected on the control panel and outputs of the device:
$ ./usbtmcsh
SCPI> CH1:VOLT 7.5
SCPI> CH1:CURR 0.4
SCPI> OUTP CH1, ON
SCPI>
However, any attempts to read any status information from the PSU all fail:
SCPI> CH1:CURR?
Error reading device - Connection timed out
SCPI> *IDN?
Error reading device - Connection timed out
These all happen after a 5 second timeout. If I load the usbtmc driver module with debugging enabled, I get
$ sudo modprobe usbtmc dyndbg==fpm
$ dmesg -w
...
[ 1885.738006] usbtmc:usbtmc_read: usbtmc 1-1.2:1.0: usb_bulk_msg_in: remaining(8192), count(8192)
[ 1890.739231] usbtmc:usbtmc_read: usbtmc 1-1.2:1.0: usb_bulk_msg: retval(4294967186), done(0), remaining(8192), actual(0)
[ 1890.739244] usbtmc:usbtmc_read: usbtmc 1-1.2:1.0: Unable to read data, error -110
I'd almost be willing to give this up as "it just won't work", except that very very occasionally, I can get a response out of it just fine, but only if it's the very first thing I do after powering it up and plugging it in. About three times ever, I have managed:
$ ./usbtmcsh
SCPI> *IDN?
< Siglent Technologies,SPD3303,SPD30CE4140019,1.01.01.01.06R1,V1.2
Which resulted in:
[ 634.834263] usbtmc:usbtmc_read: usbtmc 1-1.2:1.0: usb_bulk_msg_in: remaining(8192), count(8192)
[ 634.864384] usbtmc:usbtmc_read: usbtmc 1-1.2:1.0: usb_bulk_msg: retval(0), done(0), remaining(8192), actual(80)
[ 634.864396] usbtmc:usbtmc_read: usbtmc 1-1.2:1.0: Bulk-IN header: N_characters(65), bTransAttr(1)
[ 634.864403] usbtmc:usbtmc_read: usbtmc 1-1.2:1.0: Bulk-IN header: remaining(0), buf(0000000000e24d40), buffer(ffff8801eb003800) done(0)
So my question: Has anyone ever managed to get this PSU to work via USBTMC on Linux?
Failing that; does anyone have any technical contacts at Siglent that we might be able to discuss the issue with? This has all the feelings of some minor implementation bug in the PSU's firmware, that could be fixed with a firmware update.