maanantaina 16. helmikuuta 2009

Ovi Maps for Linux anytime soon?

Ah, long gone are the days when you needed to have certain browser and operating system for using web services. Right?



My OS is obviously not supported even though I'm using FF 3, as suggested, on it..



I guess I have to stick with Google Maps or OpenStreetMap in the mean time.

maanantaina 29. joulukuuta 2008

WebKit for Maemo

I'm one of the happy owners of Nokia N810 Internet Tablet. For me the device is all about browsing so I'm a bit disappointed how the internal browser performs. I don't need Flash, nor UI that doesn't fully utilize the screen estate. What I need is a lightning fast browser with gesture based navigation so that the small screen don't get too crowded. There's no need for the URL bar to be on top of the page all the time. There's no need for back and forward buttons to be shown as one can simply use gestures instead and so on.

So what do we need to make this true? Some coding skills and WebKit source code of course! It is pretty simple to take the latest WebKit source code and compile it for the device. There's already GTK+ support in the trunk so it should be a piece of cake to make it run on N8xx too.

I'll explain the steps and release the source code once it is mature enough.

Here's the line that I used for configuring the beast in Scratchbox:

# ./configure --with-hildon --enable-svg=no --enable-xslt=no --enable-xpath=no --enable-icon-database=no --enable-database=no --enable-dom-storage=no --enable-offline-web-applications=no --enable-dashboard-support=no --disable-jit --disable-geolocation --with-http-backend=curl

lauantaina 23. elokuuta 2008

Installing Series 60 SDK (part one)

Q: How do I code for my new Nokia smartphone running S60?
A: You don't, aim for Maemo devices instead.

Q: No but seriously.
A: Remember, I warned you, it shall be painful!

Disclaimer: This blog has been written by a fellow coder who has been involved in Series 60 development since the first release got out so there might be certain amount of dry humor involved. Just don' take it too seriously :)




First let's do some googling..



First link looks promising as both S60 and Nokia are mentioned. Let's click that one and see where we end up.



Whoaah! Our little programmer is hailed with a big, fat flash animation. Fortunately, REAL men would use Firefox and Flashblock so this kind of booby trap wouldn't explode to their eyes and make them blind. Anyway, let's see where we can find that SDK while we're here.

On the left hand side there's a link Tools and SDKs which rings a bell. Click that and another page greets us.



Lot's of content and as we're lazy we click on the first link from the top that sounds nice to us. C++ for Symbian OS tools and SDKs could be it but we're not targetting for Symbian but for Series 60 instead. So down a bit and..



Found it! But before we click let me say something about the image. It seems that the whole block of links is one big JPEG(!) image that has been compressed so much that one can clearly see the compression artifacts.


A big big no no! Couple of hints here:
  1. Use PNG, it's lossless and good for sharp edged graphics like the one mentioned
  2. Text on the links should be text on top of image, not an image itself (a must for i18n)
Enough with the BS of web design. Clicking on that link opens up a page like the one below.



There's a download link on the right hand side and the latest SDK already chosen in the drop down menu. This is okay as all the Series 60 on the shops today are based on the latest generation (aka. 3rd edition) of it. What is questionable is the vast number of SDK's available: 17 of them! That's few gigabytes of stuff there. I mean how am I supposed to know which one of those I should download? Can't flip a coin as it only has two sides of it. Even using two dices give you only 12 different options..

Assuming you're having your phone at hand you can go to http://www.nokia.com/phones to check the specs and you'll see what edition the phone is running. Just take the latest if you're unsure.

Clicking the download button will give you.. yikes.. mandatory registration! Those two words really don't mix well :(



After registration you can download the SDK which is a actually a ZIP file containing installer and bunch of other files. At this point I'm getting a bit frustrated.. Still eager to get that Hello World running I double click the setup.exe just to see the following note.



Now wait a minute. What the heck is Perl and where to get it? Is it free or do I have to pay for it? Let's click No as I'm not sure and need some instructions. What? The window just disappeared and left me staring at my desktop. I'll start the installer again and click Yes this time and hope that the instructions for Perl will follow.

Boing!! Another window, this time complaining about missing Java.



Pressing No would again end the installer so I click Yes to continue. Installer continues happily until... Kaboom!



