SantyagoSantyago
Avatar

Witaj!
Blog archiwalny. Już niebawem nowy serwis!

YouTube RSS Facebook GitHub

W poprzednim wpisie sprawdzaliśmy jak Up Board działa pod kontrolą 64-bitowego systemu operacyjnego Windows 10. Dziś natomiast zobaczymy, czy Up Board wypadnie równie dobrze przy współpracy z systemami Linux.

Na chwilę obecną producent oferuje wsparcie dla systemu Ubuntu 14.04 (Trusty Tahr), Ubuntu 16.04 (Xenial Xerus) oraz udostępnia autorską dystrybucję ubilinux™, bazującą na Debian Jessie.

O ile ubilinux jest pełnym obrazem systemu operacyjnego gotowym do zainstalowania, to w przypadku rodziny Ubuntu przygotowano specjalne repozytorium z aktualizacją jądra Linux 4.4.0, pozwalającą na obsługę 40-pinowego portu rozszerzeń GPIO oraz dodatkowych podzespołów.

Warto wspomnieć, że wspierany jest również projekt Yocto w wersji 2.1, który pozwala na zbudowanie customowej dystrubucji za pomocą gotowego szablonu dla Up Board.

Ubuntu 14.04 / 16.04

Niestety na chwilę obecną nie są wspierane wyświetlacze DSI i przed instalacją, należy w BIOS wyłączyć ich obsługę zmieniając opcję Panel Support na Disabled. W przeciwnym wypadku instalator nie zdoła się uruchomić.

Wyłączenie opcji obsługi paneli w ustawieniach BIOS

Aby zainstalować Ubuntu wystarczy pobrać obraz systemu oraz wgrać go na nośnik USB (np. za pomocą polecenia dd). Podczas włączenia zasilania przechodzimy do Boot Menu klawiszem <F7> i wybieramy rozruch właśnie z nośnika USB. Dalej za rączkę poprowadzi nas znany nam już instalator.

Ubuntu 14.04 po świeżej instalacji

Jak już wspomniałem wcześniej, aby korzystać z dobrodziejstw jakie oferuje Up Board, należy zaktualizować jądro systemu. W tym celu wydajemy w konsoli następujące polecenia:

  1. # sudo add-apt-repository ppa:ubilinux/up
  2. # sudo apt update
  3. # sudo apt install linux-upboard

Po restarcie możemy zweryfikować jego poprawną instalację, przechodząc w bootloaderze do zaawansowanych opcji Advanced options for Ubuntu i wybrać jądro z dopiskiem -upboard. Po uruchomieniu systemu powinniśmy zobaczyć już nowe jądro:

Jeśli chcemy, możemy od razu odinstalować domyślne jądro dostarczane przez Ubuntu:

  1. # sudo apt-get autoremove --purge 'linux-.*generic'

Decydując się na Ubuntu jako centrum multimedialne powinniśmy zrezygnować z wersji 14.04, ponieważ posiada dość leciwy pakiet i965-va-driver 1.3.0, który nie pozwoli nam na sprzętowe dekodowanie materiału H264, HEVC/H.265 w rozdzielczości większej niż 1080p.

  1. libva info: VA-API version 0.35.0
  2. libva info: va_getDriverName() returns 0
  3. libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
  4. libva info: Found init function __vaDriverInit_0_35
  5. libva error: /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so init failed
  6. libva info: va_openDriver() returns -1
  7. vaInitialize failed with error code -1 (unknown libva error),exit

Nie ma natomiast problemu z działeniem OpenGL i OpenGL ES:

OpenGL i OpenGL ES - Ubuntu 14.04

Ubuntu 16.04 posiada już pakiet i965-va-driver 1.7.0 z pełnym asortymentem wspomagającym dekodowanie materiałów H264 oraz H265/HEVC, który radzi sobie nawet w rozdzielczości 4K:

Wynik działania programu vaapi w Ubuntu 16.04

Kodi 15.2 Isengard / Kodi 16.1 Jarvis

