OpenWrt Standalone Computer

Z połączenia najmniejszej płytki, na której można uruchomić Linuxa (czyli VoCore2) z malutkim interfejsem USB2TTL CH340E MSOP10 oraz z płytką TTGO VGA32, niechcący powstał mini-komputerek, który nazwałem OSC – OpenWRT Standalone Computer. System w stylu retro Unixa, który pozwala na podłączenie monitora i klawiatury PS2 (lub USB poprzez tanią przejściówkę). Zamknąłem to wszystko w obudowie przeznaczonej dla płytki TTGO VGA32 i wydrukowanej na drukarce 3D korzystając z projektu 3D użytkownika morris1972 (tak – wszystkie elementy zmieściły się do wnętrza małej obudowy przygotowanej dla samej płytki TTGO VGA32). Komputerek pozwala na pracę wyłącznie w trybie konsoli poprzez serial port (stąd tag retro) poprzez TTGO VGA32 i wyjście VGA prosto na monitor. Na tej ostatniej płytce zainstalowane jest oprogramowanie terminalowe AnsiTerminal z projektu FabGL użytkownika fdivitto.

Płytka VoCore2 zawiera w sobie dość ograniczone, ale kompletne zasoby (procesor RISC, 128MB DDR, WIFI, USB, UART, I2C, SPI, storage).

System nie jest oparty na emulacji – jedynie terminal jest emulowany.

Koszt całego zestawu (całego komputerka) to 29 dolarów:

Nie wliczałem kosztu obudowy, bo jest opcjonalny i to tylko wydruk 3D.

Komputerek nie wymaga ani jednej karty SD (zarówno dla VoCore2, jak i dla TTGO VGA32) – niezbędne oprogramowanie instaluje się bezpośrednio na płytkach pozostawiając całe 10MB wolnej przestrzeni na dodatkowe aplikacje :) . Istnieje nieco droższa wersja VoCore2 ze slotem SD, który znacząco zwiększa dostępne miejsce.

Podłączanie komputerka OSC do sieci

Podłączamy się laptopem lub telefonem do sieci bezprzewodowej dostępnej z chipu VoCore2-UID, a następnie w przeglądarce telefonu/komputera otwieramy adres: http://192.168.61.1, wpisujemy login: root, hasło: vocore i wybieramy Network -> Wireless -> pierwsza pozycja radio0 -> przycisk SCAN -> wybieramy z listy swoją sieć -> Join Network -> WPA passphrase: HasłoSwojejSieciBezprzewodowej -> Submit -> W nowym oknie: Save -> W nowym oknie: Save & Apply. Od tej pory komputerek ma połączenie z internetem i nie wymagało ono ręcznego wpisywania hasła, a wystarczyło je wkleić ze schowka w drugim komputerze.

Otworzenie portów

Aby możliwa była szybka konfiguracja VoCore2 z sieci lokalnej za pomocą aplikacji WWW luci, oraz możliwość połączenia się przez SSH z komputerkiem, należy otworzyć porty TCP i HTTP:

Network -> Firewall -> Zakładka „Traffic Rules” -> Przycisk na dole „Add” -> Name: Allow-SSH, Protocol: TCP, Destination port: 22, Destination zone: Device (input) -> Save -> Ponownie przycisk na dole „Add” -> Name: Allow-HTTP, Protocol: TCP, Destination port: 80, Destination zone: Device (input) -> Save ->W nowym oknie: Save & Apply.
Następnie należy sprawdzić przydzielone IP, rozłączyć się z siecią VoCore2 i połączyć z domowym routerem – za pomocą tego nowego adresu IP sprawdzić połączenie przez SSH i HTTP.

Z VoCore2 łączymy się przez SSH nieco dłuższym poleceniem:
ssh root@192.168.61.1 -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedKeyTypes=+ssh-rsa

Wyłączanie sieci VoCore2-UID

należy wykonywać dopiero po wcześniejszych krokach i sprawdzeniu działania luci przez sieć domową, odwiedzając stronę na adresie IP przydzielonym przez serwer DHCP.

Network -> Wireless -> SSID: VoCore2-UID -> przycisk Disable

Przesyłanie plików przez SCP

scp -O -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedKeyTypes=+ssh-rsa test.zip root@vocore:~/

Aktualizacja systemu

Aktualizacja systemu polega na pojedynczym zaktualizowaniu każdego z pakietów, który jest oznaczony jako upgradable:
for i in $(opkg --force-signature list-upgradable | cut -d' ' -f 1 | tr "\n" " "); do echo $i; opkg --force-signature upgrade $i; done

Instalacja dodatkowego oprogramowania


opkg update --force-signature
opkg list
opkg install htop mc cfdisk

