Raspberry Pi 2 Model B – pierwsze wrażenia i uruchomienie

Udało się – paczka z nowiutkimi Raspberry Pi 2 model B dotarła szybko i mogłem od razu przejść do testowania. Zamówienie złożyłem 2 lutego 2015 roku w polskim oddziale RS Components i już po dwóch dniach paczka przyjechała – wg listu przewozowego z niemieckiego centrum dystrybucji.

Sama paczka – nic specjalnego, bąbelkowa koperta syngowana logiem RS, w środku kartonik z maliną, dokument wydania z magazynu i to wszystko.

Problem na start – zapomniałem czytnika microSD!

Tak, zapomniałem, że nowa malina (2 oraz wcześniejsza B+) mają złącze microSD. Dzięki czemu karta pamięci nie jest już tak wystającym elementem urządzenia, aczkolwiek wyróżnia się 2-3 milimetry poza obrys płytki PCB. Szkoda, że nie ukryli tego całkiem. Z rozwiązaniem mojego problemu przyszedł czytnik kart microSD w przenośnym modemie LTE – wystarczy podłączyć kablem urządzenie do komputera, włączyć i oprócz internetu z karty GSM pojawia się karta pamięci wśród urządzeń dostępnych w Windowsie/Linuksie/OSXie.

Instalacja Rasbiana – standardowa procedura

Tutaj nic nikogo nie zaskakuje. Ja wybrałem opcję instalacji pełnego rasbiana (nie przekonałem się do NOOBS). Ściągnąłem paczkę ZIP o wielkości niespełna 1GB, rozpakowałem (ISO to już 3GB, więc karta 4GB jako minimum jest potrzebna) i z poziomu windowsa 7 i aplikacji Win32DiskImager zainstalowałem dystrybucję na karcie pamięci.

Problem numer dwa – nie mam dostępu do routera ani monitora z HDMI

A więc nie mam jak dowiedzieć się jaki IP ma moja malinka. I tutaj z pomocą przychodzi eLinux.org, gdzie dokładnie opisane jest co należy zrobić, żeby mieć zawsze świeżą informację o IP urządzenia. W Rasbianie zadziałało rozwiązanie alternatywne (opisane pod w/w linkiem), czyli modyfikacja pliku: /etc/rc.local. Instalację Raspberry Pi bez klawiatury opisałem tutaj.

Problem numer trzy – nie mam dostępu do partycji linuksowej na Raspberry

Żeby wykonać działania opisane w powyższym punkcie, trzeba wyedytować plik jeden z plików startowych na partycji linuksowej. I tutaj (w przypadku użytkowników windowsów) pojawia się mały problem, ponieważ na karcie pamięci (po instalacji dystrybucji poprzez Win32DiskImagera) pojawia się partycja BOOT (system plików windowsowy) oraz partycja linuksowa z katalogami systemu plików. Żeby się do niej dostać, to trzeba poszukać narzędzia dla windowsa, które pokaże nam taki system plików (istnieją managery katalogów) lub (wg mnie bardziej eleganckie rozwiązanie) uruchomić z pendrive dowolną dystrybucję linuksa w wersji LIVE.

Problem numer trzy – wykonałem wszystkie powyższe działania i nie dostałem maila z IP Raspberry Pi

zabezpieczenie google

Na potrzeby powyższego ćwiczenia założyłem konto email w gmailu. Swoje prv konta mam zabezpieczone dodatkowym pinem oraz wolałem nie zmniejszać ich poziomu zabezpieczeń wpisując jawnym tekstem hasło w konfigurację maliny. Wykonałem wszystkie powyższe czynności i nic. Cisza. Okazuje się, że gmail ma dodatkowe zabezpieczenie, które nazywa parametrem ‚Dostęp dla mniej bezpiecznych aplikacji’. Na szczęście po chwili przychodzi mail, trzeba wejść w ustawienia konta google i zmienić na ‚Dozwolony’. Po tym ponownie uruchomić RPi i cieszyć się otrzymanym IP na email.

rpi2_4core

RPi2 działa i cieszy mnie informacją o 4 rdzeniach. Na dniach będę testować szerzej wydajność oraz na drugiej sztuce stawiać RaspBMC. 

