Update

Na blogu cisza i pozornie nie dzieje się nic. Pozory jednak mylą, choć łapię się na tym, że nie chce mi się pisać osobnych wpisów o drobiazgach. Jest w tym zasługa Blox, który działa… tak jak działa. Statystki pokazują dostępność 99,9% dla obu blogów i… nie jest to przypadek. 502 Bad Gateway lata często. Zgłaszałem i mi się znudziło. Nie jest na tyle źle, żebym się spakował z miejsca, ale drażni i zniechęca.

W zasadzie wszystkie ważniejsze systemy podniosłem do Stretch. Większych problemów nie było. Jedyne co, to po upgrade przestała działać planeta Joggera. Paczka wyleciała ze Stretch, wersja z Jessie nie chciała działać. Postawiłem kontener z unstable i… też nie działało. Skończyło się kontenerem z Jessie, wszystko póki co działa, ale pewnie przy końcu aktualizacji Jessie będzie trzeba coś z tym zrobić. Być może zmienię silnik.

Z racji nowych zabawek (Orange Pi Zero) i średniego wsparcia nowych wersji Debiana dla różnych SoC zacząłem się bawić builderem Armbiana. Fajna zabawka, pewnie pobawię się nieco więcej w najbliższym czasie. Marzy mi się budowanie obrazów dla Stretch, zmiana powinna być prosta, choć toolchainy i ilość miejsc gdzie coś może pójść nie tak trochę przeraża – nie znam rozwiązania.

Bardzo spodobał mi się ESP8622 i MicroPython. Będę się bawił, już kupiłem – leży i czeka. Pewnie będą jakieś wpisy z tych zabaw, chociaż tak naprawdę wszystko jest do znalezienia w sieci. Imponujące jest niskie zapotrzebowanie na prąd, zwł. w deep sleep. Chociaż przy używaniu WiFi podobno znacznie rośnie. Niemniej, ma to szansę być autonomiczne jeśli chodzi o zasilanie przy użyciu jedynie niewielkiego panelu solarnego, czego o SoC pokroju RPi nie da się powiedzieć. Ogólnie są świetne projekty oparte o solary, ceny rozwiązań bardzo spadły. Sensu ekonomicznego czy ekologicznego z tego co widziałem w wyliczeniach jeszcze nie ma (i to dla San Francisco) ale niezależność energetyczna (światło, komputer, smartfon, dogrzewanie kawalerki) z jednego panela w cenie $200 za kompletne rozwiązanie robi wrażenie.

Trochę czasu schodzi na ogarnianie przemeblowań w domu. Trochę koniec prowizorek – połączyłem biurka i mam teraz narożne, co przekłada się na dobrą miejscówkę do psucia różnych zabawek. Po pierwsze sporo miejsca, po drugie w końcu jest dostępny prąd. Jeszcze muszę dopracować, ale kierunek mi się podoba. 😉

Koniec projektu Bananian

Twórcy dystrybucji Bananian, czyli modyfikacji Debiana dedykowanej dla Banana Pi, którą opisywałem, ogłosili blisko kwartał temu, że kończą działalność projektu. Powody standardowe – brak czasu, wynikający z tego brak supportu dla nowszych wersji sprzętu, konieczność przesiadki na wydanego niedawno Debiana 9 (nie, nie przegapiłem, ale czekam z notką na wrażenia z upgrade) i… lepsze wsparcie dla płytek w wersji 4.x kernela Linuksa.

Jako sugerowanego następcę wskazują dystrybucję Armbian, która wspiera wiele płytek opartych o ARM (m.in. Banana Pi, Orange Pi, Odroid) i którą już wcześniej zachwalali znajomi, ale… skoro byłem zadowolony z Bananiana, to nie było potrzeby korzystać. Armbian występuje w dwóch wersjach – opartej na Ubuntu, dedykowanej na desktop oraz opartej na Debianie, dedykowanej na serwery.

Bananian nie jest całkowicie porzucany, wersja 16.04 nadal będzie otrzymywać, do kwietnia 2018 aktualizacje bezpieczeństwa. Przesiadka jest zatem zalecana, ale nie ma pośpiechu.

Przerwa majowa

Uważni czytelnicy dostrzegli, że w zeszłym tygodniu nie pojawił się żaden wpis. Regulamin DSP2017 dopuszcza przerwy w prowadzeniu projektów i… zeszły tydzień należy potraktować jako przerwę. Zresztą ponad tydzień, bo w zasadzie majówka cała nieprojektowa, z małym wyjątkiem, o którym zaraz. W każdym razie z konkursu się nie wycofałem i mam nadzieję, że tygodni roboczych będzie wystarczająco dużo. Nie liczyłem ile jest dokładnie, a zarejestrowałem się z opóźnieniem. Tak czy inaczej, nie chodzi o to by złowić króliczka…

Przerwy są dobre, czy to w pracy jako urlop, czy przy projekcie. Można spojrzeć z boku, wyskoczyć z utartych torów i nabrać energii. W każdym razie zeszły tydzień był mocno pracowity, a wypełnianie PITów, to nie jest coś, co warto odkładać na ostatnią chwilę, powiadam wam. Zresztą warto wcześniej sprawdzić, czy ma się komplet papierów, jak się okazuje. W każdym razie zdobyłem kolejny skill w zakresie obsługi podatków. Ale ostatecznie wszystko w miarę wyprostowane.

Potem był czas dobrych imprez i intensywnego chodzenia po sklepach celem urządzenia oświetlenia – powiedzmy, że 20% zrobione. A w międzyczasie doglądanie zewnętrznych rzeczy – a to serwer się zaczął restartować bez przyczyny (odpowiedź ISP rozwaliła, ale restarty ustały, hm…), a to ktoś zepsuł format danych, z których korzystam… Chwilę trwało, zanim przyswoili, że błąd zgłasza osoba z zewnątrz, a nie pracownik. Fun, fun, fun. Tylko czasu szkoda.

