24. joulukuuta 2010

Teknologiavuosi 2010 tiivistettynä

Tähän aikaan vuodesta kaikkien pitää kirjoittaa listaa vuoden merkittävimmistä tapahtumista. Luodaan katsaus siis vuoden 2010 tapahtumiin teknologiasektorilla suomalaisittain. Tapaukset ovat merkittäiviä lähinnä siksi, että ne sattuivat muistumaan kirjoittajan mieleen. Kommenteissa voi antaa risuja, jos ja kun jotain tärkeämpää on jäänyt listasta pois.

Nokian uusi suunta
Nokian yritykset tunkeutua Yhdysvaltain markkinoille ovat toistaiseksi kantaneet laihoja tuloksia. Nyt johtoon lopultakin haetaan diversiteettiä rapakon takaa. Keski-ikäisten suomalaisten insinöörien rinnalle hankittiin ensin Microsoftilta Stephen Elop ja heti perään markkinoinnista vastaamaan Jerri DeVard, joka oli mm. vastaamassa Obaman presidentinvaalikampanjan rahoituksesta. Toivottavasti tuollaisella huippuosaamisella Nokiasta saadaan hiottua vieläkin kilpailukykyisempi.

Tabletti
Applen tulevasta tabletti-PC:stä oli kuultu huhuja jo vuosia. Tablettikonsepti sinänsä ei ollut mitään uutta; Microsoft oli flopannut omilla yrityksillään jo lähes kymmenen vuotta aikaisemmin. Applen kuitenkin odotettiin tuotteistavan sen tavalla, mikä vetoaisi kuluttajiin ja nostaisi tabletit miniläppärien rinnalle kilpailemaan paikasta liikkuvaisten ihmisten internetpäätelaitteena. Ipad tuli ja sai monien Applen kannattajien suosion, mutta vielä on vaikea arvioida tuleeko siitä todellinen hitti. Apple ei ole julkaissut myyntilukuja, mutta yleisesti sitä arvioidaan myydyn puolen vuoden aikana useampia miljoonia kappaleita.

Android
Vuoden alussa Androidin osuus mobiilikäyttöjärjestelmämarkkinoista oli alle 5%. Open Source -aktivistit uskoivat sen nousuun, mutta muilla oli epäilyksensä. Nokia esimerkiksi on täysin sitoutunut omiin Meego ja Symbian-käyttöjärjestelmiinsä, eikä mitään viitteitä Androidiin siirtymisestä ole vieläkään. Vuoden edetessä Android kuitenkin kasvatti markkinaosuuttaan suurin harppauksin ja vuoden lopussa se on lähes 12% osuudellaan noussut varteenotettavaksi kilpailijaksi Applen, Research in Motionin ja Nokian tuotteille. Androidilla on niin hyvin jalka oven välissä kännykkäpuolella, että Google on jo kääntänyt katseensa tabletteihin ja on haastamassa Applen siellä seuraavaksi.
Source: StatCounter Global Stats - Mobile OS Market Share



Microsoft
Mitä Microsoft teki tämän vuoden aikana, mikä olisi mainitsemisen arvoista? Eipä juuri mitään ja juttu oikeastaan piileekin siinä. Microsoft edelleen täydellisesti dominoi työasematietokoneissa sekä käyttöjärjestelmän että toimistosovellusten saralla. Työasemat ovat kuitenkin tavallaan menneisyyttä. Tällä hetkellä teknologian etulinjat ovat muualla: sosiaalisessa mediassa, sijaintipohjaisissa palveluissa, hakukoneissa, mobiililaitteissa. Mitä näillä on yhteistä? Kaikissa niissä Microsoft on altavasaaja. Yrittämisen puutteesta redmondilaisia ei kuitenkaan voi moittia, sillä Bing itse asiassa valtaa hakukonemarkkinoita Googlelta. Lisäksi onnettomasti nimetty Windows Phone 7 Series on kerännyt kehuja niiltä harvoilta, ketkä ovat sillä varustettuja laitteita päässeet ihailemaan. Takamatka on tosin pitkä Windows Mobilen kanssa sössittyjen vuosien jälkeen. Kaikki muistamme, mitä tapahtui kun Microsotilla ei ollut kilpailijoita, joten uusi markkinoista taisteleva softajätti tuntuu jälleen uudella tavalla mielenkiintoiselta ja elinvoimaiselta. Myös yhtiön PR-osasto on onnistunut kiillottamaan 1990-luvun lopun jälkeen ryvettynyttä imagoa, milloin firma nähtiin lähinnä öykkärimäisenä monopolina.


Oracle
Nyt kun Microsoft on muuttanut tapojaan ja SCO käräjöi itsensä konkurssiin Open Source -yhteisö tarvitsi uuden sylkykupin. Oracle ilmoittautui vapaaehtoiseksi ensin MySQL-kaupoillaan ja myöhemmin Sunin ostamisen jälkeisillä toimenpiteillä. Oraclen nihkeä suhtautuminen Open Sourceen oli tiedossa jo ennen Sunin ostamista, mutta silti sitä seuranneiden tapahtumien suoraviivaisuus ja nopeus yllätti useimmat. Sunin Open Source -strategiasta vastanneet henkilöt irtisanottiin välittömästi ja OpenSolaris-projekti lakkautettiin. Muutamaa kuukautta myöhemmin Oracle alkoi haastamaan Android-puhelinten valmistajia käräjille väittäen, että Googlen Androidille tekemä Dalvik-virtuaalikone loukkaa Oraclen nykyisin omistamia patentteja. Hätäisimmät ovat ehtineet epäilemään jo koko Javan tulevaisuutta nyt kun sen ohjat ovat Oraclen hallussa. OpenOffice-väki teki omat johtopäätöksensä ja perustivat uuden projektin eivätkä enää toimi Oraclen alaisuudessa. Uusi uljas LibreOffice on sitä varten perustetun The Document Foundationin hallinnoima OpenOfficen haarautuma.

Suomalaiset pelitalot
2010 oli mahtava vuosi suomalaiselle peliteollisuudelle. Max Paynella kultaa vuollut Remedy Entertainment julksisi viimein vuosia hiotun Alan Wake -videopelitrillerinsä. Vastaanotto oli suosiollinen ja pelkästään Iso-Britanniassa peliä myytiin ensimmäisen kahden viikon aikana lähes 150 000 kappaletta. Vuoden lopulla TIME Magazine valitsi Alan Waken vuoden peliksi.

Vielä Remedyn suoritusta korkeammalle olen valmis rankkaamaan Rovio Mobilen suorituksen suoranaisen Angry Birds -manian luomisessa. Peli keikkui viikkoja Iphonen maksullisten ohjelmien myyntitilastojen kärkipaikalla käytännössä jokaisessa maassa ja sen jälkeen valloitti Androidin maksuttomalla mainosrahotteisella versiolla. Pelin huumori on uponnut kännykkäkansaan ja pelin lisäksi oheistuotteet tekevät kauppaansa. Jopa puheita loikkaamisesta elävien kuvien puolelle on kuultu ja vuoden kruunasi pelin fanien järjestämä kansainvälinen Angry Birds -päivä joulukuussa. Harvat pelit nousevat tämän kaltaiseksi popkultturi-ilmiöksi ja siinä onnistumisesta on pakko antaa tunnustusta Roviolle.

