Contents

  1. What is the WiMAX kernel stack?
  2. What is the WiMAX Network Service?
  3. Where can I find the WiMAX Network API to develop a connection manager or add WiMAX support to an existing one?
  4. Supported hardware
  5. Contributions
    1. I want to contribute code/patches; any guidelines?
    2. Updated oma-dm tree values for Clearwire Network
  6. Troubleshooting
    1. I have installed everything, but I can't start the daemon
    2. What about 64-bit support? The binary supplicant is available only for 32-bits ...
    3. The i2400m kernel driver reports errors and retries and then resets the card
    4. Increasing the i2400m WiMAX Network Service's debug output
  7. Licensing questions
    1. What are the licensing terms of all this?
    2. Why are some driver files BSD-only?
    3. Is the Intel Free Distribution Binary License an open source license?
    4. Why don't you allow modification and re-engineering of the binaries?
    5. The Intel Free Distribution Binary License looks like a BSD license. Is it?
    6. 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?
    7. 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?
    8. There is a patent license in the Intel Free Distribution Binary License. What does that mean?
    9. 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?
    10. 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.

Supported hardware

See [Hardware here].

Contributions

I want to contribute code/patches; any guidelines?

We have put together a guide that has accumulated after a few projects in development tips. Feedback welcome!

Updated oma-dm tree values for Clearwire Network

Erich Izdepski, from Clearwire, provided an updated XML file tree with updated values for the Clearwire network. It can be found at:

http://community.4gdeveloper.com/wiki/community/Chromium_OS_and_WiMAX_support

[bottom of the page]

Thanks Erich!

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.

What about 64-bit support? The binary supplicant is available only for 32-bits ...

Paul Donohue kindly provided these instructions to get it working on a 64-bit system (by installing 32-bit compat packages): http://lists.linuxwimax.org/pipermail/wimax/2009-December/000671.html

The i2400m kernel driver reports errors and retries and then resets the card

If you are getting messages such as:

i2400m_usb 1-2:1.0: notification: URB error -71, retrying
i2400m_usb 1-2:1.0: notification: URB error -71, retrying
i2400m_usb 1-2:1.0: TX: cannot send URB; retrying. tx_msg @224 48 B [0 sent]: -71
i2400m_usb 1-2:1.0: TX: cannot send URB; retrying. tx_msg @224 48 B [0 sent]: -71

followed by the driver giving up and resetting the hardware, there could be a few issues at play. -71 is -EPROTO in the x86 architecture, which means USB bitstuffing/timeout errors or other USB unknown condition. It's hard to tell if it is a hardware problem, but in some cases, it has turned out to be that the WiMAX card was plugged to a socket that didn't provide enough power for the card to operate properly. Some motherboards suffer from this condition, but it should not happen if you bought your hardware all in a single package (e.g.: a laptop with a factory-included WiMAX card).

Increasing the i2400m WiMAX Network Service's debug output

Kill/stop the daemon, and edit the /etc/wimax/config.xml file, replacing the lines <Modules> and <Severities> lines to read:

<Modules>1007812360</Modules>
<Severities>31</Severities>

Licensing questions

What are the licensing terms of all this?

Here is the list:

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.