Tips and tricks

Gordan's blog

Plenty of inspirational tricks including screen upgrade, overclocking, installing additional internal storage and more can be found at http://www.altechnative.net/tag/ac100/.

Optimising power consumption

PowerTOP for ARM might provide more relevant information than the version from the distribution's repositories.

Lid and jack insertion events

You can use a lightweight https://github.com/gandro/input-event-daemon, it should listen on /dev/input/event4 for LID:0 and LID:1 events.

Using side LEDs and WiFi LED

(This is for the 12.04 kernel) The LEDs on the side can be triggered by echoing values between 0 and 7 to

echo 7 > /sys/devices/platform/nvec.0/nvec-leds.0/leds/nvec-led/brightness

for different blinking-patterns (need to be root). Try

echo 0 > brightness ; sleep 1 ; echo 7 > brightness ; sleep .2;echo 1 > brightness

to 'allways-on' the side LEDs

You can also set different triggers for the WiFi LED. To see the available options do

cat /sys/devices/platform/nvec.0/leds-gpio/leds/wifi-led/trigger

then to change the trigger (temporarily) do for example

echo mmc0 > /sys/devices/platform/nvec.0/leds-gpio/leds/wifi-led/trigger

to get eMMC activity.

Video playback

To get maximum of the unaccelerated framebuffer driver you can use mplayer2 (it uses libraries with SMP support) and this ~/.mplayer/config

ao=alsa
mixer-channel=Master
vo=x11
zoom=1
sws=0
hardframedrop=1
lavdopts=fast=1:skiploopfilter=all

Watching Youtube

#!/bin/sh
cookies_file=`mktemp /tmp/youtube-cookies.XXXXXX`
rm $cookies_file
url="`youtube-dl --cookies=$cookies_file -g --max-quality 35 $1`"
mplayer -cookies -cookies-file $cookies_file -cache 2048 $url
rm $cookies_file

Software sound mixing

To be able to hear simultaneous playback from different programs copy this to /usr/share/alsa/cards/tegra-alc5632.conf:

# default with dmix/dsnoop
tegra-alc5632.pcm.default {
	@args [ CARD ]
	@args.CARD {
		type string
	}
	type asym
	playback.pcm {
		type plug
		slave.pcm {
			@func concat
			strings [ "dmix:CARD=" $CARD ",RATE=44100" ]
		}
	}
	capture.pcm {
		type plug
		slave.pcm {
			@func concat
			strings [ "dsnoop:CARD=" $CARD ",RATE=44100" ]
		}
	}
}

Dedicated volume controls without PulseAudio

Add this to ~/.asoundrc:

pcm.softvol {
        @args [ NAME ]
        @args.NAME.type string
        type softvol
        slave.pcm "default"
        control.name $NAME
}

And use softvol:<custom name> for the ALSA device, like this: aplay -Dsoftvol:“Aplay Dedicated” testmusic.wav

Handling bell events

You can use xkbevd to play an arbitrary sound when an XkbBell event is generated. For URvxt you need to tell it to use xkbbell for bellCommand. A better solution would be to extend input-events-daemon to create a virtual input device capable of receiving a system bell, that way it'd work equally well for all programs even without X.

Wireless performance

  • compat-wireless provides newer wireless drivers that work better but wireless extensions (only needed for some specific programs using this deprecated interface, e.g. aircrack-ng) will not be enabled until the kernel is compiled with support for some old pre-mac80211 driver (to select CONFIG_WIRELESS_EXT).
  • iw dev wlan0 set power_save off to improve interactivity when a power-saving compatible AP is used

Wireless connectivity without NetworkManager

Place this in /etc/network/interfaces (on a Debian-like system) to have automatic wifi roaming controllable with wpa_cli and support for the GSM/UMTS modem:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

allow-hotplug wlan0
iface wlan0 inet manual
        wpa-driver nl80211
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

iface default inet dhcp

iface home inet dhcp

iface wwan0 inet dhcp
        pre-up stty -F /dev/ttyACM1 1:0:80001cb2:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0 2> /dev/null || \
               stty -F /dev/ttyACM1 1:0:80001cb2:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
        pre-up chat -v TIMEOUT 30 ""                                    \
                        AT OK                                           \
                        AT+CGREG=1 OK                                   \
                        AT+CFUN=1 "+CGREG: 1"-AT+CFUN=1-"+CGREG: 1"     \
                        "" ABORT ERROR ""                               \
                        AT*ENAPDBG=1 OK                                 \
                        'AT+CGDCONT=1,"IP","internet.beeline.ru"' OK    \
                        "AT*ENAP=1,1" "*ENAPDBG: 1,1"-"AT*ENAP=1,1"-"*ENAPDBG: 1,1" < /dev/ttyACM1 > /dev/ttyACM1 || \
                                 ! chat -v "" AT*E2RESET < /dev/ttyACM1 > /dev/ttyACM1
        post-down chat -v "" AT+CFUN=4 OK < /dev/ttyACM1 > /dev/ttyACM1

This assumes your card has PIN disabled, if it's not, you should be able to add AT+CPIN=“abcde” command where appropriate. If you hot-swap the SIM card you might need to issue the AT*E2RESET command manually (or do ifup wwan0 twice). The modem supports messaging via SMS and USSD requests, e.g. this works with Beeline to see the amount of money left:

#!/bin/sh
/usr/sbin/chat -vs "" "AT+CUSD=1,\"*102#\",15" "OK" < /dev/ttyACM1 > /dev/ttyACM1 
Log In