Domyślnie w repozytotium Ubuntu 16.04 dostępna jest wersja Kodi 15.2 Isengard. Co prawda, wykorzystuje ona sprzętową akcelerację dla metriału 4K/H264, ale nie radzi sobie zupełnie z kodekiem 4K/HEVC (pomimo dostępności na liście vaapi).

Kodi 15.2 Isengard

Kodi 15.2 Isengard - Sprzętowe dekodowanie 1080p / H264 / 60fps

Kodi 15.2 Isengard - Sprzętowe dekodowanie 4K / H264 / 30fps

Kodi 15.2 Isengard - Programowe dekodowanie 4K / HEVC / 30fps nie daje już rady

Tego problemu nie posiada Kodi 16.1 Jarvis, które możemy zainstalować bezpośrednio z autorskiego repozytorium:

  1. # sudo apt-get install software-properties-common
  2. # sudo add-apt-repository ppa:team-xbmc/ppa
  3. # sudo apt-get update
  4. # sudo apt-get install kodi

Kodi 16.1 Jarvis

Kodi 16.1 Jarvis - Sprzętowe dekodowanie 4K / HEVC / 30fps

Netflix

Decydując się na nowszą przeglądarkę Google Chrome również pod Linuksem nie ma problemu z działaniem usługi VoD od Netflix - natywnie, bez żadnych kombinacji!

Google Chrome 53.0.2785.116 i Netflix

Steam / Steam Machine

Jeśli chodzi o Steam od Valve to działa jak należy. Bez problemu uruchomimy mniej wymagające tytuły. Nie ma także problemu z wybraniem rozdzielczości 1280x720, który występuje w systemie Windows 10. Na upartego można zagrać natywnie nawet w XCOM: Enemy Unknown - oczywiście w najniższych detalach :) Rozrywka daleka jest od super płynności, ale jest możliwa.

XCOM: Enemy Unknown natywnie w rozdzielczości 1280x720

Bardziej interesującą dla mnie kwestią był temat wykorzystania Up Board jako Steam Machines. Czy strumieniowanie rozgrywki z mocniejszego sprzętu będzie równie bezproblemowe jak w przypadku działania pod Windows 10? Okazuje się, że tak! Jest tylko jedno ale...

Steam bezpośrednio po zainstalowaniu nie wykorzystuje dobrodziejstwa sprzętowego dekodowania odbieranego strumienia wideo, wykorzystując do tego celu standardowe biblioteki libavcodec.

Metal Gear Solid V (Windows) @ Up Board Steam Machine (software libavcodec)

 

Mortal Kombat X (Windows) @ Up Board Steam Machine (software libavcodec)

Rozrywka nie jest uciążliwa, ale jakość wideo jest wyraźnie niższa niż w przypadku systemu Windows 10. Również opóźnienia w wyświetlaniu obrazu są znacznie większe, bo sięgające aż 40ms - 50ms. Nie jest to może wybitnie dużo, ale w dynamicznych i szybkich grach jest odrobinę odczuwalne.

Okazuje się, że Steam nie radzi sobie z nowszymi sterownikami dla Intela, ale na szczęście jest na to magiczny sposób w trzech krokach:

1) Musimy jedynie doinstalować sterowniki w wersji 32-bitowej:

  1. # sudo apt-get install i965-va-driver:i386
  2. # sudo apt-get install libva1:i386
  3. # sudo apt-get install libva-x11-1:i386
  4. # sudo apt-get install libva-glx1:i386

2) Usunąć biblioteki dostarczone przez Steam:

  1. # rm ~/.steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libva*

3) Podlinkować zainstalowane biblioteki w miejsce usuniętych - najlepiej za pomocą gotowego skryptu fix_steam_links.sh

  1. # wget https://www.jarzebski.pl/files/upboard/steam_fix/fix_steam_links.sh
  2. # chmod +x fix_steam_links.sh
  3. # ./fix_steam_links.sh