Udało mi się zrobić dwie związane z projektem rzeczy: przetestować uruchomienie programu na czystym systemie z ARM (działa, czemu miałby nie działać?) oraz wstawić Raspberry Pi zamiast Banana Pi jako router, czyli odzyskać właściwą sondę. Co prawda to ostatnie nie udało się w 100%, bo robiłem na szybko, trochę czasu zeszło na ustalenie, że NAT lepiej działa, jak się włączy forwarding, a po wszystkim okazało się, że logowanie przy pomocy autossh coś nie działa, ale powiedzmy, że wariant minimum jest zrobiony. Z powodu małej ilości czasu nie zaryzykowałem też wpięcia drugiego modemu.

Przerwa i programowanie w pracy skłoniło ku refleksji, że może jednak lepiej będzie docelowo przepisać to obiektowo. Głównie chodzi o łatwość wykorzystania kodu w innych projektach – dokładnie to przerabiam w pracy. W cele projektu oficjalnie tego nie wpisuję póki co, ale jeśli tylko starczy czasu, to będzie próba refaktoringu kodu.

Jak włączyć SSH w Raspbian?

Sytuacja zmusiła mnie do odkopania RPi. Szybko potrzebowałem przetestować jedną rzecz, więc wybrałem Raspbian Jessie Lite. Główna zaleta to niewielki rozmiar i kernel w wersji 4.4. Po włączeniu i pobraniu IP przez RPi okazało się jednak, że nie sposób się zalogować – nic nie słuchało na porcie.

Instrukcje, które znalazłem, są dobre, jeśli ktoś ma monitor i klawiaturę. Ja nic takiego pod ręką nie miałem, więc zacząłem przyglądać się skryptom startowym, ale w międzyczasie zapytałem na IRCu i dostałem linka, który podaje prosty przepis na włączenie SSH – wystarczy utworzyć plik ssh o dowolnej zawartości w katalogu /boot na karcie SD z Rasbianem:

touch /boot/ssh

Oczywiście powyższe zadziałałoby, gdyby było wykonywane bezpośrednio z Raspberry Pi, trzeba wziąć poprawkę na punkt montowania, ale wiadomo o co chodzi. 😉

Po tym zabiegu SSH jest dostępne po uruchomieniu systemu, zalogować się można tradycyjnie przy pomocy użytkownika pi i hasła raspberry.

Wyłączenie SSH w domyślnej wersji podyktowane było względami bezpieczeństwa (tu link).

Z kronikarskiego obowiązku: w Raspbianie bazujązym na Jessie wiele się nie zmieniło. Swap nadal domyślnie włączony i zarządzany w dziwny sposób (nie /etc/fstab), journal na FS obecny, sterowanie LED i odczyt temperatury bez zmian.

3 powody dla których nie kupię Raspberry Pi 3

Blisko trzy lata temu (ależ ten czas leci) pisałem, dlaczego nie kupię Raspberry Pi. Parę dni temu opublikowana została specyfikacja Raspberry Pi 3. I też widzę, że nie kupię, choć cieszę się na płytkę z 64 bit ARM. Powody są trzy:

  1. Brak portu SATA. Najmniej istotny, bo można podłączyć dysk po USB (i raczej tak zrobię), ale nadal trochę boli.
  2. Tylko 1 GB RAM. Mało. Na desktop – przeraźliwie mało. IMO minimum dla desktopa na dzień dzisiejszy to 2 GB RAM. Zresztą skoro mocniejszy procesor, to i serwer można by bardziej obciążyć, a tu RAM też się przydaje.
  3. 100 Mbps ethernet. Dla rozwiązań typu NAS 100 Mbps to zdecydowanie za mało.

Co zamiast Raspberry Pi 3? Czaję się na najwyższy model Pine 64 czyli PINE64+ 2GB. Co prawda też nie ma SATA, ale ma 1Gbps kartę sieciową oraz 2 GB pamięci RAM. I ma kosztować przy tym 29 dolarów + 12 dolarów za wysyłkę do Polski.

Wady Pine64? Wspomniany brak SATA, jeśli ktoś potrzebuje USB i bluetooth, to musi dołożyć kolejnych 10 dolarów, albo kupić wersje na USB (2,5 w Chinach) i zająć oba porty. No i trzeba poczekać do maja.

UPDATE To wszystko oczywiście z mojego punktu widzenia, który można streścić „małe, tanie, mocne i Linux działa”. Z punktu widzenia kogoś, kogo bardziej interesuje zabawa elektroniką będzie to wyglądało zupełnie inaczej, bo w grę wchodzi choćby łatwość supportu czy dostępność rozszerzeń.

Warto też przeczytać komentarz Piotra (pierwszy) – Odroid wygląda nieźle (jak zwykle zresztą), choć jest nieco droższy (jak zwykle zresztą). Patrz porównanie. Czyli ciekawych alternatyw dla Raspberry Pi 3 jest więcej.

Dowiedziałem się też o istnieniu dystrybucji Armbian. Autorzy nie piszą niestety zbyt wiele, ale wygląda interesująco i wspiera wiele płytek. Oferuje świeży kernel i wspiera Debiana (Wheezy, Jessie) oraz Ubuntu Trusty.

O grach

Kilka dni temu dotarła do mnie informacja o wydaniu nowej wersji gry NetHack, po 12 latach przerwy. Wzięło mnie na wspominki, więc z tej okazji wpis o grach. Po pierwsze Nethack czyli gra typu roguelike. Pamiętam zakład z M., który z nas pierwszy przekroczy barierę miliona punktów. Mam save z wizardem, który ma ponad milion punktów (sprawdziliśmy komisyjnie wychodząc z gry). Pewnie już nie włączę, bo wyszedłem z wprawy, więc zapewne zginąłby po kilku-kilkunastu ruchach. Tak czy inaczej „rogaliki” były fajne. Oczywiście bez save scummingu! A najważniejszy był właśnie NetHack.

