RaspyFi » install http://www.raspyfi.com Pi never sounded so good! Mon, 16 Dec 2013 15:20:41 +0000 it-IT hourly 1 Wi-fi on Raspberry Pi, a simple guide http://www.raspyfi.com/wi-fi-on-raspberry-pi-a-simple-guide/ http://www.raspyfi.com/wi-fi-on-raspberry-pi-a-simple-guide/#comments Tue, 19 Mar 2013 16:24:32 +0000 admin http://www.raspyfi.com/?p=321 Since the Raspberry Pi comes only with a wired network, it could be useful for lot of us to get it wi-fi ready. Wi-fi on Raspberry Pi can be achieved with little effort and at cheap expences. We do only

L'articolo Wi-fi on Raspberry Pi, a simple guide sembra essere il primo su RaspyFi.

]]>
Since the Raspberry Pi comes only with a wired network, it could be useful for lot of us to get it wi-fi ready. Wi-fi on Raspberry Pi can be achieved with little effort and at cheap expences.
We do only require a compatible wi-fi dongle, and the best candidate for the job is the Edimax EW-7811Un.
These are the features:

  • Supports 150 Mbps 802.11n, so if you have a N network, you’ll have enough bandwith to stream even Hi-res FLACs
  • Low power consumption, it can work directly attached to the Pi withouth a powered usb hub
  • Works automatically with Raspbian, since it’s drivers are included
  • It’s very small, so there’s plenty of space left on the Pi to attach your USB DAC or USB Dongle
  • It’s quite cheap, you can find easily at prices above 10 euros (see later)

You can buy it on Ebay

or here on Amazon .

Now we’ll start the setup of the WI-Fi on Raspberry Pi. RaspyFi comes with Wicd-curses already installed and running, this a user friendly gui  wi-fi setup utility. With Wicd-curses the setup of Wi-Fi on Raspberry Pi is simple and straightforwarding. You should access the Pi’s shell, this can be done in 2 ways:

  • Get a monitor and a keyboard attached to the Pi
  • Connect trought SSH, the Pi has to be connected to a wired network to do this. Refer to this guide to do this.

 

If you’re using Raspbian, and you’ve not installed Wicd-curses just type:
sudo apt-get update
sudo apt-get install wicd-curses

Ok, now we are ready to start, type:
sudo wicd-curses
You’ll get a list of the wireless network found by the Raspberry PI

raspberry wi-fi

 

 

Now, you can select your Wi-fi Network, just highlight it with arrow keys and press right arrow key to edit its properties:

raspberry wi-fi1

 

Sorry for Italian language, (not being nationalist!!) but you should be able to guess what these lines mean. You just insert the WEP or WPA KEY. If you wish, you can assing a static ip, configure alternative dns and so on. Remember to check the auto connection.

If you wish to have static ip, just put the ip you desire (e.g. 192.168.1.3), the subnet mask (255.255.255.0) and your router’s ip (e.g.: 192.168.1.1). Please note that the Ip of the Raspberry Pi and the gateway ip should have the same index, so if your router has 192.168.1.ip then also the raspberry pi should have the same, the only thing that will change is the last ip digits (192.168.1.ip).

 

When you’re done, just press F10 to save, then it should connect!

 

Now you’ve Wi-Fi on Raspberry Pi! Feel confident to try other wi-fi dongles other than the one suggested here. You can check the Raspberry Pi compatiblity list.

The Main WICD-CURSES windows, will also tell you the ip of your Raspberry Pi, so you can be able to connect to it via GMPC or your preferred mpd client.

 

UPDATE

Since I got some reports of Wi-Fi dongle not being recognized, this is how you can sort it out:

Enter in wicd-curses,
sudo wicd-curses
then press P (that stands for preferences). You’ll find that there’s a field called wireless interface, which is empty. Just write wlan0
in it. Then F10 to save.

Then, back to the main screen, hit R to refresh, et voilà!!!
Thanks to Andrea Zani from tforum for the hint!

