Raspberry Pi Zero W ja minimalistinen seikkailupelikone

Raspberry Pi Zero - ja varsinkin malli W (wifi) on pikkuriikkinen wlan-kelpoinen tietokone. Kortilta löytyy SD-kortinlukija, HDMI, Bluetooth 4.0 ja USB-liitäntä (sekä toinen USB virransyöttöä varten). Kortti maksaa peräti kymmenisen euroa, joten hupi on halpaa. Tämän sivun tarkoituksena on toimia Windows-käyttäjän muistilappuna ja ohjeena siitä miten kortin kanssa pääsee alkuun.

Oma hinkuni kortille oli se, että josko sais aikaan tikkuaskin kokoisen tietokoneen jossa vois ssh:n läpi pelata vaikkapa Infocomin tekstiseikkailupelejä. Sivu on vielä vaiheessa, mutta se "getting started" -osasto on saatu jo siedettävästi hanskaan. Lisää sitä mukaa kun projekti etenee, palaan aiheeseen myöhemmin puheeni aikana.

Liitännät

Koska linux-käyttäjät ovat teknoitsetyydyttäviä idiootteja, yksikään aloittelijaosaston veppisivu ei kerro mitään tärkeää, vaan aloittaa hirvittävällä määrällä speksiä ja ooh-aah-ihmeellistä-IoT-hehkutuksella ja taivaanrannan maalailulla. Ei kiinnosta. Haluan että se toimii. Mistä se sähkö kortille laitetaan? Kuvassa alla.

Liitännät

Miten sitä käytetään?

Normitapaus, lyhyesti kuvattuna:

Miten sitä käytetään? - osa 2

Kukapa sitä haluaisi käyttää kuten tavallista tietokonetta? Siinähän on WLAN ja kaikkea. Eikö sitä saa jotenkin hauskemmin käyttöön?

Kiitos kun kysyitte. Seuraavassa lyhyesti nk. headless-käyttö (kortille ei tuupata näyttöä eikä näppistä, ja silti pitäisi saada bootattua):

Ja seuraavassa sitten sama tarkemmin vaihe vaiheelta.

Käyttöjärjestelmä-image SD-kortille

Imuroidaan viimeisin Raspbian Lite. URL alla.

https://downloads.raspberrypi.org/raspbian_lite_latest

Sieltä puksahtaa zip-paketti. Puretaan zip-paketti sopivaan hakemistoon. Hakemistoon ilmestyy .img -päätteinen levynkuva (tätä kirjoitettaessa tulla tuiskahti "2017-03-02-raspbian-jessie-lite.img" -niminen tiedosto.

Tämä levynkuva pitäisi nyt saada tuupattua microsd-kortille. Windowsille on kätevästi olemassa Win32DiskImager-niminen ohjelma jolla levynkuvan voi jyrätä sopivalle kortille. Kortin minimikoko on 4Gt:n luokkaa - käyttis itse ahmii kortilta vähän rapsan 2Gt. Sen mukaan miten sitä tilaa sitten tarvitsee, voipi valita mieleisensä kortin - omassa ensisäädössä käytin 16Gt korttia. Ensimmäisessä bootissa Raspbian jyräilee itsekseen koko kortin lopun tyhjän tilan käyttöönsä.

https://sourceforge.net/projects/win32diskimager/

Em. ohjelmalla valitaan levynkuva sieltä mihin se zip-paketti purettiin ja valitaan levyasema jossa se sd-kortti on. Painetaan notta write ja odotellaan. Jos kaikki menee kivasti, on meillä boottikelpoinen image tökättynä sd-kortille.

Kikkaillaan!

Ja nyt seeeis! Ei viedä sitä korttia sinne Pi Zero W:lle vielä ollenkaan!

Nyrhitään valmistunut SD-kortti ulos Windows-koneen kortinlukijasta. Tökätään se välittömästi takaisin kortinlukijaan. Windows huomaa muutoksen levyn sisällössä. Siellä on FAT32-filesysteemi, joka näkyy ihan tiedostoina ja sen semmoisina aivan Windowsistakin käsin. Seuraa konfistiedostojen editointia ENNEN kuin korttia annetaan Pi Zero W:n ajettavaksi.

Editointia varten tarvitaan jokin editori joka osaa Unix-tyyppiset rivinsiirrot (pelkkä LF, kun Windows käyttää CR-LF:ää). Notepad++ on ihan käypäinen. Asennetaan se (tai jokin muu tekstieditori joka sen pelkän LF:n hanskaa).

https://notepad-plus-plus.org/download/v7.3.3.html

Sitten editeerataan tiedostoja sd-kortin juuressa seuraavilla tavoilla:

1. Luodaan sd-kortin juureen tiedosto wpa_supplicant.conf

...jonka sisälle laitamma seuraan näköiset rivit:

country=GB	
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid="Oman WLAN-verkkosi SSID"
psk="Oman WLAN-verkkosi WPA- tai WPA2-salasana"
}	

