Friday, May 30, 2014

Buying A Wireless Dual Band Card That Works Flawlessly in Ubuntu

I recently moved and had to make a choice, run a cable halfway through my apartment or go wireless with my desktop. I decided not to have a fall hazard run the length of my apartment.

Finding a wireless card that just worked in Linux is still a big pain. Wireless support in Ubuntu has gotten better but and still needs better documentation. Ubuntu's own site has outdated information that is badly in need of a maintainer and consistent updates. It doesn't have the Dell XPS13 listed, even though it is a Ubuntu developer machine that ships with Ubuntu preinstalled that came out over two years ago.

You would think with its popularity there would be Ubuntu certified devices, and not just recommended ones. Think Penguin has numerous Linux certified cards in stock and I would highly recommend buying through them if you can afford to pay a little more. I was strapped for cash and was willing to do a little leg work.

I ended up going with the TP-Link TL-WDN4800 N900 Wireless Dual Band PCI Express Adapter.




The TL-WDN4880 has an Atheros (ath9k) chipset inside. Making it plug and play with modern Linux distributions. In Ubuntu 14.04 you don't have to install any drivers or configure any settings. I'm very satisfied with my purchase and not regretting going wireless.

Thursday, May 29, 2014

Eliminate Screen Tearing in Xfce With Compton



I write about Ubuntu but use its community-maintained Xfce derivative Xubuntu on both my desktop and Dell XPS 13. Ubuntu is a great distribution but I love Xfce, Thanks to discovering Compton and getting it configured properly I've been able to move to Xfce on the desktop. The screen tearing I experienced with Xfce's default window manager xfwm4 is gone. Movies, Youtube, Netflix, and gaming all look great.


Compton is a lightweight standalone composite manager that has gained in popularity for its reliably and stability. Compton includes numerous additional improvements and configuration options over xfwm4, including a faster GLX (OpenGL) backend, default inactive/active window opacity, window frame transparency, window background blur, window color inversion, painting rate throttling, VSync, condition-based fine-tune control, configuration file reading, and D-Bus control.

Before you install and configure Compton you need to turn off xfwm4 compositor. Under Settings>Window Manager Tweaks>Compositor


Install compton:
sudo apt-get install compton

Create a compton configuration file
touch ~/.config/compton.conf

Configure Compton for your system, use your preferred text editor
mousepad ~/.config/compton.conf


For my Dell XPS I use this configuration:
You can the file from my download from my dropbox
#################################
#
# Backend
#
#################################

# Backend to use: "xrender" or "glx".
# GLX backend is typically much faster but depends on a sane driver.
backend = "glx";

#################################
#
# GLX backend
#
#################################

glx-no-stencil = true;

# GLX backend: Copy unmodified regions from front buffer instead of redrawing them all.
# My tests with nvidia-drivers show a 10% decrease in performance when the whole screen is modified,
# but a 20% increase when only 1/4 is.
# My tests on nouveau show terrible slowdown.
# Useful with --glx-swap-method, as well.
glx-copy-from-front = false;

# GLX backend: Use MESA_copy_sub_buffer to do partial screen update.
# My tests on nouveau shows a 200% performance boost when only 1/4 of the screen is updated.
# May break VSync and is not available on some drivers.
# Overrides --glx-copy-from-front.
# glx-use-copysubbuffermesa = true;

# GLX backend: Avoid rebinding pixmap on window damage.
# Probably could improve performance on rapid window content changes, but is known to break things on some drivers (LLVMpipe).
# Recommended if it works.
# glx-no-rebind-pixmap = true;


# GLX backend: GLX buffer swap method we assume.
# Could be undefined (0), copy (1), exchange (2), 3-6, or buffer-age (-1).
# undefined is the slowest and the safest, and the default value.
# copy is fastest, but may fail on some drivers,
# 2-6 are gradually slower but safer (6 is still faster than 0).
# Usually, double buffer means 2, triple buffer means 3.
# buffer-age means auto-detect using GLX_EXT_buffer_age, supported by some drivers.
# Useless with --glx-use-copysubbuffermesa.
# Partially breaks --resize-damage.
# Defaults to undefined.
glx-swap-method = "undefined";

