Kernel Preparation

For wifi access point mode support, you'll need to use the 3.6 kernel version.  A number of changes were made to the mwifiex driver between versions 3.5 and 3.6.  Client mode works fine in 3.5, but hostapd will throw an error.  

Install dependencies

sudo apt-get install u-boot-tools g++-arm-linux-gnueabi

Download the kernel

cd overo
mkdir kernel-dev
cd kernel-dev
git clone git://github.com/gumstix/linux.git linux
cd linux
git checkout omap-3.6

The default configuration can be found on gumstix's github page: https://github.com/gumstix/Gumstix-YoctoProject-Repo/wiki.  Copy the file and rename it as ".config" in ~/overo/kernel-dev/linux

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig

Current modifications:

  • disable touchscreen input in driver -> input device support
  • disable all of driver -> graphics support

Build the kernel and modules

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage -j2
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules -j2

The resulting uImage should be built in arch/arm/boot.  Modules will be installed by the script that makes the SD card.  

UBoot

Get the omap-v2014.10 u-boot branch from gumstix github.  

cd ~/overo
mkdir uboot-dev
cd uboot-dev
git clone git://github.com/gumstix/u-boot.git u-boot
cd u-boot
git checkout omap-v2014.10

To change the pin mux, modify overo.h in board/overo.  The build:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- omap3_overo_config
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- all -j4

Both MLO and u-boot will be built in the top u-boot directory.

Getting Wifi working in debian

The package firmware-libertas is required from wheezy backports for both client and access point modes.  Add the following lines to /etc/apt/sources.list.d/multistrap-wheezy.list in the rootfs.  

deb [arch=armel] http://debian.lcs.mit.edu/debian wheezy-backports non-free
deb-src http://debian.lcs.mit.edu/debian wheezy-backports non-free

Then install the package:

apt-get update
apt-get install firmware-libertas

This should be sufficient to get wifi client mode working.  Follow the debian wifi howto instructions for embedding psk info into the /etc/network/interfaces file: https://wiki.debian.org/WiFi/HowToUse

To get the gumstix functioning as an access point we'll need to follow some additional steps as documented here: http://www.jumpnowtek.com/gumstix-linux/Duovero-Access-Point.html

Download the latest release of hostapd from http://w1.fi/hostapd/.  Copy the provided defconfig to .config and build.  You may need to install some additional dependencies such as libnl-dev.  If you need a dhcp server, install dhcpd using apt-get:

apt-get install isc-dhcp-server

Slow SSH

With the gumstix in AP mode you may find ssh slow to provide a password prompt.  This is likely because DNS lookup is timing out without internet access / a DNS server available.  To disable reverse DNS lookup at the line "UseDNS no" to /etc/ssh/sshd_config.  

Power Consumption

Powered at 5V via 40-pin header on tobi board

Wifi AP mode and BT on, idle 400mA,  450mA under load
Stop hostapd -> idle drops to 292mA
rfkill does not seem to affect power usage
turning off bluetooth via gpio did not affect power usage
turning off wifi via gpio saw ~6mA drop in power usage
wifi in client mode only (ap off), see ~300mA just connected, 430mA when downloading a large file

earthstorm shows similar idle power consumption to ironstorm when power is turned off
on a summit expansion board (like tobi but no ethernet), idle power consumption is reduced to just 130mA 

In summary:

  • With WiFi off, idle power consumption is ~300mA
  • 100% CPU use increases power consumption by ~50mA
  • WiFi draws up to ~100mA (always 100mA in AP mode, varies with distance and usage in client mode)
  • Further reductions in power use may be possible, but will require more work (possibly a custom kernel or u-boot modifications to disable the hdmi controller, etc) 

Duovero tests with no Wifi
idles around 230mA - not sure why this is so much lower than the overo,
jumps to around 500mA at full CPU usage, 380mA to fully utilize one core

 

  • No labels