Kolejna ważna gra, to CounterStrike. W wersji 1.5. I garażowe (i nie tylko) LAN party. W przeciwieństwie do innych FPS był dość „wolny” i dość taktyczny. Bardziej drużynowy, mniej oparty na refleksie. Trochę mi zamiłowanie do tego typu rozrywki zostało, o czym dalej. No i efektem ubocznym gry w CSa była nauka Perla – mieliśmy autorski system generowania statystyk, który momentami wyprzedzał to, co oferowały dostępne gotowce (ale tylko momentami, poza tym, był dostosowany do naszych „klanów”). Dziś pewnie przestraszyłbym się, gdybym zajrzał w kod, ale było to pierwsze praktyczne użycie Perla. I działało całkiem fajnie. IIRC z braku „prawdziwego” serwera WWW dystrybucja HTMLi odbywała się mailowo w plikach zip.

A dziś? Pogrywam czasami, choć coraz rzadziej, w drobiazgi z Humble Bundle. Godny odnotowania tytuł: Faster Than Light, który jest określany jako rougelike-like (IMO niezupełnie słusznie, choć jakieś echa w klimacie są). Poza sympatią do roguelikeów zostały mi nadal związki gier z programowaniem, np. bardzo spodobał mi się pomysł CodeCombat, czyli gry i jednoczesnej nauki programowania.

Numer jeden i chyba jedyna gra, w którą obecnie gram aktywnie, to World of Tanks. Trochę rozwinięcie CSa – jest pod wieloma względami podobny – i „wolny”, i taktyczny, i drużynowy. Choć niezupełnie FPS. Jest też parę trybów rozgrywki. Ostatnio odkryłem nowe warstwy: po pierwsze gra w klanie (amatorski, for fun, średnia wieku pewnie 30+), po drugie gra z ludźmi, którzy grają… nieźle. Nie jest to poziom ESL, ale jak się zobaczy w praktyce dobre rozstawienie, taktykę i wykonanie, to gra nabiera zupełnie nowego wymiaru. Polecam.

Ostatnią ciekawą grą, o której się dowiedziałem jest Minecraft Pi, czyli serwer Minecrafta przygotowany do uruchomienia na Raspberry Pi (i zapewne podobnych komputerach z ARM). Kolejny związek z programowaniem – ma uczyć programowania w języku Python. Niezupełnie tylko rozumiem, jak jest z licencjonowaniem i klientem – odwiedziłem sklep z grami i jest tam klient Minecrafta, ale czy jest on wymagany, żeby grać w klony typu Minecraft Pi? Trochę dziwi mnie brak alternatywnych, otwartych klientów, szczególnie na Linuksa. Chyba, że źle szukałem (przyznaję, pobieżnie)? W każdym razie jest plan, żeby także tą grą się pobawić, tylko to raczej przy jakimś dłuższym urlopie…

Tyle o grach komputerowych. O niekomputerowych innym razem.

Raspberry Pi Zero

Pojawił się na rynku nowy mini komputer z procesorem ARM. Raspberry Pi Zero, bo o nim mowa, posiada:

  • CPU BCM2835 1GHz (1 rdzeń)
  • 512 MB RAM
  • slot micro-SD
  • 1 micro USB
  • 1 mini HDMI
  • GPIO zgodne z poprzednimi modelami (wymagana przejściówka z pinami)

Największe zalety to jednak minimalne wymiary i równie minimalna cena. Ma ona wynosić $5 (zobaczymy ile w praktyce w Polsce).

Raspberry Pi Zero

Źródło: https://www.raspberrypi.org/

Choć uważam, że od Raspberry Pi ogólnie ciekawsze są Banana Pi czy Orange Pi, to ten produkt mi się nawet podoba. Świetna cena, możliwości porównywalne z pierwszymi Raspberry (OK, trzeba dołożyć kartę sieciową na USB, ale sensowne zasilanie to i tak aktywny hub USB, a rpi z tego co pamiętam i tak miało ethernet over USB).

Sprzęt trochę słaby, patrząc z punktu widzenia bardziej linuksowego/serwerowego, (słaby procesor, mało RAM), ale Cena Czyni Cuda. Poza tym, z tego co widzę, celowany bardziej w mniejsze projekty, wręcz wearables, więc niezupełnie fair byłoby oceniać go z perspektywy linuksowo/serwerowej. Co ciekawe, nowy produkt będzie dołączony do grudniowego wydania MagPi.

Największa wada to oczywiście nadal architektura procesora. Jest to dokładnie ten sam model, co w pierwszych modelach rpi, tylko wyżej taktowany, co oznacza, że albo korzystamy z wynalazków typu Raspbian, albo z architektury armel w np. Debianie (i wydajność cierpi), bo niestety armhf nie zadziała.

Internet rzeczy nadchodzi

Internet rzeczy jest coraz bliżej. Coraz więcej sprzętów posiada interfejsy sieciowe, przez które można nimi zarządzać, przez które mogą one wymieniać dane i… przez które można się włamać. Rozmawiałem ostatnio z ludźmi bardziej siedzącymi w temacie i wygląda to źle. Sprzęt jest słaby (w sensie mocy obliczeniowej), przez co ograniczone są implementacje bezpiecznych protokołów. Brakuje jednego wspólnego standardu zarządzania – generalnie co produkt/producent, to autorski system komunikacji, co gorsza, rzeczy są wystawiane bezpośrednio do internetu, bez ograniczenia do wydzielonej sieci lokalnej[1].