#################################
#
# Shadows
#
#################################

# Enabled client-side shadows on windows.
shadow = true;
# Don't draw shadows on DND windows.
no-dnd-shadow = true;
# Avoid drawing shadows on dock/panel windows.
no-dock-shadow = true;
# Zero the part of the shadow's mask behind the window. Fix some weirdness with ARGB windows.
clear-shadow = true;
# The blur radius for shadows. (default 12)
shadow-radius = 5;
# The left offset for shadows. (default -15)
shadow-offset-x = -5;
# The top offset for shadows. (default -15)
shadow-offset-y = -5;
# The translucency for shadows. (default .75)
shadow-opacity = 0.5;

# Set if you want different colour shadows
# shadow-red = 0.0;
# shadow-green = 0.0;
# shadow-blue = 0.0;

# The shadow exclude options are helpful if you have shadows enabled. Due to the way compton draws its shadows, certain applications will have visual glitches
# (most applications are fine, only apps that do weird things with xshapes or argb are affected).
# This list includes all the affected apps I found in my testing. The "! name~=''" part excludes shadows on any "Unknown" windows, this prevents a visual glitch with the XFWM alt tab switcher.
shadow-exclude = [
    "! name~=''",
    "name = 'Notification'",
    "name = 'Plank'",
    "name = 'Docky'",
    "name = 'Kupfer'",
    "name = 'xfce4-notifyd'",
    "name *= 'VLC'",
    "name *= 'compton'",
    "name *= 'Chromium'",
    "name *= 'Chrome'",
    "name *= 'Firefox'",
    "class_g = 'Conky'",
    "class_g = 'Kupfer'",
    "class_g = 'Synapse'",
    "class_g ?= 'Notify-osd'",
    "class_g ?= 'Cairo-dock'",
    "class_g ?= 'Xfce4-notifyd'",
    "class_g ?= 'Xfce4-power-manager'"
];
# Avoid drawing shadow on all shaped windows (see also: --detect-rounded-corners)
shadow-ignore-shaped = false;

#################################
#
# Opacity
#
#################################

menu-opacity = 1;
inactive-opacity = 1;
active-opacity = 1;
frame-opacity = 1;
inactive-opacity-override = false;
alpha-step = 0.06;

# Dim inactive windows. (0.0 - 1.0)
# inactive-dim = 0.2;
# Do not let dimness adjust based on window opacity.
# inactive-dim-fixed = true;
# Blur background of transparent windows. Bad performance with X Render backend. GLX backend is preferred.
# blur-background = true;
# Blur background of opaque windows with transparent frames as well.
# blur-background-frame = true;
# Do not let blur radius adjust based on window opacity.
blur-background-fixed = false;
blur-background-exclude = [
    "window_type = 'dock'",
    "window_type = 'desktop'"
];

#################################
#
# Fading
#
#################################

# Fade windows during opacity changes.
fading = true;
# The time between steps in a fade in milliseconds. (default 10).
fade-delta = 4;
# Opacity change between steps while fading in. (default 0.028).
fade-in-step = 0.03;
# Opacity change between steps while fading out. (default 0.03).
fade-out-step = 0.03;
# Fade windows in/out when opening/closing
# no-fading-openclose = true;

# Specify a list of conditions of windows that should not be faded.
fade-exclude = [ ];

#################################
#
# Other
#
#################################

# Try to detect WM windows and mark them as active.
mark-wmwin-focused = true;
# Mark all non-WM but override-redirect windows active (e.g. menus).
mark-ovredir-focused = true;
# Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused instead of using FocusIn/Out events.
# Usually more reliable but depends on a EWMH-compliant WM.
use-ewmh-active-win = true;
# Detect rounded corners and treat them as rectangular when --shadow-ignore-shaped is on.
detect-rounded-corners = true;

