Cubieboard audio projekt

Povezava do Cubieboard: Cubieboard
Povezava na Predojačevalnik za Cubieboard
Povezava na Napajalnik za Cubieboard

Opis:

Cubieboard se ob priklopu na napajanje zbudi s pomočjo naloženega Androida, ki je naložen na 4GB Nand flash-a. Plošča vsebuje 1GHz A10 procesor, 1GB rama, 4GB nand flash diska na ploščici. Vsebuje tudi HDMI, 2x USB, LAN, SATA, micro SD card slot, ter Auido 3,5 banano za slušalke ter vhod za mikrofon. Vsebuje tudi IR sprejemnik, ter 2 razširitvena konektorja in serijski konektor.

Namestitev Linux Ubuntu Linaro

Če priključimo na vezje HDMI kabel, miško in tipkovnico, ter priključimo napajanje nas na ekranu v slabi minuti pričaka Android. Možnost pa je uporabiti tudi kar nekaj distribucij Linux-a.

Za to potrebujemo eno microSD kartico, kapacitete vsaj 1GB (za minimalno namestitev)
Sledil sem vodiču, ki je objavljen tule: http://www.cnx-software.com/2012/12/09/cubieboard-unboxing-and-quick-start-guide/
Najenostavnejši postopek se mi je zdel kar preko androida.

Postopek je relativno enostaven. Preko brskalnika se priklikamo do internetne strani, snamemo en paket, zaženemo program, ki naloži bootloader na flash kartico in nato zadevo ponovno zaženemo. Postopek ni trajal več kot 1 minuto.

Žal se plošča ni hotela zbuditi. Očitno se programska oprema ni popolnoma ustrezno naložila na kartico, ali pa bilo kaj narobe s samim bootloaderjem, ki je priložen. Programček je na SD kartici naredil 60MB velik razdelek, ki je vseboval nekaj datotek.
Zato sem se odločil bootloader namestiti preko oken, saj imam laptop, ki ima vgrajen čitalec kartic.
Snamem najprej programček, ki omogoča da na SD kartico nasnameno sliko diska, ki je potrebna.
Programček Win32DiskImager je na voljo brezplačno preko: http://sourceforge.net/projects/win32diskimager/
Slika bootloaderja pa je tal.e: http://www.berryterminal.com/doku.php/berryboot_a10 sama slika: http://sourceforge.net/projects/berryboot/files/berryboot-cubieboard-beta5.zip/download torej beta5 v času pisanja 18.3.2013

Zaženem programček za pisanje -> ne vidi moje SD kartice, čeprav lahko po njej pišem v oknih.... Sem zadevo prekinil in kupil en poceni čitalec kartic in program vidi kartico, in sliko uspešno namestim.
V vmesnem času sem opazil, da okna vidijo mojo 16GB kartico le do velikosti 60MB, kot je velikost nameščenega razdelka. Diskmanager je seveda videl kompletno kartico, a je bil večji del nerazporejen, sam Diskmanager pa brez vsakršne možnosti, ki bi mi omogočila brisanje razdelka velikega 60MB.

