Speech:Summer 2015 Marcel


 * Home
 * Semesters
 * Summer 2015

Week Ending June 10th, 2015
My task this week was to fix the USB3 problem I had with my B200 board. USB 3.0 is a relatively new interface, and some USB 3.0 controllers do not perform reliably with devices like SDRs that stream data continuously. I installed GNURadio/Ubuntu 14.04 on a few computers to see if there are any controllers that might work well with B200. Finally I found one that seems to work and also I ordered a USB 3 PCI-E Card that is known to perform very well.

These are the steps needed to setup B200:

SUBSYSTEMS==”usb”, ATTRS{idVendor}==”2500″, ATTRS{idProduct}==”0020″, MODE:=”0666″ sudo udevadm control –reload-rules
 * Add udev Rules to /etc/udev/rules.d/uhd-usrp.rules

username – rtprio 99
 * Setup Realtime Priority in /etc/security/limits.conf file; require re-login

sudo /usr/lib/uhd/utils/uhd_images_downloader.py uhd_find_devices –args=”type=b200″ cd /usr/lib/uhd/examples ./benchmark_rate –rx_rate 45E6 –tx_rate 45E6 –args “type=b200″
 * Update Firmware
 * Probe
 * Benchmark

I got the following results and I noticed a lot of underflows detected. For this short benchmark test this seems to be a high number.

-- Operating over USB 3. -- Initialize CODEC control... -- Initialize Radio control... -- Performing register loopback test... pass -- Performing CODEC loopback test... pass -- Asking for clock rate 32.000000 MHz... -- Actually got clock rate 32.000000 MHz. -- Performing timer loopback test... pass -- Setting master clock rate selection to 'automatic'. Using Device: Single USRP: Device: B-Series Device Mboard 0: B200 RX Channel: 0 RX DSP: 0 RX Dboard: A   RX Subdev: FE-RX2 TX Channel: 0 TX DSP: 0 TX Dboard: A   TX Subdev: FE-TX2

-- Asking for clock rate 45.000000 MHz... -- Actually got clock rate 45.000000 MHz. -- Performing timer loopback test... pass Testing receive rate 45.000000 Msps on 1 channels Testing transmit rate 45.000000 Msps on 1 channels UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU Benchmark rate summary: Num received samples:   450015216 Num dropped samples:    0 Num overflows detected: 0 Num transmitted samples: 450015216 Num sequence errors:    0 Num underflows detected: 123

Week Ending June 17th, 2015
This week I spent a lot of time testing different hardware and I was able to come up with a machine that works fine. My new USB card (Ebay) was performing very poorly and I suspected that the USB controller chipset((VIA Technologies VL805)) on this board was a counterfeit. According to Ettus Research [Benchmark] this chipset is supposed to perform very well.

After a week of testing and multiple installations I came across many errors so I decided to contain them in a page instead of listing them throughout my weekly logs.* Error Log

Also I started to document all the software and hardware that I'm using.

Week Ending June 24th, 2015
This week I experimented with a RF Upconverter .This device allows you to listen to MF and HF through your existing software defined radio (SDR). The one that I got was manufactured by [Nooelec] and also included a noise source circuit which I had complete. With this device I extended the tunable range of my B200 down to a few kHz.

Also this week I experimented with FPGA images. The B200 code automatically load the FPGA at runtime and I was having some problems with UHD_IMAGE_PATH environment variable.

A problem that I'm trying to solve is related to the frequency calibration of B200 clock. After I applied external 10MHz reference, calibrate utility displayed about 200Hz offset at 500MHz.

Week Ending July 1st, 2015
This week I managed to install all the required hardware to build a "Real-Time Spectrum Analyzer"-like using gr-fosphor gnuradio block. The gnuradio block gr-fosphor is using OpenCL and OpenGL acceleration. In order to achieve this, I had to combine two GeForce GTS 250 video cards into an SLI configuration.

I continued to work with my up-convertor board and construct an AM transmitter flow-graph to generate an AM waveforms.

I spent some time trying to synchronize my B200 sdr with a 10 MHz reference from a GPS disciplined oscillator (GPSDO). I'm using a LUCENT/SYMMETRICOM Z3810AS, KS24361 L101/L102 GPSDO TIMING SYSTEM.

Week Ending July 8th, 2015
This week I spent most of the time researching the X10 protocol. I started by analyzing a Home Automation Remote Control Wall Switch. While searching for FCC ID I found out that this switch operates at 310MHz and uses the X10 control protocol.

Using the gnuradio companion I built an application to analyze the signal transmitted by this switch. After a lot of research (demodulation), I was able to clearly identify the packets of data transmitted.

