- How do I get the latest version of UHD?
- How do I talk to the E100?
- What is the login information of the E100?
- What do I need to fully setup my E1XX?
- How can I build UHD and GNU Radio from source?
- How can I build GRC with GNU Radio?
- How can I test my UHD build and my E1XX?
- How do I backup the microSD card shipped with the E1XX?
- How do I change the screen resolution?
- How do I update the FPGA firmware?
- How do I set the timezone from the console?
How do I get the latest version of UHD?¶
The E100 ships with a bootable SD card, however, due to product lead times it is recommended that users update the installed Linux kernel, boot files, and kernel modules drivers to a current version. Optionally, the entire root file system, which includes updated kernel modules, can also be updated.
- Update kernel and boot files
- Update modules on an existing root file system
- Update the entire root file system
How do I talk to the E100?¶
Connect through the 'console' port using a serial terminal. The E100 serial parameters are:
- Baud Rate: 115200
- Data: 8-bit
- Parity: None
- Stop: 1-bit
- Flow Control: None
The easiest way to get started using the E100 is through the 'console' port. Using a mini-A USB to USB cable, plug the E100 into your computer. Assuming you are on a Linux workstation, the kernel will assign the USB device a file address. You can discover what this is by running:
If you just plugged in your E100, at the bottom of the output you should find something like:
usb 4-2: Detected FT232RL usb 4-2: Number of endpoints 2 usb 4-2: Endpoint 1 MaxPacketSize 64 usb 4-2: Endpoint 2 MaxPacketSize 64 usb 4-2: Setting MaxPacketSize 64 usb 4-2: FTDI USB Serial Device converter now attached to ttyUSB0
The important part to pay attention to the last line that says "... now attached to ttyUSB0". 'ttyUSB0' is now the device address in your filesystem.
You can use any program that provides a serial terminal to talk to the E100. Common options are Minicom and GNU Screen. Both of these options are likely available in your distributions package management repositories.
To connect to your device using screen, assuming the device is at ttyUSB0, use the following command:
$ sudo screen /dev/ttyUSB0 115200,cs8,-ixon,-ixoff
When you power on your E100, you should immediately see the console output in your screen.
The E100 runs the SSH daemon by default, and simply SSHing into the device is the preferred mode of communication if you aren't doing pre-kernel-load (boot-time) hacking. For this, the serial console is required.
The E100 uses DHCP. Once you power it up, give it a minute to finish booting, then check your router's DHCP records - you should see the device and its assigned IP address. Once you have the IP address, SSH into it with the information in the section below this one about login information.
Alternatively, you can obviously use the serial console to run '# ifconfig' and get the IP address.
What is the login information of the E100?¶
There currently appears to be two sets of root login information:
- Username: root
- Password: empty
- Username: root
- Password: usrpe
What do I need to fully setup my E1XX?¶
NOTE: Some people are perfectly happy speaking to the E100 with a serial cable and possibly an Ethernet cable :)
In order to connect peripherals (e.g., a keyboard and mouse) to your E1XX, you will need a powered USB hub. You should be able to plug the hub into either the USB OTG or USB HOST port.Here is a list of parts you need in addition to your E1XX (and the power supply, obviously) to have a 'fully operating' setup (i.e., be able to use all of its features):
- RF Bulkhead Cables (included with E1XX)
- USB-ADP Adapter Cable (included with E1XX)
- Daughterboard (Available from Ettus Order Page)
- Antenna (Available from Ettus Order Page)
- Ethernet CAT-5e Cable (Available from Ettus Order Page)
- USB to Mini-B cord (needed for the USB serial console)
- USB Hub with External Power Source & Mini-A connector
- USB Keyboard
- USB Mouse
- HDMI/DVI-D cable
- Externally-Powered Speakers
See the pictures at this link for examples of how to setup your E100: E100 Examples
How can I build UHD and GNU Radio from source?¶
Follow the regular build instructions with the following notes:
# opkg remove --force-depends uhd uhd-dev uhd-examples uhd-tests # opkg remove --force-depends gnuradio gnuradio-dev gnuradio-examples task-gnuradio
# echo "/usr/local/lib" >> /etc/ld.so.conf
$ git clone git://ettus.sourcerepo.com/ettus/uhd.git $ cd uhd/host/ $ mkdir build $ cd build $ cmake -DCMAKE_CXX_FLAGS:STRING="-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -g" -DENABLE_USRP_E100=TRUE -DENABLE_USRP_E_UTILS=TRUE ../ $ make $ make test $ su # make install # ldconfig
Use the next branch from the gnuradio git repository:
$ git clone git://gnuradio.org/gnuradio.git $ cd gnuradio $ ./bootstrap $ ./configure --disable-volk --disable-usrp2 --disable-usrp1 --disable-gr-video-sdl CFLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -O3" CXXFLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -O3" -with-qwt-incdir=/usr/include $ make $ make check $ su # make install # ldconfig
How can I build GRC with GNU Radio?¶
GRC will not be built by default because of an autoconfig dependency on wxPython, which isn't provided in the opkg repos. GRC does not need wxPython to run, however - it is only needed for GUI flow graphs.
To build GRC without wxPython on the E1XX, apply this fix to the autoconf m4 files:
Before using opkg to install new packages, you need to update the feed database with:
# opkg update
Also, you will need to install one additional package:
# opkg install python-lxml
After these steps, you should re-run the GNU Radio build instructions, including the './bootstrap' step.
How can I test my UHD build and my E1XX?¶
Assuming you followed the build instructions given above, all built binaries will exist within the uhd/host/build folder. The UHD code contains some example files that you can use to test your E1XX.
$ cd uhd/host/build/examples $ su # ./benchmark_rx_rate
You should then see some output detailing the detection of your E1XX and the attached daughterboard, followed by receive rate tests, which look something like this:
Testing receive rate 0.500000 Msps (10.000000 second run) Received packets: 9882 Received samples: 5000292 Lost samples: 0 Lost packets: 0 (approximate) Sustained receive rate: 0.500000 Msps Testing receive rate 1.000000 Msps (10.000000 second run) Received packets: 19763 Received samples: 10000078 Lost samples: 0 Lost packets: 0 (approximate) Sustained receive rate: 1.000000 Msps (continued)
Eventually, it will test sample rates that are too high, and you will see buffer overruns.
How do I backup the microSD card shipped with the E1XX?¶
Remove the micro SD card from the E100 and insert it into your favorite device for mounting micro SD cards in your PC. (I assume a Linux PC). If the partitions automount, umount them. (Do not "safely remove the hardware"). Use the output of dmesg figure out what drive the micro SD card is. (In my case, it is /dev/sdf). Run:
# dd if=/dev/sdf of=sd-backup.bin
You should be able to restore the image via a similar method, but use:
# dd if=sd-backup.bin of=/dev/sdf
Be very careful when writing to /dev/sd* not to overwrite your local file system.
If you need to restore the card and forgot to make a backup, the file is here: http://dl.dropbox.com/u/14618236/E100-sd-card.bin.gz
How do I change the screen resolution?¶
You can temporarily change the screen resolution by changing the dvimode variable in u-boot. For example
# setenv dvimode 1440x900MR-16@60 # boot
This sets the display resolution to 1440x900. Don't worry about the MR-16@60 bit for now, this should work for most reasonable display resolutions. Once you find a setting that works well with your monitor, you will need to create a boo.scr file to make the change stick across reboots.
Make a file boot.cmd with:
setenv dvimode 1440x900MR-16@60 if run loaduimage; then run mmcboot; fi
in it. Then run:
$ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "boot" -d boot.cmd boot.scr
Copy this file onto the FAT partition of the micro SD card and reboot.
mkimage is part of u-boot. I use a copy built by OpenEmbedded and found under tmp/sysroot. This page has more info on u-boot scripts http://www.gumstix.net/wiki/index.php?title=U-Boot
If there are some common resolutions that people need, I'll post some files here so you do not need to create the boot.scr file yourself.
How do I update the FPGA firmware?¶
Updating the FPGA firmware is extremely easy. For the E100, the firmware is loaded at runtime. All you need to do is download the appropriate firmware into the UHD_IMAGE_PATH directory. By default, this location is <install-path>/share/uhd/images. Head to this website and copy the address of the most recent firmware tarball: http://code.ettus.com/redmine/ettus/projects/uhd/wiki
Then, follow these steps:
$ cd <install-path>/share/uhd/images $ su # mv usrp_e100_fpga.bin usrp_e100_fpga.bin.bak # wget <paste link> # tar zxvf <downloaded tarball> # mv <tarball directory>/share/uhd/images/* . # exit
And you're done!
How do I set the timezone from the console?¶
The timezone is set by creating a soft link from a file in /usr/share/zoneinfo to /etc/localtime. There are a set of tzdata opkg's covering different areas and a tzdata file with global coverage. If there is no /usr/share/zoneinfo directory, you need to install a tzdata package.
# opkg install tzdata # ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
You need to find the file in zoneinfo that works for your location. Also, for the change to take effect, you need to log out and back in.
If your E100 is connected to the Internet, you can install ntpdate to set the time.
# opkg install ntpdate # /usr/bin/ntpdate -b -s -u pool.ntp.org