From 11:00 PM CST Friday, May 9th - 3:00 PM CST Saturday, May 10th, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Linux Users

cancel
Showing results for 
Search instead for 
Did you mean: 

GPIB-USB-HS, ni-4882.-2.9.0f0

Hi,

Help me

I want to use GPIB-USB-HS, ni488.2-2.9.0f0, on Linux.

but, gpibexplorer cannot find,  GPIB-USB-HS Device.

  ScientificLinux 5.6 - OK(found), GPIB Communitaion Ok.

  ScientificLinux 6.1 - NG, cannot find.

  openSuse11.3      - NG, cannot find.

What's different? ScientificLinux5.6 vs ScientificLinux6.1 and openSuse11.3 .

Kernel Version?

ScientificLinux5.6 Kernel version is 2.6.18

ScientificLinux6.1 Kernel version is 2.6.32

openSuse Kernel version is 2.6.34

refer, README.

> -------------------------

> Supported GPIB Interfaces

> -------------------------

> PCI-GPIB

> PCI-GPIB/LP

> NI PCIe-GPIB

> PCI-8212

> PCI-8232

> PXI-GPIB

> PXI-8212

> PXI-8232

> GPIB-USB-B (Up to kernel version 2.6.24)

> GPIB-USB-HS (Up to kernel version 2.6.24)  <----- Down to ?

> GPIB-ENET/100

> GPIB-ENET/1000 (new)

0 Kudos
Message 1 of 7
(11,536 Views)

The GPIB-USB-HS won't work newer kernels

> GPIB-USB-HS (Up to kernel version 2.6.24)  <----- Down to ?

No, up to. With kerneles newer than that version it won't work.

0 Kudos
Message 2 of 7
(7,987 Views)

Why not?

0 Kudos
Message 3 of 7
(7,987 Views)

USB kernel API was marked as EXPORT_SYMBOL_GPL sometime back, and since our modules are not GPL, we can't link to them

This has come up again and again in other threads, for example: https://decibel.ni.com/content/message/24682#24682

Sorry, we can't do anything about that.

0 Kudos
Message 4 of 7
(7,987 Views)

I managed to get it working on CentOS 6.4 using a "license hack". That should be ok as long as you don't distribute it. Also you need to change around line 4085 in nikal.c:

-   snprintf(device->nameString, sizeof(device->nameString), "%s", usb_dev->dev.bus_id);

+   snprintf(device->nameString, sizeof(device->nameString), "%s", usb_dev->dev.bus->name);

That's all.

I wonder why NI cannot use libusb...

0 Kudos
Message 5 of 7
(7,987 Views)

We can use libusb, but changing the device access from kernel mode up to user mode while not breaking our software requirements is non-trivial and has lots of challenges (architecture-wise, performance-wise, multi-process-wise, etc).. Sorry .. We are looking into it, but no promises if/when it will happen.

0 Kudos
Message 6 of 7
(7,987 Views)

Just publish the kernel driver source under GPL, and you can use the usb framework again.

Proprietary kernel modules are insane anyways. 

Linux Embedded / Kernel Hacker / BSP / Driver development / Systems engineering
0 Kudos
Message 7 of 7
(7,721 Views)
Tariff Impact Update Learn more