Orange Pi Plus: software zraje jako víno

9. 3. 2016
Doba čtení: 13 minut

Sdílet

Dnes dokončíme prohlídku Orange Pi Plus – hardwarově vybaveného jednodeskového počítače, kterému software teprve dozrává. Změříme rychlost desktopu, 3D grafiky, přehrajeme film a blikneme i LEDkou.

Úvod

Úvodem mi dovolte připomenout, že tento seriál není určen pouze pro majitele Orange Pi Plus, ale 100% platí také pro všechny majitele ostatních Orange Pi verzí s SoC Allwinner H3, tedy včetně brzy jistě oblíbeného Orange Pi One za 246 korun. Dále jde s minimálními změnami aplikovat i na starší počítače Orange Pi a také na Banana Pi se stejným SoC. Nakonec může být užitečný i lidem, kteří zakoupí novinku Pine64, neboť skýtá jakýsi vhled do vývoje fungujícího operačního systému běžícího na nových čínských procesorech.

Facebook, Poláci, Maďaři a Rusi

minulém článku jsem ukázal, že primární kanál podpory výrobce pro své Orange Pi je webové fórum běžící na doméně OrangePi.org. Bohužel, toto fórum je nepříjemně často nedostupné (třeba právě teď, když v pátek píšu tento text) a navíc do něj mají nováčci víceméně jen read-only přístup, protože možnost psaní příspěvků je podmíněna členstvím a to schvaluje někdo, kdo na to asi nemá moc času. Osobně čekám dva týdny, ale doslechl jsem se o lidech, kteří na schválení čekají už dva měsíce. Takto si podporu komunity moc nepředstavuji. Dlužno dodat, že komunita je pro úspěch podobných zařízení klíčová, když sám výrobce hardware nemá na nezbytný software vůbec čas/schopnosti.

Z této frustrace se díky dvěma Polákům zrodila skupina na Facebooku nazvaná Orange Pi, do které je sice také nutno poprosit o vstup (a následně je i každý příspěvek ještě ručně schvalován), ale aspoň to místo měsíců trvá jen hodiny. Zajímavé je, že primární web těchto Poláků běží na maďarské doméně orangepi.pe.hu a operační systémy tam nahrané jsou z jakéhosi důvodu většinou lokalizované do ruštiny. Raději nad ničím nepátrám a jsem nadšený, že jsem se dostal k novým obrazům předinstalovaných systémů, které bourají zažité představy (vizte dále).

Tato facebooková komunita už má téměř tisíc členů, což je výborné. Průměrná zkušenost je sice nízká (aspoň soudě dle dotazů), ale jeden nebo dva zkušení lidé se tam najdou a hlavně mají spojení na ostatní vývojáře v jiných fórech, takže se tu dají najít aktuální informace o Orange Pi.

Linux-sunxi

Linux-sunxi je další velmi aktivní komunita, která sdružuje myslím spíš vývojáře než uživatele. Pro Orange Pi Plus zatím myslím nemají nic konkrétního, ale pracují na tom nejdůležitějším – zařazením podpory pro Allwinner SoC zařízení přímo do mainline kernelu. Tuším, že počítače s SoC A20 (staré Banana Pi a Orange Pi) se jim už podařily v kernelové řadě 4.4 a teď pracují na podpoře nejnovějších SoC včetně H3. Jakmile se dostane H3 do hlavního kernelu, bude to myslím znamenat přelom a skutečný posun v softwarové podpoře jednodeskových počítačů (nejen Banana a Orange, ale i Pine64 má tuším podobný procesor). Připomínám, že neskonale větší komunita navíc podporovaná penězi z Raspberry Pi Foundation dokázala dostat podporu Raspberry Pi do mainline kernelu teprve teď, po snad čtyřech letech snah.

Armbian

