I recently purchased an Acer C720-3605. I installed Debian Linux (Jessie) on it. This page documents the setup of my machine in hopes that it can help others setup their machines. For reference, here is my kernel information Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24). You can obtain this by running the command uname -srv.

Ignore Power Button and Lid

After first installing Debian Jessie, pressing the power key on the keyboard would result in an immediate shutdown of the machine. This was completely unacceptible as a mistyped key can result in data loss. I also wanted to manually put the machine into sleep state S3 (sleep) instead of having the lid shut put the machine into sleep state S4 (hibernate to disk). Keybindings for putting the machine to sleep are in a following section.

  • edit → /etc/systemd/logind.conf

  • add → HandlePowerKey=ignore

  • add → HandleLidSwitch=ignore

  • run → sudo service systemd-logind restart

Fix Sleep/Wakeup Errors

With a default install of Debian Jessie, after waking from sleep the machine would produce repeated errors which can be seen clearly when at a console prompt. If not at a console, they can also be seen using the dmesg command upon wakeup. I also added an extra powersaving feature by putting the soundcard into power_save mode.

  • edit → /etc/modprobe.d/acer_c720.conf

  • add → blacklist ehci_hcd

  • add → blacklist ehci_pci

  • add → options tpm_tis force=1 interrupts=0

  • add → options snd_hda_intel power_save=1

  • run → sudo depmod -a && update-initramfs -u

Allow Sudoers to Suspend Without Password (From Script)

Because I chose to manually put the computer into the S3 sleep state instead of letting the lid put the computer to sleep I needed to allow non-root users (myself) to run the pm-suspend command.

  • edit → /etc/sudoers.d/user_power_management

  • add → %sudo ALL=(ALL) NOPASSWD: /usr/sbin/pm-suspend

  • add → %sudo ALL=(ALL) NOPASSWD: /sbin/poweroff

  • add → %sudo ALL=(ALL) NOPASSWD: /sbin/reboot

  • run → sudo chmod 0440 /etc/sudoers.d/user_power_management

Low Battery Warning

I use the IceWM window manager which means I do not use a full-up desktop environment which does all of the extra nice things for you. Coincidentally I needed to provide my own low battery warning script. My script requires osd_cat from the xosd-bin package.

  • run → crontab -e

  • add → */5 * * * * /home/duane/bin/battery_warning

battery_warning
if acpi -b | grep -q "Discharging"; then
	BATTERY_MINS=$(acpi -b | cut -f 5 -d " ")

	if [[ $BATTERY_MINS < 00:30:00 ]] ; then
		BATTERY_MINS=$(echo $BATTERY_MINS | cut -f2,3 -d:)
		echo "low battery-$BATTERY_MINS left" | DISPLAY=:0.0 /usr/bin/osd_cat \
		-p top -A right -c "#ff3030" -O 2 -u "#800C0C" -f "-*-terminus-*-*-*-*-96-*-*-*-*-*-*-*"
	fi
fi

TrackPad Tweaks

These are just simple preferential tweaks to the TrackPad/ClickPad that I prefer. In order, they speed up the pointer, enable tap-to-click, reduce the required tap pressure and enable two finger scrolling vertically and horzontally.

  • edit → .xinitrc

  • add → xset m 12 0

  • add → xinput --set-prop "Cypress APA Trackpad (cyapa)" "Synaptics Tap Action" 0 0 0 0 1 3 2

  • add → xinput --set-prop "Cypress APA Trackpad (cyapa)" "Synaptics Finger" 15 20 0

  • add → xinput --set-prop "Cypress APA Trackpad (cyapa)" "Two-Finger Scrolling" 1 1

see synaptics manpage for details.

Bluetooth

To get the bluetooth controller to even show up I had to install the firmware-atheros package. Once I did and rebooted, running the bluetoothctl utility revealed the controller as [NEW] Controller 00:00:00:00:00:00 acer [default]. The other packages that I installed were pulseaudio-module-bluetooth bluez-firmware bluez-tool.

Special Function Keys

I really like the way that the Chrome OS uses Shift+Left for Home, Shift+Right for End, Shift+Up for PageUp, Shift+Down for PageDown and Shift+Backspace for Delete. It’s actually so much nicer than have to reach for odd keys spaced out around the keyboard in places that vary from keyboard to keyboard. I’m not sure why I didn’t do this before.

  • edit → xbindkeysrc

  • run → xbindkeys

xbindkeysrc
"xdotool keyup Shift+BackSpace; xdotool key Delete; xdotool keydown Shift"
	Shift+BackSpace

"xdotool keyup Shift+Up; xdotool key Page_Up; xdotool keydown Shift"
	Shift+Up

