- Users FAQ
- Firmware and Drivers
How can I talk to the E100?¶
There are three methods to interact with to the E100.
- Console port through a serial interface
- Network port using SSH,
- Graphically with an attached display, keyboard, and mouse.
The console port is the simplest method and required for manipulation of pre-kernel boot settings, while the network interface is faster and required for transferring files to and from the device.
Can I use the E100 as a USB peripheral like the USRP1?¶
While it is in theory possible to use the E100 as a peripheral USB Gadget device, the capability is not available at this time. Currently, there are no immediate plans to implement functionality on the E100 to act as a peripheral device.
How do I connect through the console port?¶
Any program that provides a standard serial terminal can be used to talk to the E100. Common options are Minicom and GNU Screen. Both options are commonly available in typical Linux distributions and package management repositories.The E100 serial parameters are:
- Baud Rate: 115200
- Data: 8-bit
- Parity: None
- Stop: 1-bit
- Flow Control: None
Using a typical USB cable with Standard-A to Mini-B connectors, plug the large end of the cable into the PC and the small end of the cable into the "CONSOLE" port on the E100. Assuming you are on a Linux workstation, the kernel will assign the USB device a file address. The address can be found 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. Assuming the device is at ttyUSB0, use the following command to connect to your device using
$ sudo screen /dev/ttyUSB0 115200,cs8,-ixon,-ixoff
When you power on your E100, you should immediately see the console output in your screen.
.---O---. | | .-. o o | | |-----.-----.-----.| | .----..-----.-----. | | | __ | ---'| '--.| .-'| | | | | | | | |--- || --'| | | ' | | | | '---'---'--'--'--. |-----''----''--' '-----'-'-'-' -' | '---' The Angstrom Distribution usrp-e1xx ttyO2 Angstrom v20110529 usrp-e1xx ttyO2 usrp-e1xx login:
How do I connect through the network port?¶
The E100 runs the SSH daemon by default, and simply using SSH with the device IP address 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 the device powers up - give it a minute to finish booting - then check the connected router or DHCP server's IP address records - the device and assigned IP address should be added. Once you have the IP address, SSH into it with the information in the section below this one about login information.
# ssh email@example.com
Alternatively, the IP address can be obtained by connecting through the serial console and running
# ifconfig eth0 Link encap:Ethernet HWaddr A0:36:FA:85:30:CC inet addr:192.168.10.2 Bcast:192.168.10.255 Mask:255.255.255.0 inet6 addr: fe80::a236:faff:fe85:30cc/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:422 errors:0 dropped:0 overruns:0 frame:0 TX packets:298 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:47489 (46.3 KiB) TX bytes:41571 (40.5 KiB) Interrupt:80
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 accessories can I attach to the E100?¶
For many users and applications, the E100 is a fully functional device using only a serial cable, network cable, or operating in standalone mode with no connectivity cables at all. For other use cases, accessories can be attached to the front panel of the E100.
In order to connect peripherals (e.g., a keyboard and mouse) to the E1XX, you will need a powered USB hub. Connect the upstream host port of the hub to the "USB HOST" port using a Mini-A connector. Connect the peripherals to the downstream ports on the hub.
Please note that the E100 cannot be used as peripheral device like the USRP1. Do not connect the "USB HOST" port to a downstream port on a host computer or powered hub as damage to the device may result.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 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-07OCT2011-1.bin.gz
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
Firmware and Drivers¶
How do I install the current Linux kernel and drivers?¶
The E100 ships with a bootable SD card, however, due to product lead times it is highly recommended that users update the installed Linux kernel, boot files, and kernel modules to a current version. Optionally, the entire root file system, which includes updated kernel modules, can also be updated. Please see the following pages for further information and instructions.
- Update kernel and boot files only
- Update kernel modules on an existing root file system
- Update the entire root file system (includes kernel modules)
How do I install UHD from source?¶
Follow the regular build instructions with the following notes:
# opkg remove --force-depends uhd uhd-dev uhd-examples uhd-tests
# 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_E100=ON -DENABLE_USRP_E_UTILS=TRUE -DENABLE_USB=OFF -DENABLE_USRP2=OFF ../ $ make $ make test $ su # make install # ldconfig
How do I update the FPGA firmware?¶
The E100 firmware is loaded from the root file system at runtime. By default UHD will search in the location
<install-path> will be
/usr/local if installing from source. For the UHD installation included with the root file system image (and packager based installations in general),
<install-path> will be simply
The most recent and previous firmware files can be downloaded from the UHD page
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
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 install GNU Radio from source?¶
First, remove any existing installation by OpenEmbedded.
# opkg remove --force-depends gnuradio gnuradio-dev gnuradio-examples task-gnuradio
Obtain the next branch from the gnuradio git repository and build with the following options.
$ 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 do install and operate OpenBTS?¶
Please see the E100 specific OpenBTS wiki
How do I build GNU Radio with Qt support?¶
UNDER CONSTRUCTION ..... I am saving notes here for now.
Using the gnome-qt-image, build sip, PyQt, and PyQwt ....
# python configure.py CXXFLAGS+="-march=armv7-a - mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp" CFLAGS+="-march=armv7-a -mtune=co rtex-a8 -mfpu=neon -mfloat-abi=softfp" # make # make install
# . /usr/share/qt4/environment-setup # python configure.py CXXFLAGS+="-march=a rmv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp" CFLAGS+="-march=armv7-a - mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp" -q /usr/bin/qmake-qt4 # make # make install
Edit PyQwt configure.py with full path to qmake specs directory.
# ln -s /usr/bin/qmake-qt4 /usr/bin/qmake # python configure.py --extra-cxxflags="-march=armv7-a -mtun e=cortex-a8 -mfpu=neon -mfloat-abi=softfp" --extra-cflags="-march=armv7-a -mtune =cortex-a8 -mfpu=neon -mfloat-abi=softfp" # make # make install
Fiddle with qt utility names.
# ln -s /usr/bin/moc /usr/bin/moc4 # ln -s /usr/bin/uic /usr/bin/uic4
# ./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
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 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.