Poslední zásadní zdroj software pro desítky jednodeskových počítačů je Armbian Igora Pečovnika. V současnosti podporuje neuvěřitelných 27 různých počítačů a podpora pro Orange Pi Plus a další Orange Pi s SoC H3 tu přibyla doslova před pár dny (kolem 22. února). Armbian web je mi jaksi mnohem bližší a na první pohled důvěryhodnější než ty po MEGA a pe.hu serverech náhodně pohozené obrazy s ruštinou a bez solidní dokumentace. Systém od Igora je čistý Debian, dokonce nemá ani obvyklý FAT oddíl se souborem script.bin a jeho nutným překopírováním a případným laděním. Taktéž nabízí jasnou, přehlednou a srozumitelnou dokumentaci v rozumné angličtině. Jako první nabídl funkční změnu grafického rozlišení a typu výstupu za běhu systému ( h3disp díky Tkaiserovi) a očekávám, že tu teď půjde vývoj dopředu nejrychleji (už má novější jádro 3.4.110 a nové verze vydává doslova každý den – vizte Release History).

MALI je problém?

Součástí Allwinner SoC H3 je také GPU Mali400MP2, což je grafický procesor s 2D a 3D akcelerací. Tento Mali je velmi častý v mobilních zařízeních s Androidem, kde má velmi dobrou podporu (3D hry a filmy jako po másle). Ovšem pokud mě paměť neklame, tak v Linuxu byl dlouhá léta problém z klasických důvodů nedostatku dokumentace a podpory od výrobce. Proto jsem byl velmi příjemně překvapen, když jsem našel operační systémy pro Orange Pi s funkční akcelerací! Jsou staré sotva pár týdnů a už nabízejí překvapivě stabilní chod a skutečně akcelerovanou grafiku.

Jedním z nejčerstvějších (dnešní upload!) obrazů, který jsem našel ve výše zmíněné facebookové skupině, je například Ubuntu 15.10 verze 0.5. Občas také používám o trošku starší obraz od autora s přezdívkou Jacer, který jsem našel ve fóru (a nemohu teď ověřit). U Jacera je fajn, že to nepřestřelil s akcelerací desktopu, takže vše funguje svižně. Někteří jiní jsou tak nadšení z toho, že funguje OpenGL, že nainstalují desktop s 3D efekty a pak je to sice elegantní poloprůhledné a kdo ví jaké ještě, ale svižnost se vytrácí.

Benchmark

Dlouho jsem přemýšlel, jak vlastně porovnat rychlosti mezi Raspberry Pi 2 a Orange Pi Plus (abych našel odpověď na mou původní otázku, jestli je už Orange Pi Plus dostatečná náhrada stolního počítače). V rukávu jsem měl velmi pěkný webový benchmark Peacekeeper, ale bohužel z neznámého důvodu ho Chromium na Orange Pi Plus v Linuxu není schopno dokončit. Vždy spadne na testu s WebWorkers – verze Chromia 41, 44 i 45. Tak alespoň uvedu výsledek na Raspberry Pi 2 (Chromium 45, 900 MHz) – 396 bodů, a na Orange Pi Plus v Androidu (Chrome 48, 1,2 GHz) – 451 bodů. Bohužel v Androidu se provede méně testů než na Raspberry Pi, takže výsledné body nebudou zřejmě vůbec porovnatelné, a podrobné bodování jednotlivých testů jsem si z Raspberry Pi nepořídil.

Proto jsem s dalším měřením přešel na gtkperf, o kterém jsem se domníval, že nejlépe zachytí jakousi „rychlost prostředí“ (rychlost vykreslování a rychlost rolování), která zásadně ovlivňuje pocit z ovládání počítače. Alespoň já nesnáším, když musím na reakci počítače čekat byť jen desetiny sekundy. Je docela dobře možné, že klidnější lidé mají práh tolerance reakční doby počítače jinde a Raspberry Pi i Orange Pi Plus by mohli používat ihned i bez ladění a měření. Pro neklidné tu mám výsledky běhu GtkPerf na výše zmíněném obrazu Debian8 od uživatele Jacer:

orangepi@OrangePI:~$ gtkperf
GtkPerf 0.40 - Starting testing: Sat Feb 20 08:52:01 2016