Hyvää joulua ja onnekasta uutta vuotta lukijoille.

21. joulukuuta 2010

JAMK XMEGA

Tänä syksynä opinto-ohjelmaamme kuului kurssi, jonka kryptinen nimi oli Industrial and Quality Management. Käytännössä kurssilla oli tarkoitus suunnitella elektroninen vimpain ja valmistuttaa sitä muutama kappale teollisesti. Esittelemästäni tuotteesta en itse voi ottaa lainkaan kunniaa. Jaoimme ryhmän kahteen "firmaan", joista omani epäonnistui yrityksissään saada toimiva prototyyppi valmiiksi ennen deadlinea. Sen sijaan Firma 1 sai ansiokkaasti omansa toimimaan ajoissa ja pääsimme heidän mukanaan 3K-tehtaalle Savonlinnaan seuraamaan miten sen teollinen valmistaminen sujuisi.


Xmegalomania
Firma 1 päätti kunnianhimoisesti suunnitella kehitysalustan käyttäen Atmelin uuta Xmega-mikro-ohjainta. Sen suunnittelusta vastasi pääasiassa Tomi Leinonen, muun ryhmän keskittyessä mm. softaan ja lisälaitteisiin. Xmega-perheestä valikoitui levyn aivoiksi ATxmega 192A3. Pari prototyyppiä myöhemmin oli lankku siinä mallissa, että levyt tilattiin Prineliltä ja suuntasimme osat kainalossa bussilla Savonlinnaan kalustamaan levyjä.

Kolmen koon klaani
Kurssin huipennus oli luokkaretki Savonlinnan 3k-tehtaalle, missä meille oli varattu koko päivä elektroniikan teollisten valmistusprosessien esittelyyn. 3k toimii elektroniikan alalla laaja-alaisesti. Komponenttien ladonnan lisäksi heidän repertuaariin kuuluu myös suunnittelua, tutkimusta, testausta, korjausta sekä kaiken edellä mainitun kouluttamista.

"Testing, 1, 2"
Paikan päällä firmat erotettiin toisistaan. Firma 1 lähti ensimmäisenä ladontalinjalle valmistelemaan omaa eräänsä ja Firma 2 pääsi testausinsinöörin kanssa ohjatulle kierrokselle ihmettelemään mitä erilaisimpia tapoja tutkia ja mukiloita sähköisiä laitteita. Valitettavasti olen niin onneton kamerankäyttäjä, että en ikinä muista ottaa kuvia kaikesta mielenkiintoisesta. Alla on kuitenkin muutamia otoksia, mitkä tallentuivat muistikortille.
Röntgenlaitteella voidaan tarkastella mm. juotosten laatua. Kamera lähetti suoraa kuvaa kapista ja sitä pystyi liikuttelemaan taustalla näkyvältä ohaustyöasemalta. Kuvassa kamera on kallistettu 45° kulmaan, jolloin voidaan vertailla myös juotosten korkeuksia.

Korjausasemalla esiteltiin BGA-piirien juottamista ja irroittamista.

Tämä sementtimylly on todellsuudessa vain astetta miehekkäämpi subwoofer. Sitä käytetään laitteiden tärinänkestävyyden testaamiseen.

Sääkaapissa laitteet voidaan altistaa tarpeen mukaan kuumuudelle, kylmyydelle tai kosteudelle. Vierailuhetkellä siellä testattiin tietokoneen emolevyn toimintaa kuumissa olosuhteissa. Tällä kaapilla saa koko pikkujouluporukan oluet kylmäksi hetkessä.

EMC-testauskaappi on 3K:n omaa tuotantoa. JAMK harkitsee samanlaisen tekemistä omaan käyttöönsä hieman pienemmässä mittakaavassa.


Kirjoittaja patsastelemassa tuntemattomaksi jääneen massiivisen masiinan edessä Facebookin profiilikuvaa varten.
Hihat heilumaan
Esittelykierroksen ja sitä seuranneen lounaan jälkeen oli meidän vuoromme alkaa valmistamaan levyjä. Firma 2 ei saanut omaa hakkuriteholähdettä toimimaan halutulla tavalla tehdasvierailuun mennessä, joten mekin valmistimme kilpailevan firman Xmega-lautaa. Heti kun meille annettiin vähän tekemistä unohdin ottaa kuvia, mutta yritän parhaani mukaan korvata kuvia tuhansilla sanoilla. Koska levy oli kaksipuolinen, niin seuraavat vaiheet tehtiin kahteen kertaan.

Ensimmäisenä lautoihin levitettiin juotostahna pintaliitoskomponentteja varten. Kortin aihiot laitettiin liukuhihnalle, mistä kone imaisi yhden kerrallaan sisälle ja kohdisti sen päälle pellistä tehdyn stensiilin, missä oli reiät juotospadien kohdalla. Sen jälkeen kone kaulitsi stensiilin ylitse juotostahnaa ja lastasi sen pois jättäen tahnaa levylle reikien kohdalle. Sen jälkeen kone sylki levyt ulos liukuhihnaa pitkin.

Seuraavaksi oli vuorossa vastusten, kondensaatorien ja ledien ladonta. Kone teki vaihtelevaa jälkeä, joten levy piti tarkastaa ladonnan jälkeen, nimittäin kaikkien kohdalla komponentit eivät tulleet oikeaan asentoon levylle. Mitään vähänkään eksoottisempia komponentteja ladontakone ei osannut käsitellä, joten loput pintaliitoskomponentit (USB-liittimet, kytkimet, IC:t) joduimme asettelemaan levyille käsin ennen levyjen paistamista.


Pintaliitoskomponenttien käsinladonnassa oli apuna liikkuvan varren nokassa oleva pieni imukuppi, millä komponentteja pudoteltin levylle. Masiinalla oli paha tapa irrotessaan tönäistä juuri hienosti aseteltu komponentti vinoon, joten niitä sai sitten hammastikun kanssa asetella paremmin paikoilleen. Niiden asettelu ei kuitenkaan ole nöpönuukaa, sillä tinan sulaessa uunissa sen pintajännitys imaisee komponentit yleensä paremmin kohdalleen.

Tämän käsittelyn jälkeen levyt olivat valmiit uuniin ja miehet valmiita kahvitauolle.

Levy sisälsi paljon läpiladottavia komponentteja (liittimiä, joystick, LCD-näyttö) mitkä jouduimme kolvaamaan kiinni käsin. Paikalla oli kuitenkin huippuluokan juotosasemat ja tinat flukseineen, joten juottaminen sujui kuin tanssi.


Firma 1 tinaamassa.

Kun läpiladottavat komponentit olivat paikallaan lautoihin poltettiin testiohjelmat. Firma 1:n laatujohtaja sai hyvillään merkitä kirjaansa saannoksi 100% ja retkueemme suuntasi bussilla takaisin kohti Jyväskylää.



Perustimme Gitorious-palveluun koodivaraston, minne voimme laittaa tekemiämme ohjelmia jakoon. Sinne varmasti joulun aikaan alkaa ilmestymään koodia, kun miehistömme pääsee kunnolla vauhtiin.