Po tym zabiegu możemy cieszyć się zarówno lepszą jakością strumienia wideo jak i opóźnieniem na poziomie 10ms - 20ms:

Metal Gear Solid V (Windows) @ Up Board Steam Machine (VAAPI hardware decoding)

 Mortal Kombat X (Windows) @ Up Board Steam Machine (VAAPI hardware decoding)

Nie odnotowałem również żadnych problemów w sytuacji, gdy maszyną strumieniującą jest Linkus:

XCOM 2 (Linux) @ Up Board Steam Machine (VAAPI hardware decoding)

ubilinux 3.0

Producent oferuje również dedykowaną dystrybucję ubilinux 3.0 bazującą na Debian Jessie. Ubilinux zawiera wszystko to, co nam potrzeba: niezbędne sterowniki, biblioteki i specjalne aplikacje ubiworx™ IoT Framework do wykorzystania wszystkich aspektów Up Boarda. Ubilinux zawiera także "połatane" jądro w wersji 4.4.13.

Podobnie jak w przypadku Ubuntu, wystarczy pobrać obraz systemu, nagrać go na nośnik USB i postępować według zaleceń instalatora (niestety nie umożliwia on konfiguracji i rozmiaru partycji)

Domyślnym środwiskiem graficznym jest LXDE.

O ile ubilinux jest "firmowanym" systemem operacyjnym dla Up Board to spotykają go pewne problemy, które objawiają się brakiem wsparcia dekodowania H.265/HEVC w bibliotekach vaapi:

Wynik działania vaapi dla ubilinux:

Drugim istotnym problemem są kłopoty działania Steam w środowisku 64-bitowym, gdzie drzazgą w oku stanowią dostarczone sterowniki 32-bitowe. Większość więc tytułów 32-bitowych nie jest grywalna, a wykorzystanie ubilinuxa jako maszyny parowej mija się z celem, ponieważ już w rozdzielczości 1280x720 ma ogromne problemy. Nie udało mi się również zmusić do działania sprzętowego dekodowania, a na domiar złego, duże opóźnienia i artefakty wykluczają ubilinuxa do rozrywki.

Znaczne problemy i duże opóźnienia nawet w rozdzielczości 720p

W rozdzielczości 1080p rozrywka jest praktycznie niemożliwa

Pamiętajmy jednak, że ubilinux jest specyficzną dystrybucją wspierającą ubiworx™ IoT Framework i przeznaczoną do zupełnie innych celów, którym przyjrzymy się z bliska w kolejnym wpisie. Zobaczmy zatem jak Up Board wypada w naszych standardowych testach pod Linuksem.

Benchmarki

Aktualizacja firmware UEFI

Płytki Up Board posiadają wgrany firmware UEFI w wersji UPC1BMOS, który w większości wypadków będzie dla nas wystarczający. Producent jednak aktywnie przygotowuje aktualizacje, dlatego warto zastanowić się, czy takiej aktualizacji będziemy potrzebować.

Należy również pamiętać, że aktualizacje UEFI dotyczą obecnie jedynie wersji Up Board wyposażonych w 2GB lub 4GB pamięci RAM.

Na dzień dzisiejszy dostępna jest już wersja UPC1BMOX, która wprowadza następujące zmiany:

  • [UPC1BM0U] Downgrade MIPI Sequence Tool z wersji 3.0 na 2.0
  • [UPC1BM0V] Dodanie obsługi UEFI LAN Boot
  • [UPC1BM0W] Wyłączenie opcji EdkShellBinPkg
  • [UPC1BM0X] Dodanie opcji bootowania PXE

Przygotowanie nośnika USB UEFI

Uwaga! Poniższe kroki trwale usuną zawartość wybranego napędu!

Na początek musimy utworzyć sobie bootowalny nośnik USB UEFI. Możemy do tego celu wykorzystać program partycjonujący parted.

  1. # parted --script /dev/sdX mklabel gpt
  2. # parted --script --align=optimal /dev/sdX mkpart ESP fat32 1MiB 512MiB
  3. # parted --script /dev/sdX set 1 boot on
  4. # mkfs.vfat -n BIOS /dev/sdX1