L'articolo Wi-fi on Raspberry Pi, a simple guide sembra essere il primo su RaspyFi.

]]>
http://www.raspyfi.com/wi-fi-on-raspberry-pi-a-simple-guide/feed/ 42
Hiface on linux: Getting Hiface 1 working on RaspyFi and Debian http://www.raspyfi.com/hiface-on-linux-getting-hiface-1-working-on-raspyfi-and-debian/ http://www.raspyfi.com/hiface-on-linux-getting-hiface-1-working-on-raspyfi-and-debian/#comments Tue, 05 Mar 2013 15:30:58 +0000 admin http://www.raspyfi.com/?p=290 Hiface on Linux, finally done! Well guys, since some of you wanted to use the HiFace 1 on RaspyFi, here’s how to get it working. Basically all you need to do is compiling it’s drivers, and execute it on boot.

L'articolo Hiface on linux: Getting Hiface 1 working on RaspyFi and Debian sembra essere il primo su RaspyFi.

]]>
Hiface on Linux, finally done!

Well guys, since some of you wanted to use the HiFace 1 on RaspyFi, here’s how to get it working. Basically all you need to do is compiling it’s drivers, and execute it on boot. I plan to include those drivers on next release of RaspyFi.

Let’s start:

In order to build the driver you need to install your kernel-headers, the build-essential package and git-core binaries, this is quite a hefty amount of data, so make sure you have at least 600 mb free on your SD Card:

 

apt-get install kernel-headers-$(uname -r)
apt-get install build-essential
apt-get install git

Now, we’ll clone the git repository

git clone git://github.com/panicking/snd-usb-asyncaudio.git

Then, we are ready to build our driver:

cd snd-usb-asyncaudio
make

Then, we’ll start the module by typing:

 

sudo insmod snd-usb-asyncaudio.ko

Then, we should add the module to /etc/modules in order to make it start at system boot.

Et voilà! Hiface on Linux, so on RaspyFi!

This tutorial is made thanks to following pages:

 

https://github.com/panicking/snd-usb-asyncaudio/wiki

https://github.com/panicking/snd-usb-asyncaudio

L'articolo Hiface on linux: Getting Hiface 1 working on RaspyFi and Debian sembra essere il primo su RaspyFi.

]]>
http://www.raspyfi.com/hiface-on-linux-getting-hiface-1-working-on-raspyfi-and-debian/feed/ 31
RaspyFi Rc2 – How it’s made and list of all the optimizations http://www.raspyfi.com/raspyfi-rc2-how-its-made-and-list-of-all-the-optimizations/ http://www.raspyfi.com/raspyfi-rc2-how-its-made-and-list-of-all-the-optimizations/#comments Thu, 14 Feb 2013 00:25:35 +0000 admin http://www.raspyfi.com/?p=270 These optimizations come from a trial and error procedure, which led me to get an overall idea of what influences music playback performance and what doesn’t. Basically, less processes running don’t improve directly the outcome in terms of quality, but

L'articolo RaspyFi Rc2 – How it’s made and list of all the optimizations sembra essere il primo su RaspyFi.

]]>
These optimizations come from a trial and error procedure, which led me to get an overall idea of what influences music playback performance and what doesn’t. Basically, less processes running don’t improve directly the outcome in terms of quality, but it improves overall computing performance, which indirectly affects playback quality.
Then, special attention is required to alsa optimization, using hw instead of plug or mmap_emu ensures raspyFi directly controls the Dac. So this is a big step forward.
Then, compiling the latest version of Mpd brings minor under-the-hood fixes which tend to further improve overall result.
So, this is the entire process to obtain what RaspyFi Rc2 is.

First, update to latest kernel and firmware. This brings minor usb optimizations, unfortunately the bugs affecting over 44,1 khrz playback are still present. The foundation reported to be working hard on the matter (they hired a specialist to solve the issue, at least that’s what i got…)

sudo apt-get install git-core
sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update && sudo chmod +x /usr/bin/rpi-update
sudo rpi-update