# Detect _NET_WM_OPACITY on client windows, useful for window managers not passing _NET_WM_OPACITY of client windows to frame windows.
# This prevents opacity being ignored for some apps.
# For example without this enabled my xfce4-notifyd is 100% opacity no matter what.
detect-client-opacity = true;

# Specify refresh rate of the screen.
# If not specified or 0, compton will try detecting this with X RandR extension.
refresh-rate = 0;

# Set VSync method. VSync methods currently available:
# none: No VSync
# drm: VSync with DRM_IOCTL_WAIT_VBLANK. May only work on some drivers.
# opengl: Try to VSync with SGI_video_sync OpenGL extension. Only work on some drivers.
# opengl-oml: Try to VSync with OML_sync_control OpenGL extension. Only work on some drivers.
# opengl-swc: Try to VSync with SGI_swap_control OpenGL extension. Only work on some drivers. Works only with GLX backend. Known to be most effective on many drivers. Does not actually control paint timing, only buffer swap is affected, so it doesn’t have the effect of --sw-opti unlike other methods. Experimental.
# opengl-mswc: Try to VSync with MESA_swap_control OpenGL extension. Basically the same as opengl-swc above, except the extension we use.
# (Note some VSync methods may not be enabled at compile time.)
vsync = "opengl-swc";

# Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate tearing.
# Reported to have no effect, though.
dbe = false;
# Painting on X Composite overlay window. Recommended.
paint-on-overlay = true;

# Limit compton to repaint at most once every 1 / refresh_rate second to boost performance.
# This should not be used with --vsync drm/opengl/opengl-oml as they essentially does --sw-opti's job already,
# unless you wish to specify a lower refresh rate than the actual value.
sw-opti = false;

# Unredirect all windows if a full-screen opaque window is detected, to maximize performance for full-screen windows, like games.
# Known to cause flickering when redirecting/unredirecting windows.
# paint-on-overlay may make the flickering less obvious.
unredir-if-possible = true;

# Specify a list of conditions of windows that should always be considered focused.
focus-exclude = [ ];

# Use WM_TRANSIENT_FOR to group windows, and consider windows in the same group focused at the same time.
detect-transient = true;
# Use WM_CLIENT_LEADER to group windows, and consider windows in the same group focused at the same time.
# WM_TRANSIENT_FOR has higher priority if --detect-transient is enabled, too.
detect-client-leader = true;

#################################
#
# Window type settings
#
#################################

wintypes:
{
    tooltip =
    {
        # fade: Fade the particular type of windows.
        fade = true;
        # shadow: Give those windows shadow
        shadow = false;
        # opacity: Default opacity for the type of windows.
        opacity = 0.85;
        # focus: Whether to always consider windows of this type focused.
        focus = true;
    };
};


Then set compton to run at startup. Under Settings>Session and Startup>Application Autostart

Click the Add button:


Name: Compton
Description: lightweight standalone compositor
Command: compton -b

For other startup options consult the Arch Wiki for Compton


Sources: 1, 2

Wednesday, May 28, 2014

Install Tomato by Shibby on the ASUS RT-N66U

Tomato is a partially free HyperWRT-based, Linux core firmware distribution for a range of Broadcom chipset based wireless routers. The original developer ceased development in 2010, but the community has continued his work. I use a version of tomato created by Michal Rupental aka Shibby. His version is one of the most robust and feature filled firmware for home routers. For a good overview of the features of different firmwares check out the wikipedia article on tomato.

Installing Tomato by Shibby on the ASUS RT-N66U is an easy and straightforward process once you know a few basics. There is so much information and different builds out there that it can be extremely overwhelming for a novice. About a year ago I wanted to upgrade my old WRT54GL running a 2010 build of tomato and bricked it by installing the wrong firmware. Hopefully this guide will help you avoid any possible misteps.



