Contents
- What is the WiMAX kernel stack?
- What is the WiMAX Network Service?
- Where can I find the WiMAX Network API to develop a connection manager or add WiMAX support to an existing one?
- Troubleshooting
- Licensing questions
- What are the licensing terms of all this?
- Why are some driver files BSD-only?
- Is the Intel Free Distribution Binary License an open source license?
- Why don't you allow modification and re-engineering of the binaries?
- The Intel Free Distribution Binary License looks like a BSD license. Is it?
- I am a package maintainer and I would like to create a package/distribution/CD that installs/provides the Intel firmware necessary for the 2400M. How does one go about doing this according to Intel's terms?
- There are a lot of people downstream who draw from my package/distribution/CD. What do they have to do to be compliant with the Intel Free Distribution Binary License binary license?
- There is a patent license in the Intel Free Distribution Binary License. What does that mean?
- Here's a special case. I am a BSD developer, and other people might take my code, relicense it, and use it in a proprietary operating system. Do they get a patent license, too?
- Isn't that risky for them?
What is the WiMAX kernel stack?
The WiMAX stack is a generic layer that provides a uniform API to control different WiMAX devices.
What is the WiMAX Network Service?
This is an user space component providing network detection and selection functionality. It implements the bulk of link control logic in order to support connection utilities and management applications. Future revisions will implement over-the-air activation and provisioning functionality.
Where can I find the WiMAX Network API to develop a connection manager or add WiMAX support to an existing one?
Please refer to the WiMaxAPI.h and related headers in the source folder WiMAX-Network-Service/tools_projects/Pipe/Wrappers/CommonAPI/Source. The Connection Utility, under WiMAX-Network-Service/tools_projects/Pipe/Wrappers/iWmxSDK/WimaxUtility, provides a reference implementation using the WiMAX APIs.
Troubleshooting
I have installed everything, but I can't start the daemon
The most common reasons for this are:
- the device can't be found; this might be because you don't have an Intel 5x50 or other device supported by the drivers
- or the device can't be found because the firmware cannot be located. Check your kernel log for errors from the i2400m drivers:
dmesg | grep i2400m i2400m_usb 1-2:1.0: firmware: requesting i2400m-fw-usb-1.4.sbcf i2400m_usb 1-2:1.0: fw i2400m-fw-usb-1.4.sbcf: cannot load file: -2 i2400m_usb 1-2:1.0: firmware: requesting i2400m-fw-usb-1.3.sbcf i2400m_usb 1-2:1.0: fw i2400m-fw-usb-1.3.sbcf: cannot load file: -2 i2400m_usb 1-2:1.0: Could not find a usable firmware image ...
Make sure the firmware file is installed in the right location! Or the binary supplicant is failing to load because some shared library dependency cannot be met. When things look right, if you run ldd on the supplicant library:
ldd /usr/lib/wimax/libwpa_wimax_supplicant.so linux-gate.so.1 => (0xffffe000) libssl.so.0.9.8 => /usr/lib/i686/cmov/libssl.so.0.9.8 (0xf7e37000) libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xf7ce4000) libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xf7cca000) libc.so.6 => /lib/i686/cmov/libc.so.6 (0xf7b6a000) libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xf7b66000) libz.so.1 => /usr/lib/libz.so.1 (0xf7b51000) /lib/ld-linux.so.2 (0xf7ef1000)if any of those reads not found, then there are missing dependencies. This is common in some installations, due to changes in the openssl library versioning.
A very ugly trick is to create symlinks in /lib or /usr/lib from the libcrypto.so.X and libssl.so.X in your system to the libcrypto.so.Y and libssl.so.Y that the supplicant requires:
cd /lib ln -s libcrypto.so.X libcrypto.so.Y ln -s libssl.so.X libssl.so.Y
An upcoming release will have the binary supplicant gone, so this hack should not be needed in the future.- If SELinux is enabled, it will refuse loading the library (as it contains relocations)
This is similar to https://bugzilla.redhat.com/show_bug.cgi?id=495533; the workaround is currently to run (as root):
chcon -t textrel_shlib_t /usr/lib/wimax/libwpa_supplicant.so semanage fcontext -a -t textrel_shlib_t /usr/lib/wimax/libwpa_supplicant.so
As above, an upcoming release will have the binary supplicant gone, so this hack should not be needed in the future.
Licensing questions
What are the licensing terms of all this?
Here is the list:
WiMAX stack: GPL
WiMAX i2400m driver: GPL (some files are BSD-only, see below)
WiMAX device firmware: Intel Free Distribution Binary License
Intel WiMAX Network Service: BSD
Intel WiMAX Supplicant: Binary
Why are some driver files BSD-only?
As a convenience for driver developers for other open source operating systems. This way they can take those files to implement support. These files implement hardware specific functionality, algorithms, etc.
Is the Intel Free Distribution Binary License an open source license?
No. The Intel Free Distribution Binary License is "free as in beer" and allows unlimited, no-cost redistribution of the binaries, but not "free as in freedom" since modification and reverse engineering are not allowed.
Why don't you allow modification and re-engineering of the binaries?
To operate a radio device, the hardware/firmware combination needs to be FCC (and equivalent in other countries) certified; this excludes end user modification which would void the certification.
The Intel Free Distribution Binary License looks like a BSD license. Is it?
It looks a lot like a BSD license. We reused as much language as we could. We believe BSD was a good starting point for a short, easy to understand, permissive license. However, the Intel Free Distribution Binary License is in no way an open source license (see previous question.)
I am a package maintainer and I would like to create a package/distribution/CD that installs/provides the Intel firmware necessary for the 2400M. How does one go about doing this according to Intel's terms?
You distribute the Intel Free Distribution Binary License with the binary blob.
There are a lot of people downstream who draw from my package/distribution/CD. What do they have to do to be compliant with the Intel Free Distribution Binary License binary license?
They have to distribute the Intel Free Distribution Binary License with the binary blob.
There is a patent license in the Intel Free Distribution Binary License. What does that mean?
Necessary Intel patents needed to use the binaries are licensed royalty-free for use with any operating system licensed under an Open Source Initiative-approved open source license. That includes, by way of example, (not an exhaustive list), all Linux distributions, all BSD distributions, the GNU Hurd, and Open Solaris.
Here's a special case. I am a BSD developer, and other people might take my code, relicense it, and use it in a proprietary operating system. Do they get a patent license, too?
No, they do not get such a license.
Isn't that risky for them?
The standard BSD license does not include an explicit patent license for any technology. The Intel Free Distribution Binary License adds an explicit grant for specific usage to reduce the patent risk for those usage cases; other cases have no extra risk compared to the standard BSD license.