Intel Galileo by Arduino – czyli edukacja wg Intela (pierwsze wrażenia)

Nowość? Super – lubię nowości! Jak tylko dostałem info od Nettigo, że będą mieć Arduino Galileo w sprzedaży, to od razu stanąłem w kolejce. Zestaw kupiłem, kilka dni poużywałem (dość powierzchowne działania testowe) i jestem mądrzejszy o nową platformę oraz bez 300zł w kieszeni:)

arduino-galileo

Pierwsze wrażenia, czyli ‚unboksing’ Intel Galileo

Wielkość pudełka wskazywała, że będzie to całkiem pokaźny zestaw. Niestety w środku oprócz samej płytki Galileo znajduje się tylko zasilacz z wymiennymi końcówkami – chyba na wszelkie światowe standardy. Zasilacz 2A na 5V – standard. Niestety chyba do mojego zestawu zapomniało się komuś włożyć kabla USB, albo po prostu go nie dają. Przydałoby się też zamiast tych super końcówek do zasilania dać przelotkę z microUSB na gniazdo USB-A – niby na płytce jest host USB, ale właśnie z gniazdem microUSB. Adaptery takie można za 5-10zł kupić w sieci, ale z przesyłką to dodatkowe 15-20zł. Za 300zł oczekiwałem bardziej rozmyślnego podejścia do użytkownika. Zestaw ponoć nazywany jest edukacyjnym.

A co ma w środku?

Dużo. I to dość mocno ratuje ten zestaw. Takie trochę słabsze Raspberry Pi, ale z wieloma gadżetami od Arduino. Pełną specyfikację znajdziecie na stronie Arduino Certified – Intel Galileo. Mnie zainteresowały następujące:
– procek hiper-super-wypas Quark SoC1000 – 32bit, Pentium Class, ~1,2DMIPS, rdzeń taktowany 400MHz,
– pełna kompatybilność wyprowadzeń i napięć z Arduino (oparta o Arduino UNO R3),
– wbudowany RTC (zegar czasu rzeczywistego) z wyprowadzeniem goldpinów na płytce dla baterii,
– złącza RJ45, microSD, dodatkowy port RS232 (w złączu mini-jack), 2 x USB (jeden host, drugi client), 256KB SRAM, 256MB DDRAM, 8MB flash, mini-PCIe.

Najciekawsze złącze Galileo, czyli mini-PCIe

W pierwszym odruchu powiedziałem – po cholerę! Ale chwilę po tym przypomniałem sobie jak tanie są karty sieciowe, modemy 3G czy dyski SSD na to złącze i zapiałem z zachwytu. To jest tak przewaga Galileo względem innych rozwiązań Arduino – nie dość, że prawie wszystko jest pod ręką, to do tego za kilka zł można mieć jeszcze więcej.

Rzeczy dziwne i niezrozumiałe, czyli wady zestawu

Złącze host USB w postaci gniazda mikroUSB oraz brak przelotki do tego. Rozumiem oszczędność miejsca, na płytce, ale zdecydowanie bardziej wolałbym zamiast tysiąca standardów wtyczek zasilania jedną, dodatkową, tanią przejściówkę.

(niepotwierdzone) Programowanie do pamięci SRAM. Programuję – działa, resetuję – nie działa. Po uruchomieniu zestawu z linuksem na karcie SD działa OK. Zdecydowanie muszę to zweryfikować.

Procesor SoC nachodzący na powierzchnię przestrzeni dla shieldów. Niestety w przypadku montowania jakiś dodatkowych płytek nie wchodzi w grę użycie większego radiatora, a ten zdecydowanie jest potrzebny. Procesor w trybie jałowym (uruchomiony linuks Poky z karty SD, bezczynny) nagrzewa się do około 70st.C. Niewiele pomaga założenie malutkiego radiatorka widocznego powyżej. Schłodzenie sprężonym powietrzem na chwilę obniżyło temperaturę o kilkadziesiąt stopni.

galileo-temp

Kolejnym problemem jest dedykowana wersja środowiska programistycznego IDE dla niniejszego zestawu. Obecnie dostępne jest w wersji 1.5.3 i można je pobrać ze strony Intela. Trochę dziwi fakt potrzeby uruchamiania z sudo tego IDE, ale cóż – z zaleceniami producenta się nie dyskutuje:)