Po nekaj brskanja po internetu sem ugotovil, da je možno zadevo rešiti preko konzole v oknih. Konzolo odpremo tako, da v Start vrstici izberemo run in vpišemo ukaz cmd
V konzolo vpišemo naslednje:
diskpart
list disk
select disk 1
Pri zadnji vrstici ( select disc 1) pazimo, da izberemo številko diska, ki odgovarja naši SD kartici. Paziti je potrebno, da po pomoti ne zbrišemo kakšnega trdega diska!!!!!
Nadaljujemo z:
recover
clean
Pritisnemo ctrl+c za zaključek in SD kartica bo kot nova. :-) Za uporabo jo je potrebno še sformatirati. Za potrebe tega projekta naj bo to Fat ali Fat32.
Sledi nalaganje slike bootloaderja z Win32DiskImagerjem.
Po vsej kolobociji z nalaganjem bootloaderja je šlo naprej lažje. Ko sem kartico vtaknil v režo in ploščico zagnal, me je pričakalo okno z izbiro programske opreme.
Poizkusil sem skoraj vse kar je bilo na voljo: Fedora je delovala, Puppy je imel sesut displej. Raspbian ni hotel delovati - verjetno povezano z grafiko
Končal sem pri Linaro ALIP Ubuntuju 2012.11, ki uporablja LXDE namizje.
To je Ubuntu Linux preveden za A10 prcesorje, precej olajšan paketov programske opreme in privzeto ne uporablja Unity grafičnega vmesnika, ker je preveč potraten.
Pri uporabi Linuxa je potrebno vedeti, da male črke niso enake velikim črkam. To pomeni, če napišemo v konzolo ukaz ni enako če bi napisali Ukaz ali UKAZ ali kakšno drugo permutacijo besede.
Ubuntu uporablja ukaz sudo za dvig privilegijev trenutnega uporabnika na nivo administratorja. To omogoča nameščanje programov in spreminjanje konfiguracije. Vsakič, ko vpišemo ukaz sudo program zahteva vpis gesla, ki je privzeto "linaro" (brez narekovajev) Geslo se lahko spremeni.
Mogoče bom kdaj napisal kako.

Moj cilj je bil sistem nastaviti tako, da napravica samodejno igra mojo glasbo, ki je na Omrežnem disku, ki je priključen na Router.
Privzeto Cubie audio signal pošilja v HDMI izhod. Sam sem hotel, da dobim Audio kar lepo na banana izhod na plošči.
Zato je potrebno spremeniti konfiguracijo. Zaženemo terminal: Accessories / Leafpad. Sam sem še povečal črke v konzoli na 12pik.

Preklop privzetega audio izhoda iz HDMI na 3,5 banana vtičnico

Če bi bilo enostavno iz HDMI signala pridobiti audio signal bi raje uporabljal HDMI, ker audio izhod iz Cubieboarda ni pretirano kvaliteten.
HDMI signali so namreč zakodirani zaradi DRM. Tako so dekoderji le naprave, ki so organizaciji HDMI plačale licenčnino in dobile v uporabo ključe, ki uspejo odkleniti podatke. Ker je moj namen pradvajati glasbo preko ojačevalca mi ni v interesu, da je ta priklučen na TV, ki vsebuje ustrezno strojno opremo za dekodiranje HDMI signala, pa tudi ne vidim smisla, da je TV prižgan, če ne dela nič pametnega.

Če hočemo audio izhod preusmeriti na 3,5 banana vtičnico je potrebno spremeniti konfiguracijo.
V konzolo vpišemo:
sudo leafpad /etc/asound.conf
Leafpad je urejevalnik besedila, ki je viden tudi preko gumba start.
Kaj smo storili? Sudo ukaz privzdigne pravice na administratorja, zato je potrebno vpisati geslo, ki je privzeto "linaro" brez narekovajev. /etc/ je pot do datoteke asound.conf, ki se skriva v mapi in ki jo hočemo popraviti. Do datoteke sicer lahko priklikamo preko brskalnika, tudi odpremo jo lahko, ni jo pa možno shraniti, ker nimamo pravic.
Datoteka je prazna in vanjo vpišemo sledeče:
pcm.!default! {
type hw card 1
device 0
}
ctl.!default! {
type hw card 1
}
Ter shranimo.

Dostop do vsebine, ki je na omrežnem disku