17. joulukuuta 2010

Projekti: Android Location Aware Reminder Mechanism

Tänä syksynä Jyväskylän ammattikorkeakoulu tarjosi ohjelmistotekniikan opiskelijoille useita mobiiliohjelmoinnin kursseja. Android-ohjelmoinin kurssin harjoitustyönä koodasimme Jani Koskelan kanssa ohjelman, mikä antaa käyttäjälle muistutuksia sijainnin perusteella.

ALARM tarjoaa käyttäjälle mahdollisuuden tallentaa muistutuksia, jotka ovat kiinnitettyjä tiettyyn sijaintiin. Käyttäjä voi esimerkiksi laittaa itsellensä muistutuksen käydä ostamassa kitaraan kieliä seuraavan kerran kun liikkuu keskustassa. Hälytystä varten tallennetaan viestin otsikko, muistutusteksti, koordinaatit ja hälytyssäde. Käyttäjän tullessa hälytyssäteelle kohteesta puhelin antaa huomautuksen äänen, värinän sekä puhelimen ruudun muistutusalueelle tuleven ikonin kera.

Softaa kohtaan on ollut ainakin kaveripiirissä kiinnostusta, joten päätimme jatkaa sen kehittämistä kurssin jälkeenkin. Tarkoitus on laittaa ohjelma jossain vaiheessa Androidin markettiin kaikkien halukkaiden saataville, mutta sitä ennen se kaipaa vielä hieman viilailua. Koko lähdekoodi on jo julkaistu GPLv2-lisenssin alla, joten jos intoa löytyy, niin halukkaat voivat jo sen kääntää ja asentaa puhelimeensa.

Aioin kirjoittaa aiheesta jutun, missä olisin purkanut kehityksen aikana vastaan tulleita ongelmia, mutta sitten tulin siihen tulokseen, että kurssin päätteeksi pitämämme esityksen diasarja ajaa kutakuinkin saman asian huomattavasti tiiviimmässä muodossa.



Esitelmän tekemisen jälkeen olemme mm. lisänneet puuttuneet suomennokset, sekä korjailleet bugeja. Tällä hetkellä olen lisäämässä sijainnin valintaa katuosoitteen perusteella. Kirjoittelen aiheesta lisää, kun saan aikaiseksi tehdä julkaisukäännöksen lukijoiden testattavaksi.

12. joulukuuta 2010

Projekti: GPSBot osa 3

Kahdessa edellisessä osassa kerroin robottiauton tarinan tähän asti. Tällä kertaa leikittelen ideoilla sen tulevaisuuden suhteen.

Autokaupoille
Wild Thumper 4WD
Kenellekään testiajovideota katsoneelle ei varmasti jäänyt epäselväksi, että nykyinen alusta on todella hidas. Juurikin tuosta hitaudesta johtuen jouduin lisäämään kompassin, mitä kenties muuten ei olisi tarvittu. Tahdon ehdottomasti nopeamman alustan niin pian kuin se on mahdollista. Bongasin houkuttelevan kandidaatin Robomaan sivuilta, mutta liki 300 euron hinta on opiskelijalle liian suolainen. Youtube-videot nelivetomallin kuusipyöräisen isoveljen prototyypin koeajosta kuitenkin vakuuttivat kirjoittajan perinpohjaisesti. Toivotaan, että ensi kesänä pääsen sen verran hyväpalkkaisiin hommiin, että Wild Thumperiin on varaa. Suosittelen lämpimästi katsomaan alla olevan videon, mistä kyseisen robottialustan suorituskyky käy selväksi.



Samalla kun siirryn servoista DC-moottoreihin, myös ajologiikan voi pistää kokonaan uusiksi. Tilakone on varmasti parempi tapa toteuttaa tällainen projekti, sillä nyt suurin osa ajasta vietetään servoja odotellessa. DC-moottorien kanssa tarvitsee vain muuttaa ohjauspulssin leveyttä ja siirtyä koodissa eteenpäin siten vapauttaen resursseja muuhun toimintaan. Miinuksena voidaan pitää sitä, että DC-moottoreita varten tarvitsee robottiin lisätä erilliset moottorinohjauspiirit, joista neljän vetävän moottorin tapauksessa koituu kymmenien eurojen lisäkustannukset uuden auton hinnan päälle.

Kontrollifriikki
Projektin ollessa alkuvaiheessa keskustelin sen toteuttamisesta erään ystäväni kanssa. Hänen kommenttinsa kuului kutakuinkin "Eihän tuossa ole mitään hauskaa, jos et voi Google Mapsista klikata koordinaatteja ja käskeä autoa ajamaan sinne." Hän oli oikeassa. Vielä silloin ajattelin automaattisesti miniläppäriä robotin ohjausvälineenä, mutta sittemmin olen päättänyt toteuttaa sen kännykällä. Nykyisissä Android-puhelimissa kun on Google Maps ja minulla on hieman jopa kokemusta ohjelmien kirjoittamisesta Androidille. Siksipä tilasin Seeed Studiosta edullisen Bluetooth-moduulin, millä aion yhdistää kännykän robottiin. Valitettavasti moduuli ei taida ehtiä perille ennen kun lähden vanhempien luokse viettelemään joulun pyhiä. Minulla on jo tosin yksi projekti varattuna joulun ajaksi, mutta siitä kuulette myöhemmin.

Bluetooth Bee, XBee-kantaans sopiva Bluetooth-moduuli.
Kun kerran robottiin asennetaan kaksisuuntaiseen tietoliikenteeseen kykenevä radiolaite, niin tietenkin hakkerin mielikuvitus alkaa laukkaamaan. Miten vaikeaa olisi pistää robotti lähettämään videokuvaa puhelimeen? Alla video kaupallisesta neliroottorisesta helikopterilelusta, mitä ohjataan Iphonella samalla kun laite lähettää suoraa videokuvaa toisella kahdesta videokamerasta. Ehkä uskomattominta kopterissa on sille messuilla lupailtu 200 dollarin jälleenmyyntihinta.



Standardin 2.0 mukaisen laitteen pitäisi pystyä käytännössä jopa 250kB/s siirtonopeuksiin, joten kyllä siinä pitäisi teoriassa pitäisi ehtiä lähettämään useampiakin kuvia sekunnissa.

Sensoroitu
Melko alkuvaiheessa aloin pohtimaan, josko autoon voisi implementoida jonkunlaista esteiden väistämistä. Suoraan ajeleva robotti kun on hieman tylsä. Ensimmäisenä tietenkin aloin miettimään etäisyysantureita. Niitä voisi laittaa autoon kiinteänä asennuksena kolme, tai vaihtoehtoisesti yhden servon nokkaan skannaamaan ympäristöä. Tilasin koulun piikkiin pari infrapunalla toimivaa 30-150 cm alueen etäisyyssensoria, mutta en ole vielä keksinyt siistiä tapaa kiinnittää niitä kunnolla autoon. Ehkä koulun uusi 3d-tulostin (juttu tulossa myöhemmin) voisi auttaa asiaa.

Toki konenäön voi toteuttaa muullakin tavalla, varsinkin jos laskentateho ei ole ongelma. Viime viikkojen hitiksi hakkereiden piirissä noussut Microsoftin Kinect oli mielestäni oikein hauska idea, joskin mikro-ohjainten resurssien ulottumattomissa.