Podsumowanie – czy warto kupić Arduino Intel Galileo?

Póki co mam mieszane uczucia. Niby wypas, dużo na pokładzie, ale jakoś tak wszystko niezorganizowane, słabo opisane oraz z wsparciem, ale chyba nie najlepszym na stronie producenta. Trochę żałuję wydanych pieniędzy (tak, dałem się zakupom impulsywnym), aczkolwiek skoro już jest, to w końcu trzeba nauczyć się prostych środowisk embedded linux i zacząć efektywnie używać VI oraz OPKG zamiast NANO i APT-GET:)

Z czasem też pojawi się więcej opracowań na platformę i będzie zdecydowanie łatwiejsze dotarcie do przykładów i rozwiązań. Trzymam kciuki.

Przydatne miejsca / linki

http://arduino.cc/en/ArduinoCertified/IntelGalileo – oficjalna strona projektu w domenie Arduino

http://www.intel.com/content/www/us/en/intelligent-systems/galileo/galileo-overview.html – oficjalna strona projektu w domenie Intel

https://communities.intel.com/community/makers/demosprojects/content?itemView=thumb – galeria projektów opartych na Galileo na stronie Intel

https://communities.intel.com/message/208564#208564 – włączenie telnetu (putty/console) za pomocą prostego programu z poziomu Arduino IDE (bez potrzeby uruchamiania większej wersji linuksa z karty SD)

https://learn.sparkfun.com/tutorials/galileo-getting-started-guide/bigger-linux-image – opis uruchomienia „dużego” linuksa z poziomu karty SD (dodam od siebie, że karta ma być sformatowana na system plików fat32)

https://communities.intel.com/docs/DOC-22272 – przykłady dla „dużego” linuksa

https://communities.intel.com/thread/48009 – tutorial do przykładów dla Arduino IDE

http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#usingpoky – bardzo dużo o „dużej” wersji linuksa na Galileo (Yocto Project – Poky)

http://www.malinov.com/Home/sergey-s-blog/intelgalileo-programminggpiofromlinux – opis jak sterować GPIO z poziomu linuksa

instalacja raspberry pi oraz pierwsza konfiguracja (ssh, vnc, sieć, hostname)

Żeby Raspberry Pi zaczęło z nami rozmawiać i zachowywać się w sposób kontrolowany najlepiej zadbać na początku tej fascynującej przygody. W niniejszym wpisie powiem jak zainstalować PRi na karcie SD (przy wsparciu Ubuntu 12.10), uruchomić pierwszy raz oraz skonfigurować ssh i vnc, żeby było łatwiej zarządzać zabawką.

Starcie pierwsze – Raspberry Pi nie uruchamia się!

Tak, lekko stresujące było to, że włożyłem niby skonfigurowaną kartę SD i nic. Świeciła się jedna czerwona dioda, a miało mrugać, śpiewać i tańczyć. Z lekką paniką zacząłem dłubać w sieci i znalazłem info, że może mam niekompatybilną kartę, albo upalone RPi. Na szczęście trafiłem też na stronę, na której sugerowano, że może coś nie zadziałało przy tworzeniu obrazu na SD. Był to strzał w 10!

W moim przypadku sposób opisany na stronie: engadget.com nie zadziałał. Znalazłem na jednym z forów opis narzędza ImageWriter (dostępne w repozytoriach standardowo podpiętych w ubuntu). Kilka klików i zacząłem wgrywać ponownie obraz. W moim przypadku narzędzie miało problem z komunikatami na przyciskach oraz nie informowało o postępie zapisywania obrazu. Na początku znalazłem jakieś cudomagiczne rozwiązanie pozwalające obserwować na konsoli co się dzieje, ale w kolejnych podejściach (2-3 razy rozwaliłem system zaraz na początku i łatwiej było postawić obraz na nowo) olałem podglądanie i po zapuszczeniu tworzenia obrazu odczekałem około 2 minut na zapis (aż przestał dysk intensywnie migać diodą sygnalizując odczyt).

Oczywiście ISO najlepiej ściągnąć stąd: http://www.raspberrypi.org/downloads

imagewriter

ImageWriter – wybranie obrazu ISO oraz urządzenia, na którym będzie zainstalowany obraz.