Eh.. cant launch the perl (note small letter in the front, the missing apostrophe in can't, Perl not capitalized and no period). Pressing Ok will summon the same dialog again!


This is funny. Pressing Ok this time.. will.. KABOOM again!



Ahem.. So if I run Vista, which I don't (and will not, even this XP is running in VirtualBox on Ubuntu), I need to manually patch the compiler in order to get a working SDK! This must be a joke, right? Happily pressing Ok (as I'm running XP) will detonate another one.



It is something about the missing Perl (aka. the perl) again. Have to remember that kids, P-E-R-L. Let's continue.. BOOM! Another mine explodes.



This cryptic message means that there is no free (as in speech and beer) compiler for the phone installed. Without GCCE you cannot really compile anything for the actual phone so press Yes here. (this is not completely true but the guys with RVCT licenses will know that already)

Boom! This spawns another installer up and running. This time it's the compiler for the SDK.



After clicking next several times I'm finally finished installing Series 60 SDK.

Now, let's compile that famous Hello World shall we!

Open up a command line, head to SDK examples and..


..the perl is missing.

(to be continued..)

Maemo goes 666

keskiviikkona 6. elokuuta 2008

US Patent No. 7,407,089

Luin epäuskoisena Slashdotin artikkelia, jossa kerrotaan, että IBM:lle on myönnetty tiistaina patentti, jonka avulla luottokortille tallennetaan tieto siitä haluaako asiakas muovi- vai paperikassin ostoksilleen. Ilmeisestikin jenkeissä on tapana, että kassatäti (tai setä) kysyy tämän asiakkaan puolesta ja ojentaa asiakkaalle halutun kassin. Patentissa kuvaillaan lisäksi pieni tarra, joka liimataan asiakkaan kortille, josta tämän tiedon näkee ilman kortin koneellista lukemista. Artikkelissa kysytään mielestäni varsin oikeutetusti: onko tällainen asia niin merkittävä tekninen oivallus, että se on patentoitavissa ja patentin arvoinen? Mielestäni ei mutta jenkeissä kaikki on mahdollista.

torstaina 24. huhtikuuta 2008

Canon S5 PowerShot IS digikameran virittelyä

Olin jo pitemmän aikaa harkinnut ostavani kunnollisen digikameran ja lopulta iskin silmäni Canon PowerShot S5 IS malliin. En halunnut pientä pokkaria ja oikea järkkäri olisi ollut aivan liian järeä peli omaan käyttööni joten ajattelin ostaa jotain siltä väliltä. Ainakaan toistaiseksi en keksi mitään pahaa sanottavaa kyseisestä mallista. Koko ja paino on pelkkää plussaa sillä vekottimen inertia pitää käsien tärinän kurissa :)

Laitteesta on saatavilla useita eri testejä ympäri nettiä joissa kaikissa se on pärjännyt erittäin hyvin. Laitteesta puuttuu kuitenkin yksi tärkeä ominaisuus: tuki RAW-muotoisille kuville. Vaikka ottaisit kameralla kuvan parhaalla laadulla niin silti se pakataan häviöllisesti JPEG-muotoon. Itseäni tuo ei haittaa sillä minusta ei olisi "kehittämään" kuvia käsin. Eipä tuo kunnolla Gimpilla ja 1024x768 resoluutiolla onnistuisikaan eli se siitä. Toisaalta olisihan se kiva tietää että laitteella voi ottaa kuvia raakamuodossa vaikka sitä ominaisuutta ei koskaan käyttäisi. Sama juttu kuin HD-töllön kanssa vaikka katseleekin Suomen digiteeveepullamössöä..

Tietokoneharrastajat ovat kuitenkin keksineet tavan jolla useat eri Canonin kamerat saadaan tukemaan RAW-muotoa vaikka ne tehtaalta lähtiessään eivät tätä tukisikaan. Canonin kamerat nimittäin pohjautuvat suurelta osin saman DIGIC-alustan ympärille. Myös Canonin S5 pohjautuu DIGIC-alustaan mutta ei tue RAW-kuvia. Toisaalta taas monet kalliimmat Canonin kamerat tukevat RAW-kuvia vaikka perustuvat täsmälleen samaan alustaan. Koska kuvadata on aina luonteeltaan RAW-muotoista (CMOS-kenno ei voi tuottaa suoraan JPEG-pakattua kuvaa) niin herää kysymys onko kyse vain eri ohjelmistoista joissa toinen "pakkoprosessoi" kuvan JPEG-muotoon ja toinen, kalliimpi vaihtoehto, antaa käyttäjälleen mahdollisuuden tallentaa myös tämä prosessoimaton raakadata? No, kameroilla toki on muutakin eroa kuin softa mutta RAW-muodossa kyse on juuri ja vain tästä. Siispä ladataan kameraan uusi ohjelmisto joka mahdollistaa tämän. Juuri siitä on kyse CHDK-nimisessä projektissa.