GtkEntry - time:  0.14
GtkComboBox - time:  2.47
GtkComboBoxEntry - time:  1.91
GtkSpinButton - time:  0.18
GtkProgressBar - time:  0.10
GtkToggleButton - time:  0.26
GtkCheckButton - time:  0.17
GtkRadioButton - time:  0.25
GtkTextView - Add text - time:  1.76
GtkTextView - Scroll - time:  0.64
GtkDrawingArea - Lines - time:  1.07
GtkDrawingArea - Circles - time:  2.22
GtkDrawingArea - Text - time:  2.98
GtkDrawingArea - Pixbufs - time:  0.56
 ---
Total time: 14.74

Pro porovnání nechci dělat tabulku s mnoha sloupci, ale jen vypíchnu dva časy, které mi přišly důležité: Raspberry Pi má celkový čas 21 sekund, a čas operace „Scroll“ (rolování textovým obsahem v okně) má 0,9 sekundy. Z toho bych se odvážil vyvodit, že Orange Pi Plus je téměř o třetinu rychlejší v GTK operacích než Raspberry Pi a tedy že dojem například ze stránkování či rolování delším dokumentem v editoru Gedit bude na Orange Pi Plus o třetinu lepší. V případě nejnovějšího Armbianu jsem dokonce dostal čas pro „Scroll“ pouhých 0,41 sekundy – a to Armbian nepřetaktovává CPU jako Debian8 od Jacera. Tím by byl Armbian dvakrát rychlejší v rolování obsahu okna než Raspberry Pi. Je ale možné, že na tyto výsledky má vliv ještě nějaká další proměnná, kterou nevidím.

Zajímavé je, že pokud stejný GtkPerf test pustíme na obrazech s desktopem využívajícím OpenGL efekty (jak to má tuším Ubuntu disk image z výše zmíněné facebookové skupiny), dostaneme zcela tragické výsledky – celkový čas 70 sekund místo 15, a čas na „Scroll“ 8 (slovy osm!) sekund. Podobný (i když ne tak dramatický) pokles výkonu bylo možno pozorovat i na desktopových počítačích v době, kdy jsme v GNOME opouštěli Metacity ve prospěch akcelerovaných desktopů – tam to ale naštěstí přebila hrubá síla CPU i GPU. Tady na malém počítači s ještě asi ne zcela funkční OpenGL akcelerací je vidět, jaká je daň za průhlednost a další „nezbytné“ frikulínské efekty.

Pro otestování 3D akcelerace jsem použil glmark2-es2 . Následuje úmyslně neúplný výpis logu běhu tohoto programu s pěknými grafickými efekty (zkuste si ho, běží i na desktopu).

orangepi@OrangePI:~$ glmark2-es2
=======================================================
    glmark2 2011.09
=======================================================
    OpenGL Information
    GL_VENDOR:     ARM
    GL_RENDERER:   Mali-400 MP
    GL_VERSION:    OpenGL ES 2.0
=======================================================
[build] use-vbo=false:  FPS: 78
[build] use-vbo=true:  FPS: 93
[texture] texture-filter=nearest:  FPS: 96
[texture] texture-filter=linear:  FPS: 94
[texture] texture-filter=mipmap:  FPS: 96
[shading] shading=gouraud:  FPS: 79
[shading] shading=blinn-phong-inf:  FPS: 79
[shading] shading=phong:  FPS: 70
=======================================================
                                  glmark2 Score: 80
=======================================================

Zdá se, že nám Mali-400 skutečně 3D grafiku akceleruje. Pro porovnání výstup z Raspberry Pi, který jsem našel někde na webu – podle autora bylo nutno glmark2 dost silně opatchovat a některé testy i tak neproběhly korektně, takže netuším, jak moc jsou níže uvedená čísla relevantní:

=======================================================
    glmark2 2012.03
=======================================================
    OpenGL Information
    GL_VENDOR:     Broadcom
    GL_RENDERER:   VideoCore IV HW
    GL_VERSION:    OpenGL ES 2.0