Juu, älkää kysykö pitääkö laittaa country:yn jotain muuta. Wifi regulatory domain. Ei kiinnosta, tuntui toimivan sorvaamatta mitenkään esim. FI:ksi tai US:ksi.  "ssid" - ja "psk" -kenttiin tietty oman verkkosi ssid:t ja salasanat että Pi Zero W osaa siihen sitten kirjautua. Muistetaan että talletetaan siinä unix-muodossa, pelkkä LF. Notepad++:n alareunassa jossain näkyy että ollaanko LF- vai CR+LF-muodossa.

2. Luodaan sd-kortin juureen tiedosto ssh

Kyllä, ihan vaan tyhjä tiedosto jonka nimi on 'ssh', ilman mitään tiedostopäätettä. Kun se notepad++ siinä on auki, niin talletat vaan tyhjän tiedoston em. nimellä sinne kortille, hyvä tuli. Tällä on varmaan jotain tekemistä sen kanssa että ssh sitten toimisi. Dunno lol, ooämgee weeteeäf bbq.

3. Editoidaan sd-kortin juuresta tiedostoa config.txt

Tiedoston sisällä on pirusti poiskommentoitua tavaraa. Johonkin riville (ei oo paljo väliks mihin) sopivasti lisätään teksti

dtoverlay=dwc2

(ovelat miehet etsivät sieltä sen dtoverlay-kohdan joka on kommentoitu pois, ja lisäävät tekstin siihen seuraavalle riville. On niin kuin siistimpää sitten. Sivuhuomio: dcw2 on mokkula joka mahdollistaa sen että Pi Zero W:n USB-liitäntä voipi vaihtaa tilaansa master- ja slavemoodin välillä. USB OTG (On The Go), kertovat. Tämän ansiosta esim. Windows-koneemme näkee Zeron sitten liitettynä USB-laitteena ja osaa etsiä sille ajureita. Normitilassa Zeron USB on master-moodissa jolloin Zeroon voidaan liitellä näppiksiä ja sen semmoisia.)

4. Editoidaan sd-kortin juuresta tiedostoa cmdline.txt

Siellä onkin vain yksi, pitkähkö ritirimpsu. Etsitään siitä riviltä kohta jossa lukee 'rootwait'. Ja lisätään sen perään välilyönti sekä teksti

modules-load=dwc2,g_ether

Kuten arvata saattaa, tällä on tekemistä sen edellä mainitun OTG:n kanssa - mitä ilmeisimmin latailemme verkkotukea USB:n päälle. Editoinnin jälkeen ritirimpsu abouttiarallaa näyttääpi tältä:

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline 
fsck.repair=yes rootwait modules-load=dwc2,g_ether quiet init=/usr/lib/raspi-config/init_resize.sh