Then, we’ll strip down the distro. This aims basically to use less disk space, but less processes active (especially X graphic user interface) leave the pi arm cpu quieter. Some folks believe that less processes running= better sound. I am not one of those. I indeed can say that less cpu used= less power drain and more responsive system. This can indirectly improve playback quality, also for electrical inducion reasons. But my physics knowledge is not enough to explain clearly the reason why.

Sudo apt-get update

Getting a list of all packages installed give us an idea of what we can remove.

dpkg --get-selections

Let’s remove what we don’t mind to use

sudo apt-get remove aspell desktop-base desktop-file-utils dictionaries-common dillo fonts-droid fonts-freefont-ttf fontconfig fontconfig-config galculator gnome-icon-theme gnome-themes-standard gpicview gsettings-desktop-schemas gsfonts gsfonts-x11 hicolor-icon-theme leafpad lightdm lightdm-gtk-greeter lxappearance lxde lxde-common lxde-core lxde-icon-theme lxmenu-data midori mime-support openbox omxplayer penguinspuzzle x11-common wpagui python3 python3-minimal python-pygame x11-common

Python games? Glad to ask, but no.

sudo rm -rf python_games

Opt contains lot of heavy stuff, such like a damn 1080i video.

sudo rm -rf /opt/vc/src/hello_pi/hello_video/

Python, go away!

sudo apt-get remove `sudo dpkg --get-selections | grep -v "deinstall" | grep python | sed s/install//`

Removing gcc, we’ll install latest version later

sudo apt-get remove gcc-4.4-base:armhf gcc-4.5-base:armhf gcc-4.6-base:armhf

Clean unnecessary packages

sudo apt-get autoremove
sudo apt-get clean

Ok, now let’s update the software environment

sudo apt-get update
sudo apt-get upgrade

sudo apt-get clean

let’s check how much space did we free up:

 

df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 1.8G 870M 804M 52% /
/dev/root 1.8G 870M 804M 52% /
devtmpfs 235M 0 235M 0% /dev
tmpfs 49M 252K 49M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 98M 0 98M 0% /run/shm
/dev/mmcblk0p1 56M 21M 36M 37% /boot
tmpfs 98M 0 98M 0% /tmp

870, could be worse

We don’t need swap. Do we?

sudo swapoff -a
cd /var
sudo dd if=/dev/zero of=swap bs=1M count=100

 

Now, we’ll install Mpd. We will now get and install the vanilla package, the one provided with debian. We will use this to get it’s infrastructure, and then we’ll install latest version from source.

sudo apt-get install mpd mpc

Now we install both prerequisites to compile mpd and mpd’s dependencies

 

sudo apt-get install aptitude wget binutils gcc make subversion autoconf automake autotools-dev libtool pkg-config build-essential libncurses5-dev libncursesw5-dev gcc libglib2.0-dev

sudo apt-get install libfaad2 libfaad-dev libflac8 libflac-dev libogg0 libogg-dev libvorbis0a libvorbis-dev libid3tag0 libid3tag0-dev libmad0 libmad0-dev libcue-dev libcue1 libasound2 libasound-dev libasound2-dev libao-dev libwavpack-dev libwavpack1 libsamplerate0 libsamplerate-dev libmikmod2-dev libmikmod2 libmikmod-dev libshout-dev libavformat-dev libavcodec-dev libavutil-dev libaudiofile-dev libcurl4-openssl-dev libmms-dev libmms0 libtwolame-dev libtwolame0 libmp3lame-dev git-core

Now, we clone the official mpd repo, in order to obtain and compile latest mpd version. As root:

sudo su
cd /home/pi
git clone git://git.musicpd.org/master/mpd.git

cd ./mpd

./autogen.sh

We then configure it to use few options, making mpd more lightweight.

./configure --disable-bzip2 --disable-iso9660 --disable-zzip --enable-id3 --disable-sqlite --enable-ffmpeg --enable-alsa --disable-wave-encoder --enable-pipe-output --enable-httpd-output --disable-recorder-output --disable-sndfile --enable-oss --enable-shout --disable-pulse --disable-ao --disable-mad --disable-inotify --disable-ipv6 --enable-curl --disable-mms --disable-wavpack --disable-lame-encoder --disable-twolame-encoder --enable-vorbis --enable-lsr --with-zeroconf=auto
make
make install
sudo su
/etc/init.d/mpd stop
echo DAEMON=/usr/local/bin/mpd >>/etc/default/mpd
/etc/init.d/mpd start
mkdir -p ~/.mpd/playlists