Lisäbonuksena kameraan tulee usea muukin erikoisuus ja tietysti pari peliä joita voi pelailla kameran näytöltä jos lintubongaaminen alkaa pitkästyttämään! Kaikki tämä tietysti ilmaiseksi ja lähdekoodien kera. Takuukaan ei (huhupuheiden mukaan) raukea koska kyseinen kikka ei muuta kameraa pysyvästi millään lailla. Jos kamera jostain syystä hajoaisi niin ohjelmistosta ei jää mitään jälkiä sillä se ladataan kameran RAM-muistiin muistikortilta vain kameran käynnistyessä. Kun kameran sammuttaa niin se palaa alkuperäiseen tilaan.

Jos ominaisuudet kuten RAW-kuvaus, skriptaaminen(!) ja jopa 65 sekunnin valotusajat kiinnostavat niin lue kuinka se onnistuu. Itse tappelin tovin jos toisenkin mutta hyvinpä tuo tuntuu pelaavan ja ainakin vielä on laitteen savut tallella.

Ohje on tarkoitettu vain Canon S5 mallille eikä sitä voi sellaisenaan käyttää muiden mallien kanssa.

Tein homman Linuxissa joten homma voi mennä vähän kryptisen kuuloiseksi mutta ohjeet pätevät muihinkin käyttöjärjestelmiin. Alkuperäisissä ohjeissa hommaan käytetään myös winkkaria ja mäkkiä joten saa soveltaa.

Canonin S5 mallia on ainakin kahdella eri firmiksellä ja oman kameran versio pitää selvittää ennen jatkotoimenpiteitä. Tätä varten muistikortille pitää luoda tiedosto nimeltä ver.req suoraan kortin juurihakemistoon. Tiedoston sisällöllä ei ole merkitystä ja se saa olla vaikka tyhjä.

Tämän jälkeen aseta kortti kameraan ja käynnistä kamera KATSELU tilaan. Tässä vaiheessa ei siis pitäisi tapahtua vielä mitään ihmeellistä. Nyt paina napit SET ja DISP pohjaan siten, että painat ensin SET ja pidät sen painettuna ja tämän jälkeen DISP. Ruutuun pitäisi nyt tulla erinäistä tietoa ja siitä pitäisi etsiä rivi jolla lukee Firmware Ver ja versionumero. Ota numero talteen kirjaimineen päivineen sillä tarvitset tätä myöhemmin. Omani muuten oli versionumeroltaan 1.01B mutta ainakin A-mallia on olemassa.

Seuraavaksi pitää ladata omaa versiota vastaava softa. Versioita on monta mutta yleisesti parhaana voi pitää ns. AllBest-käännöstä. Itse kääntelin binäärin lähdekoodeista (ja tätä ennen käänsin binutils ja gcc paketit lähdekoodeista) mutta tämä ei ole välttämätöntä. Täältä saa uusimman version valmiiksi käännettynä. Jos linkki on kuollut niin Googletus auttanee. Ota siis joko A tai B versio ja pura paketti koneellesi johonkin hakemistoon. Paketin sisällä on vain yksi tiedosto nimeltä DISKBOOT.BIN ja kokoa tällä on muutama sata kilotavua.