First you'll want to download install the ASUS RT-N66U Firmware Restoration utility from ASUS’ support site. I'm playing it safe and using the official Windows utility to do it. It is possible to do set everything up in Linux but I didn't want to risk another router. You'll want to enter RT-N66U as your model number.  Download the most current version of the ASUS RT-N66U B1 Firmware Restoration utility.

Next you'll want to download the correct Tomato by Shibby build for your ASUS RT-N66U router. This guide is specially written for the ASUS RT-N66U Dual-Band Wireless-N900 Gigabit Router. If you have a different Asus router you'll want to look for a different guide no ensure compatibility.

Shibby's site has alot of different options on the Tomato Firmware Downloads page. You'll want to select the K26RT-N firmware builds. From here you'll want to select the newest EN build. Shibby's builds come in pl and en favors for Polish and English. Make sure you download the correct language. Then and then select the Asus RT-N66u 64k folder.

Quick breakdown of the download path:
tomato.grove.pl > download > K26RT-N/build5x-XXX-EN/ > Asus RT-N66u 64k

From here you'll have a couple different builds you can choose from. Here is Shibby's guide to what each contains. I prefer the AIO, all in one build, but you may want to find a firmware specific to your needs.

I used the AIO build:
tomato-K26USB-1.28.RT-N5x-MIPSR2-XXX-AIO-64K.trx

Power off your ASUS RT-N66U and physically connect to it with a networking cable. Be sure to disconnect your PC from any wireless networks.

Open the ASUS Firmware Restoration utility and load Shibby’s RT-N66U firmware, but DO NOT start the restoration process First you'll need to place the router in emergency firmware restore mode.

Placing the router in firmware restoration mode can be a bit tricky. I found the best results to be unplugging the power supply from the router, making sure then power button is on the on position. Hold the reset button while plugging in the power supply. The power LED with begin to slowly blink, letting you know you are in emergency firmware restore mode.

Once the router blinks a couple of times, start the restoration process in the ASUS Firmware Restoration utility. Allow the process to run, disconnecting or turning off the router can lead to creating a pretty black paperweight. After a while the router will restart itself andthe wi-fi light will turn on. After the firmware uploads and installs you might get an error message saying the procedure failed, ignore it.

This is the step that through me off, you need to clear the router's NVRAM before it will work. Turn off the RT-N66U and while holding the WPS button turn on the router. Hold the button for 30-45 seconds and then release it.

After the router has rebooted, you can setup your router at http://192.168.1.1/. The default user name is root and the default password is admin.

Source

Sunday, May 25, 2014

Configure the Logitech MX Revolution extra buttons in Ubuntu

I love my Logitech MX Revolution mouse. It has been a part of my desktop setup for over 5 years. Its ridiculously quiet, scrolls super smooth, has just the right amount of buttons, and feels great in my hand.

Getting all the buttons on the the Logitech MX Revolution mouse working in Ubuntu 14.04 is easy and straightforward. It involves generating and editing your xorg.conf.

Static xorgs are not used or needed in Ubuntu and other modern Linux distributions anymore, but using one correctly will not harm your system. First you will need to generate an xorg configuration file if you don't have one already.

I have an Nvidia card in my desktop and use the nvidia-settings tool to automatically generate my xorg.conf.

To have the nvidia-settings tool generate an xorg.conf file
sudo nvidia-xconfig

You can also generate a xorg.conf file my hand. By switching to a virtual console using the key combination: CTRL + ALT + F1

Now execute the following commands:
sudo service gdm stop
- This command will stop the X.

sudo Xorg -configure
- this will generate the xorg.conf file in your home folder

sudo mv ~/xorg.conf.new /etc/X11/xorg.conf
- move the newly created xorg file to the correct location

sudo reboot
- to reboot the machine, and allow the changes to take effect.

Install the needed software
sudo apt-get install xbindkeys xvkbd xautomation