Czasem mam wrażenie, że twórcy zbyt skupili się na aspekcie elektronicznym, a zupełnie pominęli część może nie tyle programistyczną, co sieciową. Rozumiem, że SNMP nie jest jakoś bardzo powszechne w świadomości, a możliwość ustawiania danych przy jego jest jeszcze mniej znana, ale IMO nadaje się do IoT idealnie. Zresztą, nawet ustandaryzowany JSON byłby OK, a pewnie bardziej strawny dla programistów.

Gdyby już istniał standard wymiany danych, to można by zrezygnować z wystawiania rzeczy na świat. Nie mam złudzeń, sytuacja z aktualizacją rzeczy będzie wyglądać jeszcze gorzej, niż w przypadku istniejących urządzeń, a przecież z routerami czy kamerami IP już w tej chwili jest dramat. O ile o aktualizacji oprogramowania w kamerze czy routerze jeszcze ktoś pomyśli, to co z lodówką, głowicą grzejnika czy żarówką? Jakoś wątpię, by były aktualizowane, nawet, jeśli producent przewidzi taką możliwość.

Mam wizję, że rolę bramy dostępowej, czyli centrum, które uwierzytelnia użytkownika i łączy się z rzeczami pełniłby router. Po pierwsze, i tak jest na brzegu sieci, więc warto by go zabezpieczyć, zaktualizować. Po drugie, z racji miejsca ma najlepsze połączenie z zewnętrznym światem. Po trzecie, routery są/bywają stosunkowo mocnym sprzętem, szczególnie w porównaniu z rzeczami, a nawet niekoniecznie ustępują słabszym desktopom. No i zawsze można jakąś płytkę z procesorem ARM wykorzystać. Do tego parowanie certyfikatów brama-rzecz przy pierwszym uruchomieniu i jest względnie bezpiecznie, oczywiście przy wyłączeniu możliwości komunikacji z innymi hostami po parowaniu i zabezpieczeniu (aktualizowaniu) bramy.

Na koniec taka refleksja, chociaż może to tylko moje odchylenie – czy naprawdę potrzebujemy wszystkiego zautomatyzowanego i podłączonego do internetu? Rozumiem proste timery załączające urządzenia np. do grzania wody czy czy termostaty elektroniczne do sterowania ogrzewaniem, ale czy włączanie żarówek przez internet jest tak naprawdę potrzebne? Albo czy lodówka musi informować, że mleko/piwo się skończyło?

W przypadku ogrzewania z jednej strony pewnie wystarczy automatyzacja na poziomie „w dni powszednie włączaj ogrzewanie o 6:30, w weekendy o 8:00”, z drugiej jednak, przy synchronizacji ze smartfonem, można by ustawić, żeby ogrzewanie załączało się zawsze pół godziny przed budzikiem, po prostu. No i zależy, czy mieszkanie, czy dom. IMO w domu sterowanie żaluzjami i trochę bardziej zaawansowana automatyka mogą mieć sens i ekonomiczny (konkretne oszczędności), i nie widać na pierwszy rzut oka, gdzie się światło świeci. W każdym razie ja wolę jednak bardziej manualne sterowanie i do IoT się nie spieszę.

[1] Co też nie do końca jest rozwiązaniem, ponieważ przy domyślnych danych (IP, login, hasło) atakujący jest w stanie wykonać atak z lokalnej przeglądarki użytkownika – wystarczy prosty JS…

Orange Pi – nowe modele

Przegapiłem premierę, ale warto wiedzieć, że pojawiły się dwa ciekawe nowe modele w rodzinie Orange Pi.

Pierwszy z nich, Orange Pi Plus, to odpowiedź na wyższe modele konkurencji. Ma… w zasadzie wszystko. Jest port SATA, jest mocny procesor (cztery rdzenie 1,6 GHz), jest Wi-Fi, są 4 porty USB 2.0, odbiornik podczerwieni i wbudowany mikrofon. W końcu jest wbudowana pamięć flash (8GB). Jedyna słabość to ilość wbudowanego RAM – nadal 1 GB, więc na desktop trochę mało, tj. można zrobić, ale trzeba będzie oszczędzać. Cena: około 50 USD z wysyłką. Zdjęcie Orange Pi Plus z opisem poniżej:

 Orange Pi plus

 Źródło: http://www.orangepi.org/orangepiplus/H3shuoming.jpg

Drugi model to Orange Pi PC. Dość okrojony, wygląda na alternatywę dla Raspberry Pi 2. Pierwsze co rzuca się w oczy to mocny procesor, ten sam co w ww. modelu. Pozostały wbudowany mikrofon oraz czujnik IR, ale zniknął port SATA, nie ma wbudowanego Wi-Fi, ani pamięci flash, a ethernet to – podobnie jak w Raspberry Pi – 100 Mbps. Standardowy 1GB RAM. Główny atut? Oczywiście cena. Ok. 23 USD z wysyłką, lub 15 USD + ok. 3 USD wysyłka. Zdjęcie Orange Pi PC wraz z opisem poniżej:

Orange Pi PC

Źródło: http://www.orangepi.org/orangepipc/images/orangepipc_info.jpg

W obu przypadkach można uruchomić Linuksa, w przypadku Orange Pi Plus dostępny jest Debian. Chipset ten sam, więc przypuszczam, że pojawienie się Debiana na model PC jest jedynie kwestią czasu.

Przyznaję, że rozważam zakup Orange Pi Plus i wymianę Dockstara – działa dobrze, ale 128 MB RAM zaczyna trochę boleć.

Rodzina Orange Pi

