[[TOC(Software/h*, depth=3)]] = Drivers for Specific Hardware Platforms = == Broadcom STA drivers == These drivers were required for the Broadcom BCM94352HMB an 802.11 AC compliant device. The primary reference is: http://www.broadcom.com/support/802.11/linux_sta.php ''' Using Apt-Get '''[[BR]] The compiled source is now available in the repositories, and so this is the preferred install method. 1. {{{ sudo apt-get update }}} 1. {{{ sudo apt-get install bcmwl-kernel-source }}} 1. {{{ sudo modprobe wl }}} If this doesn't work, then remove interfering drivers by: 1. {{{ sudo apt-get update }}} 1. {{{ sudo apt-get --reinstall install bcmwl-kernel-source }}} 1. {{{ sudo modprobe -r b43 ssb wl brcmfmac brcmsmac bcma }}} 1. {{{ sudo modprobe wl }}} These drivers are blacklisted on the baseline image by default, but may be re-enabled by later actions. These steps insure that they are not loaded at the same time as wl. ''' If your chosen operating system does not have the source available, such as in the above instructions, you will need to build the linux_sta wl driver yourself. The sources are available from Broadcom, below. ''' ''' Building and loading the STA module:'''[[BR]] It's assumed that the matching kernel headers are installed, and the proper build tools are also installed (e.g. make, g++). 1. copy this file for the [http://www.broadcom.com/docs/linux_sta/hybrid-v35-nodebug-pcoem-6_30_223_141.tar.gz 32-bit kernel] or [http://www.broadcom.com/docs/linux_sta/hybrid-v35_64-nodebug-pcoem-portsrc.tar.gz 64-bit kernel ] 2. Untar and make / make install 3. the module is named wl.ko and is located at /lib/modules/3.2.0-36-generic/kernel/drivers/net/wireless/wl.ko 4. Following this [http://www.broadcom.com/docs/linux_sta/README.txt readme] load these two modules with modprobe {{{ modprobe cfg80211 modprobe lib80211 }}} 5. then load the module that was built with insmod: {{{ insmod /lib/modules/3.2.0-36-generic/kernel/drivers/net/wireless/wl.ko }}} == Netgear AC341U == ''' BUILD DRIVERS: '''[[BR]] From support page at [http://support.netgear.com/product/AirCard+341U+$28Sprint$29#wrapper Netgear website] download the latest Linux driver (check the page for latest under "AirCard 341U Downloads and Documentation"); as of Jan 2016 the latest Linux drivers can be pulled with: {{{ wget http://www.downloads.netgear.com/files/aircard/Linux-Support-S2.13N2.25.zip }}} It include the installation directions and the driver directories. When compiling, make sure not to have spaces anywhere in the path otherwise the compilation will fail with ''arch/x86/Makefile:129: CONFIG_X86_X32 enabled but no binutils support''. Also, for kernels >= 3.19, you will have to modify all occurrences in GobiNet/QMIDevice.c of '''f_dentry''' to '''f_path.dentry'''. To build Follow these steps: 1. Ensure you have an appropriate kernel version and respective headers, 3.5.0.49 in our case since btest2.ndz in Ubuntu 12.04 2. Copy the driver directories into /usr/src sudo cp –avr /home/user1/Desktop/GobiSerial /usr/src sudo cp –avr /home/user1/Desktop/GobiNet /usr/src 3. Enter each driver directory and run {{{ make all make install }}} 4. Load the serial and net modules via modrpobe {{{ modprobe -i GobiSerial modprobe -i GobiNet }}} Dmesg output should look like: {{{ [ 459.924062] usb 1-4.4: new high-speed USB device number 4 using ehci_hcd [ 460.016555] usb 1-4.4: config 1 has an invalid interface number: 8 but max is 5 [ 460.016560] usb 1-4.4: config 1 has no interface number 5 [ 460.017054] usb 1-4.4: New USB device found, idVendor=1199, idProduct=9057 [ 460.017058] usb 1-4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 460.017061] usb 1-4.4: Product: AC341U [ 460.017065] usb 1-4.4: Manufacturer: Sierra Wireless, Incorporated [ 460.017068] usb 1-4.4: SerialNumber: 355745050048959 [ 460.146715] usbcore: registered new interface driver cdc_ether [ 460.147711] usbcore: registered new interface driver usbserial [ 460.147732] usbcore: registered new interface driver usbserial_generic [ 460.147749] USB Serial support registered for generic [ 460.147757] usbserial: USB Serial Driver core [ 460.153904] rndis_host 1-4.4:1.0: usb0: register 'rndis_host' at usb-0000:00:1a.7-4.4, RNDIS device, 32:85:11:c8:2c:09 [ 460.153936] usbcore: registered new interface driver rndis_host [ 460.158052] usbcore: registered new interface driver GobiSerial [ 460.158140] USB Serial support registered for GobiSerial [ 460.158805] GobiSerial 1-4.4:1.2: GobiSerial converter detected [ 460.158968] usb 1-4.4: GobiSerial converter now attached to ttyUSB0 [ 460.159427] GobiSerial 1-4.4:1.3: GobiSerial converter detected [ 460.159511] usb 1-4.4: GobiSerial converter now attached to ttyUSB1 [ 460.159925] GobiSerial 1-4.4:1.4: GobiSerial converter detected [ 460.160062] usb 1-4.4: GobiSerial converter now attached to ttyUSB2 [ 460.160077] GobiSerial: 2013-10-08/NTGR_2.12:GobiSerial [ 460.168785] GobiNet: 2013-10-08/NTGR_2.21 [ 460.169255] GobiNet 1-4.4:1.8: eth2: register 'GobiNet' at usb-0000:00:1a.7-4.4, GobiNet Ethernet Device, c6:c1:97:7e:a4:09 [ 461.569774] creating qcqmi2 [ 461.569852] usbcore: registered new interface driver GobiNet }}} Notice that multiple serial USB interfaces are enumerated, the one that accepts AT commands is ttyUSB1, the latter are for some kind of diagonostics. ''' FIRMWARE UPDATE: (Incase you need one) '''[[BR]] The firmware update has to be done on windows. Insert the device into a windows box, and let it install drivers and enumerate interafaces. Make sure you can see the managment webpage. Then download, install and run the following file: http://downloadcenter.netgear.com/en/Disclaimer.aspx?redirecturl=http://www.downloads.netgear.com/files/aircard/1101857_9902536_NTG9X15C_45.04.20.00_00_SPRINT_000.046_000-field.exe# ''' USING SERIAL INTERFACE: '''[[BR]] To actually use the device you'll have to connect to the virtual serial interface, enable pass through, and initiate a connection. To connect to the serial interface I used minicom. The command string was: minicom -D /dev/ttyUSB1 Port settings were 115200 8N1 with hardware Flow Control (but not sure if that is necessary). In minicom I also made the Init string AT, and the Reset string empty. When you launch minicom you should see an initial AT command. Pressing enter will get you an OK reponse, this inidicates it's working. You only need to enter passthrough mode once. But it will require a device restart. The AT commands are: {{{ AT!ippassthrough=1 AT!reset }}} You can check if it's enabled by running: {{{ AT!ippassthrough? }}} If you get a 1 back, it's in pass through mode. Additionally the output of LSUSB is different, if you run it and get: {{{ Bus 001 Device 004: ID 1199:9057 Sierra Wireless, Inc. }}} It's in pass through mode, if you get: {{{ Bus 001 Device 004: ID 1199:9055 Sierra Wireless, Inc. }}} It's in NAT mode. Once the device reboots, the device enumeration will be different. Instead of just eth2, there will be an eth2 interface and a USB interface. We'll still use the eth2 interface however. (these numbers are for the btest2 image on a machine with 2 intefaces, dmesg will give you the actual device name). Once the interfaces enumerate, reconnect to the serial port ttyUSB1 and issue the follow commands: {{{ AT!entercnd="A710" OK AT!dxcfg=wwan,connect,11 OK $QCRMCALL: 1, V4 }}} The quotations are required for the entercnd line. The entercnd line is the equivalent of an enable command (enter privileged mode). The latter command actually connects to the BS. It's disconnect counterpart is: {{{ AT!dxcfg=wwan,connect,0 }}} You can verify on the device that the actual state is connected. Additionally: {{{ at!gstatus? }}} Will get you a status out put like: {{{ at!gstatus? !GSTATUS: Current Time: 10049 Temperature: 42 Bootup Time: 0 Mode: ONLINE System mode: LTE PS state: Attached LTE band: B25 LTE bw: 10 MHz LTE Rx chan: 8365 LTE Tx chan: 26365 EMM state: Registered Normal Service RRC state: RRC Connected IMS reg state: No Srv RSSI (dBm): -83 Tx Power: 0 RSRP (dBm): -117 TAC: 0001 (1) RSRQ (dB): -10 Cell ID: 01A2D001 (27447297) SINR (dB): 1.6 }}} Don't let the mode ONLINE fool you. This does not mean the device is connected, merely that it sees the BS. Finally once the device is actually connected, bring up the Ethernet interface and run dhclient on it. In this case that was eth2. == USRP Universal Hardware Driver == Prior to installing ensure the host platform is running Ubuntu 14.04 and a USRP connected on eth2 interface. UHD binary installation instructions referenced from [http://files.ettus.com/manual/page_install.html#install_linux]. Add the repository and install the UHD binary: {{{ add-apt-repository ppa:ettusresearch/uhd apt-get update apt-get install libuhd-dev libuhd003 uhd-host }}} Configure eth2 network interface by adding the following in /etc/network/interfaces {{{ auto eth2 iface eth2 inet static address 192.168.10.1 netmask 255.255.255.0 mtu 9216 }}} Test UHD installation using the USRP Hardware Driver Discovery Utility {{{ uhd_find_devices }}} Output should look similar to the following {{{ linux; GNU C++ version 4.6.3; Boost_104601; UHD_003.007.002-release -------------------------------------------------- -- UHD Device 0 -------------------------------------------------- Device Address: type: usrp2 addr: 192.168.10.2 name: serial: F297A3 }}} USRP peripheral details can be obtained using the USRP Hardware Driver Peripheral Report Utility {{{ uhd_usrp_probe }}} Output should look similar to the following {{{ linux; GNU C++ version 4.6.3; Boost_104601; UHD_003.007.002-release -- Opening a USRP2/N-Series device... -- Current recv frame size: 1472 bytes -- Current send frame size: 1472 bytes _____________________________________________________ / | Device: USRP2 / N-Series Device | _____________________________________________________ | / | | Mboard: N210r4 | | hardware: 2577 | | mac-addr: 00:80:2f:0a:cc:c8 | | ip-addr: 255.255.255.255 | | subnet: 255.255.255.255 | | gateway: 255.255.255.255 | | gpsdo: none | | serial: F297A3 | | FW Version: 12.3 | | FPGA Version: 10.0 | | | | Time sources: none, external, _external_, mimo | | Clock sources: internal, external, mimo | | Sensors: mimo_locked, ref_locked | | _____________________________________________________ | | / | | | RX DSP: 0 | | | Freq range: -50.000 to 50.000 Mhz | | _____________________________________________________ | | / | | | RX DSP: 1 | | | Freq range: -50.000 to 50.000 Mhz | | _____________________________________________________ | | / | | | RX Dboard: A | | | ID: SBX (0x0054) | | | Serial: E4R1CSDXS | | | _____________________________________________________ | | | / | | | | RX Frontend: 0 | | | | Name: SBXv3 RX | | | | Antennas: TX/RX, RX2, CAL | | | | Sensors: lo_locked | | | | Freq range: 400.000 to 4400.000 Mhz | | | | Gain range PGA0: 0.0 to 31.5 step 0.5 dB | | | | Connection Type: IQ | | | | Uses LO offset: No | | | _____________________________________________________ | | | / | | | | RX Codec: A | | | | Name: ads62p44 | | | | Gain range digital: 0.0 to 6.0 step 0.5 dB | | | | Gain range fine: 0.0 to 0.5 step 0.1 dB | | _____________________________________________________ | | / | | | TX DSP: 0 | | | Freq range: -250.000 to 250.000 Mhz | | _____________________________________________________ | | / | | | TX Dboard: A | | | ID: SBX (0x0055) | | | Serial: E4R1CSDXS | | | _____________________________________________________ | | | / | | | | TX Frontend: 0 | | | | Name: SBXv3 TX | | | | Antennas: TX/RX, CAL | | | | Sensors: lo_locked | | | | Freq range: 400.000 to 4400.000 Mhz | | | | Gain range PGA0: 0.0 to 31.5 step 0.5 dB | | | | Connection Type: QI | | | | Uses LO offset: No | | | _____________________________________________________ | | | / | | | | TX Codec: A | | | | Name: ad9777 | | | | Gain Elements: None }}} == RTL-SDR == Assumes you have git, cmake and libusb-1.0.0.dev installed on the image. If not you need: {{{ apt-get install git cmake libusb-1.0.0-dev }}} {{{ git clone git://git.osmocom.org/rtl-sdr.git cd rtl-sdr/ mkdir build cd build cmake ../ -DINSTALL_UDEV_RULES=ON make make install ldconfig cp ../rtl-sdr.rules /etc/udev/rules.d/ }}} Blackclist the RTL-SDR so it doesn't interfere with other devices by adding creating /etc/modprobe.d/blacklist-rtlsdr.conf with: {{{ blacklist dvb_usb_rtl28xxu }}} == ATH 5k == No build necessary, uses stock kernel drivers from Ubuntu Repository. == ATH 9k == No build necessary, uses stock kernel drivers from Ubuntu Repository. == Intel® PRO/Wireless 2200BG and 2915ABG == No build necessary, uses stock kernel drivers from Ubuntu Repository. == Linux Blue tooth == No build necessary, uses stock kernel drivers from Ubuntu Repository. == Ath 3K == No build necessary, uses stock kernel drivers from Ubuntu Repository.