Przejdź do głównej zawartości

Piwny czy nie - geek


Piszę to gwoli przestrogi. Dla wielu osób nie jest tajemnicą, że zawodowo wyżywam się w dziedzinie oprogramowania. Ostatnio modne komputerki typu "single board computer" nie ominęły również mnie, a mając dobre doświadczenia z Raspberry Pi nie mogłem sobie odmówić spróbowania czegoś nowego - Orange Pi w wersji PC, czyli "komputer za $15".

Softwarez

Tu się zaczyna problem, w dużej mierze wspólny dla wszystkich SBC opartych o SoC Allwinner - brak wsparcia dla sprzętu w kernelu linuksa. Dużo lepiej jest w przypadku procesorów A10, A20, A31 i pokrewnych, ale H3 to jest nowość i w głównej linii kernela żadnego wsparcia dla niego nie ma. Nie ma i już. Jest jedna działająca wersja (3.4), do której heroicznym wysiłkiem jednego użytkownika (!) są dorabiane kolejne moduły wspierające hardware, ale nie zmienia to faktu, że wszystko kręci się wokół jednego punktu, jedynych kompilowalnych i uruchamialnych źródeł jądra systemu. Gość robi kolejne dystrybucje z tym jądrem i chwała mu za to, bo dzięki temu w ogóle cokolwiek działa, ale do "oficjalnego" wsparcia ze strony dystrybucji jak np. jest to z Raspberry Pi i Archem jest bardzo, bardzo daleko. Jest jeszcze jakiś Android, ale tym się zainteresuję dopiero wtedy, gdy będę chciał zrobić sobie z OPi set top boxa do telewizora - do czego w ogóle ten SoC został stworzony. Taka "chińska inżynieria".

Systemz

Z systemem jest tam źle. Jest bardzo źle. Jak jest źle niech będzie dowodem to, że z fabrycznymi ustawieniami dostarczonymi przez producenta procesor się przegrzewa i wyłącza rdzenie gdy jest idle (!) - bez radiatora nie ma mowy o żadnym działaniu, a bez wentylatora na procesorze o jakimkolwiek obciążaniu go. O co chodzi? Oczywiście - o pieniadze. Czy jak kto woli, o chińską pazerność. Otóż spoglądając na stronę producenta SoC nie znajdziemy tam ani jednego wspomnienia o prędkości taktowania procesora, jednak producent SBC twierdzi, że jest to przezajebiste 1.6GHz, woo-hoo, tyle wyciągnąć z Cortexa A-7! Tylko właściwie... Jak? Ano, przez danie mu takiego napięcia, żeby mu w pięty poszło. No i idzie, tak że się procesor smaży nie robiąc nic, a przy jakimkolwiek większym obciążeniu w obudowie temperatura może dojść do 100C. Nie mamy pańskiego płaszcza i co nam pan zrobi?

Dłuższe eksperymenty jednego użytkownika wykazały, że istnieją bezpieczne i rozsądne ustawienia, ale wtedy będzie to marne 1.2GHz, a i tak 4-rdzeniowy H3 polegnie w porównaniu z 2-rdzeniowym A20. No tak, ale A20 został zaprojektowany do tabletów, a H3 do set top boxów. Porównaj moce obliczeniowe komputera i pralki, nawet najbardziej nowoczesnej.

Hardwarez

Kolejny przykład "chińskiej inżynierii". Zgodnie z panującą modą Orange Pi PC "ma wszystko", USB, Ethernet, GPU, HDMI, audio, mikrofon, itd, itp. Tylko że do połowy tych rzeczy nie ma wsparcia. Rozsądnego wsparcia, bo parę binarnych blobów z firmware działających z jedną (!) wersją jądra to nie jest wsparcie producenta. Co mi po GPU (Mali400), skoro pod linuksem to nie działa?! Co mi po wypasionym 40-pinowym GPIO, skoro nie działa SPI? Jak pogrzebię, to będę miał niski pobór prądu, ale na baterię ta płytka działać nie będzie. I tak możnaby wyliczać, ale nie o to chodzi. Bo w efekcie dostajemy grzejący się "compute unit" o małej mocy, który mógłby być fajny z powodu niskiej ceny, a w efekcie jest żałosny. O szczególnych wymaganiach względem zasilacza (dobrze działa właściwie tylko z fabrycznym) i karty SD (tylko dobre karty class 10) nie wspominam już, żeby nie kopać leżącego.

