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.
Miten sitä käytetään?
Normitapaus, lyhyesti kuvattuna:
- Tunkataan SD-kortille jokin Raspberry Pi -kelpoinen image
- Jos halutaan pulata näytön ja näppiksen kanssa, tökätään sopivilla adaptereilla näyttö kiinni HDMI-liitäntään ja näppis USB:hen
- Tökätään SD-kortti lukijaan
- Annostellaan sähköä PWR-liittimeen sopivasta microusb-liitännällä varustetusta verkkolaitteesta
- Tulee kuva ja laite boottaa. Tehdään kaikkea maagista ja vaikeaa.
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):
- Tunkataan SD-kortille jokin sopivan pienikokoinen Raspberry Pi -kelpoinen image
- Editoidaan SD-kortille ilmiintyviä tiedostoja (lähinnä konfiguroidaksemme WLAN-asetukset)
- Tökätään SD-kortti lukijaan
- Annostellaan sähköä PWR-littimeen sopivasta microusb-liitännällä varustetusta verkkolaitteesta
- Laite boottaa ja ähistää. Lähestytään korttia verkon yli.
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!
- SD-kortti Pi Zero W:hen ja sähkökaapeli kiinni.
- Odotellaan semmoinen pari minuuttia aivan rauhassa.
- Ehkä vähän pidempäänkin, katsellaan että se kiihkeästi paukuttava LED siellä kortilla vähän rauhoittuu
- Kun alkaa olla selvästi rauhallisempaa, tökätään USB-kaapeli kiinni välille Zero W:n USB -> Windows-kone.
- RNDIS asentuu tai sitten ei. Jos ei, ohjeita yläpuolen linkistä
- Kun RNDIS-verkkokortti on tavalla tai toisella ilmestynyt koneeseen, kokeillaan pingata Zero W:tä nimellä "raspberrypi.local"
Ja jumantsuka jos sieltä tulloo pingiin vastaus, ollaan jo voiton puolella.
- Avataan Putty tai muu SSH-kelpoinen terminaaliohjelma ja otetaan yhteyttä siihen "raspberrypi.local"-nimiseen koneeseen, porttiin 22.
- Oletuskäyttäjätunnus on "pi", salasana "raspberry"
- Kun on päästy konsolille, voidaan "ifconfig"-komennolla katsella että onko wlan saanut IP:n.
- Jos on, voidaan putty sulkea ja avata yhteys suoraan wlanin läpi
Ja nyt meillä onkin sitten headless-pi zero -kone olemassa joka toimii mukavasti mistä hyvänsä. Seuraavaksi nyhertelemme seikkailupelejä ja semmoista.
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):
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.