- xbindkeys is a program that allows you to launch shell commands with your keyboard or your mouse under X Window. It links commands to keys or mouse buttons, using a configuration file.

- xvkbd is a virtual (graphical) keyboard program for X Window System which provides facility to enter characters onto other clients (softwares) by clicking on a keyboard displayed on the screen.

- xautomation Control X from the command line for scripts, and do "visual scraping" to find things on the screen. The control interface allows mouse movement, clicking, button up/down, key up/down, etc,


Edit you xorg.conf file using your preferred editor, gedit, mousepad, leafpad, nano
sudo mousepad /etc/X11/xorg.conf

Insert this text in the Mouse section of Input Device
Option     "Buttons"    "17"

Your file should look similar to this
Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
    Option         "Buttons" "17"
EndSection


Create your xbindkeys configuration file
touch ~/.xbindkeysrc

Edit your xbindkeys configuration file
mousepad ~/.xbindkeysrc

Here is my file:
# forward
"/usr/bin/xvkbd -text "\[Alt_L]\[Left]""
m:0x0 + b:8

# back
"/usr/bin/xvkbd -text "\[Alt_L]\[Right]""
m:0x0 + b:9

# next tab
"/usr/bin/xvkbd -text "\[Control_L]\[Page_Up]""
m:0x0 + b:13

# previous tab
"/usr/bin/xvkbd -text "\[Control_L]\[Page_Down]""
 m:0x0 + b:15

# undo closed tab
"/usr/bin/xvkbd -text "\[Control_L]\[Shift]\[t]""
 m:0x0 + b:16

# mouse wheel left middle click
"xte 'mouseclick 2'"
b:6

# mouse wheel right middle click
"xte 'mouseclick 2'"
b:7

- I used xvkbd to emulate key combinations on my controller
 and xte to emulate middle click


I didn't enjoy the search button so I turned it into a middle click button, by adding the following to my /etc/sysctl.conf file
sudo mousepad /etc/sysctl.conf

# Enable mouse button emulation
dev.mac_hid.mouse_button_emulation = 1
# Set 2nd button to 217 - the middle button of MX Revolution mouse.
dev.mac_hid.mouse_button2_keycode = 217


Here is a reference for all the MX Revolution buttons
   # b:1    -    left mouse button
   # b:2    -    left and right mouse button together
   # b:3     -    right mouse button
   # b:4    -    mouse wheel up
   # b:5    -    mouse wheel down
   # b:6    -    mouse wheel left
   # b:7    -    mouse wheel right
   # b:8    -    back button
   # b:9    -    forward button
   # b:10    -    -none-
   # b:11    -    -none-
   # b:12    -    -none-
   # b:13    -    media wheel up
   # b:14    -    -none-
   # b:15    -    media wheel down
   # b:16    -    -none-
   # b:17    -    media wheel press

Saturday, May 24, 2014

Bit Perfect Audio in Ubuntu

Your operating system, music player, and sound card all work together to process the audio on your computer. While these settings are helpful, the processing of your audio by these devices often leads to distortion and a degradation in quality. Setting up bit perfect audio playback ensures that your audio goes directly to your preferred digital to analog converter (DAC) without alterations; giving you the best possible sound reproduction from your system.


I recently picked up a Schiit Stack for my desktop. Being impulsive, I bought it before I really knew how to setup bit perfect audio in Linux. After a lot of research and a bit of frustration, I found a few viable methods for setting bit perfect audio in Ubuntu.

Ubuntu and many distributions use PulseAudio to pass audio from applications and your hardware. As a burgeoning audiophile I don't really like that it re-samples the audio it processes. If you would like to get bit perfect audio with Pulse, I found an excellent guide that walks your through the steps. But I don't feel that that method is suitable for what I wanted to do on my system and requires more CPU and RAM usage. I wanted a simple and elegant solution for sending my audio stream directly to my DAC and let the  Modi process my audio.