Ostrzeżenie o tym, że karta SD zostanie wymazana. Jeśli używacie dysku USB, to uważajcie, żeby wybrać właściwe urządzenie.
imagewriter3

Obraz się generuje – niestety brak informacji o postępie zapisu. Widać również jakiś błąd, który występował na moim komputerze (tłumaczenia przycisków).

Dodatkowo warto sprawdzić czy operacja przebiegła poprawnie. Jeśli ktoś lubi okienka, to za pomocą dowolnego programu do partycjonowania (u mnie GParted) można sprawdzić jak wygląda zapisana karta – mniej więcej powinna wyglądać tak, jak poniżej:

gparted-sd

 

Raspberry Pi startuje, czyli podstawowa konfiguracja

Może słabo szukałem, ale do pierwszego uruchomienia RPi raczej potrzebna jest przynajmniej klawiatura oraz monitor lub telewizor z HDMI. Ja podłączyłem do TV oraz włączyłem. Przy uruchamianiu listują się kolejne elementy uruchamiane przez system, następnie pojawia się tekstowe okno Raspi-config (możliwe do wywołania też później z poziomu konsoli za pomocą polecenia sudo raspi-config):

raspi-config

W zasadzie przez większość pozycji trzeba się przeklikać:

expand_rootfs – rozszerza partycję podstawową do pełnego rozmiaru karty SD. Domyślnie obraz instaluje się na niecałych 2GB, więc warto tą operację zrobić. Ewentualnie można później tworzyć osobne partycje /home oraz swap, ale uznałem że dla własnych działań nie widzę potrzeby zaawansowanego dłubania w obrazie partycji.

configure_keyboard – najpierw wybieramy rodzaj klawiatury (zwykle std 105 klawiszy), a następnie kodowanie – tak, jest polski, jeśli ktoś potrzebuje.

change_pass – zmienia hasło użytkownika ‚pi’. I tak za kilka chwil skasujemy to konto, ale warto zmienić. Szybciej później się przeklikuje.

change_locale – zmiana domyślnego kodowania oraz języka. U siebie zmieniłem na pl_PL UTF8.

change_timezone – jak kto woli, ale ja wybrałem Europę i Warszawę:)

memory_split – ilość pamięci dostępna dla grafiki (domyślnie 64MB) – nie ruszałem – pozostała pamięć i tak jest na wypasie.

ssh – włączamy demona SSH – zdecydowanie przydatne (po restarcie nie będzie potrzebny monitor).

boot_behaviour – ustawienie czy mają domyślnie ładować się X’y. Oczywiście, że nie – szkoda zasobów. Po starcie można je wywołać poleceniem ‚startx’, zaś podłączenie się do VNC uruchamia je automatycznie.

– update można zrobić później.

Konfiguracja sieci przewodowej w Raspberry Pi

Konfigurację sieci polecam od polecenia:

sudo nano /etc/network/interfaces

i zmianie linijki: iface eth0 inet dhcp na iface eth0 inet static oraz dopisaniu poniżej:

address 192.168.YY.XX (gdzie YY to zwykle 0 lub 1 – zgodnie z naszą siecią oraz XX to nr IP urządzenia – najlepiej poza zakresem DHCP ustawionym na routerze)
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1 (jeśli wyżej YY = 1, to zwykle tutaj XX też będzie 1)

Doprecyzowania wymaga jeszcze edytor NANO, który jest bardzo prosty w obsłudze. W konsoli nie działają skróty CTRL+C lub +V, ale odpowiednikami są SHIFT+CTRL+C oraz +V. Działa również poruszanie kursorem strzałkami, przycisk DELETE oraz BACKSPACE i SPACJA. Po wprowadzeniu zmian wciskami CTRL+X (chcąc wyjść). Program pyta się czy na pewno oraz czy chcemy wprowadzić zmiany (oczywiście, że tak), więc zmieniamy i w kolejnym kroku pyta o nazwę – czasem na końcu dopisuje .jakiesrozszerzenie, więc trzeba je skasować i ENTER. Prościzna.

Kolejnym krokiem jest polecenie: sudo nano /etc/hostname – tutaj nadajemy swoją nazwę hosta (domyślnie jest raspberrypi).

