Wednesday, December 11, 2013

Jolla vs BB10 video camera test

I did a small camera test the other day, Jolla vs Z10, filming a Full HD video with the same content. I did two tests, outside conditions and inside conditions.

Both these devices have about the same specs on the camera, 8 megabit Auto-Focus and none of the are marketed as any kind of super-über-DSLR-camera-phones so they should be on the same line in that sense.

Anyway, video below:


I must say, I'm a bit disappointed with the Jolla camera quality, hopefully it can be fixed with software updates. Jolla compresses also a bit more than the Z10.

Thursday, December 05, 2013

BlackBerry BBM on Jolla device

BlackBerry BBM runs almost perfectly on the Jolla!



Use your favourite method to download the com.bbm.apk file from Google Play and transfer it over to your device, for example trough the browser or e-mail it to yourself. It should install and run just as you would expect on any android device.

I've just done some quick testing, but a couple of minor issues came up:
  1. Needs to be running, background service does not seem to work. I don't know if this is a limit of the runtime on the Jolla or something else.
  2. Reading of shared QRCode PINs using camera fails.

Need more proof ? Checkout this short video demonstraing chatting with a Jolla and a BlackBerry Z10.

Thursday, November 28, 2013

Jolla #hauskinjono, Part 1

On 20.5.2013 I pre-ordered the Jolla phone. Yesterday the first 450 where sold, at the DNA pop-up store in Narinkkatori, Helsinki. I arrived about 16:20 and the queue was already to the other side of the square. (I lost about 30-40 meters, had to find a WC first. Not that it mattered, as everyone queueing had device reserved already.)


The line started moving slowly when the doors opened.



Soon!

And then inside, I got the queue number 145. There where refreshments and small snacks available.


Then the actual show and announcements started and the first sale. More a bit later.

Wednesday, November 27, 2013

Asha article winner aka Sports Tracker HRM, part 3

Nokia developer runs various competitions from time to time, this time a wiki article competition on how to use features of the Asha platforms for health issues.

First I was like, eh, that is a hard topic to write something about, what ever could that be?

Then my tiny brain made the Bluetooth connection, I've been playing with the ST HRM belt, and this motivated me to concentrate on it a bit more. So I submitted an article on how to use the HRM belt from a Java ME application. And well, result below:

Goodie bag :) Asha 501, headphones and USB emergyncy charger

Asha 501

The day has come! Jolla day!

It is The Day today! The first Jolla will be sold today at the pop-up DNA Store. Obviously, I will be there, so see you in Helsinki!

Thursday, October 31, 2013

Some Sports Tracker ST HRM 2 protocol progress

I got inspired to play with the HRM belt again. The most important field was actually quite easy to find, but there are some fields that are still a mystery. Anyway, my findings for now are documented in a github repository, with some data dumps if you like to help out decoding the mystery fields.

I also made a simple J2ME application for testing, it even worked on the first try, damn I'm proud. I'll post that to github too after some minor cleanups.

J2ME ST HRM2 test application

Wednesday, August 28, 2013

YLE Radio X3M app for Nokia full-touch Asha phones now available

I was on vacation when the submission finally got trough Q/A, so it has been available for some time already but anyway, just to let you know that my Radio X3M app for the Asha full touch phones is now available for download on the Nokia Store.

Och samma på svenska! Min Radio X3M äpp för Nokia Asha telefoner kan nu laddas ner från Nokia Store.

Wednesday, July 31, 2013

My first ever J2ME app, Radio X3M, submitted to Nokia Store QA!

Yep, I did it. My first real J2ME app. And it even works. Now hoping QA does its thing to get it out there.

Oh, you are wondering what it is ? A it's dedicated YLE Radio X3M application for listening to the radio streams offered by the Finnish broadcast company of their Swedish speaking youth radio channel, including display of currently playing song, the program for today and also their news feed. As a added bonus it displays the currently playing artists image. For now it's only for the full touch Asha phones.

Test version screenshot, final is a bit different

YLE already offers apps for the Top-3, Android, WP and iPhone, but they don't seem to care for other devices, so I decided to do something about that.

Thursday, July 25, 2013

