Thursday, November 03, 2016

A bit of progress on ScummVM for BB10

Got it building and running, there where some funny business with C++ libraries and alsa that for some reason didn't happen under the PlayBook SDK.

Indiana Jones and the Fate of Atlantis on BB10
Still, needs bit of work on the control side, especially on this small screen trying to point with a finger is quite hard.

Video of ScummVM running Indiana Jones and the Fate of Atlantis on running on a DevAlpha C (Q10)

Onkyo receivers, very insecure networked devices

I've been working now awhile on my Onkyo Qt ISCP library and there is one not so funny thing about the protocol. There is no authentication or authorization whatsoever. So basically if you happen to be on the same network as a networked Onkyo you can do whatever you like.

From the not-too-bad: Change radio channel, switch input
To the not-so-nice: Turn the volume up as high as it goes, stream something nasty

Even the device setup web interface is open to everyone.

So don't put a networked Onkyo on a public IP and keep it on a private network that no outsiders can access.

Sunday, August 14, 2016

Gotchas in Drupal, part 1. Date field storage formats.

I've been working with Drupal now for about 3 years now. From time to time there are things that are just strange design decisions or just plain stupid.

One such thing is Date fields, there are a couple of them with no clear documentation (on the Field management page that is, there are if you Google, but who does that?). Anyway, I needed a Date field. The ISO sounded good, pretty much assumed it was just related to the data entry as I was going to feed in a 170000 nodes with date & time field in a easy for machines to parse format.


Drupal uses, obviously, a SQL database. Meaning that dates, should, obviously be stored in a SQL a DATE, TIME, DATETIME type right ? Oh, no no no.

What does Drupal do ? Use a varchar.

No wonder searching, by date ranges, on my collection of 170000 nodes was just a tiny bit slow.

Thursday, July 21, 2016

Basic IR remote control for arduino train

Got inspired a while ago and added IR remote support to the train set. Lights can be turned on/off and the train can be fully controlled with the Play/Stop/Pause/FF/RW and Prev/Next track buttons.

  • Play will start the train slowly to a set speed
  • Stop will engage the brakes and stop the train
  • Pause will slowly stop the train
  • FF & RW controls the speed
  • Prev/Next will change train direction (when stopped)
  • Number buttons (1-3) toggles building lights
The remote itself is a random Sony CD player remote I had laying around at home.
A quick video below:

The code is available on github

Wednesday, June 15, 2016

Environment education package, a train set with various themes

Something I've been working on @Work(tm). It started with the exercise bike generator and then we went a bit crazy with the extras for it.

Environment education package, train set with various themes

It is part of a environment education package with various themes, including energy, mobility, waste management and biodiversity. It is part of the City of Turku Ekotuki action.

I've done the technical side of it using an AVR/Arduino as a main controller. The track has 3 (The two that are positioned at the parallel track location are combined into one.) IR sensors to track where the train is. The IR sensors are monitored using interrupts and as there are only two on the ATmega328P the two sensors needs to be combined into one.
A H-bridge motor controller is used to run the train itself using one pin PWM for speed and a couple of pins for direction control.

The system, a bit of a mess yes :)
As the whole system is covered with a plexiglass cover to keep fingers away, the whole system and train needs to be fully automatic. The train controller is configured to run the train around the track a random amount of times (with lower and upper limits), then stop and the station and change direction.

To help debug the system a character LCD is connected trough i2c, it displays the current state, input voltage, speed, wait counters and various other data.

Debug character LCD

The run time and stop time can be adjusted with two potentiometers so code changes are not required for basic adjustments. These are read at startup with analog inputs.

Configuration potentiometers

We are considering adding a automatic/manual model toggle with some kind of a remote controller (IR might work).

All buildings have LED lights and are also controlled by the Arduino, currently some are combined because a lack of hardware (need to add a PWM LED controller) but all lights can be controlled separately.

Building lights
Recycling point with street light

There is also a tiny i2c connected B&W LCD screen (the red thing by the blue car, supposed to be a charge point for electric cars) that is used to display logos of the sponsors (Föli, Turku Energia, Lounais-suomen jätehuolto and Turun seudun puhdistamo Oy) and train timetables (fixed for now). This will be upgraded to a color LCD sometime in future.

Electric car charge point with advertisment screen

The system can be powered by the exercise bike to demonstrate electricity generation and usage. It is also possible to power the system with a AC-adaptor in cases where using the bike is not possible.
The Arduino source code is open and available on github. It is of course very specific to this particular setup but still, it is there.

The small house at the top has also a working solar panel.
Solar panel with LED light in the window

The package is still evolving and one of the features in the pipeline is to add environmental and train sounds, upgrade the sponsor LCD to a color version and fully separate light control. Also a way to run the set in manual mode is

Various kits was used to build the whole thing, you can find links to the major parts below if you are interested:

Monday, April 25, 2016

Native ScummVM for PlayBook, progress

I was sick and tried to do something usefull at the time. So, a bit of hacking on the BlackBerry fork of SDL to add support for native gestures (Swipe down and and Back swipe "down-left to upper-right").

Swipe down is obviously used for the game menu access (F5 key) and back swipe for Escape to skip cut-scenes (ESC key).

It is pretty much ready for submission!

See below for a quick video on how the swipes are working in Sam & Max Hit the Road and Flight of the Amazon Queen.

Wednesday, April 13, 2016

ScummVM for PlayBook and BB10

Started to scratch an itch as nobody seemed to have done a proper native port of ScummVM for the PlayBook or BlackBerry 10 devices.

It runs and the games seems to work. Now what is needed is some way to handle left/right clicks, F5 and other keyboard shortcuts.

Native ScummVM on BlackBerry PlayBook

Monday, March 21, 2016

Monday, February 22, 2016

SID Player for BlackBerry 10

Looks like I've been neglecting my blog again... well, let us do something about that.

I've been planning on doing a SID player for a long long time already for BB10 devices but been a bit scary of doing the low-level audio stuff. No need for such under Linux devices thanks to gstreamer but BB10 does not come with a easy to extend media framework, you need to do everything yourself pretty much.

Got inspired to do something about it a couple of days ago and started with a simple test application using libsidplayfp and QAudioOutput. Works. So next was to use QSA instead as QAudioOutput is not supported on BB10. Turned out to be quite easy (thanks to my effort to get espeak-ng speaking).

A quick demo of my work in progress SID Player for BlackBerry 10