"xdotool keyup Shift+Down; xdotool key Page_Down; xdotool keydown Shift"
	Shift+Down

"xdotool keyup Shift+Left; xdotool key Home; xdotool keydown Shift"
	Shift+Left

"xdotool keyup Shift+Right; xdotool key End; xdotool keydown Shift"
	Shift+Right

More Special Function Keys

As I mentioned before, I use IceWM window manager. I let IceWM handle a few of the keybindings, I guess mostly because these keybindings run some of my own custom bash scripts and that’s where I traditionally have put such things. It should be easy to move this stuff over to the .xbindkeysrc should you choose. The fancy function keys with the pictures on them just work as normal F1-F10 keys on my keyboard with this setup. I use the Search key as a modifier to make them do the operation that the picture depicts. This search key is Mod4/Super, so you’ll see it referenced as Super in the file below. I’m adding an excerpt from my ~/.icewm/keys file as an example. I’ll also add the custom scripts I reference in there, but I’ll leave it up to you to figure them out if you want to use them. There are many other better replacements for those scripts I’m sure. Btw, the Super+F3 keybinding is the way I put the machine into S3 sleep state that I mentioned earlier.

icewm/keys
key "Super+F3"				sudo pm-suspend
key "Super+F6"				/home/duane/bin/backlight down
key "Super+F7"				/home/duane/bin/backlight up
key "Super+F9"				/home/duane/bin/volume down
key "Super+F10"				/home/duane/bin/volume up
backlight
#!/bin/bash

CHANGE=10

if [ -n "$DISPLAY" ]; then
	if [ "$1" == "up" ]; then
		xbacklight -inc $CHANGE
	elif [ "$1" == "down" ]; then
		xbacklight -dec $CHANGE
	fi

	SETTING=$(xbacklight -get | cut -f1 -d".")

	killall osd_cat
	osd_cat -b percentage -P $SETTING -T backlight -p top -A right -d 1 -c "#60f030" -O 2 -u "#296614" -f "-*-terminus-*-*-*-*-96-*-*-*-*-*-*-*"
fi
volume
#!/bin/bash

OPERATION=$1
CHANGE=2

DEFAULT_SINK=$(pacmd list-sinks 2> /dev/null | grep '\*' | awk '{print $3}')
VOL_SET_CMD="pactl set-sink-volume @DEFAULT_SINK@"
CURRENT_VOLUME=$(pactl list sinks 2> /dev/null | awk "/Sink #$DEFAULT_SINK/,/Volume:/" | tail -1 | sed -r 's/.*\s([0-9]+)%.*/\1/g')

if [ "$1" == "up" ]; then
	NEW_VOLUME=$((CURRENT_VOLUME + $CHANGE))
elif [ "$1" == "down" ]; then
	NEW_VOLUME=$((CURRENT_VOLUME - $CHANGE))
fi

if [ -n "$NEW_VOLUME" ]; then
	$VOL_SET_CMD $NEW_VOLUME%
	CURRENT_VOLUME=$NEW_VOLUME
fi

if [ -n "$DISPLAY" ]; then
	killall osd_cat
	osd_cat -b percentage -P $CURRENT_VOLUME -T volume -p top -A right -d 1 -c "#60f030" -O 2 -u "#296614" -f "-*-terminus-*-*-*-*-96-*-*-*-*-*-*-*"
fi

Miscellany

I use my .xinitrc file to set some of my default X settings and kick off my window manager. My machine boots into console mode and when I ready for a graphical environment I run the command xinit. I’ll include the pertinent snippets here as an example of my setup.

xinitrc
# === keyboard repeat threshold/rate and bell ===
xset r rate 250 25
xset -b

# === touchpad ===
xset m 12 0
# enable tap-to-click
xinput --set-prop "Cypress APA Trackpad (cyapa)" "Synaptics Tap Action" 0 0 0 0 1 3 2
# reduce tap pressure
xinput --set-prop "Cypress APA Trackpad (cyapa)" "Synaptics Finger" 15 20 0
# enable two-finger vert/horz scrolling
xinput --set-prop "Cypress APA Trackpad (cyapa)" "Synaptics Two-Finger Scrolling" 1 1

# === make the pointer disappear when not active ===
unclutter -idle 1&

xbindkeys
xbacklight -set 65
xscreensaver &
pulseaudio --start

exec icewm-session

Lingering Oddities/Problems

  • Upon wakeup I sometimes have to restart my pulseaudio daemon to get it to recognize my USB headset.

  • I’m not a fan of the laptop automatically starting (from a powered off state as well as from a sleeping state) when the lid is opened. I suspect this might have something to do with the hardware itself tho. It’s as if a power button press is registered upon opening the lid.