W domu namnożyło się “inteligentnych urządzeń”, więc pojawiła się potrzeba współdzielenia danych. Po co dublować identyczne pliki na dwóch różnych urządzeniach – nie tędy droga. Patrzyłem na gotowe rozwiązania serwerów NAS na Allegro i ceny mnie odrzuciły natychmiastowo. Dobrym rozwiązaniem tej nieciekawej sytuacji jest użycie Raspberry Pi.
W związku z licznymi komentarzami chciałbym nadmienić, że pisałem tekst biorąc pod uwagę tylko i wyłącznie sprzęt posiadany w domu. Nie mam gniazda USB w routerze oraz nie podłączę do niego DACa (Schiit Bifrost). Można oczywiście podpiąć dysk i skonfigurować Sambę w routerze z wymienionymi opcjami, jednak ja się skupiam na Raspberry Pi!
Urządzenie miało spełnić kilka wymogów:
- zamontowanie dysku zewnętrznego i udostępnianie plików domownikom – widoczność jako dysk sieciowy
- serwer muzyczny sterowany za pomocą tabletu z Androidem
- bezproblemowe oglądanie filmów oraz przeglądanie zdjęć
- niska cena, stabilność, szybkość działania, obsługa bez dodatkowych monitorów, klawiatur i innych bzdetów
- możliwość rozbudowy w wolnym czasie (automatyczne wyłączenie listwy z prądu po wyłączeniu serwera czy inna automatyzacja domu)
Na początek ustawiłem statyczne IP, konfiguracja jest następująca:
1 2 3 4 5 6 7 8 9 10 11 12 |
nano /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.10.66 netmask 255.255.255.0 network 192.168.10.0 broadcast 255.255.255.255 gateway 192.168.10.1 |
Pomocne okazały się komendy: ifconfig oraz netstat -nr. Na koniec:
1 |
/etc/init.d/networking restart |
Dzięki temu odłączyłem Raspberry Pi od telewizora i mogłem dalej konfigurować urządzenie siedząc przed laptopem wykorzystując Kitty z automatycznym logowaniem. A właśnie, skoro już jestem przy tym temacie to warto zrobić, aby zlikwidować ręczne logowanie do sytemu w RPi (edycja 55 linijki):
1 2 3 |
nano /etc/inittab 1:2345:respawn:/sbin/getty --autologin pi --noclear 38400 tty1 |
Można przy okazji odświeżyć firmware, aby zaktualizować jajko (u mnie nie zachodziła taka potrzeba na Raspbianie).
1 2 3 4 5 6 7 |
sudo apt-get install git-core sudo wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update -O /usr/bin/rpi-update && sudo chmod +x /usr/bin/rpi-update apt-get install binutils rpi-update |
Po restarcie sytemu, overclockingu poprzez raspi-config dodaję do /boot/config.txt linię force_turbo=1:
1 2 3 4 5 6 7 8 |
nano /boot/config.txt arm_freq=900 core_freq=250 sdram_freq=450 over_voltage=2 gpu_mem=0 force_turbo=1 |
Dlaczego? Doczytałem, że Pi w trybie normalnej pracy działa na nominalnej częstotliwości, czyli 700 MHz, zwiększa się dopiero, gdy jest takie zapotrzebowanie. Mnie interesuje praca ciągła na poziomie 900 MHz, stąd wymusiłem przyspieszenie. Co to mi dało?
1 2 3 4 5 |
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 900000 /opt/vc/bin/vcgencmd measure_temp temp=47.6'C |
Poprzednio zamiast “9” wyświetlała mi się siódemka, więc mam pewność, że overclocking się udał. Temperatura po kilku godzinach pracy oscylowała wokół 50 stopni, więc nie ma tragedii z zamontowanymi radiatorami (na nie miałem ich jeszcze gdy robiłem fotografie).
Montowanie dysku po uruchomieniu się sytemu to będzie podstawa. U siebie na dysku zastosowałem system plików ext4. Dam również prawa do zapisywania (a nie tylko odczyt). Sprawdzam UUID poleceniem blkid. Potem przystąpiłem do edycji fstaba (po stworzeniu katalogu “dysk” w /media). Ukryłem unikalny numer dysku, zatem można podziwiać piękny UUID: 3×666!
1 2 3 4 5 |
blkid nano /etc/fstab UUID=666-666-666 /media/dysk/ ext4 defaults 0 0 |
Dla dysku, który ma format plików NTFS trzeba doinstalować brakujący pakiet ntfs-3g, a następnie dodać linijkę (identycznie jak powyżej) o treści:
1 |
UUID=666-666-666 /media/dysk ntfs-3g defaults,umask=0 0 0 |
Instalacja serwera plików Samba przebiegła bezproblemowo:
1 2 3 4 5 6 7 8 |
sudo apt-get install samba samba-common-bin cifs-utils -y sudo nano /etc/samba/smb.conf useradd MARIUSZ smbpasswd -a MARIUSZ /etc/init.d/samba restart |
Moja konfiguracja:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
#======================= Global Settings ======================= [global] #PL znaki w SMB display charset = utf-8 unix charset = utf-8 dos charset = 852 workgroup = DOM server string = Serwer NAS wins support = yes dns proxy = no log file = /var/log/samba/log.%m max log size = 1000 syslog = 0 panic action = /usr/share/samba/panic-action %d ####### Authentication ####### security = user encrypt passwords = true passdb backend = tdbsam obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes map to guest = bad user usershare allow guests = yes #======================= Share Definitions ======================= [homes] comment = Home Directories browseable = no read only = no create mask = 0700 directory mask = 0700 valid users = %S [dysk_public] commment = Server NAS 4 All path = /media/dysk guest ok = yes read only = yes [dysk] comment = Server NAS path = /media/dysk read only = no write list = kinga, MARIUSZ create mask = 0777 directory mask = 0777 browseable = yes |
Dzięki temu inne urządzenia będą widziały “dwa” dyski sieciowe: pierwszy tylko do odczytu, a drugi po zalogowaniu z możliwością edycji, zapisu itd. Dodałem drugiego użytkownika na zapas, w razie konfliktów z logowaniem kilku urządzeń na jedno konto. Po zrestartowaniu Samby zmapowałem dysk sieciowy w Windowsie. Pojawił się również na Androidzie. Czyli pierwszy cel zakończony: udostępnianie i swobodna edycja plików w jednym miejscu.
Na sam koniec zostawiłem najważniejszą funkcję: Raspberry Pi jako odtwarzacz muzyki sterowany tabletem. Podłączyłem wzmacniacz do wejścia mini-jack i przystąpiłem do konfiguracji. Pamiętam jak pierwszy raz konfigurowałem Debiana (też bez X-ów, a co!) i chciałem puścić muzykę – Google ukazało MPD. I nic z tym nie zrobiłem, bo nie wiedziałem wtedy, że można po prostu zainstalować CMusa…
1 2 3 4 5 |
apt-get install mpd -y nano /etc/mpd.conf service mpd restart |
Dziś ogarnąłem angielskiego manuala i wyszło coś takiego:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
music_directory "/media/dysk/Muzyka" playlist_directory "/var/lib/mpd/playlists" db_file "/var/lib/mpd/tag_cache" log_file "/var/log/mpd/mpd.log" pid_file "/var/run/mpd/pid" state_file "/var/lib/mpd/state" sticker_file "/var/lib/mpd/sticker.sql" user "mpd" group "audio" port "6600" gapless_mp3_playback "yes" metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc" auto_update "yes" zeroconf_enabled "yes" zeroconf_name "Music Player" 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 } filesystem_charset "UTF-8" id3v1_encoding "UTF-8" |
Zauważyłem, że MPD nie uruchamia się automatycznie po włączeniu Raspberry Pi, więc napisałem skrypt:
1 2 3 4 5 6 7 8 9 |
touch mpd nano mpd #!/bin/bash #ogarnia mpd na autoatarcie sudo service mpd restart chmod +x mpd ./mpd |
I dodałem go do autostartu (crontab -e):
1 |
@reboot /home/pi/mpd |
I gra muzyka – dosłownie :-)
Na sam koniec wprowadziłem kilka(naście) ulepszeń (optymalizacji), które miały na celu poprawienie szybkości działania Raspberry Pi. W chwili obecnej ilość zużywanej pamięci RAM jest zredukowana do minimum, nie notuję żadnych przycinek (miało to miejsce w “oryginalnym” Raspbianie). Jednak to się nadaje na osobnego posta.
Użyte aplikacje na Androidzie to:
- ASTRO File Manager with Cloud – przeglądanie, kopiowanie plików
- DicePlayer – bezproblemowe odtwarzanie filmów na tablecie
- MPDroid – zdalne sterowanie muzyką z tableta, Raspberry Pi podłączony do wzmacniacza
Kilka refleksji:
- Raspberry Pi dało mi dużo radości i odświeżenie informacji o linuksie/podstawach sieci
- Siostra w końcu odcięła się od przewodu audio prowadzącego do wzmacniacza, jednak swobodna praca na tablecie to podstawa. Wygoda niesamowita, sterowanie muzyką z całego domu, nie mówiąc o tym, że na 16 GB pamięci zmieści się śmieszna ilość muzyki
- Raspberry Pi posłuży mi jako baza do kolejnych projektów. Chciałbym zrobić jakąś automatyzację w pokoju – temat poczeka na wakacje
- Oszczędność pieniędzy – kupiłem całość (Raspberry Pi wersja 512 MB + karta SDHC 8GB + zasilacz + obudowa) za 199 zł
- Pierwsza konfiguracja NASa zajęła mi kilka godzin, ponowna to pewnie kwestia kilkunastu minut
Raspberry Pi i sprawa audio:
Powołując się na listę wspieranych przetworników cyfrowo analogowo-cyfrowych mój Bifrost powinien pójść bez problemu. I tak się stało! Wystarczy powiadomić MPD, że nie chcemy słuchać muzyki z szajowatego (domyślnego) wyjścia audio (zmiana z hw:0,0 na hw:1,0):
1 2 3 4 5 6 7 8 9 |
audio_output { type "alsa" name "My ALSA Device" device "hw:1,0" # optional format "192000:24:2" # optional mixer_device "default" # optional mixer_control "PCM" # optional mixer_index "0" # optional } |
- można się pobawić wyjściowym formatem np. na 24/192 – to co tygryski lubią najbardziej
- puściłem “Chorus: And the Glory of the Lord” z “Messiah (Dublin Version, 1742)” Händla w wersji 24/192 – nie usłyszałem żadnych “dziwnych rzeczy”, wszystko grało bardzo ładnie
- złotousi pewnie uznają Raspberry Pi w roli transportu za herezję, brak jakiś bit-perfectów w przypadku użycia USB itp. itd. No cóż, kwestia podejścia. Moim transportem jest cały czas laptop i różnicy nie usłyszałem :)
- poważnie rozważam kupno zewnętrznego DACa dla Raspberry Pi w przyszłości. Jeden z takich wynalazków można znaleźć na stronie HiFiBerry. Jest WM8804 Wolfsona, 24/192, bit-perfect… świetne rozwiązanie!
Przykładowe zrzuty ekranu:
No nareszcie coś co nie jest kolejną podstawką pod tablet… Chwała Ci za ten post.
“Mnie interesuje praca ciągła na poziomie 900 MHz, stąd wymusiłem przyspieszenie. Co to mi dało?”
No właśnie, co Ci to dało poza robieniem z RPI grzejnika?
Nie mam żadnego grzejnika, ponieważ zamontowałem radiatory. Ponadto ograniczyłem zużycie zasobów do minimum, więc temperatura jest na stałym i bezpiecznym poziomie. A przyspieszyłem z następujących powodów: zaspokojenie zachcianki i wyeliminowanie zacinek, które zdarzały się podczas jednoczesnego odtwarzania gęstych plików i kopiowania różnych rzeczy na dysk.
“Oszczędność pieniędzy – kupiłem całość (Raspberry Pi wersja 512 MB + karta SDHC 8GB + zasilacz + obudowa) za 199 zł”
Nie chcę krytykować, ale wiesz, że Twoje potrzeby jest w stanie spełnić dowolny router za około 200PLN? Oczywiście frajda ze składania mniejsza, ale czy jest sens?
Router może jest w stanie spełnić te wymagania, lecz te routery do 200zł nie są tak wydajne i nie posiadają tylu złącz wyprowadzonych.
A właśnie, jakie mniej więcej transfery uzyskujesz przy kopiowaniu plików via Ethernet?
Nie mogę odpowiedzieć na to pytanie precyzyjnie, ponieważ w domu nie będzie mnie do połowy marca. Spróbuję odpowiedzieć następująco: nie mam żadnych problemów z odtwarzaniem filmów HD (4-6 GB) poprzez WiFi, więc nie jest źle. :)
Na sterowniku ntfs-3g (odpowiedzialnym za obsługę ntfs) na ethernecie osiąga się max 2.4Mbps, po sformatowaniu dysku na ext4, transfery wzrastają do 6-8Mbps na @900Mhz
Do routera nie podłącze zewnętrznego przetwornika cyfrowo-analogowego, który dla mnie jest podstawą jeśli chodzi o odtwarzanie muzyki. Również routera nie wykorzystam jako bazy do automatyzacji pokoju. Serwer NAS to dopiero początek zabawy Raspberry Pi.
I tu jesteś w błędzie. Wystarczy router, który posiada wyprowadzone USB. Brat zrobił sobie stację radia internetowego z jakiegoś routera ASUSa. W USB wsadzona karta dźwiękowa i podgryza neta ze skrętki albo z WiFi (nie pamiętam już dokładnie). Sterowanie też zdalne, via MPD
.
Co do automatyzacji pokoju, to również jesteś w błędzie – np. Linksys WRT54GL posiada wyprowadzone dwa porty RS232, które działają w standardzie TTL (czyt: nie trzeba dodatkowo konwertera poziomu napięć). Fakt, jeden port jest głównie na potrzeby wewnętrznej konsoli, ale nadal masz do dyspozycji jeden port. No, na upartego jednak dwa.
I nawet jak masz postawione zwykłe Tomato, to możesz sobie wykorzystać /dev/ttyS0. Kartę SD do WRT też wciśniesz, trzeba tylko wyprowadzenia przylutować, jest zpatchowane Tomato.
Siejesz herezje, Arturze. [;
Nie zrozumieliśmy się, ale rozumiem twój punkt widzenia. Wyraziłem się niejasno więc może napiszę o co mi chodzi: w domu nie posiadam routera z USB, RS-em itp. więc nici z podłączenia dysku oraz tworzenia innych ciekawych rzeczy. Jeśli ktoś ma dodatkowe funkcję to proszę bardzo – ja do postawienia NASa wykorzystałem Raspberry Pi, ponieważ nie widziałem innych możliwości. Zdecydowanie wolę kupić Rpi niż zmieniać router, bo “stary” przecież działa bez problemu. :-) Pozdrawiam serdecznie.
Router – a widzieliście ile jest dziur w routerach? :] To powiem wam że do większości routerów (które są wystawione do internetu) da się z niego dostać nie znając hasła.
A co do “Po co dublować identyczne pliki na dwóch różnych urządzeniach” jak najbardziej JEST POCO! zdechnie ci dysk przy raps, albo go coś zaatakuje i pliki szlak trafił, a tak są w innym miejscu;) Możesz też zainstalować serwer http i ownCloud;) Ale to juz chyba przerost formy nad treścią;)
Do backupu, jak już koniecznie chcesz zostawić 1 dysk polecam na najważniejsze dane dodać np. https://copy.com?r=d7ydIW (z tego linku ty masz 20GB zamiast 15 a ja +5 do swojego konta)
Mają aplikacje synchronizującą się z raps. zajmuje około 10MB ram. Do tego masz pliki dostępne po www, gdzie tylko chcesz;)
Popieram Raps’a;)
Dzięki za propozycję, ale mam kilka backupów pików na różnych dyskach. Ponadto nie potrzebuję darmowych Dropboxów itp, ponieważ wykupuję hosting. :)
Ale hosting jest po co innego:P Dropbox nie lubię za mało miejsca;) I regulamin eee…
A backup powinno się mieć poza domem;) Pożar czy coś;) Albo jakiś złodziej;) Wszystko jedno jak, ale najlepiej poza domem:)
Wystarczy Ci tp link za 100zł i oprogramowanie OpenWRT, zrobisz nie tylko to ale nawet więcej ;) Ale nie krytykuję, bo raspi to świetna zabawka, a sam projekt bardzo dobry.
Do routera nie podłącze zewnętrznego przetwornika cyfrowo-analogowego
I tu sie mylisz grucha.
Właśnie czytam sobie tego arta, bo też mam w planie taką konstrukcję i chcę rozwiać wszelkie wątpliwości bo mam doświadczenie (a widzę, że wiele tutaj czysto teoretycznych mądrości) – można do routera z usb na tomato podłączyć DACa (zresztą czym jest karta dźwiękowa?), ale wszystko zależy od zastosowanego w nim przetwornika (właściwie jego popularności ;)). Sprawdzone – działa, z tym, że jest inny problem – wydajność mpd (Netgear 3500).
Piąteczka. Czy będziesz może “dorabiał” do tego jakiś XBMC Media Serwer? chętnie bym sobie to potem skopiował :)
Dziękuję za ocenę :) Nie będę do tego dorabiał XBMC, usunąłem serwer X-ów, nie mam żadnych “graficznych pulpitów”. Wszelkie zmiany dokonuję poprzez SSH, a muzyką steruje siostra za pomocą tabletu. Nie zamierzam podpinać Raspberry Pi do żadnych telewizorów czy tworzyć z niego “centrum multimedialnego”.
XBMC na rPi działa IMO średnio – a na pewno nie odpowiada moim oczekiwaniom :) Odtwarzanie filmów jeszcze jako-tako, aczkolwiek już te największe (~15GB pliku) się przycinały. Podobno można było to trochę zoptymalizować nie dekodując strumienia AC3 tylko wypychając go bezpośrednio na kanał audio, ale już z tym nie kombinowałem. Pliki brałem z NASa bezpośrednio. Wszystkie inne pliki wideo odtwarzał bez problemu – w końcu ma do tego wspomaganie sprzętowe. Z kolei płynność interfejsu użytkownika pozostawiała dużo do życzenia. Można oczywiście znaleźć jakiś bardzo lekki temat graficzny, ale dla mnie estetyka i bajeranckość XBMC to połowa frajdy z korzystania z niego :)
A ja wiedzę tutaj jeden poważny problem wydajnościowy. Odpal kopiowanie jakiegoś pliku na sambę i zobacz co Ci obciąża najbardziej system… podpowiem ntfs-3g. To jest znany problem tego sterownika. Efektem jest to, że transfery na/z sambę masz na poziomie 2-2.4Mbps. Na początku mi to nie przeszkadzało. Ale apetyt rośnie w miarę jedzenia. Jak backup z lokalnych stacji wykonywał się za długo, a filmy przegrywały się bardzo długo to zmieniłem format dysku na ext4 i od tego czasu transfer wzrósł do 7-8Mbps, obciążenie spadło znacznie, a temperatura utrzymuje się na poziomie 45-47 stopni.
Najbardziej obciąża Raspberry Pi ntfs-3g – tak, to wiedziałem. Jednak jakoś nie przychodziło mi do głowy, aby zmienić system plików na ext4, nie czułem takiej potrzeby. Jak będę w domu to się tym zajmę na bank, bardzo dziękuję za wartościowy komentarz.
Brawo! Jestem za jakimś podziałem majsterkowa na dwie kategorię, nazwijmy cyfrową i analogową, bo szczerze nie uważam tych podstawek za szczególnie mądre artykuły. Ale jest to poniekąd majsterkowanie, jednakże, mnie osobiście nie interesują one w ogóle i nieomal przeoczyłem ten ciekawy artykuł w całym tym bałaganie. A od siebie pozdrawiam tą bardziej elektroniczno-informatyczną część majsterkowa. Tak trzymać! Tylko dla tych projektów tu zaglądam.
Pingback: Raspberry Pi + barebone arduino + Domoticz czyli inteligentny dom dla każdego. » Majsterkowo.pl
Mega za@@@###sty projekt.
Z zewnętrznych Daców polecam konstrukcje z kostkami WM8742 lub PCM1792. Obsługują gęste formaty i są bardzo muzykalne. WM8804 to SPIDIF Receiver :-) Notabene bardzo dobry, choć z tendencją do przycinek po restarcie. Ale i tak największy problem, to skąd pewne źródło 24/192 muzy, które nie doprowadzi do zapaści finansowej. Szacun za pomysł i realizację, czyli połączenie wiedzy z umiejętnościami. Za cienki jest w linuksie, żeby się na to porwać. Jakimś cudem odpaliłem Free NAS na platformie Intel Atom z pasywnym chłodzeniem + Logitech Squeezbox Classic. Jako transport plików muzycznych daje radę, ale filmów nie da się pooglądać, a sterowanie tylko dedykowanym pilotem. Okrutnie mnie ten pomysł z Pi zafrapował. Wielkie dzięki za inspiracje.
Witam. Nie mogę nic kopiować na “USBHD”. Wyskakuje mi błąd “musisz mieć uprawnienia do wykonania tej operacji”. Proszę o pomoc ;)
Możesz mi pomóc z konfiguracją MPDroid? … nie wiem co mam tam wpisać.
W pliki konfiguracyjne wkleiłem dokładnie to co Ty.
MPDroid nie może się połączyć.
Jestem na etapie że mam widoczny w “Sieć” pendrive zamontowany w rapsberry i mogę na niego zapisywać pliki. Jak dysk sieciowy.
Świetny pomysł i dobry tutek. Od siebie dodam że na nowym raspibianie bez optymalizacji 1-edynka krecona na 800 (odtwarzanie 2 mkv naraz z sieci – podpięty 64GB pendrive) + muza na wieże + łączenie zdalne na terminal (server SSH) i się nie tnie !!! (wyłączony LightDM)
Jedynie to sygnał audio nie powala, ale jak ktoś to łączy tak jak ja ze zwykłą starą wieżą i nie jest nietoperzem to funkcjonalność tego zestawu (malinka+obudowa+pendrive=około 150 pln) to i tak bomba!!!
Wielkie dzieki
Artykuł stary, ktoś próbował na nowej 3 lub najnowszej 3 B+??
Jak podłączyłeś dyski twarde do rpi? (czytałem cały art i mi to umknęło). To były dyski sieciowe, chyba
nie SATA?
Odpalałem DAC DacMagic 100 na orange pi zero i dawał rade. Jednak do samby potrzeba gigabita. Ogólnie spoks.