Edellinen on vain esimerkki, ei paljon kandee kaikkea kopioida. Mutta että suunnilleen tuonne päin. Ja näin on sitten headless-edittimme valmis, ja kohta päästään korttia boottaamaan. SD-kortti ulos atk:sta ja viedään se sinne Pi Zero W:n lähelle.

Nytkö? Joko? Kohtako?

No niin sitä luulis niin. Tässä on vielä pari mutkaa matkassa jos haluaa yhtään esim. debugata vähän etukäteen tai muutoinkaan - kyllä se ropponen sinne wlaniin kiinnittyy ja säkällä toimiikin, mutta jos haluaa vähän enemmän temputtaa niin pitäis tehdä kaksi asiaa sille Windows-koneelle jota tässä on käytelty.

1. Bonjour. Just niin. Se Applen pilipali-autokonfigurointijuttu. Tätä tarvitaan jos kortille halutaan puhua RNDIS-protokollan läpi. Josta seuraavassa enemmän.
https://support.apple.com/kb/DL999?viewlocale=en_US&locale=en_US

Bonjour tarvitaan vain sen takia, että RNDIS:in läpi ollaan APIPA-osoitteilla kiinni kortissa, ja Bonjour selvittelee meille mikä sen kortin APIPA-osoite on kun sitä kiljutaan nimellä joka päättyy '.local'. Kyllä. Yhden ainoan nimen takia. No, ei se niin iso softa ole eikä tarvii asentaa iTunesia, mikä onkin pieni ihme (ja jos koneessasi on iTunes, ylläri, Bonjour on siellä jo sitten mukana niin että unohda tämä vaihe). On myös mahdollista että uudemmat Windowsit (8, 10) tukevat Bonjouria - itse olin pakotettu asentamaan, koska Windows 7.

2. RNDIS. Remote Network Driver Interface Specification. Tämä luopi Windows-koneeseen verkkokortin joka oikeasti juttelee USB:n yli. Näyttää Windowsissa ihan tavan verkkokortilta. Saattaa syntyä aivan automaattisesti kun Pi Zero W:n oikea USB-portti tökätään windows-koneeseen (kunhan se Pi Zero W on bootannut).

http://developer.toradex.com/knowledge-base/how-to-install-microsoft-rndis-driver-for-windows-7

Itselläni RNDIS asentui itsestään kun tuikkasin Pi Zero W:n USB-portin kiinni Windows-koneeseen. Pitkään sitä asennusta hinkattiin mutta lopulta RNDIS-verkkokortti koneeseen. Jos ei ilmesty itsekseen, ylläolevasta lukemaan ohjeita.

No joko viimein?

No nyt!

Ja jumantsuka jos sieltä tulloo pingiin vastaus, ollaan jo voiton puolella.

Ja nyt meillä onkin sitten headless-pi zero -kone olemassa joka toimii mukavasti mistä hyvänsä. Seuraavaksi nyhertelemme seikkailupelejä ja semmoista.

Pi Zero W

Pienen /etc/motd -editin jälkeen näyttääkin jo tältä (kuten havaita saattaa koneeseen on yhteys sekä RNDISin avulla USBstä että WLANin läpitte toisesta atk:sta):

Login 

Seikkailupelit koneeseen

(tästä sitten jatketaan kun ehditään)

Frotz

Frotz on infocom-tiedostomuotoja ajeleva moottori. Käytännössä siis ohjelma joka lukeepi Infocom-seikkailupelien tiedostoja ja ajelee niitä sitte milloin minkäkin käyttöjärjestelmän päällä. Kun meillä nyt onkin olemassa ssh-terminaali joko sen RNDIS:in tai WLANin läpi siihen Pi Zero W:hen, voimme asentaa Frotzin sieltä laitteen omasta bash-hoputteesta äldekätevästi komennolla

sudo apt-get install frotz

Hetken se hinkkaa ja sähläilee riippuvuuksiensa kanssa, jonka jälkeen se onkin kätevästi asentunut.