L'articolo Raspberry Pi Usb Audio fix sembra essere il primo su RaspyFi.
]]>finally usb audio problems affecting the Pi, have been solved! For those of you seeking a Raspberry Pi Usb Audio fix, you’re in the right place! I was compulsively lurking this thread hoping that the foundation would eventually find a fix for the usb issue. What was it?
Well, to make it simple, when the usb bus of the pi was receiving lot of i\o requests, it cannot satisfy them all, and as a result part of the data travelling trough usb was lost. So, while communicating with a usb dac , if the file being played was more than 44/16 the usb bus was overwhelmed and some parts of the data (packets, jargon comes in finally) was lost. If you google for packet loss, you can figure out what was happening.
I’ve been investigating a lot on the matter, hoping to find a Raspberry Pi usb audio fix , tried almost everything. But this was in the hands of the foundation, since there is no extensive documentation available.
Finally, the Raspberry Pi usb Audio Fix came on Thu May 09, 2013 9:19 am, from gsh (which has my imperiture gratitude)
Basically, this updates some part of the pi firmware and kernel, via rpi-update (this is an experimental branch you won’t find on the master branch of rpi-update by hexxeh
For those of you on RaspyFi, update is hassle free since you already have rpi-update up and running. Just do this to enable the Raspberry Pi Usb Audio Fix:
sudo apt-get install git-core binutils
sudo BRANCH=fiq_split rpi-update
Let it run, it will need almost 20 minutes to complete. In case you’re receiving some errors, just retry. Sometimes the git servers are not able to face the requests of thousands users simoultaneusly.
Once it’s done, and you’re not getting any error, just reboot.
Now, it’s time to enable bit perfect playback on RaspyFi via mpd.conf
sudo nano /etc/mpd.conf
the line:
format “44100:16:2″ # optional
becomes
#format “44100:16:2″ # optional
ctrl + x to save.
Now, we’ll restart mpd:
sudo /etc/init.d/mpd restart
Now, play and enjoy! Files >44/16 will be played without glitches, and I hope that async dacs will work flawlessly as well! I cannot confirm this by now since I don’t have any async to the test this Raspberry Pi usb audio fix for them… But please let me know via comments below.
To check if your Pi now resides in Bit Perfect heaven just type, while playing:
cat /proc/asound/card0/pcm0p/sub0/hw_params
The output will show you current bit rate and bit depth, that should be the same as the file. Please note that if a bit rate/bit depth is not supported by your dac, mpd will automatically resample it to the nearest supported one.
Here, an example (showing different bitrates/bitdepths, with perfect sound)
Obviously, this raspberry pi usb audio fix will be implemented and working out of the box in next Release of RaspyFi, which is in its final stage of development.
This raspberry pi audio fix, also can be excecuted on plain Raspbian and all the other distros out there. Just type that:
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 BRANCH=fiq_split rpi-update
Et voilà, you’re done! Please let me know if it works for you, and if you got some troubles doing it !
As suggested by Klinkt Beter and Carlo Bernardini this fixes the samba issues for async dac users. With my new xmos to i2s dac and this fix I don’t have any stuttering at 24/96 , some reports this works well with 24/192 as well. So edit /etc/auto.nas as follows:
Nas -fstype=cifs,file_mode=0777,dir_mode=0777,iocharset=utf8,sec=ntlm,rsize=2048,wsize=4096,cache=strict,username=pi,password= ://192.168.nasip/sharename
L'articolo Raspberry Pi Usb Audio fix sembra essere il primo su RaspyFi.
]]>L'articolo RaspyFi Rc2 – How it’s made and list of all the optimizations sembra essere il primo su RaspyFi.
]]>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.
]]>L'articolo RaspyFi Rc2 is under development sembra essere il primo su RaspyFi.
]]>So stay tuned, hope I’ll get it released in a week!
L'articolo RaspyFi Rc2 is under development sembra essere il primo su RaspyFi.
]]>L'articolo RaspyFi quick start guide sembra essere il primo su RaspyFi.
]]>Select the .img file you previously unpacked and make sure “device” field points to your SD card, then click on Write
Gmpc . Nice and easy client, it offers several functionalities, few hanging issues, but it is my favourite
Ario. Lot of options, poor gui. It has Internet Radio enabled out of the Box
Mpdroid, fantastic app. Available free from PlayStore
Mpod, for iphone\ipod touch. Free on Ios Market.
Mpad, for Ipad.
SSH
User: pi
Password: raspberry
L'articolo RaspyFi quick start guide sembra essere il primo su RaspyFi.
]]>L'articolo RaspyFi new release is out! sembra essere il primo su RaspyFi.
]]>-512 mb model b support (but 256 models should work as well)
-based on latest raspbian image (2012-12-16-wheezy-raspbian)
-XMOS Native support (Hiface 2 is reported to be working)
-less space used and less processes active (shrinked to minimum requirements to get mpd running)
-fits on 2gb sd carD
-fat32 disk ready out of the boX
-volume can be set from client (Erik, this is for you!!)
-usb tweakings
-general quality improvements
-hdmi & analog audio disabled (no bcm2835 kernel module loaded at boot)
-mpd has higher priority set
known issues:
-resampling always enabled to 44100 htrz
SSH
User: pi
password: raspberry
UPDATE YOUR DATABASE FOR FIRST USE!
It Works out of the box with most of USB Dacs! (supported natively by linux) It works also with XMOS Transports (Hiface 2 is reported to be working!)
This is no more based on moebius linux, it is instead based on latest raspbian (updated at 12\1\13). It is definetely sounding better and it features some under the hood tweaking that proved to be effective. It is ready out of the box to play your library from a FAT32 usb stick or self powered hard disk. (IF you need ntfs support you should mount it and then edit /etc/mpd.conf).
You can also play your music from a Nas, you should have a samba share called nas and edit /etc/fstab and change the ip with you’r nas ip:
sudo nano /etc/fstab
//192.168.1.YOURIPHERE/nas /mnt/nas cifs username=pi,password= 0 0
reboot and edit /etc/mpd.conf , removing the comment from nas and commenting Music
music_directory “/mnt/nas”
#music_directory “/media/Music”
(Quality-wise, the nas option is strongly suggested)
To enjoy the best quality your RaspyFi powered Pi can give you please use a quality psu, I found out that Xperia phones chargers are pretty well made and stable, if you have an Ipod\Ipad\Iphone charger this could be good as well!
And you’re ready to go! I’m already working on a Real Time version of RaspyFi, stay tuned!
L'articolo RaspyFi new release is out! sembra essere il primo su RaspyFi.
]]>L'articolo Ho to install Mpd on an existing Debian installation on Raspberry Pi sembra essere il primo su RaspyFi.
]]>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.
]]>L'articolo Raspyfi first alpha release is out! sembra essere il primo su RaspyFi.
]]>You can find it here
This really comes ready-to-play out of the box. Just copy it on your SD card via Win32diskimager (you can grab it here) and you’re ready to go. Then you only need to connect trough SSH and edit your mpd.conf file.
If you don’t have any SSH client, I strongly suggest to use putty (available here)
you can do it by tiping on your ssh terminal :
User: root
Password: raspi
nano /etc/mpd.conf
It’s configured to find your music on usb or on a nas. If you prefere to read your music on a usb key (or hard disk, but you should use a self-powered hard disk to do so) just modify your file as follows
#music_directory “/mnt/nas”
music_directory “/media/Music”
and then ctrl+ x, then y
Otherwise, store your music on a samba share called Nas and modify as:
music_directory “/mnt/nas”
#music_directory “/media/Music”
and then ctrl+ x, then y.
then reboot
reboot
And you’re ready! Just play your library with your favourite client and enjoy!
Known issues:
-no 512mb support
-flac over 96khrz need to be resampled
L'articolo Raspyfi first alpha release is out! sembra essere il primo su RaspyFi.
]]>