Linux Users


kernel version 3.10.0-862.2.3.el7.x86_64

Hello guys!

Guess what!

New kernel and visa stop to knews!


Please could you help me! Thanks


nikal:   CC [M]  /var/lib/nikal/3.10.0-862.2.3.el7.x86_64/nikal/nikal.o
nikal: /var/lib/nikal/3.10.0-862.2.3.el7.x86_64/nikal/nikal.c:2043:10: error: ‘GENL_ID_GENERATE’ undeclared here (not in a function)
nikal:     .id = GENL_ID_GENERATE,
nikal:           ^
nikal: /var/lib/nikal/3.10.0-862.2.3.el7.x86_64/nikal/nikal.c: In function ‘nNIKAL100_initDriver’:
nikal: /var/lib/nikal/3.10.0-862.2.3.el7.x86_64/nikal/nikal.c:2083:4: error: implicit declaration of function ‘genl_register_family_with_ops’ [-Werror=implicit-function-declaration]
nikal:     if ((status = genl_register_family_with_ops(&nikal_netlink_family, nikal_netlink_ops, 1))) return status;
nikal:     ^
nikal: cc1: some warnings being treated as errors
nikal: make[2]: *** [/var/lib/nikal/3.10.0-862.2.3.el7.x86_64/nikal/nikal.o] Error 1
nikal: make[1]: *** [_module_/var/lib/nikal/3.10.0-862.2.3.el7.x86_64/nikal] Error 2
nikal: make: *** [nikal.ko] Error 2
nikal: ERROR:  failed to build nikal
nikal: ERROR:  NI-KAL update failed.
nikal: ERROR:  make of nikal kernel module failed, not installing kernel module.
nikal: ERROR:  updateNIDrivers should be called again after fixing the problem.
nikal: ERROR: Update of National Instruments drivers failed.


0 Kudos
Message 1 of 6

Re: kernel version 3.10.0-862.2.3.el7.x86_64



In short: it's completely hopeless. There's no Linux support whatsoever.

By looking at their code, I immediately see, they have absolutely no idea how the Linux kernel works.


I've offered my help several times, but there's no budget for linux drivers.


It would take maybe 100..200k for fresh and clean driver development done by Linux experts - but NI obviously can't afford that.


Linux Embedded / Kernel Hacker / BSP / Driver development / Systems engineering
0 Kudos
Message 2 of 6

Re: kernel version 3.10.0-862.2.3.el7.x86_64

[sudo] password for elsys:
nikal: ERROR: Error locating kernel sources for the requested kernel version (4.16.8-1.el7.elrepo.x86_64).
usage: ./updateNIDrivers [--no-prompt] [kernelVersion]
      Specify the version of a kernel installed on the system.
      A /lib/modules/<kernelVersion> directory should exist for each
      kernel installed. The currently running kernel is the default
      for ./updateNIDrivers if no argument is provided.
      Run 'uname -r' at the command prompt to find the version of the
      currently running kernel.
      runs in no prompt mode.  Useful if calling this script from
      another script.  Messages are still printed to the screen and
      the return value can be checked for status.
      use fast shortcuts to determine whether modules need to be rebuilt.
[elsys@unknown bin]$

0 Kudos
Message 3 of 6

Re: kernel version 3.10.0-862.2.3.el7.x86_64

maybe you need to install the corresponding kernel source package.


but it won't work w/ 4.16 anyways.

Linux Embedded / Kernel Hacker / BSP / Driver development / Systems engineering
0 Kudos
Message 4 of 6

Re: kernel version 3.10.0-862.2.3.el7.x86_64

hello guys,


I fix it.

I try to use 4.16 kernel, but fail anyway.


#define NLNIKAL_CMD_SEND     1
#define GENL_ID_GENERATE 0  // define value to genl_id_generate = 0
static struct genl_family nikal_netlink_family =
   .name = "nlnikal",
   .version = 1,
   .maxattr = 1



and then comment this



#ifdef nNIKAL1400_kHasFamilyGenlOpsGroups
   //if ((status = genl_register_family_with_ops(&nikal_netlink_family, nikal_netlink_ops))) return status;
   //if ((status = genl_register_family_with_ops(&nikal_netlink_family, nikal_netlink_ops, 1))) return status;


visa works fine....



Message 5 of 6

Re: kernel version 3.10.0-862.2.3.el7.x86_64

I've been working with these "PoS" drivers for about a year now, and although I don't have what I would consider a solution, I would like to add to some of the responses here for a bit more exhaustive insight.


The root issue concerning the GENL-related errors is that the makefiles in the bowels of the nikal module rely on the libnl.i686 package, and they don't properly include it or even check for the dependency.

Although the fix of setting values to zeros and commenting out lines works, its really dumb luck rather than calculated reasoning that allows these quick fixes.

One thing that I didn't notice in this thread is the "do_munmap" error which occurs for me during the nikal build. The solution here is to completely replace the #ifdef/else/endif structure with the single 4 argument line. Clearly the ifdef constant is broken.


I'd also like to note that the nikal.c file to edit here is the one under /usr/local/natinst/nikal/src/nikal rather than the kernel specific c file. If you edit the nikal.c file under /usr/local and delete /var/lib/nikal before running updateNIDrivers, you'll only need to implement these fixes once, rather than every time your OS updates.


Lastly I'd like to note a couple important things I wished someone had shared with me when I started working with the NIDAQmx Base drivers:

1. You can validate that the driver is working by running 'lsdaq' and the device ID(s) will be displayed

2. You must download these 32-bit dependencies before installing the drivers:

  • compat-libstdc++-33.i686
  • expat.i686
  • glibc.i686
  • glibc-devel.i686
  • libdrm.i686
  • libgcc.i686
  • libselinux.i686
  • libstdc++.i686
  • libX11.i686
  • libXau.i686
  • libxcb.i686
  • libXdamage.i686
  • libXext.i686
  • libXinerama.i686
  • libXfixes.i686
  • libXxf86vm.i686
  • mesa-dri-drivers.i686
  • mesa-libGL.i686
  • nss-softokn-freebl.i686
  • zlib.i686

0 Kudos
Message 6 of 6
This is an open group. Sign in and click the "Join Group" button to become a group member and start posting.