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://mv.ezproxy.com.ezproxyberklee.flo.org/debian wheezy-backports non-free deb-src http://mv.ezproxy.com.ezproxyberklee.flo.org/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
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, perhaps the wifi module?
jumps to around 500mA at full CPU usage, 380mA to fully utilize one core