Kiitän lukijoita mielenkiinnosta tätä juttusarjaa kohtaan. Erityisesti kiitän Lauri Jämsää, joka oli nostanut tarinointini Ruuvipenkin etusivulle. Jos teillä on jotain kysyttävää tai kommentoitavaa, niin voitte tehdä sen Ruuvipenkin foorumista löytyvässä ketjussa tai blogin kommenteissa. Etenkin ideat auton kehittämiseksi ovat tervetulleita. Auton kehityksestä aion jatkossakin raportoida täällä blogissa sitä mukaa, kun edistystä tapahtuu.

10. joulukuuta 2010

Projekti: GPSBot osa 2

Edellisessä osassa kerroin GPS-robottiautoprojektin rautapuolesta. Tällä kertaa käsitellään softaa ja sen kirjoittamisen aikana vastaan tulleita haasteita.

Missä mennään?
Päätin aloittaa projektin yhdistämällä Garminin GPS-vastaanottimen Arduinoon. Garminin mukana tuli perinteinen DE-9-sarjaliikennekaapeli, joten arvelin sen liittämisen olevan helppoa. Yllättävksi ongelmaksi osoittautui pinnijärjestyksen selvittäminen, mistä ei tuntunut löytyvän minkäänlaista yhteisymmärrystä googlauksen perusteella. Ainoastaan maapinni tuntui olevan kaikilla suunnilleen samassa paikassa. Koululla oli varastossa DE-9-liittimen vastakappaleita, joten otin sellaisen ja päätin selvittää oikeat pinnit kokeilemalla. Noin puolen tunnin askartelun jälkeen sain luettua sarjaliikennedataa Arduinoon.

Datan lukeminen luotettavasti olikin sitten eri juttu. Minulla meni pitkään kirjoittaa sellainen sarjaliikenteenlukualgoritmi, mikä ei yli- tai alivuotaisi jossain vaiheessa.

Seuraavaksi oli vuorossa datan parsiminen. Otin jälleen googlen kauniiseen käteen ja aloin selvittämään olemassa olevia implementaatioita Arduinolle. Pian selvisi, että alan de facto on NMEA, mutta siinä oli kuitenkin minun sovelluksen kannalta useita ongelmia.

  • useita viestilauseita parsittavaksi, 8-13 laitteesta riippuen
  • lauseet sisältävät päällekkäistä dataa
  • eri laitteet lähettävät eri lausekokoelmaa
  • saadakseni kaiken haluamani tiedon minun pitäisi parsia ainakin kolmea eri lausetta
  • lauseiden pituus vaihtelee datan sisällön mukaan
Vaihtoehdoksi NMEA:lle löysin Garminin oman Text Out -moodin. Vaikka tuntui arveluttavalta tehdä parseri tietyn valmistajan omalle viestimuodolle, mikä välttämättä ei olisi siirrettävissä laitteesta toiseen, niin Garminin Text Outin edut olivat kiistattomat. Ensinnäkin lauseita oli vain yksi ja se alkaa @-merkillä, mikä teki lauseen alun etsimisestä helppoa ja tuo yksi lause sisälsi kaiken tarvitsemani tiedon. Toiseksi lauseet olivat taatusti aina 52 merkkiä pitkiä, mikä sekin helpotti niiden lukemista. Kolmanneksi data päivittyi kerran sekunnissa, toisin kuin NMEA mikä päivittyi vain kahden sekunnin välein. Jos saisin nopean auton, niin tällä voisi olla merkitystä.

Parserin kirjoittaminen tämän jälkeen oli melko suoraviivainen homma, joskin yhteen mielenkiintoiseen ongelmaan törmäsin matkalla. Päätin tallentaa luokan sisällä koordinaatit long-tyyppiseen muuttujaan muotoon (d)ddmmmmm siten, että kolme viimeistä numeroa ovat minuuttien desimaaliosa.



Huomaa rivillä viisi, miten luku 10000 pitää pakottaa long-tyyppiseksi. Muuten jos siinä indeksissä oleva numero on suurempi kuin kolme, niin tapahtyy int-muuttujan ylivuoto ja koorinaatit menevät sekaisin. Tämän kanssa jouduin painiskelemaan hyvän tovin ennen kun se löytyi. Debuggeriahan ei Arduino IDE:n mukana tule.

Ollaanko perillä jo?
Maapallo (taiteilijan näkemys)
Koordinaattien välisten etäisyyksien laskeminen osoittautui mielenkiintoiseksi ongelmaksi. Kuvaa katsomalla helposti ymmärtää, että vaikka leveyspiirit ovat melko lailla saman mittaisia sijainnista riippumatta, niin pituuspiirien pituus vaihelee suuresti riippuen siitä miten kaukana päiväntasaajasta ollaan. Wikipedia on omistanut kokonaisen artikkelin erilaisten algoritmien esittelemiseen ongelman ratkaisemiseksi. Ne ovat kuitenkin mikroprosessoreilla melko raskaita, eivätkä silti kovin tarkkoja. Pohdin ongelmaa ääneen jollain Arduino-aiheisella IRC-kanavalla ja sain mielenkiintoisen kommentin. Muistista vapaasti suomentamalla sen sisältö oli suunnilleen "Tässä taas nähdään ero fyysikon ja insinöörin välillä. Fyysikko yrittää tehdä yhden lauseen, millä voisi ratkaista ongelman koko maapallon tapauksessa ja mielivaltaisilla etäisyyksillä, kun insinööri vain yksinkertaisesti laskee pituuspiirin pituuden määränpään läheisyydessä ja laskee siitä Pythagoraan lauseen avulla. Se on tarpeeksi tarkka, jos etäisyys ei ole suuri.".


Kommentoija osui naulan kantaan. Olinhan entinen fysiikan opiskelija ja vasta aloittanut opiskelemaan insinööritieteitä ja siksi ajattelumallini oli todellakin väärä. Vastauksen ei tarvitse olla yleispätevä eikä pedantti, kunhan se toimii sovelluksen tapauksessa riittävän hyvin. Wikipediasta löytyi yksinkertainen kaava pituuspiirin mitan laskemiseksi ja sen jälkeen etäisyyden laskeminenkin muuttui peruskoulumatematiikaksi.

Minne nenä näyttää?
Nyt robottini tiesi missä se on ja milloin se on perillä. Seuraavaksi pitäisi tietää mihin suuntaan pitää kääntyä, että oltaisiin menossa oikeaan suuntaan. Tämä oli ehkä koko projektin haastavin probleema. Aluksi olin ajatellut laskea nopeuden GPS:n antamasta datasta. Sen mukana tuli kaksi nopeuskomponenttia desimetrin sekuntivauhdin tarkkuudella. Siitä trigonometriaa soveltamalla saisi helposti suunnan laskettua. Teoriassa. Osoittautui, että robottiautoalustani ei ollut nopeimmasta päästä. Sen nopeus on vain pari senttiä sekunnissa, joten GPS:n antaman nopeuden erottelutarkkuus ei riittänyt suunnan laskemiseen. Seuraavaksi päätin laskea suunnan auton liikkuessa koordinaattien muutoksesta. GPS-paikkatiedon kohina oli kuitenkin aivan liian suuri ja mittavien tutkimusten jälkeen tulin siihen tulokseen, että luotettavan suutatiedon saamiseksi robotin olisi pitänyt ajaa aina samaan suuntaan minuuttitolkulla kerrallaan. En olisi halunnut hankkia erillistä kompassimodulia, koska se lisäisi koko auton kompleksisuutta sekä rauta- että softapuolella, muuta näytti siltä, että vaihtoehdot olivat vähissä.