I spent a great deal of time experimenting with the decimation and the interpolation of the sample rate of the signal and also designing a low pass filter needed for my demodulation.

The next step would be to start transmitting data packets to a wireless wall receptacle.

Week Ending July 15th, 2015
This week I continued to work on an gnuradio application to control the X10 power Module. I was having some difficulty controlling the modules in certain plugs and I suspected that the problem was related to a GFCI outlet.

After starting to investigate the captured signal transmitted by the x10 transceiver I noticed that if I recorded the signal in wav format and looked at the audio waveform in Audacity I could better determine the bit string and discover the preamble, sync and data parts of a packet.

So far I have not been able to communicate with any of my power modules.

Week Ending July 22nd, 2015
This week I continued to work on trying to resolve the communication issue related to the firecracker (X10 CM19A) device. After trying few open source solutions I found a python driver that works very well. [x10-cm19a-linux-driver]

This Python driver provides support for the X10 CM19A USB home automation transceiver. It allows users to send and receive basic on/off commands, bright/dim commands for lamp modules, and directional commands for pan-and-tilt camera bases. The program uses standard in and standard out to receive and send commands, respectively.

http://m.lemays.org/projects/x10-cm19a-linux-driver

Another solution that I found, includes a HTTP server mode and this could be useful. http://www.cuddon.net/search/label/CM19a

One interesting fact that I discovered was that the CM19A not only transmit but also receive wireless X10 signals.

Week Ending July 29th, 2015
This week I research a little more about a problem that I noticed occurs when using B200, there is a large spike at the center frequency to which the radio has been tuned. There are few causes that generate DC spikes:
 * Analog to Digital Convertor is off by a single LSB
 * The output of the low-pass filters where any DC bias will propagate through
 * The mixer where the local oscillator (LO leakage) being on the center of the desired frequency will leak through to the receiver

I experimented with a method to eliminate and reduce the DC spike from the signal. The idea is to tune at a near frequency that moves the DC Spike outside of our source’s transmitted signal while keeping the signal within the bandwidth that is being captured.

Here is an example of a 1kHz signal with no DC offset:



I and Q components are samples of the same signal that are taken 90 degrees out of phase.



There is no additional DC spike besides the 1kHz one.

Next is the representation of the above signal with a DC offset:





There is an additional DC spike(0 kHz) besides the 1kHz one.

Week Ending August 5th, 2015
This week I spent most of the time experimenting with encoding and decoding data with Gnu Radio. GNU Radio contains several packets encoder-decoder blocks, but I found them not very easy customizable. I installed and experiment with [gr-bluetooth] - an implementation of the Bluetooth baseband layer for GNU Radio for experimentation. I was trying to sniff some packets from a Bluetooth communication between my phone and a headset but I was not very successful. I found this application very high CPU consuming and I was trying to listen on one channel at the time ignoring the frequency hopping.

Week Ending August 12th, 2015
This week I spent some time reading about Wideband Channelization and experimenting with a few examples I found.

While reading and experimenting with gnuradio.filter: Channelizers I came to an idea about my thesis project on signal intelligence (SIGINT). I was thinking of building a system that would be able to automatically detect signals, attempt to demodulate and visually represent them.

A few features of this project would be:
 * Display simultaneously frequency and time-domain views of the captured signal
 * Signal analysis, allowing filters to be applied to a captured signal
 * Use OpenCL framework to take advantage of available GPU's and eventually trying to run on an embedded system

Week Ending September 10th, 2015
This week I experimented with the gr-IEEE802.11a/g/p OFDM Receiver for GNU Radio. This is a complete Orthogonal Frequency Division Multiplexing (OFDM) receiver implemented in GNU Radio and I was able to use it with my B200. For experimentation I used a Asus N53 flashed with a custom firmware (Tomato) to add extra features like adjusting transmit power, transmission rate, antena etc. and a wireless card Intel 3945ABG. For settings I used 802.11g ad-hoc channel 6 (2.437 GHz) For the sdr side (B200) I had to acquire a better antenna TP-Link 2.4GHz with 8dBi signal gain. I was able to capture traffic between the wireless router and the wireless card.

Week Ending September 17th, 2015
This week I experimented with another wireless network protocol 802.15.4. ZigBee is a wireless technology based on this standard and is designed for applications like wireless sensors monitoring, security alarms, etc. For the experiment I used another software package developed by Bastian Bloessl  and a wireless sensor development kit from Ti eZ4430-RF2500. I was not able to decode anything. I was hoping my demo kit would use zigbee technology for communication but I found out that is using SimpliciTI a proprietary, low-power radio-frequency(RF) protocol.