Za pomocą fdisk możemy zweryfikować strukturę utworzonych partycji:

Program fdisk

Tak przygotowany nośnik montujemy w wybranej przez siebie lokalizacji i wgrywamy niezbędne pliki: bootx64.efi, grubx64.efi, Shell.efi oraz rozpakowaną aktualizację firmware.

  1. # mount -t vfat /dev/sdX1 /mnt

Drzewo katalogów i plików może wyglądać na przykład tak:

Drzewo katalogów z UEFI oraz aktualizacją firmware

Dla leniwych przygotowałem gotowy obraz USB UEFI, który należy wgrać na nośnik USB za pomocą polecenia "dd" (wymagany pendrive o pojemności minimum 512MB), a do katalogu UPDATE rozpakowany firmware.

  1. # wget https://www.jarzebski.pl/files/upboard/usbuefiboot.img.bz2
  2. # bzip2 -d bzip2 -d usbuefiboot.img.bz2
  3. # dd if=usbuefiboot.img of=/dev/sdX

Aktualizacja firmware

Uwaga! Poniższe kroki oraz zmiana ustawień CRB mogą spowodować niemożliwość uruchomienia Up Board (tzw. brick) i utratę gwarancji producenta. Upewnij się, że wiesz co robisz! Zapewnij stabilne zasilanie na czas aktualizacji i nie przerywaj procesu flashowania urządzenia. Nie ponoszę odpowiedzialności w przypadku niepowodzenia!

Kiedy mamy przygotowany nośnik USB UEFI z wybranym przez nas firmware, podłączamy go do płytki. Podczas uruchomienia wchodzimy do ustawień BIOS wciskając przycisk <DEL>, gdzie zostaniemy poproszeni o hasło: upassw0rd

Następnie uruchamiamy EFI Shell za pomocą opcji Launch EFI Shell from filesystem device:

  1. CRB Setup > CRB Save & Exit > Launch EFI Shell from filesystem device

Opcje BIOS

Jeśli nośnik USB UEFI został poprawnie przygotowany, po chwili powinniśmy zobaczyć znak zachęty w EFI Shell:

EFI Shell

Wszystkie dostępne partycje na wykrytych dyskach posiadają swoje nazwy, np.: fs1, fs2, fs3 itd. Dlatego musimy znaleźć pod którą ulokował się nasz pendrive, kolejno zmieniając partycje i listując ich zawartość. W moim przypadku jest to fs2:

Szukamy partycji z naszym upgrade firmware

Wchodzimy do katalogu UPDATE i wersyfikacyjnie sprawdzamy, czy wszystkie pliki są na swoim miejscu:

Zawartość katalogu UPDATE

Musimy zdecydować teraz, który wariant skryptu aktualizacyjnego nas interesuje:

  • go_64.nsh - jeśli nasz obecny firmware jest 64-bitowy i chcemy dalej uruchamiać system 64-bitowy
  • go_32.nsh - jeśli nasz obecny firmware jest 32-bitowy i chcemy dalej uruchamiać system 32-bitowy
  • go_64_32.nsh - jeśli nasz obecny firmware jest 64-bitowy i chcemy uruchamiać system 32-bitowy
  • go_32_64.nsh - jeśli nasz obecny firmware jest 32-bitowy i chcemy uruchamiać system 64-bitowy

Ja wybrałem wariant pierwszy, czyli go_64.nsh. Wystarczy tylko wciągnąć powietrze i go uruchomić. Po kilku chwilach powinniśmy zobaczyć taki ekran:

Proces aktualizacji firmware

Po restarcie możemy już cieszyć się nowym firmware.

Odrobina informacji