In order to do this I used Advanced Linux Sound Architecture (ALSA) and Gmusicbrowser. The setup and configuration is incredibly easy and only involves a couple of terminal commands (highlighted in blue).


I'm using Xubuntu 14.04 but this guide will work in any Ubuntu/Debian derivative and many modern GNU/Linux distributions.

For non Ubuntu users you need to make sure the necessary ALSA tools are installed (change the sudo apt-get command with whatever is appropriate for your distribution) 
sudo apt-get install alsa alsa-utils

Install gmusicbrowser:
sudo apt-get install gmusicbrowser

Install the correct codecs for mp3, flac, ogg
sudo apt-get install gstreamer0.10-plugins-ugly flac libvorbis0a



This guide installs all the necessary dependencies for stock gmusicbrowser installs and audio playback. Consult the gmusicbroswer site for additional plugin dependencies

List Your audio devices/sound card
a play -l


As you can see my Schiit Modi DAC is listed as card: 1


Alternatively you can use alsa-mixer to find your audio device, once you enter the command press F6 to list your sound card


Now start gmusicbrowser and navigate to Settings>Audio:

Change output device to: alsa

Then click on advanced options 
Enter the correct sound card for your device, use the formula hw:X,0 replacing the X with your prefered sound card. For my DAC I entered hw:1,0

I really enjoy this setup, my audio plays from gmusicbrower without being touched and everything else plays through my speakers.

You can use other music players in Linux to achieve bit perfect playback in Linux, I also like DeaDBeef. Head-Fi user Rizlaw did an excellent write up other music players and his guides inspired this post.

Additionally you can also set VLC to use ALSA to send your audio directly to your DAC. You can find the Audio configuration setting under under Tools>Preferences.

Set Output module to ALSA audio output
And Devices to The Name of Your DAC, USB Audio Direct Hardware


Tuesday, May 20, 2014

Setting Up an HP LaserJet P1006 In Ubuntu 14.04

Install the HP Linux Imaging and Printing software:
sudo apt-get install hplip

Download the propitiatory HP plugin and install the correct drivers via the command line:
sudo hp-setup -i

Follow the prompts, you can accept the default values if you are unsure what to type. Installation is easy.


This guide will also work for over 2,336 HP printers

Restoring the Touchpad After Installing Ubuntu 14.04 on the Dell XPS 13 -9333

After installing Ubuntu 14.04 on the Dell XPS 13 "Sputnik" the SynPS/2 Synaptics touchpad is not recognized and does not function properly. To fix this problem you'll need to blacklisting i2c-hid.

Use your favorite editor (gedit, mousepad, nano, etc) to add blacklist i2c-hid to your /etc/modprobe.d/blacklist.conf file.

In a terminal:
gksu mousepad /etc/modprobe.d/blacklist.conf

Then scroll to the bottom of the file and copy  & paste:
blacklist i2c-hid

save, exit and reboot.

Now everything works :)



Turn of Bluetooth on the Dell XPS 13 - 9333

Turing off Bluetooth on the Dell XPS 13 is a real pain. Here is a quick guide on turning it off, keeping it off, saving battery power, and keeping your PC a bit more secure.

First disable the adapter, in a terminal:
sudo service bluetooth stop

To check in bluetooth is turned off or on, in a terminal type:
hciconfig

Now we need to keep the bluetooth adapter from turning back on when we reboot. Use your favorite editor (gedit, mousepad, nano, etc) to change the InitiallyPowered entry in your /etc/bluetooth/main.conf file from true to false.

In a terminal:
gksu mousepad /etc/bluetooth/main.conf

Look for the InitiallyPowered entry

Change:
InitiallyPowered = true

To:
InitiallyPowered = false

save and exit.

Get Your Nexus 4 Working In Ubuntu 14.04

The Nexus 4 will connect and disconect over and over in Ubuntu 14.04. This doesn't happen with the Nexus 7. A quick

sudo apt-get install mtp-tools

in a terminal will fix any mounting problems you experience.