Hitachi HM55B -kompassimoduli
Tilasin koulun piikkiin Hitachin HM55B-kompassimodulin ja aloin etsimään sille ajuria. Käyttäjä nimeltä kiilo oli julkaissut Arduino-saitilla artikkelin kyseisen modulin käyttämisestä Arduinon kanssa, joten otin hänen koodinsa oman ajurini pohjaksi. Pian selvisi, että kompassin kohina oli jotain aivan käsittämätöntä. Välillä mittasin jopa 60° heittoja sen antamassa signaalissa kun robotti oli paikallaaan pöydällä. En ymmärtänyt ihan täysin kiilon kirjoittamaa koodia, joten vian etsiminen oli melko epätoivoista. Toisaalta muut käyttäjät kertoivat saaneensa omansa toimimaan samalla koodilla modulin kalibroinnin jälkeen. Kalibointi vaati kuitenkin Windowsin käyttämistä, joten en harkinnut sitä vakavissani. Turhauduin kuukausiksi kompassin epäluotettavuuden vuoksi. Palasin aina tauon jälkeen tuoreilla silmillä tarkastelemaan koodia ja etsimään vikaa. Huomasin, että kompassin koodi toimi erillisenä ohjelmana melko hyvin, mutta yhdistettynä auton koodiin se meni sekaisin. Lopulta tulin siihen tulokseen, että kyse on pakko olla jostain ajoituksista. Turhautuneena päätin vain alkaa mukiloimaan auton ja kompassin koodia muuttelemalla viiveitä kunnes kompassi alkaisi toimia. Hämmästyksekseni metodi toimi. Sitten aloin poistamaan tekemiäni muutoksia yksi kerrallaan selvittääkseni, mikä oli se maaginen rivi, mikä sen korjasi. Lopulta olin mielestäni poistanut kaikki muutokset, mutta kompassi toimi silti! Edessä oli koeajo.



Tätä juttua varten päätin siistiä ja julkaista kaiken autoon kirjoittamani koodin. Se on nyt kaikkien ihailtavissa Gitorious-repossani.

7. joulukuuta 2010

Projekti: GPSBot osa 1

Keväällä 2009 aloin suunnittelemaan GPS-robottiautoa harrastusprojektiksi. Tavoitteena oli saada aikaiseksi auto, mikä osaa ajaa annettuja koordinaatteja kohti ja päätellä milloin se on perillä.


Rautakaupoille
Ensimmäisenä piti tietenkin tehdä hieman tutkimustyötä ja selvitää optimaalista rautapolitiikkaa. Vaikka koulu oli lupautunut maksamaan opiskelijoiden harrasteprojektien viulut, silti halusin pitää kulut mahdollisimman pieninä. Mikrokontrolleriperheen valinta ei ollut vaikeaa. Suurena avoimen lähdekoodin kannattajana olin lukenut Arduino-projektista ja se oli Linux-käyttäjälle itsestään selvä valinta. Arduino tarjoaa Linux-käyttäjille kokonaisen IDE:n ja sen voi ohjelmoida tavallisella USB-kaapelilla ostamatta erillistä ohjelmointilaitetta. Arduino IDE pohjimmiltaan käyttää avr-gcc-kääntäjää ja avrdude-ohjelmaa ohjelmien polttamiseksi mikro-ohjaimeen. Periaatteessa Arduino käyttää omaa C:n kaltaista ohjelmointikieltään. Se on kuitenkin aika kevyt rakennelma, joka on rakennettu avr-gcc:n päälle ja se koostuu lähinnä määritellyistä vakioista sekä esikääntäjästä, mikä muuttaa käyttäjän koodin C:ksi avr-gcc:tä varten. Avr-gcc tukee myös C++:aa, mikä mahdollistaa omien olioiden käyttämisen ulkoisten kirjastojen muodossa.

Arduino Duemilanove (kuva Louise - Paisley)
GPS-vastaanottimen valinta ei ollut yhtä  helppoa. Koululla oli varastossa jonkun valmistajan GPS-moduleita, mutta ne eivät osanneet keskustella suoraan Arduinon rauta-UART:in kanssa, joten hylkäsin ne pienen testailun jälkeen. Lopulta päädyin käyttämään geokätköilyyn hankkimaani Garminin eTrex Legend -vastaanotinta. Sen mukana tuli sarjaliikennekaapeli, minkä arvelin saavani keskustelemaan kohtuullisen helposti Arduinon kanssa.

Kanadalaisen vedättäjäfirman MaxSerial.
Erityisominaisuutena väärin päin nimetyt RX- ja TX-pinnit.
Arvelin leikkiväni Arduinolla enemmänkin vapaa-aikanani, joten päätin tilata sellaisen omaan laskuuni. Pitkällisten googlaustuntien jälkeen päädyin tilaamaan kanadalaisesta verkkokaupasta DE-9-liittimellä varsutetun Arduino MaxSerial -mallin. Kun lankku saapui postilaatikkoon, huomasin harmistuksekseni, että liitin oli samanmerkkinen kuin Garminin sarhaporttikaapelissa. Kaiken lisäksi lankun ohjelmointi sarjaväylän kautta lakkasi toimimasta noin kahden tunnin leikkimisen jälkeen. Kanadalainen nimeltä mainitsematon verkkokauppa ei ottanut vastuuta laitteen kätkytkuolemasta, vaan jätti ensimmäisen tiedusteluni jälkeen sujuvasti vastaamatta muihin viesteihini. Tätä juttua varten kävin katsastamassa kaupan sivut ja näyttäisi siltä, että huono asiakaspalvelu on kostautunut ja kauppa on onneksi lopettanut toimintansa viime vappuna. Sain kuitenkin puhallettua MaxSerialiin eloa käyttämällä koulusta lainattua ISP-ohjelmoijaa ja AVR Studiota Windows XP -virtuaalikoneessa, mutta sillä tavalla työskenteleminen osoittautui liian vaivalloiseksi. Tilasin pari viikkoa myöhemmin Kiinasta Duemilanoven, mikä on palvellut minua uskollisesti siitä lähtien.

Budget Robotics Rigel 4WD
Viimeisenä oli jäljellä robottiautoalustan valitseminen. Pian kävi selväksi, että autot ovat sen verran hintavia, että opiskelijabudjetilla sellaista ei saa hommattua. En myöskään halunnut tuhlata ylettömästi rakkaan opinahjoni varoja, koska koin sen tuovan ylimääräisiä onnistumispaineita jos projektiin on jouduttu sijoittamaan satoja euroja. Edullisia robottiautoalustoja on toki viljalti, mutta projektini luonteesta johtuen tarvitsin sellaisen, mikä selviäisi myös ulkona. Sisätiloissa kun tuo GPS-signaali on kovin heikko. Lopulta valinta osui kalifornialaisen Budget Roboticsin Rigel. Sen etuihin lukeutuivat huokean hinnan lisäksi houkkutelevalta kuulostava neljän servon vetosysteemi. Servot sopivat projektiini mainiosti, sillä ne eliminoivat erillisen moottorinohjauspiirin tarpeen ja tekisivät kokonaiskytkennästä yksinkertaisemman.