lspci

  1. korneliusz@ubilinux:~$ lspci
  2. 00:00.0 Host bridge: Intel Corporation Device 2280 (rev 36)
  3. 00:02.0 VGA compatible controller: Intel Corporation Device 22b0 (rev 36)
  4. 00:14.0 USB controller: Intel Corporation Device 22b5 (rev 36)
  5. 00:16.0 USB controller: Intel Corporation Device 22b7 (rev 36)
  6. 00:1a.0 Encryption controller: Intel Corporation Device 2298 (rev 36)
  7. 00:1c.0 PCI bridge: Intel Corporation Device 22c8 (rev 36)
  8. 00:1f.0 ISA bridge: Intel Corporation Device 229c (rev 36)
  9. 01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)

lsusb

  1. korneliusz@ubilinux:~$ lsusb
  2. Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
  3. Bus 001 Device 005: ID 0424:2530 Standard Microsystems Corp.
  4. Bus 001 Device 004: ID 046d:c52b Logitech, Inc. Unifying Receiver
  5. Bus 001 Device 003: ID 0424:4603 Standard Microsystems Corp.
  6. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

cat /proc/cpuinfo

  1. korneliusz@ubilinux:~$ cat /proc/cpuinfo 
  2. processor : 0
  3. vendor_id : GenuineIntel
  4. cpu family : 6
  5. model : 76
  6. model name : Intel(R) Atom(TM) x5-Z8350 CPU @ 1.44GHz
  7. stepping : 4
  8. microcode : 0x406
  9. cpu MHz : 1352.531
  10. cache size : 1024 KB
  11. physical id : 0
  12. siblings : 4
  13. core id : 0
  14. cpu cores : 4
  15. apicid : 0
  16. initial apicid : 0
  17. fpu : yes
  18. fpu_exception : yes
  19. cpuid level : 11
  20. wp : yes
  21. flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch ida arat epb dtherm tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms
  22. bugs :
  23. bogomips : 2879.92
  24. clflush size : 64
  25. cache_alignment : 64
  26. address sizes : 36 bits physical, 48 bits virtual
  27. power management:

Pobrór prądu

  • Idle - 3.5W - 4.5W
  • 1 CPU 100% - max. 4.8W
  • 2 CPU 100% - max. 5.2W
  • 3 CPU 100% - max. 5.7W
  • 4 CPU 100% - max. 6.8W
  • GPU 100% - max. 13W
  • GPU 100% + 4 CPU 100%  - max. 14.2W
  • Kodi @ H.264 / 1080p / 60 fps - max. 8W
  • Kodi @ H.264 / 4K / 30 fps - max. 12W
  • Kodi @ HEVC / 4K / 30 fps - max. 10W

Podsumowanie

Na plus

  • Udana i przemyślana konstrukcja, spełniająca szereg standardów
  • Kilka wariantów konfiguracyjnych do wyboru (od 370,00 do 600,00 zł netto)
  • Stockowy radiator i backplate
  • Architektura Intel x86_64
  • Obsługa systemów Windows / Linux
  • Szybka pamięć eMMC
  • Gigabitowy port Ethernet
  • 2 lata gwarancji producenta
  • Bezproblemowe odtwarzanie multimediów (Windows i Ubuntu 16.04)
  • Możliwość wykorzystania jako Steam Machine (Windows i Ubuntu 16.04)
  • Kapitalny wyświetlacz IPS
  • Możliwość konfiguracji trybu DualView
  • Dołączony Windows 10
  • Bardzo dobre wsparcie dla Ubuntu 14.04 / Ubuntu 16.04
  • Dedykowana dystrybucja ubilinux
  • Kompletne gniazdo rozszerzeń GPIO
  • Przestępny w aktualizacji firmware
  • Wsparcie dla UEFI LAN Boot oraz PXE

Na minus

  • Mało wydajny układ graficzny 3D dla nowszych tytułów
  • Problemy sterownika z niższymi rozdzielczościami w aplikacjach DirectX
  • Brak wsparcia dla CEC
  • Brak zasilacza w zestawie
  • Problemy z działaniem wyświetlacza IPS pod kontrolą systemu Linux
  • Dedykowana dystrybucja ubilinux z problemami obsługi multimediów

