I'm trying to get an ISA gpib card working, but I have no luck so far. I have a NI AT-GPIB 488.2 card, Rev e.2.
I'm using linux-GPIB 3.2.11. I've configured the gpib.conf like this:
interface {
minor = 0 /* board index, minor = 0 uses /dev/gpib0, minor = 1 uses /dev/gpib1, etc. */
board_type = "ni_nat4882_isa" /* 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 = 0x2c0 /* Base io ADDRESS */
irq = 3 /* Interrupt request level */
dma = 5 /* DMA channel (zero disables) */
/* pci_bus and pci_slot can be used to distinguish two pci boards supported by the same driver */
/* pci_bus = 0 */
/* pci_slot = 7 */
master = yes /* interface board is system controller */
}
I've left the DMA on the default 5, the switched for the base IO address are on default to. I changed the IRQ to 3 on the card, the default 11 was already taken.
When I load the kernel module:
modprobe tnt4882
the following output comes in dmesg (nothing in the console:
Linux-GPIB 3.2.11 Driver
gpib: registered ni_isa interface
gpib: registered ni_isa_accel interface
gpib: registered ni_nat4882_isa interface
gpib: registered ni_nat4882_isa_accel interface
gpib: registered ni_nec_isa interface
gpib: registered ni_nec_isa_accel interface
gpib: registered ni_pci interface
gpib: registered ni_pci_accel interface
Available NI PCI device IDs:
When I try to configure the board:
gpib:/home/gpib # gpib_config --minor 0
failed to bring board online
failed to configure board
main: Operation not permitted
The dmesg output:
gpib: (debug) request module returned 256
tnt4882: failed to allocate ioports
gpib: interface attach failed
this is where I'm stuck. I'm running openSUSE 10.2, kernel 2.6.18.2-34-default. I suggestion I found somewhere on the net was that the switches on the card where wrong, this cuold be because of a wrong adress. I double checked the switched on the card of the base io address, and there on the default for 0x2c0.
I also have an HP 27209 (also isa), this one came just as far but with:
invalid base io address 0xffffffff
I haven't tried any further, in the config I set: base = 0xdc000 but that didn't came through.
In the bios I set IRQ 3 and DMA 5 to 'yes' in the section for the legacy ISA cards. There is also a UMB section, but this doesn't cover the base io adress (it does for the HP card). pnpdump doesn't find anything, the card isn't plug and play.
I'm doing everything as root, so that shouldn't be the problem. I'm not sure of the condition of the board, but I think it is fine.
So, I tried it the other way:
gpib_config --iobase 0x2c0 --minor 0
only gives:
gpib: (debug) request module returned 256
in dmesg
When I now try ibtest:
gpib:/home/gpib # ibtest
Do you wish to open a (d)evice or an interface (b)oard?
(you probably want to open a device): b
enter name of interface board (or device) you wish to open: violet
trying to open board named 'violet'
You can:
w(a)it for an event
write (c)ommand bytes to bus (system controller only)
send (d)evice clear (device only)
change remote (e)nable line (system controller only)
(g)o to standby (release ATN line, system controller only)
send (i)nterface clear (system controller only)
ta(k)e control (assert ATN line, system controller only)
get bus (l)ine status (board only)
go to local (m)ode
change end (o)f transmission configuration
(q)uit
(r)ead string
perform (s)erial poll (device only)
change (t)imeout on io operations
request ser(v)ice (board only)
(w)rite data string
that is futher than I got before, so I may be on to something.
I'm trying to get anything out of a Keithley 192 with the 1923 GPIB option, but I only get bus errors. I haven't got the manual of the 1923 options, which is a bit difficult, but the address is probably 7. But I tried practically all addresses with the same result:
gpib:/home/gpib # 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]: 7
trying to open pad = 7 on /dev/gpib0 ...
You can:
w(a)it for an event
write (c)ommand bytes to bus (system controller only)
send (d)evice clear (device only)
change remote (e)nable line (system controller only)
(g)o to standby (release ATN line, system controller only)
send (i)nterface clear (system controller only)
ta(k)e control (assert ATN line, system controller only)
get bus (l)ine status (board only)
go to local (m)ode
change end (o)f transmission configuration
(q)uit
(r)ead string
perform (s)erial poll (device only)
change (t)imeout on io operations
request ser(v)ice (board only)
(w)rite data string
: w
enter a string to send to your device: *IDN?
sending string: *IDN?
gpib status is:
ibsta = 0xc100 < ERR TIMO CMPL >
iberr= 14
EBUS 14: Bus error
ibcnt = 0
I checked the cable, it's fine. I also tried my HP 5334B counter, still the same problem.
This is where I'm at, sending my counter command like ID should give something in return, but I only get this error. The error is the same for loose cables, but I just have one 3m cable from the card to the counter.
It's a mistery to my why specifying the base addres in gpib_config gets me futher, but I'm not there yet. Any suggestions on the HP card are also welcome.