=======================================================
[build] use-vbo=false: FPS: 75
[build] use-vbo=true: FPS: 179
[texture] texture-filter=nearest: FPS: 232
[texture] texture-filter=linear: FPS: 232
[texture] texture-filter=mipmap: FPS: 232
[shading] shading=gouraud: FPS: 152
[shading] shading=blinn-phong-inf: FPS: 152
[shading] shading=phong: FPS: 148

Netroufám si z toho nic usuzovat. Navíc na Raspberry Pi 2 se tento týden povedlo spustit plnou OpenGL akceleraci, která to zase posouvá o level výše. Ani netuším, jak daleko je Orange Pi, resp. Mali-400, s podporou v Linuxu – jestli už vidíme konečný stav, nebo jestli jsou to nějaké testovací či zpětně vyinžinýrované věci, které se budou ještě zlepšovat.

Akcelerované video

Z desktopových grafik je člověk zvyklý, že pokud má 2D/3D akceleraci, tak mu pak už většinou funguje dobře i přehrávání videí (filmů). Proto jsem prahl po funkční akceleraci a nadšeně pouštěl  vdpauinfo:

orangepi@OrangePI:~$ vdpauinfo
display: :0.0   screen: 0
[VDPAU SUNXI] VE version 0x1680 opened.
API version: 1
Information string: sunxi VDPAU Driver

Video surface:

name   width height types
-------------------------------------------
420     8192  8192  NV12 YV12

Decoder capabilities:

name                        level macbs width height
----------------------------------------------------
MPEG1                           0 32400  3840  2160
MPEG2_SIMPLE                    3 32400  3840  2160
MPEG2_MAIN                      3 32400  3840  2160
H264_BASELINE                  51 32400  3840  2160
H264_MAIN                      51 32400  3840  2160
H264_HIGH                      51 32400  3840  2160
VC1_SIMPLE                     --- not supported ---
VC1_MAIN                       --- not supported ---
VC1_ADVANCED                   --- not supported ---
MPEG4_PART2_SP                  5 32400  3840  2160
MPEG4_PART2_ASP                 5 32400  3840  2160
DIVX4_QMOBILE                  --- not supported ---
DIVX4_MOBILE                   --- not supported ---
DIVX4_HOME_THEATER             --- not supported ---
DIVX4_HD_1080P                 --- not supported ---
DIVX5_QMOBILE                  --- not supported ---
DIVX5_MOBILE                   --- not supported ---
DIVX5_HOME_THEATER             --- not supported ---
DIVX5_HD_1080P                 --- not supported ---
H264_CONSTRAINED_BASELINE      51 32400  3840  2160
H264_EXTENDED                  --- not supported ---
H264_PROGRESSIVE_HIGH          --- not supported ---
H264_CONSTRAINED_HIGH          51 32400  3840  2160
H264_HIGH_444_PREDICTIVE       --- not supported ---
HEVC_MAIN                      150 32400  3840  2160
HEVC_MAIN_10                   --- not supported ---
HEVC_MAIN_STILL                --- not supported ---
HEVC_MAIN_12                   --- not supported ---
HEVC_MAIN_444                  --- not supported ---

Vypadá to, že máme postaráno o videa až do 4k rozlišení s MPEG2 i H264 kodekem a dokonce snad i HEVC_MAIN. Bohužel, když jsem zkoušel přehrát 10GB 1080p kopii BR disku v Mplayeru, procesor měl vytížená všechna čtyři jádra na 100 %. To se mi moc nelíbilo, ale na Facebooku jsem nenašel pochopení a mé tvrzení, že takto akcelerované přehrávání videa rozhodně nevypadá, nepadlo na úrodnou půdu.