Sprzęt do testu dostarczył:

CSI B.Marzec, B.Marzec, A.Zasucha Sp. J.
www.up-board.pl

Komentarze Komentarze
Avatar 1
e X t 7 3 Linux x86_64 / Safari 537.36
26 September 2016 - 09:13 Warszawa

Czemu niby są problemy w działaniu Steam w środowisku 64 bit ? nie powinno [i nie ma np pod Kubuntu] być żadnych !

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 49.0
26 September 2016 - 09:53 Bytom

W Kubuntu może nie (nie sprawdzałem), problemy występują pod ubilinix, akceleracja jakby była, ale występuje ogólny brak 90% tekstur

Avatar 1
Art Android 4.3 / Mozilla Firefox 49.0
29 September 2016 - 06:13 Lublin

Jak udalo ci sie strumieniowac z maszyny z linuxem na maszyne z linuxem ?

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 49.0
30 September 2016 - 07:31 Bytom

Tu się nie ma co udawać, o ile obie maszyny są w tej samej sieci i masz włączone strumieniowanie w obu Steamach. Po prostu działa out-of-box. Chyba, że masz jakiś konkretny problem to proszę Cię o rozwinięcie pytania :)

Avatar 1
BlahFFF Windows / Mozilla Firefox 49.0
02 October 2016 - 13:47 Brak informacji

Moze nietypowe pytanie, ale nigdzie nie moge znalezc tego typu testow. Czy ktoras z tych plytek (obojetnie czy ARM czy x86) nada sie do zastosowania jako serwer www i poczty dla kilku uzytkownikow (zazwyczaj 3-4 jednoczesnie, wiec w sumie nieduzo). Przydalo by sie cos z sensownie dzialajacym SATA. Aktualnie, od ponad 10 lat za serwer sluzy po prostu wielkie pudlo ze starym, jednordzeniowym Athlonem i 1GB ramu. Calosc dziala, aczkolwiek widac juz, ze przy obsludze poczty przez roundcube\'a sprzet sie troche meczy, na akcje typu wyslanie maila, przejscie do kolejnego itp trzeba troche odczekac, przeskonowanie poczty pod katem spamu czy innego syfu tez zajmuje dluzsza chwile.

Taki Up Board pewnie sprawdzilby sie lepiej, ale brak tu SATA, zadnych porownan w tego typu zastosowaniach dla ARMow nie znalazlem.

Avatar 2
Korneliusz Linux x86_64 / Safari 537.36
02 October 2016 - 18:38 Bytom

Do Up Board jest dostępne rozszerzenie


Oryginalny obraz posiada rozmiar 800x800

Można podłączyć 1TB dysk mSATA + zawiera kartę WiFi, zegar DS1339 oraz czujnik temperatury DS18B20.

Można też podłączyć dysk przez kabel USB 3.0 OTG :)

Inne rozwiązania:

http://www.jarzebski.pl/blog/2016/02/21/raid-dla-komputerkow-sbc-dlaczego-nie.html

http://www.jarzebski.pl/blog/2016/02/06/testujemy-cloudshell-dla-odroid-xu4.html

Avatar 1
Koszsz Windows / Safari 537.36
20 November 2016 - 14:38 Pilawa

Posiada ktoś na stanie Taką płytkę?? Potrzebuje sprawdzić czy pod linuksem (ubuntu, debian) zadziała na min [gitlab](https://about.gitlab.com/downloads/#ubuntu1604) bo z odroidem C2 są problemy ;/

Avatar 1
Mnietek Windows / Safari 537.36
12 April 2017 - 00:21 Kraków

zainstalowalem kodi tak jak napisales ale zainstalowala sie wersja 17. I nie dziala akceleracja przy filamach 4K. Czy to problem z Kodi 17 czy ze mną???

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 53.0
13 May 2017 - 10:49 Bytom

Może z wersją Kodi. Sprawdzałeś to na jakim systemie?