Można też dodać alias wymuszający korzystanie z pełnej bazy pakietów opkg:
echo 'alias opkg="opkg --force-signature"' >> /etc/profile

Dość słabo działa opcja search, dlatego najlepiej grepować główną listę aplikacji:
opkg list --force-signature | grep htop

Połączenie przez serial port

Takie połączenie można nawiązać po odłączeniu zasilania dla TTGO VGA32 i po wpięciu się kablem USB->microUSB do drugiego wejścia, które jest podłączone do interfejsu USB2TTL. Zasilanie VoCore2 oczywiście musi pozostać aktywne. Połączenie wykonuję aplikacją picocom w systemie Enterprise Linux, ponieważ aplikacja ta nie wymaga dodatkowych kroków. Minicom oczywiście również działa, jednak wymaga dodatkowej konfiguracji. Przykład połączenia przez picocom:

picocom /dev/ttyUSB0 --baud 115200 --omap crcrlf --echo

Łączenie przez SSH z wykorzystaniem kluczy

polega na przesłaniu pliku authorized_keys do katalogu /etc/dropbear/:

scp -O -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedKeyTypes=+ssh-rsa ~/.ssh/authorized_keys root@vocore:/etc/dropbear/authorized_keys

Połączenie przez SSH jest możliwe tylko dla użytkownika root.

Usunięcie automatycznego logowania na konto root

Ponieważ OSC ma być pełnoprawnym komputerem domowym ;) po wcześniejszej zmianie hasła poleceniem passswd, należy usunąć automatyczne logowanie na konto root i wymusić wyświetlenie monitu o login poleceniem:
uci set system.@system[0].ttylogin='1' && uci commit system

Dodanie nowych użytkowników

OpenWRT jest systemem single-user, ale można dodać kolejnych użytkowników instalując dodatkowe pakiety. Niestety dostęp przez SSH będzie możliwy, tak jak wspominałem wcześniej, tylko z poziomu konta root.
opkg update && opkg install shadow-useradd shadow-su
useradd -m uzytkownik
passwd uzytkownik
opkg install sudo
echo "uzytkownik ALL=(ALL) ALL" >> /etc/sudoers

po dodaniu użytkowników zbędny pakiet można usunąć:
opkg remove shadow-useradd

Ustawienie strefy czasowej Europe/Warsaw

uci set system.@system[0].timezone='CET-1CEST,M3.5.0,M10.5.0/3'
uci set system.@system[0].zonename='Europe/Warsaw'
uci commit system && reboot

Zmiana nazwy hosta

uci set system.@system[0].hostname='new-hostname' && uci commit system && reboot

Retro terminal

Aby wytworzyć efekt pracy terminali z lat 70-tych należy zmienić prędkość terminala na 300bps wykonując polecenia:
opkg install coreutils-stty
stty -F /dev/ttyS2 ispeed 300
a następnie szybko zmienić w prędkość na 300bps również w ustawieniach aplikacji AnsiTerminal zainstalowanej na płytce TTGO VGA32. W ten sposób uzyskamy bardzo płynne przemieszczanie się kursora i wypełnianie tekstu linia po linii, dzięki doskonałej emulacji terminala wykonywanej przez oprogramowanie użytkownika FabGL.

Sytuacje awaryjne

Jeżeli chcemy przywrócić ustawienia fabryczne, wystarczy uruchomić polecenie:
firstboot

Jeżeli VoCore2 jest zbrickowany i niemożliwe jest uruchomienie powyższego polecenia, to należy wysłać nowy firmware za pomocą protokołu kermit. Poniżej przykład takiej wysyłki wykonany w systemie Enterprise Linux (Red Hat / Fedora / Alma / Rocky / Euro) – po wcześniejszym połączeniu komputera z VoCore2 poprzez konwerter USB2TTL:

sudo dnf install -y ckermit
cat << EOF > ~/.kermrc
set line /dev/ttyUSB0
define sz !sz \%0 > /dev/ttyUSB0 < /dev/ttyUSB0


set speed 115200
set carrier-watch off
set prefixing all
set parity none
set stop-bits 1
set modem none
set file type bin
set file name lit
set flow-control none
set prompt "Kermit> "
EOF
kermit

a następnie w kermit wystarczy wykonać polecenie:
send /sciezka/do/pliku/20200811.19073.bin

Informacje dodatkowe

Autor płytki VoCore2 prowadzi bardzo interesującego bloga, na którym od lat systematycznie przedstawia możliwości urządzenia oraz ciekawe rozwiązania, które można wykonać z tą płytką (software'owe, jak i hardware'owe). Możliwości zastosowania tego zestawu są wręcz nieograniczone, korzystając z bogatej bazy aplikacji dla OpenWRT.

Dodaj komentarz

This site uses Akismet to reduce spam. Learn how your comment data is processed.