MouseJoint support added to QtQuick Box2D bindings

I added support for the Box2D MouseJoint a couple of days ago to the QML Box2D bindings. A quick and dirty test video below:



Get it here.

Friday, July 19, 2013

Connecting to the SportTracker ST HRM2 bluetooth belt from the CLI

For quickly getting the raw data out from the ST HRM2 belt, the CLI is the fastest way. No need to code up anything.

Prepare the belt first, you should know how, it will turn on automatically when the device detects a heartbeat. You need to scan and connect to it inside a couple of minutes as otherwise it will turn off automatically, I don't remember exactly how long it stays on.

First, scan for the device:

$ hcitool scan
Scanning ...
    FF:0B:AE:1C:xx:yy    ST HRM2


The do a rfcomm bind:

$ sudo rfcomm connect  FF:0B:AE:1C:xx:yy
...
Connected /dev/rfcomm0 to FF:0B:AE:1C:xx:yy on channel 1
Press CTRL-C for hangup


Now you can access the raw data stream from /dev/rfcomm0 for example with plain old 'cat'.

Unfortunately the data is not in a nice NMEA style text format but binary so to make any sense of it, pipe it to something that can convert the output to a more human friendly format, I used hexdump, like this:

$ sudo cat /dev/rfcomm0 | hexdump
0000000 46fa 81b9 372c 2046 0000 0000 0000 4e00
0000010 425c a0ba 45fa 81ba 342c c448 004e 0000
0000020 0000 5e00 fa47 b946 2c81 4434 0010 0000
0000030 0000 0000 b635 47fa 81b8 352c 1043 0000
0000040 0000 0000 8000 f2c3 47fa 81b8 362c 6443
0000050 007e 0000 0000 5f00 faab bb44 2c81 4436
0000060 00a0 0000 0000 0000 180b 4c10 45fa 81ba
0000070 372c f045 0000 0000 0000 2200 fa43 b946
0000080 2c81 4337 5664 0000 0000 0000 50d8 6363
0000090 46fa 81b9 372c 103f 0000 0000 0000 c800
...


You can adjust the output of hexdump to suit your needs.

Or just get any Bluetooth Smart HRM belt that provides a standard interface that you can use :)

Wednesday, July 17, 2013

My dream ARM board

They are all very lovely, the small and teenytiny ARM boards that are available these days. I have a bunch of my own, a Raspberry Pi A and two Bs and also a BeagleBone.

But, what I'm wishing for is a ATX or mATX board, that would fit into a standard ATX case and use preferably a standard ATX power supply. And have 4-6 SATA ports and DDR1/2/3 memory expansion sockets. I couldn't care less for HDMI or GPU. And of course be affordable, like the tiny ones. Basically something like this, old EB110ATX board, but a modern version with a more current CPU and expansion.

Anyone?


NFC Teddy Bear

This was one of those WTF moments, I found this NFC enabled Teddy Bear at Prisma in Kokkola.

The Teddy has a unique NFC tag that you register to youself (of course I tried reading it, the tag contains just a URL with a unique ID number) and apparently you can then leave messages on it, or something like that.

A pretty creative idea for NFC don't you think ?

But, notice something in the advert ? The girls is holding an iPhone and last I checked it does not support NFC, so not the most suitable phone to use for advertising a NFC enabled product. (Yes, yes it says QR-Code too, but still)

Friday, July 05, 2013

How to add NFC support to a non-NFC phone, part 2

Have a non-NFC phone ? Friends would like to share stuff with you from their NFC enabled phones without the bluetooth hassle?

Easy, all you need is a NFC tag and another phone to write the Bluetooth connection information to the tag. Obviously this won't magically turn your non-NFC phone into an active NFC device, but will make it into a passive target.

The following video shows what to do.



I got my tags from TagAge

Wednesday, June 12, 2013

Killing zombies on a BlackBerry 10 device from CLI

I'm porting a SDL based game to BlackBerry 10. The app does not yet handle the swipe-up + exit gesture properly and gets stuck in the background.

I don't know exactly what happens but the app is still running and I can't restart it and the app window  is also hidden from the task list view. Restarting fixes it obviously, but there must be a more sane way to kill it.