Myöhemmin selviävistä syistä jouduin hankkimaan myös kompassimodulin. Ainoa edullinen vaihtoehdo oli Hitachin HM55B, joka sekin oli niin hintava, että tilautin sen koulun piikkiin.

Tähän väliin laitetaan pari suttuista kännykkäkamerakuvaa robotin tämänhetkisestä kokoonpanosta.


Seuraavalla kerralla kerron robottiauton koodaamiseen liittyvistä haasteista.


5. joulukuuta 2010

CyanogenMod 6

Edellisessä kirjoituksessa kerroin CyanogenModin asentamisesta HTC Wildfire -puhelimeen. Seuraavaksi kerron hieman kokemuksistani sen käyttöönotosta.

Vaikea alku
CM6 ei alkuun varsinaisesti hellinyt uutta käyttäjäänsä. Ensimmäinen huono merkki oli wlan-yhteyden puute. Näkyviä verkkoja selatessani tuntui, että luuri oli haistanut kaikki muut verkot koko kaupunginosassa omaani lukuun ottamatta. Onneksi sentään 3G-yhteys toimi, ainakin toistaiseksi.

Onneksi on varmuuskopiot
Päätin jättää langattoman verkon selvittämisen myöhemmäksi ja palauttaa Titanium Backupilla edellisessä asennuksessa tallentamani ohjelmat ja niiden asetukset. Ensin piti tietenkin hakea Titanium Backup Android-markkinapaikalta 3G-yhteyden yli. Kapuloita rattaisiin laittoi pätkivä yhteys ja lataus katkesikin useita kertoja ennen kun ohjelma oli asennettu. Kun sain sen lopulta käyntiin, se herjasi heti kärkeen, että tuntemattomista lähteistä tulevien pakettien asentaminen on sallittava käyttöjärjestelmän asetuksissa ennen kuin ohjelmia voidaan palauttaa. Kävin tekemässä pyydetyn muutoksen, mutta herja ei poistunut. Käynnistin jopa puhelimen kokonaan uudestaan ja yritin jälleen, mutta tuloksetta. Puolen tunnin taistelun jälkeen päätin luovuttaa. Ajattelin, että ehkä on ihan hyvä aloittaa puhtaalta pöydältä ja asentaa vain ne ohjelmat, joita oikeasti käytän. Puhelimessani oli jatkuvasti sisäinen muisti vähissä, joten ohjelmien karsiminen olisi ihan tervetullutta.

Lisää takaiskuja
Luonnollisesti seuraavaksi aloin asentelemaan käyttämiäni ohjelmia, joita en varmuuskopiosta saanut palautettua. Tässä vaiheessa 3G päätti sanoa itsensä irti kokonaan. Nyt minulla oli siis puhelin ilman ohjelmia ja ilman minkään valtakunnan verkkoyhteyttä (GSM:n lisäksi). Minua alkoi suoraan sanoen ahdistamaan. "Pitikö nyt mennä sotkemaan koko puhelin?" Älypuhelimeni äly oli vähissä.

Päätin kokeilla CM6:n eri version asentamista. Nightly buildien lisäksi saatavilla on release candidate -versioita joten latasin sellaisen ja buuttasin Hbootiin. Ohjeiden mukaisesti otin varmuuskopion vanhasta käyttöjärjestelmästä ja pyyhin puhelimen muistin. CM6 RC2 ei kuitenkaan asentunut, vaan sen sijaan vain informatiivisen virheilmoituksen "(bad)". Siitä päättelin asennustiedostossa olevan jotain vikaa. Kuten edellisellä kerralla, navigoin valikossa kohtaan, millä sain puhelimen muistikortin mountattua tietokoneellani ja huomasin asennuspaketin koon olevan 0B. Poistin sen ja latasin sen uudestaan. Unmounttasin muistikortin ja menin asentamaan pakettia. "(bad)"

Jos minua aikaisemmin ahdisti, niin nyt alkoi jo ihan oikeasti pelottaa. Olin nimittäin poistanut edellisen käyttöjärjestelmän ennen polttoyritystä ja uusien asentaminen ei tuntunut onnistuvan. Päätin kokeilla palaamista nightly build #40:een ja se suureksi helpotuksekseni onnistui.

Kaikki muuttuu paremmaksi
Olin jälleen samassa pistessä kuin pari tuntia aikaisemmin. Minulla oli CM6 ilman wlania ja ohjelmia. Tällä kertaa 3G oli palannut käytettävälle tasolle, joten kapula ei enää ollut täysin ummikko. Kello alkoi olla jo aika paljon, joten päätin asennella muutamia tärkeimpiä tarvitsemiani ohjelmia, nukkua välissä ja jatkaa taistelua aamulla. Vielä ennen unia kokeilin muutella wlan-reitittimen muutamia asetuksia ja katsoa saisiko niillä yhteyden aikaiseksi. Ei saanut.

Aamulla heräsin intoa täynnä ja jatkoin ohjelmien asentelemista 3G-yhteyden yli. Edellisenä iltana olin jo ottanut käyttöön Laucher Pro -työpöydän CM6:n mukana tulevan ADW:n sijaan. Ei sillä, että siinä varsinaisesti mitään vikaa olisi ollut, mutta kun kerran olin jo tottunut Laucher Pro:oon ja maksanut siitä, niin päätin jatkaa sen käyttäjänä. Säädin myös kolun sähköpostin asetukset kuntoon pätkivän 3G:n kanssa, koska tiesin tarvitsevani sitä päivän mittaan.

Jossain vaiheessa, kun puhelin alkoi olla käytettävässä kuosissa taas päätin palata selvittämään wlanin toimimattomuuden syytä. Aloin muuttelemaan asetuksia ja lopulta löysin ratkaisun. Kun ostin reitittimen kesällä minulla oli ongelmia liikennenopeuksien kanssa. Sain hädin tuslin 54mbit nopeudella (laatikon kannen mukaan) toimivasta purkista yhden megan edestä tavaraa alas. Syytä selvittäessä päädyin skannaamaan muiden lähiverkkojen kanavat ja muutamia laskutoimituksia myöhemmin tulin siihen tulokseen, että kanavalla 14 on eniten vapaita aaltoja. Reitittimeni ei kuitenkaan antanut asettaa kanavaa kuin korkeintaan 13:een, joten päädyin käyttämään sitä. Vaihdoin kanavalle kymmenen ja yhteys löytyi välittömästi.