Jakiś czas temu zachwalałem Banana Pi. Twórcy w międzyczasie wypuścili Banana Pro, z m.in. dodaną kartą wifi. Nie pisałem, bo cena była mało atrakcyjna (obecnie wygląda lepiej ok. 50 USD), a zmiany tak naprawdę kosmetyczne.

Dziś dowiedziałem się o Orange Pi. Kolejny chiński produkt, który można określić mianem klona klonu Raspberry Pi. 😉

Poniżej zdjęcie jednej z wersji Orange Pi (wersja Mini):

Orange Pi Mini - front

Źródło: http://www.orangepi.org/orangepimini/minijieshao1.jpg

Tak naprawdę są to trzy produkty: Orange Pi zwykłe, mini i plus.

  • Zwykłe Orange Pi jest dłuższe od Banana Pi o 20 mm, za to dodatkowo ma kartę wifi oraz wyjście VGA. Cena: ok. 50 USD.
  • Orange Pi Plus ma ten sam rozmiar co zwykła wersja, nie ma wyjścia VGA, ale za to wyposażona jest w czterordzeniowy procesor A31S ARM. Brak portu SATA. Cena: ok. 70 USD.
  • Orange Pi Mini jest najbardziej zbliżone do Banana Pi – jedynie o 2 mm dłuższe i o 1 mm węższe. Od Banana Pi różni się głównie posiadaniem karty wifi. Cena: ok. 40 USD, czyli praktycznie tyle samo, co Banana Pi.

Wszystkie wersje posiadają port SATA, wszystkie mają 1 GB RAM. Producent twierdzi, że działa Android, Debian, Ubuntu itp. Ceny z AliExpress dla wersji z free shipping.

Wygląda ciekawie, choć dość niechlujnie (choćby widoczne literówki na opisach na zdjęciach). Sam pewnie nie kupię, a przynajmniej nie w najbliższym czasie, ale jakby komuś wpadło w ręce, to poproszę test i podzielenie się linkiem do testu.

UPDATE: Na portalu LinuxGizmos.com pojawiło się ciekawe zestawienie przyjaznych Linuksowi SoC na rok 2015. Polecam lekturę.

UPDATE 2: Wbrew temu, co napisałem, Orange Pi Plus nie posiada portu SATA.

 

Bananian, czyli Linux dla Banana Pi

O Banana Pi pisałem już jakiś czas temu. Jeszcze wcześniej narzekałem na Raspbiana, że dziwne opcje ma, że bloat… Cóż, posiadacze Raspberry Pi nie mają specjalnie wyboru, natomiast w przypadku Banana Pi nie ma przeciwskazań, by korzystać z normalnej architektury armhf w Debianie. No dobrze, jest jeden wyjątek, czyli kernel…

Niedawno, po dłuższej, bo blisko dwumiesięcznej przerwie zajrzałem na forum producenta Banana Pi, a tam rzuciła mi się w oczy informacja o wydaniu dystrybucji Linuksa dla Banana Pi o nazwie Bananian. Wesoła nazwa, pomyślałem i stwierdziłem, że może faktycznie na popularności Raspberry Pi przesadnie bazują, skoro nawet Raspbiana przechrzcili… Potem wszedłem na stronkę dystrybucji, doczytałem i… jestem bardzo zaskoczony i zadowolony. Tak naprawdę autorzy poszli w tę stronę, w którą sam planowałem iść.

Czym jest Bananian? Bananian nie ma wiele wspólnego z Raspbianem, poza nazwą. To minimalna wersja (base system, zero raspbianowego bloatu!) Debiana, tuningowana pod Banana Pi (głównie kernel, plus skrypty pomocnicze). Dla pakietów (poza kernelem) korzysta z wyłącznie oficjalnych repozytoriów Debiana, czyli koniec z opóźnieniami w aktualizacjach pakietów (także security). Tuning polega na poprawieniu wydajności i bezpieczeństwa. Normalny swap (niestety włączony domyślnie), bez cudacznych skryptów. Tuning SSH pod kątem zwiększenia bezpieczeństwa zgodnie z wytycznymi z bettercrypto.org. Więcej o zmianach, ficzerach itd. na stronce.

Do tego obraz jest bardzo mały (spakowany poniżej 230 MB, po rozpakowaniu wchodzi na kartę 2GB), a developerzy sprawili na mnie znacznie lepsze wrażenie, niż ci od Raspbiana (bardziej przyjaźni i otwarci na propozycje/wiedzę).  Załapałem się na wydanie nowej wersji i nawet jakieś zgłoszone bugi na forum zostały naprawione (lub dodane do bugtrackera). Zdecydowanie Bananian mi się podoba. Taki minimalny (stronka też). 🙂

UPDATE: Projekt został zakończony, Bananian nie jest już rozwijany.

Banana Pi – krótka recenzja

Jak wspomniałem, zamówiłem Banana Pi. Zamówienie na Aliexpress, cena – 50 dolarów z wysyłką do Polski. Zdziwieniem i niejakim problemem był fakt, że mało kto na Aliexpress obsługuje PayPala. Przynajmniej ze sprzedających Banana Pi z darmową wysyłką. Tu porada – WBK oferuje coś takiego jak karty internetowe. Tanie, bezpieczne (prepaid), wygodne, ekologiczne (są wirtualne, otrzymujemy tylko PDF, bez plastiku), działają. Można doładowywać. Polecam.

Sprzęt przybył do mnie do domu 14 dni od dokonania płatności. Trochę szczęścia, bo kumpel, który zamówił kilka dni wcześniej, dostał równocześnie, a ze śledzenia paczki[1] wynikało, że przyleciały jednym samolotem. Cła itp. nie ma z uwagi na wartość – zwolnione z cła są przesyłki do 150, tylko nigdy nie pamiętam czy euro, czy dolarów.