Now, we’ll start configuring mpd, editing the mpd.conf file

sudo nano /etc/mpd.conf

What interest us is:

#group "nogroup"

Becomes

group "audio"

 

Mpd will belong to “audio” group, which will be useful for setting mpd’s priorities.

Then

bind_to_address "localhost"

that will become

bind_to_address "any"

Activating auto-update by uncommenting following line, this will enable mpd to automatically update its music database when something new is added or removed.

#auto_update "yes"

Then

audio_output {
type "alsa"
name "My ALSA Device"
device "hw:0,0" # optional
format "44100:16:2" # optional
mixer_device "default" # optional
mixer_control "PCM" # optional
mixer_index "0" # optional

that will become

audio_output {
type "alsa"
name "USB Dac"
device "hw:0,0" # optional
format "44100:16:2" # optional
# mixer_device "default" # optional
# mixer_control "PCM" # optional
# mixer_index "0" # optional

Then we’ll uncomment the lines regarding the buffer

audio_buffer_size "2048"
buffer_before_play "10%"

Ctrl+ x to save, then y to confirm.

Now we assign to our usb dac the device number 0, which is the default for mpd and the mixer. We can do so by commenting out the line

options snd-usb-audio index=-2

in

sudo nano /etc/modprobe.d/alsa-base.conf

By doing so, RaspyFi will use as default the USB Dac. If a usb dac is not connected, then the default audio out will be the analog jack. Nasty!

Now, we create our music directories and mount points. We can use multiple directories, such a nas and a usb drive, by putting a shortcut in mpd default music directory.

mkdir /mnt/nas
chmod 777 /mnt/nas

Add the following line in /etc/fstab

nano /etc/fstab
//192.168.1.NasIP/YourShareName /mnt/nas cifs username=pi,password=,uid=mpd,file_mode=0644,dir_mode=0755,iocharset=utf8,rsize=130048,wsize=4096 0 0

This will automatically mount our samba share on /mnt/nas.

Now we mount an usb drivE. Please note that it is preferrable to use a fat formatted drive, this uses less resources. This is quite important, considering the notorious usb problems.

See how the drive is called

sudo fdisk -l

in my case:
/dev/sda1

We create the music folder:

mkdir /media/music
chmod -R 777 /media/music
mount /dev/sda1 /media/music

Then we add this line to /etc/fstab

sudo nano /etc/fstab

/dev/sda1 /media/music vfat defaults 0 0

Ctrl+ X then, y
We now add a symlink into the default music directory, this will give us the possibility to store our music library on multiple locations. For example, we can have a part of our library on the nas and another one on a usb drive

cd /var/lib/mpd/music
sudo ln -s /mnt/nas
sudo ln -s /media/music

Installing wi-fi client:

sudo apt-get install wicd-curses
cd /var/lib/mpd/music/

 

Tweaking

This is a fine tuning of the Pi software echosystem, even if we cannot get rid (as for now) of the usb problems, we can still do something to improve general usb performance. Adding this line to:

sudo nano /etc/modprobe.d/alsa-base.conf

options snd-usb-audio nrpacks=1

This sounds really effective to my hears!

There’s another tweak that should fix the usb problems, you should add a line in the cmdline.txt. This line turns the usb into 1.1 mode. Please note that by doing so, both usb and ethernet performance in terms of transfer speed will be greatly reduced. This doesn’t work for me, as my Usb Dac doesn’t work with this mode. Feel free to try it, please report if it solves the problem with your dac. You can remove this tweak by deleting the added parameter.

sudo nano /boot/cmdline.txt

dwc_otg.speed=1

Next step is to set the Pi’s cpu to work always at its full power. This is due to the fact that mpd for an unknown reason doesn’t trigger the scaling governor to increase computing speed while in use. By enabling the “performance” option, we’ll be sure that mpd has the full power it deserves.
First, we check out which power management profile we have:

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
powersave

Ok, let’s put the Pi in performance mode:

sudo su
echo -n performance > /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

Check again with previous command to see if it is effective.
Using hw, insted of plug and mmemu

nano /etc/asound.conf

cancel existing text and paste this

pcm.!default {
type hw
card 0
}

ctl.!default {
type hw
card 0
}

LAN TUNING

sudo nano /etc/sysctl.conf

add line

fs.inotify.max_user_watches = 524288

If you should have some problems, remove it. In my configuration I don’t have any problems, but sometimes they could occour depending on traffic and tcp tranfer size.

Adjust limit values of the audio group

First we add mpd to the audio group

sudo nano /etc/security/limits.conf
@audio - rtprio 99
@audio - memlock unlimited
@audio - nice -19

Then we set mpd to have the highest priority (niceness). We do so by adding a script that starts afer mpd that renices it to -20

sudo su
cd /etc/init.d
nano myruns

We put this in the script:

#! /bin/sh
# /etc/init.d/myruns
#
### BEGIN INIT INFO
# Provides: myruns
# Required-Start: $all
# Required-Stop: $mpd
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Renicing mpd
# Description: Being nice with music
### END INIT INFO
# Some things that run always
touch /var/lock/myruns

MAXTRIES=15
TRIES=0

# Carry out specific functions when asked to by the system
case "$1" in
start)
#
# mount music
#
renice -n -20 -p `pgrep mpd`
;;
stop)
echo "Exiting myruns"
;;
*)
echo "Usage: /etc/init.d/myruns {start|stop}"
exit 1
;;
esac