Fillikset olivat edellisen illan murheen suosta nousseet jo kohtalaisen korkealle. Muutamat viimeiset puuttuvat lintuaiheiset ohjelmat vilahtivat luuriin huomattavasti liukkaammin kuin edelliset. Sain jopa ladattua uusimmat podcastit kuunneltavaksi koulumatkalla. Asensin vielä kaverini suosituksesta ohjelman nimeltä SetCPU. Olin lukenut, että sillä voi parantaa akkukestoa huomattavasti esimerkiksi siten, että ohjelma alikellottaa puhelimen suorittimen aina kun näppäinlukko on päällä. Matkalla kampukselle huomasin muutamia hienoja ominaisuuksia, mitä HTC:n käyttöjärjestelmässä ei ollut.

Kunnellessa audiota näppäinlukko päällä ruutuun tulee avausliuskan alapuolelle nappulat joilla voi ohjata toistoa avaamatta näppäinlukkoa. Suorastaan fantastinen ominaisuus! Toinen minkä huomasin oli se, että puhelimen sai myös äänettömälle (ja takaisin) avaamatta näppäinlukkoa.

Eikä siinä vielä kaikki
Kuva Niall Kennedy
Kaikkien alkuvaikeuksien jälkeen olin jo täysin muuttanut mielipiteeni CyanogenModin tuotoksesta. Kaikki edellisen järjestelmän toiminnallisuus oli palautettu, ja nyt olin omasta mielestäni jo voiton puolella. Positiiviset yllätykset jatkuivat silti. Pääsin esimerkiksi kokeilemaan pitkään kaipaamiani äänikomentoja. Harmi härmäläisille, että toimiakseen kaikkien tuttavien nimet pitää lausua amerikkalaisittain tai toimivuus on huono.

Niin tosiaan, ja sittenhän on vielä se, mistä tämä koko rumba tavallaan alkoi, eli just-in-time compiler. Se on Cyanogenin valikoissa piilotettu kokeellisten toimintojen alle ja niistä varoitetaan, että toimivuus on kaikkea muuta kuin taattu. Tiedustelin sen suoritusvarmuutta tämän porttauksen kehittäjältä ja hän sanoi sen toimivan vakaasti. Asetin sen päälle ja toastin (ruudulle pomppaavan ilmoituksen, mikä katoaa itsestään toim. huom.) antaman kehoituksen mukaisesti käynnistin puhelimen uudestaan. Nyt minulla oli lopultakin Froyo kaikilla herkuilla.

Yhteenveto
Jälkeenpäin voin sanoa, että käyttöjärjestelmän toi puhelimeeni rutkasti lisäarvoa. Ensinnäkin minulla on nyt tarvittaessa pääkäyttäjän oikeudet puhelimessa, mikä mahdollistaa monia asioita esimerkiksi sovelluskehityksessä. Muun muassa puhelimen tietokantojen selaaminen on mahdotonta ilman voimaa-antavaa risuaitamerkkiä. Sen lisäksi kaikki parannukset, mitkä käyttöjärjärjestelmään oli tehty version 2.1 jälkeen, kuten JITC, äänikomennot ja mahdollisuus käyttää puhelinta kannettavana wlan-tukiasemana.

HTC:n oma Sense-käyttöliittymä jakaa mielipiteitä. Jotkut tykkäävät, toiset eivät. Itse olen kallistumassa sille kannalle, että Sensen ja kaikkien muiden HTC:n omien ohjelmien poistaminen on parantanut puhelimen käytettävyyttä. Lähes kaikki samat toiminnot on saatavilla ilmankin, tosin ne ovat hajallaan, eivätkä samalla tavalla niputettuna yhdeksi paketiksi kuten Sensen kanssa on tehty. Oma kokemukseni on kuitenkin se, että HTC:n omat komponentit eivät ihan pärjää vertailussa. Ne ovat hieman bugisempia ja hitaampia kuin kilpailijat ja siksi näkisin, että käyttökokemus on nyt parempi.


Lisäys (6.12.2010 9:38):
Vain muutama tunti tämän kirjoituksen julkaisemisen jälkeen CyanogenMod 6.1 on saanut vakaan julkaisun. Julkaisusta enemmän täällä.

3. joulukuuta 2010

Operaatio: Froyo

Taustaa
Ostin kesällä itselleni pitkään himoitsemani Android-puhelimen. Koska olin liikkeellä opiskelijabudjetilla, enkä kytkykauppoihin halunnut ryhtyä, puhelimeksi valikoitui HTC:n (silloin) uusi malli nimeltä Wildfire. Wildfiren mukana tulee Androidin versio 2.1.

Android-tuoteperhe (Kuva Niall Kennedy)
Jo ennen  puhelimen saapumista kauppoihin HTC lupasi päivittää käyttöjärjestelmän versioon 2.2, joka tuttavallisemmin tunnetaan nimellä Froyo (kuvassa oikealla). Froyon tiedettiin sisältävän implementaation Androidille ajonaikaisesta java-kääntäjästä joka englanniksi tunnetaan nimellä just-in-time compiler.  JITC:n kerrottiin tuovan jopa lähes 100% parannuksen koodin suoritusnopeuteen, mikä olisi alitehoiselle budjettiluokan puhelimelle enemmän kuin tervetullut parannus. Aikatauluksi ilmoitettiin Q3 2010, eli heinä-syyskuu. Tuli lokakuu, ei päivitystä. Lähetin HTC:lle sähköpostia, missä tiedustelin Froyon Wildfire-käännöksen julkaisuajankohtaa. Vastauksena sain geneerisen viestin, missä kerrottiin, että yhtiöllä ei ole mitään uutta tiedotettavaa tiedusteluni tiimoilta. Tuli marraskuu, eikä vieläkään julkaisua tai edes ilmoitusta uudesta arvioidusta julkaisupäivästä. Tuli joulukuu ja silloin minulta loppui kärsivällisyys.

HTC Wildfire
Froyon  koodi oli julkaistu jo kesäkuussa ja siitä lähtien hakkeriporukat ovat tehneet siitä omia käännöksiään eri laitteille. Törmäsin loppukesästä IRC:ssä seikkaillessani sattumalta Cyanogenmod-jakelun Wildfire-käännöksestä vastaavaan koodariin, ja kuulin, että koodinimi CM6 olisi valmistumassa tuota pikaa. Oletin kuitenkin HTC:n ehtivän ensin, joten en silloin edes harkinnut sen kokeilemista. Kun HTC:n julkaisuaikataulu alkoi venyä sietämättömän pitkälle päätin käydä katsastamassa CM6:n tilanteen Xdadevelopers-forumilta. Positiivisten kirjoitusten rohkaisemana menin vielä projektin IRC-kanavalle kyselemään henkilökohtaisia kommentteja käyttäjiltä varmistaakseni, että en saata puhelintani käyttökelvottomaan tilaan. Minulla on eräs Android-sovellusprojekti kesken, enkä halunnut tärvellä rautadebuggeriani.

Asennus
IRC:ssä sain linkit yksityiskohtaisiin ohjeisiin uuden käyttöjärjestelmän asentamiseksi. Käytännössä asentaminen jakautui seuraaviin vaiheisiin:
  1. Rootin oikeuksien hankkiminen ja bootloaderin asennus
  2. Asennettujen ohjelmien varmuuskopiointi
  3. Recovery-moodiin buuttaaminen
  4. Käyttöjärjestelmän varmuuskopiointi
  5. Muistin tyhjennys
  6. Uuden käyttöjärjestelmän ja Google-työkalujen poltto
