Hello,
i have some problems by installing linux-gpib for ubuntu 20.04 LTS to drive an spectrum analyzer by a GPIB-USB-HS interface.
I followed the instructions of both INSTALL files in linux-gpib-kernel and linux-gpib-user.
I tried everything available on the network and nothing seems to work.
The errors are always:
gpib_config
failed to bring board online
failed to configure board
main: Connection timed out
and in ibtest
ibtest
Do you wish to open a (d)evice or an interface (b)oard?
(you probably want to open a device): d
enter primary gpib address for device you wish to open [0-30]: 0
trying to open pad = 0 on /dev/gpib0 ...
libgpib: IBOPENDEV ioctl failed
libgpib: error in is_cic()!
ibdev error
ibsta = 0x8000 < ERR >
iberr= 0
EDVR 0: OS error
ibcntl = 22
Abandon (core dumped)
the following are the actual conf in my pc.
uname -r
5.4.0-45-generic
lsusb
Bus 002 Device 002: ID 8087:8000 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 3923:709b National Instruments Corp. GPIB-USB-HS
Bus 003 Device 003: ID 0403:6011 Future Technology Devices International, Ltd FT4232H Quad HS USB-UART/FIFO IC
Bus 003 Device 006: ID 0461:4d51 Primax Electronics, Ltd 0Y357C PMX-MMOCZUL (B) [Dell Laser Mouse]
Bus 003 Device 005: ID 1267:0103 Logic3 / SpectraVideo plc G-720 Keyboard
Bus 003 Device 002: ID 0403:6011 Future Technology Devices International, Ltd FT4232H Quad HS USB-UART/FIFO IC
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
lsmod
Module Size Used by
ni_usb_gpib 40960 0
gpib_common 45056 1 ni_usb_gpib
more /etc/gpib.conf
/ This section configures the configurable driver characteristics
* for an interface board, such as board address, and interrupt level.
* minor = 0 configures /dev/gpib0, minor = 1 configures /dev/gpib1, etc.
/
interface {
minor = 0 / board index, minor = 0 uses /dev/gpib0, minor = 1 uses /dev/gpib1, etc. /
board_type = "ni_usb_b" / type of interface board being used /
name = "violet" / optional name, allows you to get a board descriptor using ibfind() /
pad = 0 / primary address of interface /
sad = 0 / secondary address of interface /
timeout = T3s / timeout for commands /
eos = 0x0a /* EOS Byte, 0xa is newline and 0xd is carriage return */ set-reos = yes /* Terminate read if EOS */ set-bin = no /* Compare EOS 8-bit */ set-xeos = no /* Assert EOI whenever EOS byte is sent */ set-eot = yes /* Assert EOI with last byte on writes */
/ settings for boards that lack plug-n-play capability /
base = 0 / Base io ADDRESS /
irq = 0 / Interrupt request level /
dma = 0 / DMA channel (zero disables) /
Ok, now try under windows by opening an interactive control on your adapter (so it is using the board descriptor for your adapter, not a device descriptor for your scope). Try to reproduce what I did below. If this works under windows, I'd like to see a usb sniff of what it is doing during the ibwrt. If it doesn't work then the problem must be your adapter.
Interactive Control
Copyright 2007 National Instruments Corporation
All rights reserved.
Type 'help' for help or 'q' to quit.
GPIB0: ibsic
[0120] ( cmpl cic )
GPIB0: ibcmd "\x40\x3f\x21"
[0138] ( cmpl cic atn tacs )
count: 3
GPIB0: ibgts 0
[0128] ( cmpl cic tacs )
GPIB0: ibwrt "*idn?"
[0128] ( cmpl cic tacs )
count: 5
GPIB0: ibcmd "\x41\x3f\x20"
[0134] ( cmpl cic atn lacs )
count: 3
GPIB0: ibgts 0
[0124] ( cmpl cic lacs )
GPIB0: ibrd 100
[2124] ( end cmpl cic lacs )
count: 81
54 45 4b 54 52 4f 4e 49 T E K T R O N I
58 2c 54 44 53 20 33 30 X , T D S 3 0
35 34 2c 30 2c 43 46 3a 5 4 , 0 , C F :
39 31 2e 31 43 54 20 46 9 1 . 1 C T F
56 3a 76 33 2e 33 39 20 V : v 3 . 3 9
54 44 53 33 47 56 3a 76 T D S 3 G V : v
31 2e 30 30 20 54 44 53 1 . 0 0 T D S
33 54 52 47 3a 76 31 2e 3 T R G : v 1 .
30 30 20 54 44 53 33 46 0 0 T D S 3 F
46 54 3a 76 31 2e 30 30 F T : v 1 . 0 0
0a .
GPIB0:
So, I did what you asked and in Windows I could get an answer out of the device. The only difference with what you did is that, in order to successfully communicate with the device, I had to avoid the
ibgts 0
command. Here is the output of the GPIB Interactive Control. I have also attached the Wireshark USB sniff packages. The device address is1.35.*
.Ah, ibgts is the problem! ibgts should NOT cause the adapter to drop out
of TACS/LACS. Linux-gpib automatically does a ibgts before a board level
write as a convenience. Under windows, my NI gpib-usb-hs+ requires the
ibgts or the following ibwrt will fail with EADR.
So, your adapter is broken (could be a counterfeit?). Contact NI and show
them your interactive control log where ibgts causes the adapter to drop
out of TACS/LACS.
I am also attaching the output of the Windows USB Device Viewer.
Last edit: Giorgio Pintaudi 2021-09-10
I bought the adapter on ebay and as you suggest I suspect it is counterfeit even if they claimed it to be original. I am trying now to get a refund. Thank you.
Could someone with a known genuine NI GPIB-USB-HS send the output of "lsusb -v -d 3923:" for it so we can see how to perhaps identify clones in future.
Thanks,
-Dave
Definitely a real one, has been successfully in use with LinuxGPIB for a couple of years:
Thanks Andreas. There are a bunch of differences in the endpoint descriptors even though the product codes are the same . As we said before the only suspicious entry in the syslog seems to be this:
Although Giorio's board could be genuine it seems very weird that the polling interval (bInterval) in the interrupt endpoint descriptor (EP 1 IN) should be zero. In Andreas' adaptor it is 2.
Giorgio
Andreas
cheers,
-Dave
I am a bit confused. Can a counterfeit USB device have the same product ID of a real one? If not, does it means that my adapter is simply broken?
If they were trying to make a counterfeit that actually functions, it would
have to have the same product id as the original. NI has in the past
attempted to detect counterfeit gpib-usb-hs adapters in their drivers, so
they are probably a real thing. We don't know for sure whether your
adapter is fake or just defective.
I understand this thread is 3 months old with no obvious solution (I have tried all the suggestions in this thread (with similar results) and NI Max works just fine with this adapter and the instruments) but I am having a similar issue with a ni_usb_hs adapter. on Linux. Any further ideas? I will try looking at the code and strace out what is going on. I would prefer not to use winddoze. Since the adapter works with NI Max, I doubt it is fake, but you never know. I have tried several commands to the instruments and they all work NI Max. Also FYI, I am using Linux Mint Cinnamon (20.2) 5.4.0-94-generic, linux=gpib-4.3.4 compiled. I can provide screen dumps and results if necessary.
By the way, I ended up returning the USB-GPIB adapter. I agree that it is strange that the adapter worked flawlessly in windows but not in Linux. However the conclusion that was reached in this thread is that my adapter was not completely compliant with the standard.
Thanks Giorgio for the update. I gathered as much from the thread but still hoping to get this working. I will pursue this on my end and see if I can figure out what is happening. Been a while since I did gpib but it should come back to me.
Dave
Hello everyone, I had some contacts in the xdev group and explain that I also couldn't get the NI USB gpib to work and needed some help. I did every step correctly so far I know. After Tin, Philipp_ and Chekhov_g also try to help me we still get a error. After trying something out and called the day I got this post from Chekhov_g and had the same challenges what I had. The ibtest when I send something I will get this:
gpib status is:
ibsta = 0x8100 < ERR CMPL >
iberr= 0
EDVR 0: OS error
I know for sure the device selected was correct and also address also because I tested it in windows and works perfect.
So chejhov_g recommend it to dump my sudo lsusb -v -d 3923:
here and maybe you guys know why it doesn't get it to work on RPI with linux_gpib 4.3.4
pi@raspberrypi:~ $ sudo lsusb -v -d 3923:
Bus 001 Device 003: ID 3923:709b National Instruments Corp. GPIB-USB-HS
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x3923 National Instruments Corp.
idProduct 0x709b GPIB-USB-HS
bcdDevice 1.01
iManufacturer 1 National Instruments
iProduct 2 GPIB-USB-HS
iSerial 3 01E19993
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0035
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 5
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x06 EP 6 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 2
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x88 EP 8 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 2
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 2
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 2
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 4
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
can't get debug descriptor: Resource temporarily unavailable
Device Status: 0x0000
(Bus Powered)
Thanks for the help.
Dutch
I just saw that
working one has this from andreas:
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Myn has this :
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes <----------
bInterval 2 <----------
Hi,
Your lsbusb although different from Andreas' seems OK .
The main thing is that the interrupt endpoint (EP 0x81) has a non-zero
polling interval (bInterval): 4ms for your board and 2ms for Andreas'.
Please send the lines containing "gpib" from syslog and dmesg after issuing
the sudo gpib_config command.
-dave
On Mon, 9 May 2022 at 12:43, Dutch dutch-nl@users.sourceforge.net wrote:
Related
Support Requests: #29
Hello Dave, thanks for the fast response.
Also image https://ibb.co/wrQ21RV
enter a string to send to your device: BEEP
sending string: BEEP
gpib status is:
ibsta = 0x8100 < ERR CMPL >
iberr= 0
EDVR 0: OS error
root@raspberrypi:/home/pi# gpib_config
failed to bring board online
failed to configure board
main: Connection timed out
root@raspberrypi:/home/pi# gpib_config
root@raspberrypi:/home/pi# gpib_config
root@raspberrypi:/home/pi#
I got this as dmesg - w reply back
18.610080] Bluetooth: BNEP filters: protocol multicast
[ 18.610095] Bluetooth: BNEP socket layer initialized
[ 18.627252] NET: Registered PF_ALG protocol family
[ 18.668190] cryptd: max_cpu_qlen set to 1000
[ 18.853129] Bluetooth: RFCOMM TTY layer initialized
[ 18.853160] Bluetooth: RFCOMM socket layer initialized
[ 18.853187] Bluetooth: RFCOMM ver 1.11
[ 31.833021] cam-dummy-reg: disabling
[ 49.273266] bcmgenet fd580000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
[ 49.273332] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 680.215808] gpib0: exiting autospoll thread
[ 680.216806] ni_usb_gpib: attach
[ 680.216828] usb 1-1.2: bus 1 dev num 3 attached to gpib minor 0, NI usb interface 0
[ 680.221506] product id=0x709b
[ 680.221684] ni_usb_hs_wait_for_ready: board serial number is 0x1e19993
[ 695.545758] gpib0: exiting autospoll thread
[ 695.546693] ni_usb_gpib: attach
[ 695.546714] usb 1-1.2: bus 1 dev num 3 attached to gpib minor 0, NI usb interface 0
[ 695.551431] product id=0x709b
[ 695.551592] ni_usb_hs_wait_for_ready: board serial number is 0x1e19993
[ 712.622426] v3d fec00000.v3d: MMU error from client CLE (4) at 0x7c01000, pte invalid
[ 760.994822] gpib0: exiting autospoll thread
[ 760.995754] ni_usb_gpib: attach
[ 760.995776] usb 1-1.2: bus 1 dev num 3 attached to gpib minor 0, NI usb interface 0
[ 761.000739] product id=0x709b
[ 761.000888] ni_usb_hs_wait_for_ready: board serial number is 0x1e19993
[ 762.080458] ni_usb_nonblocking_receive_bulk_msg: killed urb due to timeout
[ 762.080485] /opt/linux-gpib-4.3.4/linux-gpib-kernel-4.3.4/drivers/gpib/ni_usb/ni_usb_gpib.c: ni_usb_write_registers: ni_usb_receive_bulk_msg returned -110, bytes_read=0
[ 762.080505] ni_usb_dump_raw_block:
[ 762.080532] /opt/linux-gpib-4.3.4/linux-gpib-kernel-4.3.4/drivers/gpib/ni_usb/ni_usb_gpib.c: ni_usb_init: register write failed, retval=-110
[ 763.120435] ni_usb_nonblocking_receive_bulk_msg: killed urb due to timeout
[ 763.120470] /opt/linux-gpib-4.3.4/linux-gpib-kernel-4.3.4/drivers/gpib/ni_usb/ni_usb_gpib.c: ni_usb_write_registers: ni_usb_receive_bulk_msg returned -110, bytes_read=0
[ 763.120492] ni_usb_dump_raw_block:
[ 763.120519] /opt/linux-gpib-4.3.4/linux-gpib-kernel-4.3.4/drivers/gpib/ni_usb/ni_usb_gpib.c: ni_usb_shutdown_hardware: register write failed, retval=-110
[ 763.120976] gpib: interface attach failed
[ 770.342401] ni_usb_gpib: attach
[ 770.342432] usb 1-1.2: bus 1 dev num 3 attached to gpib minor 0, NI usb interface 0
[ 770.347269] product id=0x709b
[ 770.347504] ni_usb_hs_wait_for_ready: board serial number is 0x1e19993
[ 774.151407] gpib0: exiting autospoll thread
[ 774.152356] ni_usb_gpib: attach
[ 774.152379] usb 1-1.2: bus 1 dev num 3 attached to gpib minor 0, NI usb interface 0
[ 774.157100] product id=0x709b
[ 774.157269] ni_usb_hs_wait_for_ready: board serial number is 0x1e19993
already thank you for your response
It may be that there is no device at address 2.
To check that there is a device listening at address 2 you can run the
example programme findlisteners right after the gpib_config.
On Mon, 9 May 2022 at 15:09, Dutch dutch-nl@users.sourceforge.net wrote:
Related
Support Requests: #29
Hello Dave, I also try it on windows. That works perfect and that one finds the device on address 2 and also sending command it response to it how it should. I just plug the device in RPI 4 and doesn't work. Hope you could help me how to resolve this?
OK thanks, that is a good data point. What response did you get from
findlisteners ?
On Mon, 9 May 2022 at 15:57, Dutch dutch-nl@users.sourceforge.net wrote:
Related
Support Requests: #29
Sorry for late reaction. The reply is nothing what I can see but I can see that dmesg -w on the left side is doing something on the usb port. Hope that this helps.
Also made image from it
https://ibb.co/XV9k8Ys
Also When I send the command findlisteners after new command only like findlisteners violet it find nothing . Reply is Usage: findlisteners [-h] [-d <device pad="">]</device> {{-m <minor>] | <boardname>] when I send new command only findlisteners ni_usb_b also nothing and reply is only Reply is Usage: findlisteners [-h] [-d <device pad="">]</device> {{-m <minor>] | <boardname>] in my gpib.conf boardtype is "ni_usb_b" ande name "violet" that is optional name.</boardname></minor></boardname></minor>
Last edit: Dutch 2022-05-09
Sorry I didn't response earlier, I just found out yesterday evening that the inside from the NI GPIB USB HS after screwing the device open that it had a pretty bad clone from a clone inside. So maybe it has some other parameters for me unknown and that is why it doesn't work yet with linux-gpib lib. If some info is still needed I can provide it, till i can return the device. It could maybe also help to known which version works and not or maybe to get it working? So far I know it works with there normal software and in windows. So that is something to know.
Hello, I am trying to interface with a spectrum analyzer with GPIB-USB-HS on Ubuntu 20.04. I am having issues reading and writing commands to my device. Can someone please verify if this looks normal after doing lsusb -v -d 3923? the manufacturer, product, and serial throw an error.
Bus 001 Device 006: ID 3923:709b National Instruments Corp. GPIB-USB-HS
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x3923 National Instruments Corp.
idProduct 0x709b GPIB-USB-HS
bcdDevice 1.01
iManufacturer 1 (error)
iProduct 2 (error)
iSerial 3 (error)
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0035
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 5
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x06 EP 6 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x88 EP 8 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
cannot read device status, Resource temporarily unavailable (11)
This looks like an unsupported clone judging by the fact that the bInterval of the interrupt Endpoint 1 is 0 in the lsusb output.
That would explain why it has issues connecting on the windows side... Though it sounds like there's a known issue with the GPIB-USB-HS plug and play engine. Thanks for the heads up Dave.