For a specific device there exists a Linux kernel module. This module only initialized the device and provides control mechanisms to user land via ioctls and mmap. To use this the device properly one must use the proprietary library from the hardware vendor.

So the source code of the kernel module is available and licensed under the terms of GPL but with the copyright of the hardware vendor. With a quick reverse engineering via LD_PRELOAD I figured out that the communication between the kernel module and the proprietary library is not really complicated.

Now I would like to make a basic open source library to replace the proprietary one. The problem is that the ioctl definitions and structures are from the header file from the kernel module which is GPL licensed. I would like to release my library under LGPL or even BSD/MIT license.

As the needed header file only contains ioctl definitions and structure I'm unsure if I would violate the GPL if I would include it in a LGPLed library. Or is there another way to include the informations from the header and use it in an LGPLed library?

  • You can distribute code without an issue (subject to the law in any given jurisdiction). The issue comes if you distribute a binary. But your explanation is confusing. If there is a GPL kernel driver, what is proprietary - does the driver load the proprietary code/firmware driver? You need to explain. Apr 4, 2016 at 21:53
  • The driver on the user mode side is also from the vendor and is not open source. The user mode driver is in the form of a library and provides an interface to control the hardware. What I want is to reverse engineer this library and write an open source one. The firmware is loaded by the kernel driver but I don't need to touch the firmware. Still something unclear?
    – fsasm
    Apr 11, 2016 at 22:23

1 Answer 1


Your library can #include the GPLed header but if you don't distribute a copy of that file with your library, you can compliantly distribute your source code under the LGPL. I'm not certain what the license situation would be for the compiled result. Since the LGPL allows upgrade to GPL perhaps that's what would need to happen there.

But really, why bring upon yourself all this legal complexity. If you just distribute the library as GPL you don't have a problem.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.