Jako dystrybucję wybrałem Raspbiana dla Banana Pi 3.0. Nagrałem na kartę microSD Goodram[2] (się naprawiła), podłączyłem identycznie, jak Raspberry Pi, czyli aktywny hub UnitekY-206P, jeden kabel do dysku, drugi do Banana Pi do gniazda zasilania, trzeci (sygnał) z Banana do huba. Włączenie zasilania i… nic.

Odłączyłem dysk, nadal nic. W końcu odłączyłem kabel sygnałowy do huba i… ruszyło. Jest zauważalnie szybciej, niż na rpi. Znajomy podłączał z monitorem i stwierdził, że spokojnie nadaje się do komfortowego przeglądania poczty i WWW (oczywiście bez flasha). Tak na szybko: jest jeden LED, którym można sterować analogicznie jak w rpi, na dodatek umieszczony w miejscu, gdzie go widać. Przygotowany obraz działa, ale szału nie czyni – jest trochę śmieci, które można usunąć, typu pakiety w cache apta. Zgłoszone, pewnie poprawią przy następnym wydaniu.

Nie udało mi się uzyskać działającej konfiguracji z podłączeniem dysku. Zarówno podłączenie kabla sygnałowego do huba, jak i dysku 2,5″ powodują u mnie zgaśnięcie wszystkich LEDów i zwis Banana Pi (prąd jest pobierany, więc nie wyłączenie). Podejrzewałem problem z USB lub ładowaniem modułu kernela (nie wiedziałem jeszcze o naprawieniu się karty microSD). Ale nie, podłączenie samego kabla czy pendrive nie powoduje problemów.

Ostatecznie wziąłem ładowarkę od komórki i podłączyłem Banana do niej, a dysk do huba USB. W takiej konfiguracji działa[3]. Tyle, że tak nie może zostać. Zadałem pytanie na forum o Banana Pi, parę osób odpisało. Nie jestem sam. Wygląda, że albo Banana Pi jest bardziej wrażliwe, albo znaczenie ma feature Raspberry Pi pozwalający na zasilanie po USB (czego Banana Pi nie ma).

Podsumowując, zapowiada się ciekawie, choć pracowicie (znaczy będzie zabawa). Już przytargałem multimetr i będę starał się wyjaśnić o co chodzi z zasilaniem. Parę pomysłów mam, ale brakuje mi kabelków do testów.

Poza tym, developerzy ciężko pracują i przepraszają, że nie opublikowali źródeł sterownika do karty sieciowej (łamiąc GPL, nawiasem). Czyli obecnie 1 Gbit można mieć działający, ale tylko pod warunkiem użycia zamkniętego kernela/modułu, ze źródeł się nie da. Mam nadzieję, że się uwiną szybko, bo Banana Pi zapowiada się ciekawie.

[1] W pozytywnym szoku byłem, jak dzień czy dwa po płatności dostałem maila z numerem przesyłki i mogłem śledzić na stronie Poczty Polskiej.

[2] Wcześniej tradycyjne zdjęcie journala z ext4, zgłoszone devom, dla odmiany przyjęli do wiadomości, więc jest szansa, że kolejne wydania będą przyjazne dla nośników flash by default.

[3] Zwykle, bo czasem w momencie podłączania huba do Banana Pi potrafi zwisnąć. Ale jak wszystko jest podłączone przy starcie, działa OK.

OpenSSL AES benchmark

Mam dostęp do paru różnych maszyn, więc postanowiłem zrobić mini benchmark OpenSSL. Głównie z procesorami ARM. Wraz z kumplem z netu zebrało nam się na porównywanie wydajności różnych sprzętów. Poszło o nierewelacyjne osiągi OpenVPN na jego Banana Pi (nawiasem, do mnie też już Banan dotarł, wkrótce coś skrobnę).

Wszystkie testy na Linuksie (pochodne Debiana). Warunki niezupełnie „czyste”, bo maszyny normalnie działają (jakieś Xy, zwykłe usługi itp.), ale raczej dobrze oddaje możliwości – różnice między wynikami z netu pomijalne, maszyny raczej się nudzą. Testowane poleceniem openssl speed aes, w przypadku maszyn w których Linux widzi więcej niż jeden procesor, dodane –multi N, gdzie N  to ilość rozpoznawanych przez system rdzeni (z HT).

Na początek, w ramach punktu odniesienia, procesory Intela (testowane na architekturze amd64):

Intel(R) Pentium(R) Dual  CPU  T3400  @ 2.16GHz (N=2)

aes-128 cbc     124896.83k   138273.46k   141166.08k   298696.36k   303164.07k
aes-192 cbc     105477.06k   116211.63k   117732.95k   246287.70k   249443.67k
aes-256 cbc      91720.90k    99602.26k   100765.95k   214892.54k   218794.67k

Intel(R) Pentium(R) Dual  CPU  T3400  @ 2.16GHz (N=1)

aes-128 cbc      63276.43k    69732.33k    71320.92k   149509.14k   152286.27k
aes-192 cbc      53920.87k    58297.88k    59832.94k   126354.09k   128532.21k
aes-256 cbc      46232.08k    49934.93k    50964.99k   109278.55k   110320.76k

Intel(R) Atom(TM) CPU D525 @ 1.80GHz (N=4)

aes-128 cbc      30904.81k    46265.24k    53263.58k    55370.66k    55836.67k
aes-192 cbc      28137.17k    40040.66k    45127.08k    46556.50k    47162.91k
aes-256 cbc      29979.57k    36609.58k    39015.17k    39410.69k    39343.52k

Intel(R) Atom(TM) CPU N2800  @ 1.86GHz (N=4)

aes-128 cbc      63529.34k    67116.33k    67479.30k    69077.33k    70063.45k
aes-192 cbc      53305.24k    55930.01k    56726.87k    58294.95k    58384.38k
aes-256 cbc      46324.97k    48419.43k    49031.42k    49620.99k    49569.79k

