#Sprint 4G on Ubuntu 11.04+ with a 250U modem. These instructions correct omissions in the official documentation and patch the driver to work in modern Linux kernels. #Because I can't find a documented way to switch between 3G and 4G on this device, these instructions don't currently let you access the 4G network - see the bottom of this file. If anyone at Sprint or Sierra Wireless is reading this, I'd appreciate advice: mm201108 (at) zzxc.net. #The contents of this file, to the extent that they are copyrightable, are hereby placed in the public domain. #This guide keeps all the installed files in the working directory instead of installing them to the system - so as to prevent conflicts when the system is upgraded later. #0) Create a working directory for the big mess you're about to create. mkdir ~/sprint cd ~/sprint #1) Get prerequisites sudo apt-get install libnl-dev sudo apt-get install linux-kernel-headers sudo apt-get install libssl-dev #2) Get Sprint4GDeveloperPack-1.6.1.2.2.tar.gz and extract it. Inside, extract Rel_6.1.2.2_USB-Updated.zip. Read the enclosed instructions and ensure that you extract the correct wimaxd.conf, the correct macxvi.cfg file, and the USB_350 folder. #3) Copy firmware sudo cp macxvi.cfg /lib/firmware sudo cp USB_350/Binaries/Firmware/macxvi350.bin /lib/firmware #4) Build the API files cd USB_350/Source/API dos2unix build.sh chmod 755 build.sh ./build.sh cd tgtxvi020 sudo make install #5) Fix the build file, as we're in unix cd ../../CSCM chmod 755 build.sh dos2unix build.sh #6) Now let's fix the wpa_supplicant. Nix the DOS drive letters in the file to prevent syntax errors. sed -i 's/C:\//\//g' wpa_supplicant/*.d #7) Copy libxvi020.so to the right place cp ../API/bin_linux/bin/libxvi* bin_pc_linux/bin/ #8) Build it: ./build.sh pc_linux #9) Exit this folder cd ../../.. #10) kill the bcm_wimax driver - it doesn't work with any existing software. Also, kill the sierra driver to prevent interference. /bin/echo -e "blacklist sierra\nblocklist bcm_wimax" >> /etc/modprobe.d/blacklist.conf #11) Build the Beceem driver from your Sprint 4G Developer Pack. cd USB_350/Source/Driver/Network/OSAL/Linux/usb #12) IMPORTANT: FIX LINE ENDINGS SO THAT THE FOLLOWING PATCH APPLIES CLEANLY!!! dos2unix Include/Common/led_control.h dos2unix Include/Common/osal_misc.h dos2unix Interface/usb/InterfaceInit.c #13) Edit the Makefile to point to the right location of your kernel headers. Patch the Beceem driver to take care of http://git390.marist.edu/cgi-bin/gitweb.cgi?p=linux-2.6.git;a=commitdiff_plain;h=9bbdf1e0afe771ca7650f9f476769310bee9d8f3 , http://kerneltrap.org/mailarchive/git-commits-head/2010/4/30/32383 , http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=626790 , and http://www.gossamer-threads.com/lists/linux/kernel/1263098 #I wrote a patch to do that. Un-base64 the following blob of data, then decompress it with xz. Apply the patch to the 'usb' folder you're in right now. (hint: pipe it to "patch -p1") : <<'END' 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 wI+eWcEAAcEPqS0AACENR5uxxGf7AgAAAAAEWVo= END #14) Build it. make #15) Insert your new module sudo insmod drxvi314.ko #16) Set up serial access so that AT commands can be sent to the sierra portion of the modem (250U only) sudo modprobe option echo "1199 0301" > /sys/bus/usb-serial/drivers/option1/new_id #16) Finally - test it cd ../../../../../CSCM/bin_pc_linux/bin/ sudo env LD_LIBRARY_PATH=. ./wimaxd -c ~/sprint/wimaxd.conf -D #Open another shell and start the client: env LD_LIBRARY_PATH=. ./wimaxc -i search #17) Notice that the 3G light stays illuminated on the 250U, even as you attempt to use the WiMAX modem. Zero WiMAX nodes will be found, even if you're in an area with 4G access. You'll need to use some sort of AT command or CnS command (which aren't documented) to turn on the 4G modem. #/bin/echo "SOMETHING TO TURN ON 4G MODEM" > /dev/ttyUSBx