Co teraz, wyrzucić?

Nie no, bez przesady, te 115 złotych piechotą nie chodzi... Ale sprzęt będzie używany na razie w trybie headless, do kontrolowania paru urządzeń IoT. A mógłby sporo więcej za tę samą cenę. Jeżeli ktoś nie ma ochoty spędzać dużo czasu na doprowadzaniu szpeju do działania, to proponuję jednak Raspberry Pi.

Na marginesie - been there, done that. Około 15 lat temu podobne gimnastyki trzeba było uprawiać, żeby doprowadzić do działania z linuksem zwykłe komputery PC.

Komentarze

Popularne posty z tego bloga

Programowanie ESP8266 w C/C++

ESP8266 powoli ustępuje miejsca swojemu następcy ESP32, ale jest to proces wyjątkowo powolny. Może to ceny tak samych chipów jak i płytek developerskich to powodują (niewiele jest gotowych modułów w cenie poniżej $10 z przesyłką), a może rozbudowany ekosystem bibliotek do ESP8266. W każdym razie ze starszym bratem ESP32 jeszcze długo będziemy mieć do czynienia, zwłaszcza że jest to wciąż jedna z najlepszych opcji jeżeli chodzi o mikrokontrolery.

ESP8266 można programować w Lua lub w Pythonie, jednak najlepszym wyjściem jest zaprogramowanie własnego firmware w C++ lub w C - daje to największą kontrolę i zapewnia najlepszą wydajność. Jakie mamy do tego możliwości? Od najłatwiejszej do najbardziej skomplikowanej.
ESP8266 core dla Arduino Link: Github

To jest najprostsze rozwiązanie, implementacja ramówki Wiring dla ESP8266. Jakkolwiek można tę obsługę zainstalować w Arduino IDE, to nie ma to większego sensu, bo nie da się tego edytora używać do niczego poważniejszego. Pisze się to w nor…

RetroPie, bo mi się dziecko alienowało

Dziecko moje najdroższe alienowało mi się siedząc przed komputerem w swoim pokoju. Nie żebym jej zabraniał, ale skoro ma grać, to niech gra przy nas, w salonie. Przynajmniej będziemy wiedzieli w co gra.

Wymagane hardware:

Raspberry Pi 2 Mod. B,karta SD min. 8GB,gamepad na USB,telewizor
Opcjonalne w zależności od konfiguracji:

karta WiFi na USBklawiatura na USBpendrive czy inny storage na USB Jak już to wszystko mamy, to możemy robić. Zajmie to parę godzin wszystkiego.
RetroPie Obraz RetroPie pobieramy ze strony projektu, to będzie ten którego nazwa kończy się na rpi2.img.gz. Następnie obraz ten trzeba rozpakować i nagrać w standardowy sposób na kartę SD. Wkładamy kartę do RPi, podłączamy pada do USB, bootujemy naszą zabawkę i zaczynamy konfigurowanko jak zwykle z RPi (z podłączonego klawikordu i na telewizorze, albo po ludzku, po zalogowaniu przez SSH), czyli najpierw używając skryptu raspi-config rozciągamy system plików na całą kartę, reboot, pełna aktualizacja systemu, być może reboo…

RetroPie, ROM-y z USB

Po wrzuceniu kilku ROM-ów na PSX okazało się, że karta SD z której bootuje się system jest za mała na to, żeby je tam trzymać. Inne opcje jakie przyszły mi do głowy to trzymać je na pendrive albo zamontować katalog z NAS po Sambie. W pomieszczeniu gdzie stoi telewizor WiFi działa co najwyżej jako-tako (nikt nie pomyślał o kablaturze podczas budowy...), więc na początek pójdzie 8GB pendrive. Powinno wystarczyć na parę dni.
Albo rybka, albo pipka RetroPie ma bardzo fajny ficzer automatycznego transferu ROM-ów po podłączeniu storage do USB. Jakkolwiek bardzo miłe i user friendly, to zupełnie nie będzie przydatne w momencie, gdy będziemy tam trzymać ROM-y. W końcu jak będziemy chcieli sobie coś tam wgrać, to i tak trzeba będzie wyjąć pendrive i włożyć go ponownie. Zaczynamy więc od wyłączenia tego wodotrysku, odpalamy retropie_setup.sh i na ekranie głównym wybieramy "Setup / configuration", a następnie "USB ROM Service":
i dalej "Disable USB ROM Service": Wyd…