Opening Spotify URIs in Spotify Linux Preview from Opera

November 16th, 2011 21:48 by ogrim

Using Spotify Linux Preview, I want to open URIs to songs and playlist from Opera – but it was not working. So here is how you fix it.

Stick the following script in a file:

#!/bin/sh
spotify -u $@

Make it executable with ‘chmod +x’

Go to Opera preferences by pressing Alt+P or Ctrl+F12, then go to ‘Advanced’, ‘Programs’, press ‘Add’, in ‘Protocol’ enter ‘spotify’ and put the path to the script in ‘Open with other application’. Now you can open all the playlists!

No comments, yet

Tags: ,

Recursive unzip in bash

October 14th, 2011 10:10 by ogrim

There is a lot of data I need to extract from archives, nested deeply within a silly folder structure. Doing it manually is out of the question. I had to modify this script I found at the Unix Stack Exchange slightly, in order to make it run as I wanted. It will run until it doesn’t find more .zip archive files, as it deletes them after extraction.

I put this into a file:

#!/bin/bash
shopt -s globstar nullglob
while set -- **/*.zip; [ $# -ge 1 ]
do
    for z
    do
        ( cd -- "$(dirname "$z")" &&
            z=${z##*/} &&
            unzip -- "$z" &&
            rm -- "$z"
        )
    done
done

then made it executable with chmod +x and stuck it on my path. Now I can easily unzip all the archive files recursively, from the folder where I call the script.

2 comments

Tags: ,

E-MU 1820 in Debian

August 28th, 2011 10:51 by ogrim

As I recently installed Debian on my main workstation, I wanted to make my beloved E-MU 1820 sound card work. The audio quality is much better than the integrated sound card on the motherboard, probably because of better digital-analog converters and more power to drive my headphones. The sound card did not work out of the box, so I had to start poking for data. We can get useful hardware information using lspci.

lspci -nn

This gave a lot of output, so I used grep to find my sound card.

lspci -nn | grep Creative

gave the following:

01:09.0 Multimedia audio controller [0401]: Creative Labs SB Audigy [1102:0004] (rev 03)

Notice the 1102:0004, which is the PCI id. Next I looked it up in Debians device database: http://wiki.debian.org/DeviceDatabase/PCI Strangely it did not match completely, closest find in the database was 1102:7004. The output led me to search for “debian 1102:0004″, which gave just what I needed: a handy guide to compile and install the driver from scratch. Follow the guide and be on your way: http://wiki.debian.org/snd-emu10k1 When using sudo, I have to qualify modprobe to /sbin/modprobe. If you are elevated by su, you can call modprobe directly.

Upon completing the guide, I restarted my system and was able to get the sound working by poking around in the Alsa mixer. I had to select the correct hardware and output settings. To change the default card we can modify the alsa.conf or alsa-base.conf (depending on what you have present) in /etc/modprobe.d/

List your sound cards with:

cat /proc/asound/modules

Append alsa.conf / alsa-base.conf with

options snd_emu10k1=0

After rebooting the system, the clock rate had reset from 44.1Khz to 48Khz. This made sound playing erroneously. To fix it, set the clock rate with the following command:

amixer -c 1 set 'Clock Internal Rate' 44100

Notice that -c 1 corresponds to the sound card from /proc/asound/modules. Just add this command to /etc/rc.local to run it upon login. You must add the command before the “exit 0″, as this must be the last command in the file. This will ensure that the clock rate is set to 44.1Khz every time you log in.

Lastly, I want to mention a useful tool for poking around with the routing matrix: emutrix. In the end, I did not need this tool to playback audio. However, if you are doing recording, it seems very useful to work out the routing. There are detailed installation instructions here: http://code.google.com/p/emutrix/wiki/InstallGuide Just make sure you check it out from the svn-repo, as the releases does not support multiple sound cards (which every motherboard has this these days (increasingly on graphics card too, through HDMI)).

Update 31th August

Using emutrix, I poked around a bit to fix output to my loudspeakers. Only headphones was working previously. Thanks to emutrix, it was very fast and simple to determine the routing, before writing the commands. I now have this in my rc.local as well:

amixer -c 1 sset 'Dock DAC1 Left' 'DSP 0'
amixer -c 1 sset 'Dock DAC1 Right' 'DSP 1'
amixer -c 1 sset 'Dock DAC2 Left' 'DSP 0'
amixer -c 1 sset 'Dock DAC2 Right' 'DSP 1'
amixer -c 1 sset 'Dock DAC3 Left' 'DSP 0'
amixer -c 1 sset 'Dock DAC3 Right' 'DSP 1'
amixer -c 1 sset 'Dock DAC4 Left' 'DSP 0'
amixer -c 1 sset 'Dock DAC4 Right' 'DSP 1'

No comments, yet

Tags: ,

Suspend problem in Ubuntu 10.10 on ASUS N73JF (and others)