Intel(R) Atom(TM) CPU N2800  @ 1.86GHz (N=1)

aes-128 cbc      25546.13k    28152.09k    29100.80k    29257.82k    29417.47k
aes-192 cbc      21745.97k    23033.45k    24188.43k    24440.15k    24491.35k
aes-256 cbc      18760.60k    20222.36k    20786.01k    20862.38k    20971.52k

Intel(R) Core(TM)2 Duo CPU     E4600  @ 2.40GHz (N=2)

aes-128 cbc     139806.09k   153189.03k   157513.39k   329881.60k   336000.34k
aes-192 cbc     118517.33k   128203.82k   131191.81k   279747.24k   283568.81k
aes-256 cbc     102364.69k   110147.39k   111865.51k   240238.25k   242586.97k

Intel(R) Core(TM)2 Duo CPU     E4600  @ 2.40GHz (N=1)

aes-128 cbc      69509.47k    76975.27k    79176.79k   166760.11k   168293.72k
aes-192 cbc      59564.63k    64345.22k    65814.19k   140067.50k   141836.29k
aes-256 cbc      51423.55k    55281.11k    56354.30k   120643.58k   121760.43k

Intel(R) Core(TM) i3 CPU M 380 @ 2.53GHz (N=4)

aes-128 cbc     152665.50k   160758.55k   162619.56k   162693.12k   160432.13k
aes-192 cbc     128774.61k   134266.73k   136237.23k   136946.01k   136850.09k
aes-256 cbc     111035.63k   113086.31k   115218.09k   115126.95k   115452.59k

Intel(R) Core(TM) i3 CPU M 380 @ 2.53GHz (N=1)

aes-128 cbc      64605.45k    79469.89k    80944.90k    81767.94k    81679.70k
aes-192 cbc      62476.10k    66903.19k    67975.42k    68745.33k    68009.98k
aes-256 cbc      54233.60k    56778.67k    57951.06k    58175.49k    58541.29k

Intel(R) Core(TM) i5-3317U CPU @ 1.70GHz (N=4)

aes-128 cbc     178233.37k   197070.14k   202821.72k   204553.22k   203276.29k
aes-192 cbc     155289.71k   164140.12k   164286.98k   167794.69k   170915.16k
aes-256 cbc     134427.71k   141611.71k   145087.32k   145325.74k   144921.94k

Intel(R) Core(TM) i5-3317U CPU @ 1.70GHz (N=1)

aes-128 cbc      93122.37k   101039.38k   104341.59k   105117.70k   104237.74k
aes-192 cbc      79544.40k    85362.03k    86720.00k    87005.87k    87758.17k
aes-256 cbc      69556.44k    73458.50k    74518.87k    74227.71k    73815.38k

AMD Sempron(tm) 2300+ (N=1) Test oczywiście dla architekury i386

aes-128 cbc      29157.09k    31077.91k    31887.50k    76258.89k    76728.08k
aes-192 cbc      25055.40k    26304.51k    26871.69k    65190.10k    65563.40k
aes-256 cbc      21279.27k    22447.52k    22859.69k    56840.22k    57122.08k

Tyle jeśli chodzi o procesory Intela, pora na benchmark openssl dla procesorów ARM:

Dockstar. Debian, architektura armel Feroceon 88FR131 rev 1 (v5l) 1,2GHz

aes-128 cbc      14013.23k    16435.69k    16982.28k    17336.92k    17317.89k
aes-192 cbc      12337.22k    14112.71k    15303.21k    14970.88k    14815.53k
aes-256 cbc      10989.90k    12474.70k    12831.67k    13312.00k    13218.91k

Raspberry Pi. Raspbian ARMv6-compatible processor rev 7 (v6l) 700 MHz

 aes-128 cbc      13241.53k    14935.94k    15386.52k    15716.75k    15576.54k
aes-192 cbc      11420.51k    13032.96k    13501.64k    13664.95k    13465.79k
aes-256 cbc      10378.09k    11521.94k    11991.62k    11855.19k    11988.44k

Banana Pi (N=2).

aes-128 cbc      38453.65k    45557.42k    47889.49k    48539.99k    48715.09k
aes-192 cbc      33638.03k    38975.96k    41001.13k    41532.42k    41694.55k
aes-256 cbc      30360.07k    34568.62k    36124.25k    36553.39k    36672.85k

Banana Pi (N=2) Debian armhf

aes-128 cbc      35393.00k    47858.58k    50317.74k    50995.88k    51183.62k
aes-192 cbc      35339.90k    40943.62k    43078.57k    43647.32k    43797.16k
aes-256 cbc      31896.82k    36317.72k    37956.01k    38405.80k    38532.44k

Feroceon 88F6282 rev 1 (v5l) 2,0 GHz

aes-128 cbc     20192.02k     24452.77k    25681.19k    25715.66k    26231.83k 
aes-192 cbc    18020.95k   21192.76k   22311.17k   22520.40k   22832.65k
aes-256 cbc    16372.28k    18963.20k   19705.60k   19748.15k  20109.48k

Cubieboard 3 (N=1)

aes-128 cbc 18192.97k 21387.56k 22688.77k 22623.23k 20960.60k 
aes-192 cbc 17613.03k 18595.58k 19475.20k 19543.38k 19595.26k
aes-256 cbc 15075.22k 16513.19k 17151.57k 17167.36k 17246.89k

Cubieboard 3 (N=2)

aes-128 cbc 40631.59k 43845.70k 44627.97k 45086.38k 45211.65k 
aes-192 cbc 35388.95k 36886.19k 38698.50k 38691.16k 39335.25k
aes-256 cbc 30851.77k 33802.65k 34321.41k 34171.56k 33778.35k

