Elektroda.pl
Elektroda.pl
X
Computer Controls
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Linux media server (AT91RM9200)

piotr_go 13 Gru 2011 17:12 40395 76
  • Linux media server (AT91RM9200)

    Witam.
    Przedstawiam projekt serwera mediów, który powstawał w wolnym czasie przez ostatnie parę lat. Zaczęło się od chęci odpalenia "empetrójki" na ARMie pod Linuxem, a skończyło... hmmm, pewnie się nie skończy... na odpaleniu tego, co postaram się opisać.

    Możliwości:

    - obsługa kart SD/MMC
    - obsługa USB: CD/HD/DVB-T/AUDIO
    - serwery telnet, ssh (dropbear), http, samba
    - odtwarzacz mpd z obsługą mp3/aac/ogg/musepack i radyjek internetowych
    - streaming DVB-T za pomocą mumudvb
    - serwer pulseaudio udostępniający głośniki w sieci lokalnej (tak, tak, głośniki WiFi do laptopa :))
    i pewnie parę innych funkcji, o których zapomniałem.

    Sprzęt nie jest mojego projektu (ja go tylko złożyłem), więc nie będę go zbytnio opisywał.
    - Procesor: AT91RM9200, już dość stary, oryginalnie 180MHz, u mnie przetaktowany na 203MHz. Przetaktowałem go, żeby uzyskać dokładnie 44.1KHz za pomocą TDA1543.
    - RAM: 64MB, a co tam, zaszalałem :)
    - FLASH: 8MB dataflash
    - czytnik SD/MMC
    - USB host, USB device, 12Mbps
    - Ethernet 100Mbps
    - Audio DAC TDA1543 który dodałem
    Dlaczego taki sprzęt? Bo miałem, szkoda go było marnować.

    Soft był dobrany i kompilowany przeze mnie, żadna gotowa dystrybucja.
    - mini bootloader (10kB) dostosowałem tak, żeby nie wymagał u-boota, a sam konfigurował sprzęt i bezpośrednio bootował kernel. Posiada funkcję firmware update i wybór komendy bootującej kernel (filesystem w dataflash lub na karcie SD);
    - kernel w wersji 2.6.31.14 (~1,7MB), na nowszych były problemy z tunerem DVB-T, niby wszystko OK, a nie chciał działać. Sterownik do TDA1543 napisany przeze mnie;
    - system plików skompresowany squashfs;
    - busybox, dropbear, samba, alsa, mpd, pulseaudio, mumudvb i całe mnóstwo różnych bibliotek. Mumudvb musiałem przerobić, bo oryginalny otwierał wszystkie PIDy z transpondera, co zapychało 12-Mbitowe USB.

    Linux media server (AT91RM9200)

    DVB-T w VLC. Działa EPG, pokazywany jest czas trwania programu, napisów i ścieżek dźwiękowych nie było na czym sprawdzić.
    Linux media server (AT91RM9200)

    Przykładowy klient MPD o nazwie Sonata:
    Linux media server (AT91RM9200)

    Dostęp do samby:
    Linux media server (AT91RM9200)

    Montowanie/demontowanie CD, kart SD i nośników USB z poziomu przeglądarki. Wystarczy kliknąć na ikonkę.
    Linux media server (AT91RM9200)

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    piotr_go
    Poziom 28  
    Offline 
    Specjalizuje się w: technika cyfrowa
    piotr_go napisał 1757 postów o ocenie 1837, pomógł 66 razy. Jest z nami od 2003 roku.
  • Computer Controls
  • #3
    poczitamagoczi
    Poziom 14  
    Super projekt. Płytkę też sam projektowałeś? Mam takie pytanie od laika - od czego najlepiej zacząć chcąc zająć się kompilacjami Linuxa na swoje potrzeby ? Polecasz jakieś książki, toturiale lub inne materiały ?
  • Computer Controls
  • #4
    Darektbg
    Poziom 21  
    poczitamagoczi napisał:
    Super projekt. Płytkę też sam projektowałeś? Mam takie pytanie od laika - od czego najlepiej zacząć chcąc zająć się kompilacjami Linuxa na swoje potrzeby ? Polecasz jakieś książki, toturiale lub inne materiały ?

    Ja osobiście polecam książkę Link.
  • #5
    piotr_go
    Poziom 28  
    poczitamagoczi napisał:
    od czego najlepiej zacząć chcąc zająć się kompilacjami Linuxa na swoje potrzeby ?

    1. Zainstalować którąś z dystrybucji, najlepiej *ubuntu, najbardziej popularna.
    2. Zainstalować kompilator z codesourcery (arm-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2). Jak byś potrzebował to mam skrypt do tego.
    A kompilacja jądra to:
    Code:
    codesourcery-arm-2011.03.sh
    
    make kirkwood_defconfig #tu wybieramy arhitekturę, to akurat dla seagate dockstar i podobnych
    make menuconfig #wybieramy opcje
    make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage

    i tyle, po kompilacji powinna pojawić się binarka kernela.
    Potem trzeba skompilować busybox.
  • #6
    tomek10861
    Poziom 27  
    szulat napisał:
    piotr_go napisał:
    Przedstawiam projekt serwera mediów który powstawał w wolnym czasie przez ostatnie parę lat

    czekam i czekam i ciągle go nie przedstawiasz, więc nieśmiało spytam czy coś jeszcze się w tym wątku pokaże?
    Dla jednego serwerem jest komputer wyposażony w 8 dysków twardych, ze 4 procesorami, GB pamięci ram i specjalistycznym oprogramowaniem. Dla innego jest to niewielki sprzęt wyposażony w konkretne serwerowe oprogramowanie. Ten projekt mimo wszystko jest serwerem. Pozdrawiam :D

    Dodano po 1 [minuty]:

    Czy można od autora tematu spodziewać się jakiejś większej ilości zdjęć?
  • #7
    michalk2
    Poziom 18  
    Moje wielkie uznanie. Kilka rzeczy poprawiłeś i napisałeś sterownik do DAC.
    Czy ten serwer może służyć też jako nagrywarka z DVB-T? (np. o zaprogramowanej godzinie nagra materiał)
    Napisałeś, że ty złożyłeś HW - podaj w takim razie źródło projektu.
  • #8
    piotr_go
    Poziom 28  
    Lepsza fotka sprzętu:
    Linux media server (AT91RM9200)

    michalk2 napisał:
    Czy ten serwer może służyć też jako nagrywarka z DVB-T? (np. o zaprogramowanej godzinie nagra materiał)

    Dało by się zrobić. WGETem da się nagrać strumień. Co prawda był by problem z zatrzymaniem, trzeba by nad tym pomyśleć.

    michalk2 napisał:
    Napisałeś, że ty złożyłeś HW - podaj w takim razie źródło projektu.

    http://www.twarm.pelos.pl/
  • #10
    piotr_go
    Poziom 28  
    tomek10861 napisał:
    Ile cię mniej więcej wyniosła ta płytka?

    50zł dałem za gołą PCB z tego co pamiętam, procesor miałem bo już od dłuższego czasu się przymierzałem do zrobienia czegoś na nim, RAM z demontażu (SDRAM). Dokupiłem tylko te drobiazgi.
  • #11
    mjurczuk
    Poziom 9  
    Troche off-topic. Jeśli ktoś chce się pobawić w taki embedded-linux to polecam
    kupić sobie Iomega Iconnect
    Bawię się od jakiegoś czasu tym i naprawdę kawałek porządnej zabawki.
    Procesor ARM Ferroceon 1GHz, 256MB RAM, 4x USB 2.0, 1x1Gbps Ethernet, WiFi 802.11/b/g/n i cena pare stówek (kupiłem za 300). Jeśli nie zależy nam na DIY od zera to wyjdzie pewnie taniej niż budowa takiego jak w temacie.
    W sumie z pomocą paru forów i 3 dni bezproblemowo udało się skompilować cały system (Linux) + zbudować sterowniki do wszystkiego na pokładzie. Jedyne co nie działa to WiFi w trybie AP. Jest trochę portów GPIO do wykorzystania (LED'y, itp).
    Robi to u mnie za taki przenośny NAS, zasilany czasem z akumulatora..:)
    Parę detali jak to wygląda w środku tutaj
    Jednak podziwiam za zaparcie - zdecydowanie ścieżka budowania od zera pozwala poznać jak działają takie systemy od podstaw :)


    Pozdr,
  • #12
    pidpawel
    Poziom 26  
    A ja się przymierzam do ogarniania systemów wbudowanych na czymś takim: http://www.propox.com/products/t_232.html Największą przewagą tego rozwiązania jest ogromna ilość dostępnych GPIO, które można wykorzystać w typowo "elektroniczny" sposób. Parametry ma gorsze niż wspomniana Iomega, za to zbliżone do użytych w projekcie, które jak widać dają radę ;)
  • #13
    piotr_go
    Poziom 28  
    pidpawel napisał:
    A ja się przymierzam do ogarniania systemów wbudowanych na czymś takim: http://www.propox.com/products/t_232.html Największą przewagą tego rozwiązania jest ogromna ilość dostępnych GPIO, które można wykorzystać w typowo "elektroniczny" sposób. Parametry ma gorsze niż wspomniana Iomega, za to zbliżone do użytych w projekcie, które jak widać dają radę ;)

    Gdyby pojawiło się to wcześniej to ten projekt był by właśnie na tym module.

    Ciekawe kiedy będzie można kupić Raspberry Pi http://www.raspberrypi.org/
    To dopiero będzie multimedialne :) W obiecywanej cenie (25-35$) nie dostanie się nic lepszego.
  • #14
    pidpawel
    Poziom 26  
    piotr_go napisał:
    pidpawel napisał:
    A ja się przymierzam do ogarniania systemów wbudowanych na czymś takim: http://www.propox.com/products/t_232.html Największą przewagą tego rozwiązania jest ogromna ilość dostępnych GPIO, które można wykorzystać w typowo "elektroniczny" sposób. Parametry ma gorsze niż wspomniana Iomega, za to zbliżone do użytych w projekcie, które jak widać dają radę ;)

    Gdyby pojawiło się to wcześniej to ten projekt był by właśnie na tym module.

    Ciekawe kiedy będzie można kupić Raspberry Pi http://www.raspberrypi.org/
    To dopiero będzie multimedialne :) W obiecywanej cenie (25-35$) nie dostanie się nic lepszego.


    Raspberry Pi ma za mało GPIO żeby dodać jakieś "elektroniczne" peryferia. Ale faktycznie jest świetną propozycją do zabawy systemami wbudowanymi. Cena też wydaje się być przyjazna w porównaniu do możliwości.
  • #15
    piotr_go
    Poziom 28  
    pidpawel napisał:
    Raspberry Pi ma za mało GPIO żeby dodać jakieś "elektroniczne" peryferia.

    RS/SPI/I2C i coś tam jeszcze chyba ma być na złączu więc nie widzę problemu.
  • #16
    pidpawel
    Poziom 26  
    piotr_go napisał:
    pidpawel napisał:
    Raspberry Pi ma za mało GPIO żeby dodać jakieś "elektroniczne" peryferia.

    RS/SPI/I2C i coś tam jeszcze chyba ma być na złączu więc nie widzę problemu.

    Ale podłączenie jakiegoś wyświetlacza (a już na pewno graficznego) może stanowić lekki problem. Zakładam, że nie będziemy wyświetlać na tradycyjnym monitorze ;)
  • #17
    gbd.reg
    Poziom 21  
    Są dostępne wyświetlacze graficzne pod interfejs SPI. Nawet ostatnio pokazały się dosyć ciekawe wyświetlacze OLED kompatybilne z popularnym interfejsem HD44780 + SPI + tryb graficzny. Więc z podłączeniem wyświetlacza nie będzie wcale tak trudno. Dodatkowo jest też możliwość podłączenia wyświetlacza pod USB ;)

    Co do samej konstrukcji: wspaniała rzecz :) jeszcze tylko dorzucić dysk twardy, tak z 1,5 TB, tuner DVB-S, wyświetlacz LCD, pilota, zamknąć w ładnej obudowie, dodać jakiś procesor grafiki z wyjściem HDMI i mamy full wypas odtwarzacz multimediów :D
  • #18
    p4trykx
    Poziom 16  
    gbd.reg napisał:
    dodać jakiś procesor grafiki z wyjściem HDMI i mamy full wypas odtwarzacz multimediów

    Raspberry Pi ma już wyjście HDMI były nawet pokazy prototypu jak grali w Quake 3
  • #19
    komatssu
    Poziom 28  
    gbd.reg napisał:
    Co do samej konstrukcji: wspaniała rzecz :) jeszcze tylko dorzucić dysk twardy, tak z 1,5 GB, tuner DVB-S, wyświetlacz LCD, pilota, zamknąć w ładnej obudowie, dodać jakiś procesor grafiki z wyjściem HDMI i mamy full wypas odtwarzacz multimediów :D

    Pomarzyć można... tylko kto napisze do tego odpowiednie, funkcjonalne oprogramowanie? :)
  • #20
    gbd.reg
    Poziom 21  
    komatssu napisał:
    gbd.reg napisał:
    Co do samej konstrukcji: wspaniała rzecz :) jeszcze tylko dorzucić dysk twardy, tak z 1,5 GB, tuner DVB-S, wyświetlacz LCD, pilota, zamknąć w ładnej obudowie, dodać jakiś procesor grafiki z wyjściem HDMI i mamy full wypas odtwarzacz multimediów :D

    Pomarzyć można... tylko kto napisze do tego odpowiednie, funkcjonalne oprogramowanie? :)


    Oprogramowanie już istnieje :) Są dystrybucje linuksa typu Media Center, które dałoby się przenieść na taki sprzęt (oczywiście z lepszymi parametrami :) ). Tak naprawdę najgorzej jest właśnie z hardware.

    p4trykx napisał:
    Raspberry Pi ma już wyjście HDMI były nawet pokazy prototypu jak grali w Quake 3


    A to jest dosyć ciekawa informacja... Ciekawe ile taka gotowa platforma z wyjściem HDMI kosztuje i jak się ma sprawa z wydajnością procesora graficznego...
  • #21
    p4trykx
    Poziom 16  
    Mają kosztować od $25 do $35 w zależności od wersji. Na ich stronie widać, że mają już płytki gotowe więc prace postępują. Niby miały być gotowe urządzenia gotowe już w grudniu, ale pewnie jak w każdym projekcie, są obsuwy. Ja trzymam kciuki.
    http://en.wikipedia.org/wiki/Raspberry_Pi
  • #22
    Ficu
    Poziom 31  
    A ja mam pytanie o samo strumieniowanie DVB-T. Mam w domu postawiony serwerek na debianie (DLNA, samba, torrent na 400MHz/256MB) i chciałbym strumieniować z tego DVB-T. Mam w domu tuner od N, sterowniki pod to są na linuxa http://satkurier.pl/news/62570/n-tuner-dvb-t-usb-dla-nbox-dziala-z-pc.html
    Potrzebuje jakiś wskazówek jak to uruchomić bo miałem problemy z samym debianem bo pierwszy raz bawiłem się linuxem i do tego bez gui.
  • #23
    piotr_go
    Poziom 28  
    Pojawia się /dev/dvb/adapter0/... po podłączeniu?
    Jeżeli nie to co pokazuje "dmesg" ?
  • #24
    tomasz3dk
    Poziom 11  
    Ficu napisał:
    A ja mam pytanie o samo strumieniowanie DVB-T. Mam w domu postawiony serwerek na debianie (DLNA, samba, torrent na 400MHz/256MB) i chciałbym strumieniować z tego DVB-T. Mam w domu tuner od N, sterowniki pod to są na linuxa http://satkurier.pl/news/62570/n-tuner-dvb-t-usb-dla-nbox-dziala-z-pc.html
    Potrzebuje jakiś wskazówek jak to uruchomić bo miałem problemy z samym debianem bo pierwszy raz bawiłem się linuxem i do tego bez gui.


    Jeśli uda ci się uruchomić tuner to do strumieniowania polecam zestaw tvheadend na serwerze https://www.lonelycoder.com/hts/ i odtwarzacz xbmc na klientach. Sprawdza się to wyśmienicie ;)
  • #25
    Ficu
    Poziom 31  
    VLC lepsze bo i na Androidzie odpalę. Idę z tym walczyć.

    Dodano po 10 [minuty]:

    piotr_go napisał:
    Pojawia się /dev/dvb/adapter0/... po podłączeniu?
    Jeżeli nie to co pokazuje "dmesg" ?

    Zatrzymałem się na punkcie 2:
    Code:
    root@debian:~# hg clone http://linuxtv.org/hg/v4l-dvb
    
    -bash: hg: nie znaleziono polecenia


    Dmesg wykrył poprawnie urządzenie.
    Jajko 2.6.32-5-486
  • #26
    piotr_go
    Poziom 28  
    Ficu napisał:
    dmesg wykrył poprawnie urządzenie.

    tzn? jest /dev/dvb/adapter0/...?

    W ubuntu HG instalujesz za pomocą: "sudo apt-get install mercurial"
  • #28
    piotr_go
    Poziom 28  
    tomasz3dk napisał:
    polecam zestaw tvheadend na serwerze...

    Niby się skompilował, może go wypróbuję i dam znać co i jak.
  • #29
    pidpawel
    Poziom 26  
    pidpawel napisał:
    piotr_go napisał:
    pidpawel napisał:
    Raspberry Pi ma za mało GPIO żeby dodać jakieś "elektroniczne" peryferia.

    RS/SPI/I2C i coś tam jeszcze chyba ma być na złączu więc nie widzę problemu.

    Ale podłączenie jakiegoś wyświetlacza (a już na pewno graficznego) może stanowić lekki problem. Zakładam, że nie będziemy wyświetlać na tradycyjnym monitorze ;)


    Narzekałem i się pojawiło rozwiązanie ;D
    http://www.raspberrypi.org/archives/411
  • #30
    Ficu
    Poziom 31  
    No i jest problem, niby hg zrobiło to co trzeba, ale po przejściu do punktu 4 edytor jest pusty - nie ma pliku (używam nano).