exit 0
Ctrl+ x then y

We then set this as script and we add it to the init.d boot sequence:

chmod 755 myruns
update-rc.d myruns defaults

NAS tuning

sudo nano /etc/fstab

adding line
uid=mpd,file_mode=0644,dir_mode=0755,iocharset=utf8,rsize=130048,wsize=4096

Now we selectively deactivate some process, so they don’t start up nad we’ll have less active processes.

sudo apt-get install rccconf
sudo rccconf

The services I disabled:

cron – scheduler
lightdm – graphic login manager
motd – message of the day for ssh
plymouth- graphic bootlogo
x11-common graphic interface

This broke somehow my ssh server, avoiding me to connect via ssh, so be aware of it. If this will happen you should have access to your pi via a monitor and a keyboard and reinstall sshd via those commands:

sudo apt-get remove openssh-client openssh-server
sudo apt-get install openssh-client openssh-server

Now, we proceed to remove everything we used to compile and several things more. In case we don’t think we’re going to recompile something again.

sudo apt-get remove autoconf automake autotools-dev binutils build-essential dpkg-dev g++ g++-4.6 gcc gcc-4.6 libglib2.0-dev libid3tag0-dev libsamplerate0-dev libstdc++6-4.6-dev make pkg-config git-core x11-common dbus-x11 libice6 libx11-6 libx11-data libx11-xcb1 libxext6 libxi6 libxmuu1 libxtst6 xauth xkb-data fonts-freefont-ttf

cd /home/pi
sudo rm -rf mpd

 

That’s all folks, shake and serve with ice!

L'articolo RaspyFi Rc2 – How it’s made and list of all the optimizations sembra essere il primo su RaspyFi.

]]>
http://www.raspyfi.com/raspyfi-rc2-how-its-made-and-list-of-all-the-optimizations/feed/ 24
Ho to install Mpd on an existing Debian installation on Raspberry Pi http://www.raspyfi.com/ho-to-install-mpd-on-an-existing-debian-installation-on-raspberry-pi/ http://www.raspyfi.com/ho-to-install-mpd-on-an-existing-debian-installation-on-raspberry-pi/#comments Sun, 23 Dec 2012 11:22:45 +0000 admin http://www.raspyfi.com/?p=79 Well, this tutorial simply follow what I did in order to create RaspyFi, on the Moebius Linux Distribution. But it can work on other Debian distros as well, please note that this tutorial is specifically tailored to the Pi. First