Za dostop do mrežnega diska bomo potrebovali sambo. Samba je programska oprema, ki na Linux okolju omogoča dostop do podatkov, ki so dostopni preko omrežja na raznoraznih nosilcih, ter omogoča tudi deljenje datotek. Ker na opisani namestivi ni nameščena jo namestimo z ukazom:
sudo apt-get install smbfs
Program sname z interneta in namesti sambo. Namestimo še dodatna orodja:
sudo apt-get install cifs-utils
Sedaj uredimo še nastavitve:
sudo leafpad /etc/samba/smbconf
V datoteko pod sekcijo main dodamo še naslednje vrstice:
client lanman auth = Yes
client ntlmv2
auth = No
Datoteka zgleda takole:
#======================= Global Settings =====================================
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = ubuntu
security = user
map to guest = bad user
dns proxy = no
client lanman auth = Yes
client ntlmv2 auth = No
#============================ Share Definitions ==============================
[MyShare]
path = /samba/share
browsable =yes
writable = yes
guest ok = yes
read only = no
Ker je usmerjevalnik na znanem naslovu: 192.168.1.1. je enostavno pogledati ali se vidi če je kaj priključeno nanj:
smbclient -L 192.168.1.1.
Izpis mora vrniti nekaj podobnega:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.37]
Sharename Type Comment
--------- ---- -------
WD_Passport Disk WD 2500BEA External's WD_Passport
IPC$ IPC IPC Service (RT-N66U)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.37] Server Comment
--------- -------
RT-N66U RT-N66U
SPEEDY Speedy
UBUNTU Samba Server 3.6.6
WDTV WDTV LIVE Workgroup Master
--------- -------
WORKGROUP RT-N66U
Na usmerjevalnik RT-N66U je lokalno priključen disk WD_Passport (Ter druge - mrežne naprave - računalnik Speedy, Cubie (Ubuntu...) ter WDTV)
Moja glasba je na WD_Passport disku. Če ga hočejo programi na Ubuntu sistemu videti, je potrebno disk priključiti. To storimo z ukazom Mount.
Postopek je sledeč:
1. Najprej v mount mapi naredimo novo mapo - z govorečim imenom (naprimer: Passport - to ime bo potem vidno programom:
sudo mkdir /media/Passport
Na ustvarjeno mapo moramo priključiti mrežni disk. To opravilo lahko naredimo "začasno" - torej do ponovnega zagona računalnika:
sudo mount -t cifs //192.168.1.1/WD_Passport/Glasba /media/Passport
Tudi odklopimo:
sudo umount /media/Passport
Sem sem izbral trajno možnost priklopa, ker je disk vedno priključen in vključen. V datoteko fstab sem dodal vnos, ki priklopi disk ob zagonu Cubie boarda:
sudo gedit /etc/fstab
Ter dodamo vrstico (priklopil sem kar na eno mapo na disku - Glasba, tako je ob kliku na Passport vidna samo ta mapa):
//192.168.1.1/WD_Passport/Glasba /media/Passport cifs guest 0 0
Shranimo in poizkusimo priklop z ukazom:
sudo mount -a
Če je vse v redu, se v zaganjalniku pojavi ikona Passport in klik z miško na ikono odpre mapo z vsebino.
Več detajlov o opcijah za cifs , ki se vpišejo v fstab datoteko se lahko prikliče z vpisom ukaza:
man mount.cifs

Predvajalnik glasbe Rhythmbox

Privzeto nameščeni program - M-player mi ni uspelo prepričati, da bi sam naložil mapo z glasbo. Vedno je bil potreben ročni poseg. Ker imam na delovnem računalniku nameščen tudi Ubuntu, ki ima privzeti predvajalnik Rhythmbox, ki to uspešno počne, sem se odločil uporabiti Rhythmbox tudi tu.
Namestitev Rhythmbox predvajalnika je enostavna in podobna namestitvi drugh kosov programske opreme, ki je opisna zgoraj. V konzolo vpišemo:
sudo apt-get install rhythmbox
Za upravljanje Rhythmboxa preko konzole potrebujemo v nastavitvah Rhythmboxa vključiti vtičnik MPRIS D-Bus interface. To storimo tako, da zaženemo Rhythmbox (po namestitvi se pojavi ikona v Start meniju Audio/Video), ter v meniju Edit izberemo plugins, ter dodamo kljukico pri vnosu MPRIS D-Bus interface. V kolikor tega ne storimo, upravljanje Rhythmboxa preko konzole ne deluje ustrezno.
Program se zažene, ni pa možno uporavljanje. Pošiljanje ukaza javi napako:

Rhythmbox warning: MPRIS D-Bus Interface not available some things may not work.

Nastavimo tudi pot do glasbe. Izberemo menu Music/Import folder ter izberemo lokacijo, kjer se skriva glasba. Izberemo meni Edit/Preferences in v zavihku Music pod Library location izberemo lokacijo glasbe (Passport), ter dodamo kljukico pri Watch my library for new files.

Sedaj lahko Rhythmbox zaženemo preko konzole z ukazom: rhythmbox-client --play:
rhythmbox-client --play

Samodejni zagon programa Rhythmbox

Ker Cubieboard nima nobenega prikazovalnika in vmesnika preko katerega lahko uporavljamo delovanje (če nimamo priključenega na TV in priključene tipkovnice in miške) sem imel cilj vspostaviti samodejni zagon programa, ki bi zmogel samodejno predvajati glasbo.

Najprej sem izdelal skripto, ki omogoča enostaven vnos več ukazov brez tipkanja. V konzolo sem vpisal:
leafpad mojaskripta.sh
Leafpad urejevalnik odpre datoteko mojaskripta.sh, ki se nahaja v mapi Home.
Vsebina datoteke je prazna, saj je datoteka nova. Vpišemo nekaj vsebine:
#!/bin/sh
echo "Zaganjam Rhythmbox"
rhythmbox-client &
sleep 5
echo "Rhrythmbox --play"
rhythmbox-client --play
exit 0
Datoteko shranimo. Malo obrazložitve: Prva vrstica vsebuje generični zapis, ki datoteko označi kot skripto.
Echo ukaz povzroči izpis besedila v narekovajih.
& znak za ukazom omogoči, da se lahko hkrati izvede še kak drug ukaz. Če odpremo konzolo in vpišemo rhythmbox-client se bo zagnal rhythmbox, konzola pa ostane zasedena toliko časa, da rhythmbox ugasnemo. Znak & omogoči izvajanje naslednjega ukaza v skripti.
sleep, povzroči 5s zamika pred izvajanjem naslednjega ukaza. Program se namreč nalaga nekaj sekund, in klic naslednjega ukaza program ignorira, če Rhythmbox še ni popolnoma zagnan.
rhythmbox-client--play pošlje rhythmbox predvajalniku ukaz naj prične s predvajanjem.

Kaj vse se lahko pošlje rhythmboxu kot ukaz je najenostavneje pogledat v manual. V konzolo vpišemo: man rhythmbox-client.
exit 0 na dnu skripte , pove izvajalniku, da je skripte konec - napaka pa je 0 - normalna izvedba

Datoteka je izdelana, potrebno jo je še narediti izvršljivo. V konzolo vpišemo:
chmod +x mojaskripta.sh Skripto preizkusimo tako, da v konzolo vpišemo:
./mojaskripta.sh
Zagnati se mora rhythmbox predvajalnik, v konzolo se pa mora izpisati:
Zaganjam Rhythmbox, čez 5 sekund pa še Rhythmbox --play, in Rhythmbox mora pričeti s predvajanjem glasbe.

Za konec je potrebno našo skripto zagnati, ko se pokaže delovno okolje.
To se stori tako, da v datoteko autostart, ki se nahaja na lokaciji: /etc/xdg/lxsession/Lubuntu dodamo vrstico, ki pokliče našo skripto.
V konzolo vpišemo:
sudo leafpad /etc/xdg/lxsession/Lubuntu/autostart
Na koncu dodamo vrstico:
@ /home/linaro/mojaskripta.sh
Vrstica vsebuje pot do skripte in ime skripte. Afna omogoča zagon tudi naslednjega ukaza.
To je zaenkrat vse.

Preostane nam le še ponoven zagon, da preizkusimo ali vse deluje kot smo želeli. V konzolo vpišemo:
sudo reboot
Cubiebord se ponovno zažene, in ko se naloži namizje se zažene tudi rhythmbox ter prične s predvajanjem glasbe.

Upravljanje Cubieboard-a na daljavo

Ker je lokacija Cubiebox-a malce od rok, je uporaba miške in tipkovnice pred televizorjem milo-rečeno neudobna.
Cubiebox sicer vsebuje tudi IR sprejemnik, ki bo nekoč tudi v uporabi, a sem se zaenkrat odločil za drugačno rešitev. Cubiebox je priključen na moje omrežje. Nekaj branja po internetu je razkrilo, da je možno Linux naprave krmiliti na daljavo preko konzole oziroma natančneje preko SSH protokola. SSH je načeloma rahlo dodelana telnet povezava.
Od telnet povezave se razlikuje po tem, da je prenos podatkov zakodiran s precej varnim ključem (RSA1024). Da povezavo vzpostavimo je potrebno namestiti programsko opremo na sprejemniku in oddajniku, ter izdelati ključa, da se sprejemnik in oddajnik lahko sporazumevata.
Programska oprema na Linux platformi se imenuje OpenSSH, in je običajno že nameščena, na paketu, ki sem ga namestil na moj Cubieboard pa je zadeva seveda manjkala.

Dober vodič kako usposobiti SSH sem našel tule: http://www.xuedi.de/blog/2010/04/08/remote-control-rhythmbox/
Sam sem pričel z nalaganjem Open SSH strežnika na Cubieboard:
sudo apt-get install openssh<
Ko so paketi nameščeni, moramo na klientu - na računalniku, s katerega mislimo upravljati zgenerirati ključ:
cd /home/<yourUser>/.ssh ssh-keygen -t rsa
Programček od nas zahteva ime ključa. Tu lahko vpišemo poljubno ime, izpiše tudi vsebino ključa in prikaže kako ključ zgleda v konzoli.

Zgenerirani ključ na klientu je potrebno registrirati na Cubieboardu, zato v konzolo na klientu vpišemo naslednje:
ssh-copy-id -i /home/<yourUser>/ssh/id_rsa.pub <user>@<hostname_or_ip_address>
Kjer :
<yourUser> zamenjamo z imenom mape uporabnika na klientu kjer smo naredili ključ
id_rda.pub zamenjamo z imenom ključa, ki smo ga izdelali na klientu
< user> zamenjamo z imenom uporabnika, ki je prijavljen na Cubieboard - v našem primeru je to linaro
< hostname_or_ip_address> zamenjamo z IP številko, ki je bila dodeljena Cubieboardu pri meni je bila to 192.168.1.223.
Na Cubieboardu se po tem ukazu v mapi /home/linaro/.ssh/ pojavi datoteka authorized_keys, katere vsebina je trenutno samo prej generirani ključ.
Kako sedaj upravljamo z Rhythmboxom na Coubie boardu?
Na klientu odpremo konzolo in odpremo ssh povezavo z Cubie boardom:
ssh linaro @192.168.1.223
Program od nas zahteva, da potrdimo povezavo, nato pa še uporabniško ime in geslo za Cubie board:
login as: linaro
linaro@192.168.1.223's password:
Welcome to Linaro 12.11 (GNU/Linux 3.4.24-a10-aufs+ armv7l) * Documentation: https://wiki.linaro.org/
Last login: Thu May 2 15:37:31 2013 from speedy
linaro@linaro-alip:~$
Sedaj lahko vpišemo ukaz za Rhythmbox. Posamezen ukaz mora zgledati takole:
env DISPLAY=:0.0 rhythmbox-client --play
Prvi del se mora ponoviti zadnji del pa je lahko:
–help
–--next
–--previous
–--volume-up
–--volume-down
–--pause
–--play
--quit Quit Rhythmbox
--check-running cks
--print-playing
--set-volume
--volume-up
--volume-down
--print-volume
Seveda pa lahko če se kaj zalomi Cubieboard tudi ponovno zaženemo z ukazom:
sudo reboot
Seveda pa obstajajo tudi SSH klienti, ki tečejo na androoid tabilcah ali telefonih.
Po nekaj brskanja sem se odločil za programček JuiceSSH, ki omogoča skoraj vse kar si želimo.
Omogoča prepripravo ukazov, ki jih lahko hitro prikličemo v konzoli in uporabimo. Tako postane upravljanje res enostavno.





Povezavo lahko prekinemo s pritiskom tipke CTRL in D


P&P© 1.5.2013