December 5th, 2010 3:16 by ogrim

Update 26th August 2011: Solution tested and working with Debian Squeeze (my new main distro). A commenter reported it works on Mint, so I guess it works on most Debian-based distros. Another commenter had success on a Gigabyte motherboard, which is very interesting indeed.

After 3.5 years I finally caved in and got a new laptop. Screen resolution, lagging editors and general sloppyness where the major factors for ditching the old one. I have been quite pleased with the quality on my ASUS eeePC 1015PE, so I decided to go for another ASUS computer. As I am to use this machine for development, I’d like to have a large screen; the old one left me frustrated at the lack of screen estate and the crappy resolution. I therefore got me a 17,3″ ASUS N73JF, with enough power to last me just as long as the old one, I hope!

Since the new laptop has a somewhat decent graphics card, I decided to let the Windows install it came with stay, to be used for games and the likes. I of course installed Ubuntu 10.10 64-bit right away after booting the laptop to Windows 7 to check it out. It took longer booting to the preinstalled Windows 7, than it took installing Ubuntu from scratch! In addition to this, the Windows install was defiled with crapware. No wonder people buy Macs. Enough rambling; over to the problem at hand.

I did encounter a problem with getting the Suspend working in Ubuntu. After checking the fantastic ubuntuforums.org, I found people with similar issues. This thread holds the answers, but it seems the fix is more technical than it should be. However it will probably get included in some patch in the future.

At least for the N73JF, you need to create two files.

sudo touch /etc/pm/sleep.d/20_custom-ehci_hcd
sudo touch /etc/pm/sleep.d/20_custom-xhci_hcd

To open a GUI editor like gedit, with root privileges, you can use the following command:

gksudo gedit

Keep in mind this is dangerous if you edit the wrong files, so only open the ones we created with the touch-command. If you want to open the file directly, you can append the path to the filename onto the gedit command like so:

gksudo gedit /etc/pm/sleep.d/20_custom-ehci_hcd

When you have opened the files in your favorite editor, we need to enter some scripts. In 20_custom-ehci-hcd put in:

#!/bin/sh
# File: "/etc/pm/sleep.d/20_custom-ehci_hcd".
TMPLIST=/tmp/ehci-dev-list

case "${1}" in
        hibernate|suspend)
    echo -n '' > $TMPLIST
          for i in `ls /sys/bus/pci/drivers/ehci_hcd/ | egrep '[0-9a-z]+\:[0-9a-z]+\:.*$'`; do
              # Unbind ehci_hcd for first device XXXX:XX:XX.X:
               echo -n "$i" | tee /sys/bus/pci/drivers/ehci_hcd/unbind
           echo "$i" >> $TMPLIST
          done
        ;;
        resume|thaw)
    for i in `cat $TMPLIST`; do
              # Bind ehci_hcd for first device XXXX:XX:XX.X:
              echo -n "$i" | tee /sys/bus/pci/drivers/ehci_hcd/bind
    done
    rm $TMPLIST
        ;;
esac

In 20_custom-xhci_hcd put in:

#!/bin/sh
# File: "/etc/pm/sleep.d/20_custom-xhci_hcd".
TMPLIST=/tmp/xhci-dev-list

case "${1}" in
        hibernate|suspend)
    echo -n '' > $TMPLIST
          for i in `ls /sys/bus/pci/drivers/xhci_hcd/ | egrep '[0-9a-z]+\:[0-9a-z]+\:.*$'`; do
              # Unbind ehci_hcd for first device XXXX:XX:XX.X:
               echo -n "$i" | tee /sys/bus/pci/drivers/xhci_hcd/unbind
           echo "$i" >> $TMPLIST
          done
        ;;
        resume|thaw)
    for i in `cat $TMPLIST`; do
              # Bind ehci_hcd for first device XXXX:XX:XX.X:
              echo -n "$i" | tee /sys/bus/pci/drivers/xhci_hcd/bind
    done
    rm $TMPLIST
        ;;
esac

Now you must make these files executable with these two commands:

chmod +x /etc/pm/sleep.d/20_custom-ehci_hcd
chmod +x /etc/pm/sleep.d/20_custom-xhci_hcd

A user on the forum reported he didn’t need the extra file as proposed in the first solution. I did not test without this file, as it wasn’t working until I added the xhci-related file. I suggest you try the steps outlined here first, and attempt these last steps only if it doesn’t work.

Make this file:

sudo touch /etc/pm/config.d/usb3-suspend-workaround

Open the file, and put this in:

#File: "/etc/pm/config.d/usb3-suspend-workaround".
SUSPEND_MODULES="xhci"

He didn’t say if it needs to be executable, I’m assuming it should and that it couldn’t hurt:

chmod +x /etc/pm/config.d/usb3-suspend-workaround

I hope you get it working :) You should also check out the source for this post, as pointed out earlier. The forum might contain new information, after this is published.

11 comments

Tags: , , ,