So what to do? The obvious way, ssh into it and running something like, say:

ps | grep appname
kill -9 

But nooo.. the paranoid people at BlackBerry has removed the QNX ps command from the BB10 Core OS.

$ ps
sh: ps: cannot execute - No such file or directory
$ which ps
which: no ps in /usr/bin:/bin:/usr/sbin:/sbin

So now what? I did ask on the forums for some help, got a link to a application for slaying zombies, but that did seem a bit overkill for a simple thing like this, so a quick dive into the code slayer showed that QNX has a /proc filesystem listing all the processes. Obviously to make it a PITA the permissions are all dr-x--x--x

But here, a poor mans ps command:

for i in /proc/*/cmdline ; do echo $i; cat $i; done

Find the line that prints out the cmdline for your app and get the pid from the line above, kill -9 it and there you have it!

Friday, May 31, 2013

NFC Enabling a non-nfc phone

NFC is a fun technology, the most classic example seems to be the tap-and-share
functionality. Unfortunately, NFC is still pretty rare among phones and none of the more cheaper ones support NFC in any way. (Which is strange, Nokia had two S40 Series phones with NFC already in 2008)

But for the simple tap-and-share from NFC phone to non-NFC there is a very simple solution. Check out this video demonstrating NFC tap-and-share from a Nokia N9 to a Nokia 500.



Next post will explain how to do it.

Thursday, May 30, 2013

Making sense of the ST HRM2 protocol

Luckily it speaks standard BT SPP protocol so getting data out of it is easy. Making any sense of it then another thing. For starters, here is a dump of what the HRM sends out.

What I've found out for now, is this:
  1. Start of data block: 0xFA
  2. Next is a sequence number going up from 0x44 to 0x47
  3. Another sequence number going down from 0xBB to 0xB8
  4. 0x81
  5. 0x36
  6. ?
  7. ?
  8. ?
  9. ?
  10. Padding of 6,7,9 zeroes
  11. Two bytes, most likely somekind of checksum
Below a dump of data if anyone is interested in trying to figure this thing out.


3714#    FA hex = -06 dec = 372 oct = _250__
3715#    44 hex = 068 dec = 104 oct = _68__
3716#    BB hex = -69 dec = 273 oct = _187__
3717#    81 hex = -127 dec = 201 oct = _129__
3718#    36 hex = 054 dec = 066 oct = _54__
3719#    45 hex = 069 dec = 105 oct = _69__
3720#    32 hex = 050 dec = 062 oct = _50__
3721#    84 hex = -124 dec = 204 oct = _132__
3722#    50 hex = 080 dec = 120 oct = _80__
3723#    00 hex = 000 dec = 000 oct = _0__
3724#    00 hex = 000 dec = 000 oct = _0__
3725#    00 hex = 000 dec = 000 oct = _0__
3726#    00 hex = 000 dec = 000 oct = _0__
3727#    00 hex = 000 dec = 000 oct = _0__
3728#    00 hex = 000 dec = 000 oct = _0__
3729#    BB hex = -69 dec = 273 oct = _187__
3730#    82 hex = -126 dec = 202 oct = _130__

3731#    FA hex = -06 dec = 372 oct = _250__
3732#    45 hex = 069 dec = 105 oct = _69__
3733#    BA hex = -70 dec = 272 oct = _186__
3734#    81 hex = -127 dec = 201 oct = _129__
3735#    36 hex = 054 dec = 066 oct = _54__
3736#    45 hex = 069 dec = 105 oct = _69__
3737#    00 hex = 000 dec = 000 oct = _0__
3738#    00 hex = 000 dec = 000 oct = _0__
3739#    00 hex = 000 dec = 000 oct = _0__
3740#    00 hex = 000 dec = 000 oct = _0__
3741#    00 hex = 000 dec = 000 oct = _0__
3742#    00 hex = 000 dec = 000 oct = _0__
3743#    00 hex = 000 dec = 000 oct = _0__
3744#    00 hex = 000 dec = 000 oct = _0__
3745#    00 hex = 000 dec = 000 oct = _0__
3746#    0C hex = 012 dec = 014 oct = _12__
3747#    94 hex = -108 dec = 224 oct = _148__

3748#    FA hex = -06 dec = 372 oct = _250__
3749#    46 hex = 070 dec = 106 oct = _70__
3750#    B9 hex = -71 dec = 271 oct = _185__
3751#    81 hex = -127 dec = 201 oct = _129__
3752#    36 hex = 054 dec = 066 oct = _54__
3753#    45 hex = 069 dec = 105 oct = _69__
3754#    48 hex = 072 dec = 110 oct = _72__
3755#    E1 hex = -31 dec = 341 oct = _225__
3756#    33 hex = 051 dec = 063 oct = _51__
3757#    00 hex = 000 dec = 000 oct = _0__
3758#    00 hex = 000 dec = 000 oct = _0__
3759#    00 hex = 000 dec = 000 oct = _0__
3760#    00 hex = 000 dec = 000 oct = _0__
3761#    00 hex = 000 dec = 000 oct = _0__
3762#    00 hex = 000 dec = 000 oct = _0__
3763#    48 hex = 072 dec = 110 oct = _72__
3764#    08 hex = 008 dec = 010 oct = _8__

3765#    FA hex = -06 dec = 372 oct = _250__
3766#    47 hex = 071 dec = 107 oct = _71__
3767#    B8 hex = -72 dec = 270 oct = _184__
3768#    81 hex = -127 dec = 201 oct = _129__
3769#    36 hex = 054 dec = 066 oct = _54__
3770#    45 hex = 069 dec = 105 oct = _69__
3771#    00 hex = 000 dec = 000 oct = _0__
3772#    00 hex = 000 dec = 000 oct = _0__
3773#    00 hex = 000 dec = 000 oct = _0__
3774#    00 hex = 000 dec = 000 oct = _0__
3775#    00 hex = 000 dec = 000 oct = _0__
3776#    00 hex = 000 dec = 000 oct = _0__
3777#    00 hex = 000 dec = 000 oct = _0__
3778#    00 hex = 000 dec = 000 oct = _0__
3779#    00 hex = 000 dec = 000 oct = _0__
3780#    8C hex = -116 dec = 214 oct = _140__
3781#    90 hex = -112 dec = 220 oct = _144__

3782#    FA hex = -06 dec = 372 oct = _250__
3783#    44 hex = 068 dec = 104 oct = _68__
3784#    BB hex = -69 dec = 273 oct = _187__
3785#    81 hex = -127 dec = 201 oct = _129__
3786#    36 hex = 054 dec = 066 oct = _54__
3787#    45 hex = 069 dec = 105 oct = _69__
3788#    7F hex = 127 dec = 177 oct = _127__
3789#    71 hex = 113 dec = 161 oct = _113__
3790#    68 hex = 104 dec = 150 oct = _104__
3791#    00 hex = 000 dec = 000 oct = _0__
3792#    00 hex = 000 dec = 000 oct = _0__
3793#    00 hex = 000 dec = 000 oct = _0__
3794#    00 hex = 000 dec = 000 oct = _0__
3795#    00 hex = 000 dec = 000 oct = _0__
3796#    00 hex = 000 dec = 000 oct = _0__
3797#    50 hex = 080 dec = 120 oct = _80__
3798#    9D hex = -99 dec = 235 oct = _157__

3799#    FA hex = -06 dec = 372 oct = _250__
3800#    45 hex = 069 dec = 105 oct = _69__
3801#    BA hex = -70 dec = 272 oct = _186__
3802#    81 hex = -127 dec = 201 oct = _129__
3803#    36 hex = 054 dec = 066 oct = _54__
3804#    45 hex = 069 dec = 105 oct = _69__
3805#    15 hex = 021 dec = 025 oct = _21__
3806#    50 hex = 080 dec = 120 oct = _80__
3807#    00 hex = 000 dec = 000 oct = _0__
3808#    00 hex = 000 dec = 000 oct = _0__
3809#    00 hex = 000 dec = 000 oct = _0__
3810#    00 hex = 000 dec = 000 oct = _0__
3811#    00 hex = 000 dec = 000 oct = _0__
3812#    00 hex = 000 dec = 000 oct = _0__
3813#    00 hex = 000 dec = 000 oct = _0__
3814#    A0 hex = -96 dec = 240 oct = _160__
3815#    63 hex = 099 dec = 143 oct = _99__

3816#    FA hex = -06 dec = 372 oct = _250__
3817#    46 hex = 070 dec = 106 oct = _70__
3818#    B9 hex = -71 dec = 271 oct = _185__
3819#    81 hex = -127 dec = 201 oct = _129__
3820#    36 hex = 054 dec = 066 oct = _54__
3821#    45 hex = 069 dec = 105 oct = _69__
3822#    7A hex = 122 dec = 172 oct = _122__
3823#    60 hex = 096 dec = 140 oct = _96__
3824#    00 hex = 000 dec = 000 oct = _0__
3825#    00 hex = 000 dec = 000 oct = _0__
3826#    00 hex = 000 dec = 000 oct = _0__
3827#    00 hex = 000 dec = 000 oct = _0__
3828#    00 hex = 000 dec = 000 oct = _0__
3829#    00 hex = 000 dec = 000 oct = _0__
3830#    00 hex = 000 dec = 000 oct = _0__
3831#    86 hex = -122 dec = 206 oct = _134__
3832#    8F hex = -113 dec = 217 oct = _143__

3833#    FA hex = -06 dec = 372 oct = _250__
3834#    47 hex = 071 dec = 107 oct = _71__
3835#    B8 hex = -72 dec = 270 oct = _184__
3836#    81 hex = -127 dec = 201 oct = _129__
3837#    36 hex = 054 dec = 066 oct = _54__
3838#    42 hex = 066 dec = 102 oct = _66__
3839#    2A hex = 042 dec = 052 oct = _42__
3840#    92 hex = -110 dec = 222 oct = _146__
3841#    94 hex = -108 dec = 224 oct = _148__
3842#    00 hex = 000 dec = 000 oct = _0__
3843#    00 hex = 000 dec = 000 oct = _0__
3844#    00 hex = 000 dec = 000 oct = _0__
3845#    00 hex = 000 dec = 000 oct = _0__
3846#    00 hex = 000 dec = 000 oct = _0__
3847#    00 hex = 000 dec = 000 oct = _0__
3848#    4B hex = 075 dec = 113 oct = _75__
3849#    9B hex = -101 dec = 233 oct = _155__

3850#    FA hex = -06 dec = 372 oct = _250__
3851#    44 hex = 068 dec = 104 oct = _68__
3852#    BB hex = -69 dec = 273 oct = _187__
3853#    81 hex = -127 dec = 201 oct = _129__
3854#    36 hex = 054 dec = 066 oct = _54__
3855#    42 hex = 066 dec = 102 oct = _66__
3856#    19 hex = 025 dec = 031 oct = _25__
3857#    13 hex = 019 dec = 023 oct = _19__
3858#    6E hex = 110 dec = 156 oct = _110__
3859#    00 hex = 000 dec = 000 oct = _0__
3860#    00 hex = 000 dec = 000 oct = _0__
3861#    00 hex = 000 dec = 000 oct = _0__
3862#    00 hex = 000 dec = 000 oct = _0__
3863#    00 hex = 000 dec = 000 oct = _0__
3864#    00 hex = 000 dec = 000 oct = _0__
3865#    D9 hex = -39 dec = 331 oct = _217__
3866#    4E hex = 078 dec = 116 oct = _78__

3867#    FA hex = -06 dec = 372 oct = _250__
3868#    45 hex = 069 dec = 105 oct = _69__
3869#    BA hex = -70 dec = 272 oct = _186__
3870#    81 hex = -127 dec = 201 oct = _129__
3871#    36 hex = 054 dec = 066 oct = _54__
3872#    41 hex = 065 dec = 101 oct = _65__
3873#    2C hex = 044 dec = 054 oct = _44__
3874#    D2 hex = -46 dec = 322 oct = _210__
3875#    E2 hex = -30 dec = 342 oct = _226__
3876#    00 hex = 000 dec = 000 oct = _0__
3877#    00 hex = 000 dec = 000 oct = _0__
3878#    00 hex = 000 dec = 000 oct = _0__
3879#    00 hex = 000 dec = 000 oct = _0__
3880#    00 hex = 000 dec = 000 oct = _0__
3881#    00 hex = 000 dec = 000 oct = _0__
3882#    93 hex = -109 dec = 223 oct = _147__
3883#    57 hex = 087 dec = 127 oct = _87__

Monday, May 20, 2013

Jolla is out

This is Monday to look forward to!

Jolla unveiled their phone just a couple of minutes ago and it looks good, really good. The specs seem to be a bit preliminary still, no real details, but dual-core, 4.5" display, 8MP auto-focus camera, 16MB of storage + microSD slot.


And The Other Half, a back cover that the user can change to customize, not only the device, but the whole interface will adjust itself to the backcover color.

Join the Tribe


The device will be available in the end of 2013 and Jolla is taking pre-orders Right Now, you can select between 100€ (Limited edition, priority pre-order, T-shirt, 100€ voucher and exclusive Other Half), 40€ (Limited edition, priority pre-order, T-shirt) or 0€ (pre-order only). Obviously you know which one to select,  I give you a hint, it starts with one and then two zeros.


Oh, and start developing now, Sailfish SDK is available.

Friday, March 22, 2013

ICTExpo 2013, Helsinki

I was to the ICTExpo yesterday, the most interesting thing must have been these old computers that Tietotekniikan liitto had on display :)

TeleType KSR 33 (1963-1981)

Osborne 1, C64, Telmac TMC-600 and a Nokia MikroMikko

Also, I like to dabble with NFC and got myself a demo/testing pack with a NFC card and a USB reader (ACR122U).
ACR122U reader
This was also nice to play with, on display at Cubio:s booth, a BlackBerry Z10. (Should be available in Finland next month, price quote was a "very clear" 600-700€. I'd recommend getting it from Amazon or some other out-of-Finland shop for now.
Z10

Thursday, March 14, 2013

GPS, Mapping and picture taking

This news reminded me of how absurd it can sometimes be when doing mapping work. I was a couple of years back in Limnos, Greece on a two week holiday.

Mmm, good food


As I've been an OpenStreetMapper since about 2006 I of course wanted to check out the if it had been mapped or not. Only some very rough main roads had been drawn there. This was just a bit after OSM got the nice Yahoo/Bing aerial photos and luckily for me there where quite good aerial photos of Limnos. So mapping I went, from my home and couple of thousand kilometers away. And got it mostly mapped in time for my travels.

Limnos map, looks good or what ? :)


Yeah, whatever I hear you thinking, what does this have anything to do with China ?

Limnos has a heavy army presence, there are many military bases and bunkers all around and a large radar installation. And for example the airport/airfield is a military area (you can even make out the planes/helicopers in the aerial images). And of course you aren't allowed to take any photos anywhere near these places.

No, not a military base (but there is one not far from here). Myrina.


What makes this absurd is that everything is available on the Internet anyway. And if some neighbouring enemy country would like to bomb the hell out of some base, all they need to do is fire up Bing maps or Google maps to find them.3

So why the hell can't a tourist take photos of these places ? Just wondering...

More QML Box2D progress and github

To start with, I pushed my enhanced version of the qml-box2d bindings to github.

It is based on Box2D 2.2.1 and adds more features:
Joint release/grab, WeldJoint, WheelJoint, FrictionJoint, Edge shape support, more properties and methods (gravityScale, getMass(), getInertia(), angularVelocity, etc) and Body fixture iteration.

Here are some videos showing usage of PulleyJoint and RopeJoin:

PulleyJoint


RopeJoint


Have fun! (oh, Qt 4.7 or 4.8 only!)

Friday, January 18, 2013

BlackBerry 10 blog in Finnish

BlackBerry is very uncommon and unknown here in Finland, so I decided to start a BB10 development and news blog in Finnish. Lets see how it goes...

Tuesday, January 15, 2013

eSpeak on the BlackBerry DevAlpha

Had to write a suitable audio driver for eSpeak but after some frustration with OpenAL it started working.

So, here you go, a talking BB10!


I'll try to post the preliminary source for the driver soon.