Ja jeszcze wrzuciłem na swoim komputerze: sudo nano /etc/hosts – i dopisałem linijkę: 192.168.1.67 rpi1, gdzie rpi1 jest identyczną nazwą, jak hostname w RPi – łatwiej mi zapamiętać, gdy w komputerze, żeby się połączyć do RPi wpisuję tylko ssh rpi1 (dlaczego tak krótko o tym za chwilę / ważne, żeby wpis host zrobić u siebie na komputerze, a nie na RPi). Na koniec jeszcze na komputerze jedno polecenie: sudo /etc/init.d/networking restart i mamy hosty odświeżone.

Konto użytkownika, czyli jak uprościć sobie życie w Raspberry Pi

Żeby połączyć się poprzez ssh wystarczy wpisać: ssh -l pi rpi1, ale to dla mnie trochę za długo. Ja założyłem sobie na RPi takiego samego użytkownika jak mam na komputerze, dzięki temu nie muszę w poleceniu ssh używać parametru -l oraz nazwy użytkownika (to rozwiązanie działa, ale tylko jeśli na komputerze również jest system z rodziny linux).

Dodanie nowego usera: sudo useradd NAZWA_USERA oraz dodanie użytkownika do grupy sudoers: sudo nano /etc/sudoers, gdzie trzeba dopisać linijkę: NAZWA-USERA   ALL=(ALL:ALL) ALL oraz zmienić: pi ALL=(ALL) NOPASSWD: ALL na NAZWA_USERA ALL=(ALL) NOPASSWD: ALL.

Po wyjściu i zapisaniu restart platformy i wszystko powinno ładnie działać. W międzyczasie można jeszcze skasować konto ‚pi’ poleceniem sudo userdel pi oraz ustawić sobie hasło dla roota: sudo passwd (przydaje się przy używaniu polecenia su).

Pełnia szczęścia z Raspberry Pi, czyli tryb graficzny oraz serwer VNC dla okienkolubnych

W przypadku podłączenia RPi do monitora na stałe warto sobie w konfiguratorze raspi ustawić domyślne odpalanie Xów. Gdyby jednak takie działanie było sporadyczne oraz do systemu chcemy się podłączać przez VNC, to wystarczy pamiętać o poleceniu startx, które z poziomu konsoli (po zalogowaniu użytkownika) uruchomi tryb graficzny.

Ja czasem lubię grafikę, a do TV nie uśmiecha mi się biegać, więc postanowiłem na RPi uruchomić server VNC. Konfiguracja jest prosta jak budowa cepa i została ładnie opisana tutaj: malinowepi.pl, czyli: sudo apt-get install tightvncserver, edycja: sudo nano /etc/init.d/tightvncserver i wpisanie pliku z wymienionej strony (trzeba pamiętać o zmianie użytkownika ‚pi’ na swojego) oraz następnie: sudo chmod 755 /etc/init.d/tightvncserversudo update-rc.d tightvncserver defaults. Domyślny port VNC to 5901.

Ja od razu w wywołaniu (starcie servera) dopisałem parametry: su $USER -c ‚/usr/bin/tightvncserver :1 -geometry 800×600 -depth 16’, gdzie ustawiłem rozdzielczość oraz głębię kolorów (wg mnie więcej nie potrzeba – szkoda transferu).

Dodatkowo spotkałem się z tym, że server czasem nie ma ochoty się podnieść, więc trzeba: sudo pkill Xtightvnc, a następnie: sudo /etc/init.d/tightvncserver start. Po tym drugim poleceniu system może zapytać o hasło do VNC. Należy je podać i od razu powinno połączenie działać. Spotkałem się jeszcze z tym, że czasem w pliku /etc/init.d/tightvncserver widnieje użytkownik ‚pi’, wtedy wystarczy sudo nano /etc/init.d/tightvncserver, edycja, zapisanie i restart servera.

rpi_vnc

Polecam również aplikację ‚htop’ (sudo apt-get install htop), która z poziomu konsoli (a więc i przez ssh) umożliwia podgląd obciążenia i procesów na RPi. Miłej zabawy i napiszcie czy i jakie Wy spotykaliście problemy po drodze.

ps: przy tworzeniu wpisu pomógł też artykuł na blogu: blog.vokiel.com.