Pak jsem se ale v tomto vláknu fóra dočetl, že na malých počítačích nepřehrává video GPU, ale VPU (Video Processing Unit), na který máme knihovnu CedarX, která ještě není nikde podporována, dokonce ani v OpenELEC verzi Kodi, kterou vyvíjí jernejsk. Nevzdal jsem to a zkusil ještě stáhnout ve fóru linkovaný obraz OpenELEC (což je miniaturní linuxová distribuce pro spuštění Kodi) pro Orange Pi Plus – a přátelé, bylo to tam! Orange Pi Plus mi přehrával 1080p video a procesor se při tom 94 % času flákal (=idle)! Tomu říkám hardwarově akcelerované přehrávání videa. Mimochodem, stejně dobře to funguje i na Raspberry Pi, takže tu Orange Pi Plus jen trochu pracně dohnal svůj vzor. I když Orange Pi má vidinu přehrávání 4k videa, to zas Raspberry Pi nemá.

Teď je samozřejmě potřeba konsolidace všech těchto střípků do jednoho funkčního celku – akcelerace GPU, VPU, podpora HW a pořádně odladěný systém. Pak bych místo výše vyfocené sbírky různě posbíraných obrazů disků měl rád jen jeden zdroj, jakým je například pro Raspberry Pi distribuce Raspbian.

Další měření

V minulém článku jsem zlomil hůl nad SATA, ale nezmínil jsem jiný důležitý rys Orange Pi Plus – gigabitový ethernet. Ten jsem změřil příkazem iperf (oproti mému notebooku) a dosáhl jsem rychlosti 700 Mbps. To považuji za velmi dobrý výsledek a nebál bych se nasadit Orange Pi Plus do domácí gigabitové sítě – brzdu by tam zjevně nedělal.

Když už jsem měl ten iperf puštěný, zkusil jsem i WiFi. Naměřil jsem 70 Mbps, ale nechci to nějak zásadně interpretovat, protože jsem něco nemusel udělat správně (třeba zrovna ta WiFi anténa mi neměla ležet na USB konektoru).

Jako poslední tu mám už dávno slíbené měření odběru elektrického proudu. Orange Pi Plus v klidu v linuxovém desktopu bere pod 600 mA (na fotce vidíte nejmenší číslo, které se mi během focení ukázalo), ale pokud mu naložíte nějakou práci, tak směle vyskočí až k 1 A, případně i mírně výš, pokud je procesor přetaktovaný o 30 %, jak je zvykem třeba u loborise. Proto je kvalitní zdroj nezbytnou podmínkou úspěšného hraní si s Orange Pi Plus.

GPIO

Málem jsem zapomněl zmínit, že GPIO piny fungují. LEDku (s rezistorem) můžete připojit třeba mezi piny 6 (GND) a 12 (GPIO1 alias PD14). Ovládat ji můžete například pomocí programu gpio, který je např. na Jacerově disku umístěn v  /usr/local/bin:

root@OrangePI:~# modprobe gpio-sunxi
root@OrangePI:~# gpio readall
 +-----+-----+----------+------+---+--OrangePiPC--+---+------+---------+-----+--+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 |     |     |     3.3v |      |   |  1 || 2  |   |      | 5v       |     |     |
 |   2 |  -1 |    SDA.0 |      |   |  3 || 4  |   |      | 5V       |     |     |
 |   3 |  -1 |    SCL.0 |      |   |  5 || 6  |   |      | 0v       |     |     |
 |   4 |   6 | IO6 PA06 |  OUT | 0 |  7 || 8  |   |      | TxD3     |     |     |
 |     |     |       0v |      |   |  9 || 10 |   |      | RxD3     |     |     |
 |  17 |  -1 |     RxD2 |      |   | 11 || 12 | 0 | OUT  | IO1 PD14 | 1   | 18  |
 |  27 |  -1 |     TxD2 |      |   | 13 || 14 |   |      | 0v       |     |     |
 |  22 |  -1 |     CTS2 |      |   | 15 || 16 | 0 | OUT  | IO4 PC04 | 4   | 23  |
 |     |     |     3.3v |      |   | 17 || 18 | 0 | OUT  | IO5 PC07 | 5   | 24  |
 |  10 |  -1 |     MOSI |      |   | 19 || 20 |   |      | 0v       |     |     |
 |   9 |  -1 |     MISO |      |   | 21 || 22 |   |      | RTS2     |     |     |
 |  11 |  -1 |     SCLK |      |   | 23 || 24 |   |      | SPI-CE0  |     |     |
 |     |     |       0v |      |   | 25 || 26 |   |      | CE1      |     |     |
 |   0 |  -1 |    SDA.1 |      |   | 27 || 28 |   |      | SCL.1    |     |     |
 |   5 |   7 |  IO7 PA7 |  OUT | 0 | 29 || 30 |   |      | 0v       |     |     |
 |   6 |   8 |  IO8 PA8 |  OUT | 0 | 31 || 32 | 0 | OUT  | IO9 PG08 | 9   | 12  |
 |  13 |  10 | IO10 PA9 |  OUT | 0 | 33 || 34 |   |      | 0v       |     |     |
 |  19 |  12 | IO12PA10 |  OUT | 0 | 35 || 36 | 0 | OUT  | IO13PG09 | 13  | 16  |
 |  26 |  14 | IO14PA20 | ALT3 | 0 | 37 || 38 | 0 | OUT  | IO15PG06 | 15  | 20  |
 |     |     |       0v |      |   | 39 || 40 | 0 | OUT  | IO16PG07 | 16  | 21  |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+--OrangePIPC--+------+----------+-----+-----+
root@OrangePI:~# gpio write 1 1 # rozsviti LED
root@OrangePI:~# gpio write 1 0 # zhasne LED

Jiný způsob ovládání GPIO je přes /sys/class/gpio_sw:

root@OrangePI:~# echo 1 > /sys/class/gpio_sw/PD14/data # rozsviti LED

Další užitečné informace naleznete například v článku na CNXSoft, pro Orange Pi byla též portována knihovna Wiring Pi. Přidávám i hezky barevný popis všech pinů:

Armbian i jiné obrazy operačních systémů přicházejí s ovladači pro displeje a další zařízení připojitelné na GPIO.

Závěr

Jak bych to celé uzavřel? Orange Pi Plus je každopádně velmi zajímavý a výborně vybavený kus hardware, který na využití svého plného potenciálu pořád ještě čeká. Software se ale vyvíjí nesmírně rychle a právě v těchto únorových dnech, rok po vydání hardware, se daří prolamovat jednu bariéru za druhou a dosahovat vyšších a vyšších met.

Už dnes je možné ho použít jako webový či jiný server, IoT bránu, inteligentní WiFi AP, multimediální přehrávač, ovládací centrum v automobilu (vizte fotky na Facebooku)  a mnoho dalších věcí. Jako náhradu desktopu bych ho ale doporučil jen klidným jedincům, neboť jeho výkon v desktopu je zatím jen o zhruba třetinu vyšší než u Raspberry Pi (plus zrychlení spouštění programů dosažitelné instalací na rychlou vnitřní eMMC paměť). Uvidíme, jestli a jak moc se tato oblast do budoucna zlepší.

bitcoin_skoleni

Rád bych ještě jednou zmínil výhodu funkčního Androidu – pro mnohé uživatele může být zajímavé místo boje s linuxovými obrazy disků prostě nastartovat Android a do něj si nainstalovat cokoliv z dvou milionů aplikací v Google Play – nejen her, ale klidně třeba i kancelářských balíků, webových prohlížečů, multimediálních přehrávačů atd. Tím by se dalo elegantně vyhnout aktuální nezralosti linuxové podpory, i kdyby třeba jen dočasně, než nám dozraje.

P.S. Bonus pro borce, kteří dočetli až sem – výše testovaný Orange Pi Plus prodávám, kontaktujte mě v případě zájmu.

Autor článku

Petr Stehlík vystudoval aplikovanou informatiku a pracuje jako vývojář webových aplikací a administrátor linuxových serverů. Provozuje vlastní server tvpc.cz.