Nyt homma alkaa mennä hieman (mutta vain hieman) mutkikkaammaksi mutta paljon mielenkiintoisemmaksi. DISKBOOT.BIN tiedosto pitää siirtää muistikortin juureen ja muistikortista pitää tehdä buuttaava. Tämä onnistuu Linuxissa monellakin eri tapaa ja tässä esitetään yksi niistä. Tässä vaiheessa muuten pitää huomioida se seikka, että kortin tiedostojärjestelmän PITÄÄ olla FAT16-muodossa. Tämä taas asettaa kortille 4 gigatavun kokorajoituksen joten jos korttisi on esimerkiksi 8 gigainen niin homma ei toimi:( Tai toimii mutta et saa käyttöösi kuin 4 gigatavua. Tähänkin on erinäisiä kikkoja mutta kannattaa kokeilla aluksi 4 gigaisella tai sitä pienemmällä kortilla. Kuvat kannattaa ottaa ENSIKSI talteen sillä jos kortin tiedostojärjestelmän ryssii niin palautus on ikävää tai kallista tai molempia.

Jos kortti on jo FAT16 muodossa niin siitä pitää tehdä buuttaava. Tämä onnistuu heksaeditorilla(!) editoimalla tiedostojärjestelmää suoraan. Pieni varoituksen sana tässä vaihessa: varmista kahteen kertaan että muokkaat muistikortin ja juuri sen oikean muistikortin osioita ettet vahingossa tuhoa jotain tärkeää. Tähän on varmaan järkevämpiäkin tapoja mutta pelkkä boot-lipun asettaminen partedilla ei toiminut. Oletetaan siis että kortti on FAT16 muodossa (voit formatoida kortin kameralla niin saat muodon oikeaksi) ja asetettu kortinlukijaan. Asenna koneeseen hexedit-niminen softa. Ubuntussa tämä löytyy suoraan paketinhallinnasta. Seuraavaksi tarkista dmesg tulosteesta mitä laitetiedostoa kortti vastaa. Siis kirjoita konsoliin dmesg ja paina enter. Omassa koneessa tuloste on seuraavan kaltaista:

[ 3806.207011] tifm_core: MMC/SD card detected in socket 0:3
[ 3806.250835] mmc3: new SD card at address ab6d
[ 3806.251669] mmcblk1: mmc3:ab6d SD02G 1966080KiB
[ 3806.251724] mmcblk1: p1

Kortti siis tunnistettiin mmcblk1 laitteeksi ja siinä näyttäisi olevan yksi osio nimeltä p1. Seuraavaksi käynnistetään hexedit ja muokataan muutamaa tavua kyseiseltä osiolta. Annetaan käsky:

# sudo hexedit /dev/mmcblk1p1

Huomaa että on olemassa myös laitetiedosto /dev/mmcblk1 joka viittaa KOKO levyyn ei siis tuohon ainoaan osioon. Tärkeää on siis muokata ensimmäistä OSIOTA eli p1 pitää olla käskyssä mukana! Kortin luonnollisesti pitää olla lukitsematon jotta kirjoitus onnistuisi.



Ylläolevassa kuvassa kursori on kohdassa 0x40 (tämän näkee kuvan alareunasta tilariviltä) jossa lukee BOOTDISK. Kuvassa olevalla kortilla siis lukee tuo vaadittu BOOTDISK jo valmiiksi eli kortti on buuttaava. Voit hyppiä heksapuolen ja tekstipuolen välillä painamalla tabulaattoria. Kirjoita tekstipuolelle BOOTDISK isoilla kirjaimilla. Varmista että aloitat juuri kohdasta 0x40 niin teksti tulee oikeaan paikkaan. Kun olet valmis voit poistua painamalla CTRL+X. Kuvassa muuten näkyy alussa teksti PwrShot joka kertoo että kortti on alustettu kameralla.

Nyt kaiken pitäisi olla valmista. Mikäli et ole vielä siirtänyt DISKBOOT.BIN tiedostoa kortin juureen, niin tee se nyt. Lopuksi laita kortin kirjoitussuojaus PÄÄLLE (luit oikein) ja laita kortti kameraan. Vaikka kortti on kirjoitussuojattu niin uusi kameran ohjelmisto osaa tallettaa kuvia sinne. Jos kortti ei ole kirjoitussuojattu niin kamera käynnistyy normaalissa tilassa ilman uutta toiminnallisuutta. Voit siis kytkeä CHDK:n päälle tai pois yksinkertaisesti siirtämällä kirjoitussuojausta eri tilaan.

Käyttöohjeet ja *PALJON* muuta sälää löydät CHDK:n kotisivuilta.