L'articolo Ho to install Mpd on an existing Debian installation on Raspberry Pi sembra essere il primo su RaspyFi.

]]>
Well, this tutorial simply follow what I did in order to create RaspyFi, on the Moebius Linux Distribution. But it can work on other Debian distros as well, please note that this tutorial is specifically tailored to the Pi.

First update:

apt-get update
apt-get updgrade

Y, then Y again

When updating process is over:

reboot

Let’s disable Ipv6, that Raspberry Pi

Just add this line at the end of l file /etc/hosts

::1 localhost.localdomain localhost

Now we can install mpd

apt-get install mpd

Y

On the Pi it usually gives some error messages, we can safely ignore them.

reboot

Le’ts create our playlist folder:

mkdir -p ~/.mpd/playlists

Now let’s edit our mpd.conf file:

nano /etc/mpd.conf
And modify the string:

bind_to_address “localhost”

in

bind_to_address “127.0.0.1″

Ctrl + x ,then Y.

If we want to store our music library on a usb storage:

Let’s see how Debian calls our drive: (formatted in fat32):

fdisk -l

Specifically for me: /dev/sda1

Let’s create the  Music folder and chmod it :

mkdir /media/Music
chmod -R 777 /media/Music
mount /dev/sda1 /media/Music

Modify the fstab file with our partitions :

nano /etc/fstab
just add this line:

/dev/sda1 /media/Music vfat defaults 0 0

Ctrl+x then Y

Let’s check if everything is ok:

mount -a

If we don’t get any error message, we’re ready to go.

reboot

If we want to use a nas as storage (SAMBA)

Install samba client

apt-get install smbclient

Creating  mount directory:

mkdir /mnt/nas
chmod 777 /mnt/nas

Mount the nas

mount -w -t cifs -o username=,password= //192.168.1.nasip/sharename /mnt/nas
If you’ve protected your share with password, insert them. If none password or user has been set, just leave this field empty

Check with:

ls /mnt/nas

If everything is ok, you should see your directories.

Let’s set the automount

nano /etc/fstab

Add this line in the end

//192.168.1.ipnas/sharename /mnt/nas cifs username=,password= 0 0

Check with:

mount -a

If no error appears, again, we’re ready to go

reboot

Ok, last entries in our configuration file:

nano /etc/mpd.conf

Let’s tell mpd where our music is stored:

Usb storage:

music_directory “/media”

Nas storage:
music_directory “/mnt/nas”

If you have a usb dac, let’s tell mpd to use this instead of the shitty analog out:

audio_output {
type “alsa”
name “USB Dac”
device “hw:1,0″ # optional
format “44100:16:2″ # optional
mixer_device “default” # optional
# mixer_control “PCM” # optional
# mixer_index “0″ # optional

 

These options can be quite different depending how debian calls your dac, but i always used that with different usb dacs and it always worked. You can try by changing in 1,0 instead of 0,1 but this is up to you. As you can see, I din’t changed everything from resampling to buffer size etc etc. This will be done in future tweaking tutorials. Anyway the quality of music reproduction with these settings is pretty awesome, so expect some minor improvements with further tweakings.

Some examples:

If you wish to enable audio buffering (and so ram reading). Uncomment these strings.

#audio_buffer_size “2048″
#buffer_before_play “10%”

If you want to send the audio stream directly to the usb dac, bypassing any software\hardware mixer. Change the string

mixer_device “default”

in

mixer_device “none”

ctrl+ x e Y

reboot

Now You should choose a client in order to control your mpd box. The best available is GMPC for Windows\Linux. Pretty simple and straightforwarding (sometimes it freezes, hope this will get solved) you can find it here. Then you can use Mpdroid or Mpod to control mpd via smartphone. These 2 clients are really good and goodlooking.

Happy music, folks!

L'articolo Ho to install Mpd on an existing Debian installation on Raspberry Pi sembra essere il primo su RaspyFi.

]]>
http://www.raspyfi.com/ho-to-install-mpd-on-an-existing-debian-installation-on-raspberry-pi/feed/ 10