#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