Seuraavaksi kerron mainituista työvaiheista tarkemmin.

Got root?
Pitkäaikaiselle Linux-käyttäjälle tuli järkytyksenä se tieto, että Linux-puhelimen ostajalla ei ole pääkäyttäjän oikeuksia omassa puhelimessaan. Puhelinten valmistajat ovat estäneet sen! Tietenkään se ei ole kuin hidaste; kaikille alaan vihkiytyneille lienee selvää, että kiertokeinot löytyvät ja ne etsitään.

Sain IRC-kanavalla linkin loistavaan ohjeeseen, jonka käyttäjä nimimerkillä Turkeys on kirjoittanut. Puhelin piti laittaa debug-moodiin, tosin minun tapauksessa se oli jo valmiiksi, koska minulla on edellä mainittu Android-sovellusprojekti menossa. Lisäksi piti sallia ohjelmien asentaminen tuntemattomista lähteistä, mutta sekin oli puhelimessani jo valmiiksi asetettu. Roottaamista varten latasin pari ohjelmapakettia ja ryhdyin toimeen. 

Unrevoked-niminen paketti tuli binääriäen kera Windowsille, Mac OS:lle ja Linuxille. Roottaaminen vaati käytännössä yhden ohjelman ajamisen, mikä buuttasi puhelimen ADB-väylää pitkin muutamaan kertaan ja asenteli kaiken tarpeellisen root-oikeuksien saamiseksi. Tässä kohtaa kuitenkin törmäsin ongelmaan. Minulla oli jäänyt toiselle työpöydälle Eclipse auki ja se ilmeisesti kaappasi ADB-väylän käyttöönsä ensimmäisen buutin jälkeen ja asennus jäi puolitiehen. Sen lopulta tajuttuani suljin Eclipsen ja yritin uudestaan. Sillä kertaa asennus meni läpi ongelmitta ja komennon 'su' jälkeen komentorivillä minua tervehti tuttu ja turvallinen risuaita komentokehoitteen perässä.

Ohjelmien varmuuskopiointi
Ohjelmien varmuuskopiointia varten piti asentaa Android-kauppapaikasta Titanium Backup. Sen avulla käyttäjä voi tallentaa käyttämänsä ohjelmat asetuksineen SD-kortille ja palauttaa ne sieltä uuden käyttöjärjestelmän asentamisen jälkeen. Ennen kuin ohjelmasta saa kaiken hyödyn irti, piti ohjelman sisällä asentaa vielä Busybox-niminen ohjelmapaketti. Varmuuskopioitavia tiedostoja löytyi puhelimestani noin 180 kappaletta ja niitä tallennettaessa ilmeni ongelma. Olin asentanut ohjelman, joka pakottaa ohjelmat pyytämään käyttäjältä luvan pääkäyttäjän oikeuksien käyttämiseen. Normaalisti oikeudet annetaan kullekin ohjelmalle kerran ja sen jälkeen se muistaa valinnan. Titanium Backupin tapauksessa kuitenkaan se ei toiminut odotetulla tavalla ja jouduin antamaan luvan rootin oikeuksiin ehkä noin viisi kertaa jokaista kopioitavaa tiedostoa kohden. Pian kävi selväksi, että Superuser Request -ohjelma on poistettava tai kopioinnissa menee koko yö. Sain lopulta varmuuskopion tehtyä ja pääsin siirtymään seuraavaan vaiheeseen.

HBoot
Seuraavaksi oli aika polkaista käyntiin roottauksen yhteydessä asennettu bootloader. Se tapahtui siten, että puhelin sammutettiin ja käynnistettäessä pidettin miinusmerkkistä volyyminappia pohjassa. Bootloaderin valikko oli kohtuullisen karu ja siinä navigoimiseen käytettiin volyyminappeja, trackballia ja virtanappia. Wildfiren ruudun alareunassa olevat kapasitiiviset napit eivät olleet käytössä. Ensimmäisenä otettiin varmuuskopio käyttöjärjestelmästä SD-kortille. 

Cyanogenmod 6 HTC Wildfiressa
Sen jälkeen tyhjennettiin puhelimen sisäinen flash-muisti. Tässä vaiheessa tajusin, että minulla olisi pitänyt olla uuden käyttöjärjestelmän sekä Google-työkalujen asennuspaketit muistikortilla. Aihetta hätään ei kuitenkaan ollut; bootloaderista löytyi valinta, millä puhelin luovutti muistikortin tietokoneeni käyttöjärjestelmälle mountattavaksi ja pari minuuttia myöhemmin tarvittavat tiedostot olivat kortilla. Valitsin asennettavaksi CM6:n uusimman nightly buildin, eli version #40.

Viimeinen vaihe oli uuden Cyanogenmodin ja Googlen työkalujen polltaminen puhelimen muistiin. Molemmat opetaatiot sujuivat sekunneissa ja sitten Froyoni oli valmis buutattavaksi! Uuden käyttöjärjestelmän ensimmäinen buuttaus kestää aina useita minuutteja, kun Dalvik-virtuaalikone kerää itsensä kasaan. Sim-lukituksen avauduttua minua odotti ADW-työpöytä ja Android 2.2 ilman HTC:n omia hömpötyksiä.

Käyttökokemuksista uudessa ympäristössä kerron seuraavalla kerralla.

Linkkejä:

Esipuhe

Päätin useamman vuoden jahkailun jälkeen aloittaa kirjoittamaan blogia. Tarkoitus on kertoa enimmäkseen seikkailuistani teknologian ihmeellisessä maailmassa: koodaus- ja elektroniikkaprojekteistani, sekä tarvittaessa kommentoida informaatioteknologiaa sivuavia ajankohtaisia uutisia. Harrastuksiini kuuluvat myös musiikki ja kamppailulajit, joista saatan myös satunnaisesti kirjoitella, mutta pääpaino on tarkoitus pitää teknologiasektorilla.

Aluksi lienee soveliasta kertoa hieman itsestäni. Olen jyväskyläläinen opiskelija, amatöörimuusikko ja tuleva ohjelmistotekniikan insinööri. Opinnoissani suuntaudun elektroniikkajärjestelmien ohjelmointiin. Koulun ulkopuolella olen innokas Linuxin sekä avoimen lähdekoodin kannattaja. Olen käyttänyt Linuxia vuodesta 2003 pääasiallisenä käyttöjärjestelmänäni ja sitä kautta tutustunut sen sielunelämään monelta eri kantilta niin palvelin-, työpöytä- kuin sulautetuissa sovelluksissa.

Potentiaalisista jutunaiheista voin mainita sen verran, että tällä hetkellä minulla on työn alla muutamia Androidiin ja Arduinoon liittyviä koodausprojekteja. Niistä tarkemmin kun ne ovat julkaisukelpoisessa vaiheessa.

Kirjoittelen netissä vaihtelevalla frekvenssillä erilaisilla forumeilla. Kirjoitan aina omalla nimelläni, joten minua ei liene vaikea tunnistaa. Lisäksi minut löytää Twitterissä käyttäjätunnuksella janne_oksanen.

Kiitos mielenkiinnosta ja tervetuloa lukemaan blogiani!