ODROID U3 (N=1)

aes-128 cbc 54399.00k 58485.80k 59575.38k 60536.83k 60385.96k 
aes-192 cbc 47215.06k 50994.73k 52349.35k 52738.73k 52731.90k
aes-256 cbc 41830.65k 44747.37k 45808.98k 46029.82k 45796.01k

ODROID U3 (N=4)

aes-128 cbc 216401.55k 233187.14k 237574.06k 237451.26k 239610.54k 
aes-192 cbc 187925.35k 203781.87k 209056.51k 202832.55k 210911.23k
aes-256 cbc 166399.47k 178351.36k 182334.38k 183437.99k 183795.71k

Jetson TK 1 (N=1)

aes-128 cbc 101615.96k 105911.73k 109555.46k 110431.91k 110553.77k 
aes-192 cbc 87593.79k 92699.41k 95376.04k 96003.75k 96133.12k
aes-256 cbc 76532.53k 80948.01k 83111.77k 83704.15k 83817.81k

Jetson TK 1 (N=4)

aes-128 cbc 400560.99k 417232.81k 426956.88k 411591.68k 423813.12k 
aes-192 cbc 327749.78k 351935.28k 364130.73k 377968.98k 379052.03k
aes-256 cbc 300564.41k 319599.06k 325819.65k 328858.28k 330391.55k

Marvell Armada 370/XP (Device Tree) (N=1)

aes-128 cbc      41961.95k    50546.82k    53594.28k    54535.26k    53449.35k
aes-192 cbc      37750.78k    44366.68k    46631.68k    47299.58k    46623.40k
aes-256 cbc      33172.31k    37925.33k    40553.30k    41431.04k    40962.73k

Marvell Armada 370/XP (Device Tree) (N=4)

aes-128 cbc     166412.45k   201555.37k   213535.57k   217358.68k   213336.06k
aes-192 cbc     149429.29k   177001.39k   186009.77k   189066.24k   186086.74k
aes-256 cbc     131774.20k   151056.06k   161813.59k   165605.38k   163482.28k

Raspberry Pi 3 (N=1; 32 bit OS)

aes-128 cbc      41017.91k    48669.00k    51254.02k    51984.38k    52215.81kaes-192 cbc      35728.01k    41270.60k    43058.26k    43608.06k    43783.51kaes-256 cbc      32115.97k    36434.37k    38004.48k    38426.71k    38482.83k

Jak widać, trochę przepaść między ARM a Intelami w wynikach całkowitych. Dodatkowo sprawę wydajności pogarsza fakt, że OpenVPN nie wątkuje (podobno ma być dodane w wersji 3), czyli klient wykorzystuje tylko jeden rdzeń, co w przypadku Banana Pi oznacza w praktyce połowę podanej wyżej wydajności.

PS. Wpis będzie edytowany/uzupełniany.

UPDATE: dodaję wyniki dla Banana Pi uzyskane osobiście na czystym Debianie w normalnej architekturze armfh. Nie jestem pewien, czy wcześniejsze nie były na „niepełnym” armfh dla Raspbiana robione…

Banana Pi – alternatywa dla Raspberry Pi

Zwykle nie piszę o hardware, nawet opartym na ARM, ale tu zrobię wyjątek. Raspberry Pi od początku średnio mi się podobało, ale nowy projekt czyli Banana Pi, zrobiony przez inną ekipę jest naprawdę ciekawy. Jak to ktoś ładnie ujął, Chińczycy wezmą i zrobią lepiej.

 

Zmiany w stosunku do Raspberry Pi:

  • Ethernet 10/100/1000 (przy NAS po kablu może robić kolosalną różnicę, choć wątpię, by faktycznie wyciągało pełen gigabit),
  • Wbudowane złącze SATA (znowu spora różnica dla NAS),
  • Procesor Corex A7 dual core, czyli dwa rdzenie prawdopodobnie po 1 GHz każdy, czyli niemal trzy razy tyle MHz ile ma niepodkręcane Raspberry Pi,
  • 1 GB RAM, czyli dwa razy więcej,
  • wbudowany IR (odbiornik podczerwieni), czyli teoretycznie trywialne do zrobienia sterowanie pilotem

Zachowane złącza GPIO, wymiary i niska cena. Z tego co piszą, działa dedykowany dla Raspberry Pi Raspbian. Wspierany jest także Debian (czyżby niemodyfikowany?). Co lepsze, użycie nowszego procesora oznacza, że będzie działać architektura armhf, więc nie ma potrzeby stosowania protezy w postaci Raspbiana.

Koszt to niby 43 dolary, ale za mniej niż 50 nie znalazłem do kupienia. Tak czy inaczej IMO zdecydowanie warto dopłacić. Niebawem zamówię i najprawdopodobniej wymienię silnik obecnego NAS opartego na Raspberry Pi.

I jeszcze stronka w Wikipedii poświęcona Banana Pi.

UPDATE: Dzięki namiarom z komentarzy (thx Zal!) wiemy więcej. Zapowiadało się dobrze i jest dobrze. Przynajmniej jeśli chodzi o benchmark Banana Pi vs. Raspberry Pi. Dla niecierpliwych: banan ma sieciówkę (o go głównie były obawy) 6-7 razy szybszą (iperf). Za to uwaga, Banana Pi jest nieco większe od Raspberry Pi i nie wszędzie się zmieści. Jak donosi też mniej pochlebna recenzja, nie wszystkie rozszerzenia będą pasowały z uwagi na przesunięcie niektórych złącz.

UPDATE: W jednym z kolejnych wpisów opisuję, jak zrobić z maszynki z Linuksem router, GSM/LTE z Wi-Fi. Z uwagi na niewielkie rozmiary i mały pobór energii Banana Pi świetnie się do tego nada.