Friday, 25 September 2009

The FOSS community finally gets a dose of China ..

I notice that the FOSS people are finally being bitten by the Chinese problem. The rest of us in CE have, of course, had this problem for years - there are manufacturers out there whose business model is to buy a new product, suck the software image out, reverse-engineer the hardware and then sell their own cut-price version - and more OEMs who do this on the side, selling off-label cut-price versions of the products they make for western consumers to the generic domestic market, from where they naturally turn up here.

There's no effective way to stop this short of tivoisation, which is why it's such a popular tactic and why GPL3 is particularly invidious in CE: none of us want to tivoise our products - it's stupid, time-consuming and difficult (plus we want to hack them ourselves). But if we don't, we get maybe two months' grace before our software gets knocked off and the product driven off the market.

This is a natural side-effect of Asian manufacturing economics: anything you make in the UK will always be more expensive than in the far east, because the far east has much lower regulatory compliance costs - they're allowed to run machines that no-one in the UK would countenance, under lax employment law and with no IP enforcement to speak of.

So perhaps the free software community will be a little more forgiving to those of us who lock them out of our products in future; we're really not that evil (well, some of us aren't) - just trying to get some sort of return on our investment before we're instantly outcompeted.

Wednesday, 16 September 2009


At a team discussion yesterday, we realised the marketing potential of my cast. This is what we came up with.

Thursday, 10 September 2009

IR Widget - the next step

Hello all,
Just a quick update on the IR Widget.
Trying to control games consoles has proved a little difficult - it appears that not all of the controls for video playback on the PS3 (for example fast-forward, rewind) can come from a keyboard. The only available controls are: bring up a menu, navigate around with the arrow keys and select the appropriate option. The situation is similar on the XBox 360. While this is functional, it's not so nice to use - we want now for the widget to pretend to be a games controller as well as a keyboard, as that has buttons to do what we want. However, this could take a little while to implement due to memory constraints. Richard has offered to solve this with some refactoring and buffer sharing tricks.
I have now added some functionality to allow us to send modifier keys (ctrl, alt etc) which it turns out are essential for some of the media controls in Linux.
I have also now made the programming interface work under OS X, although Windows is a little more fussy - I'm still messing around with INF files.
Work still in progress, so keep checking back!

Wednesday, 9 September 2009

muddle: Linux on the Beagleboard (part 0)

I've been playing with a beagleboard at work, as part of the initial investigation towards an advance STB (set top box). It's based around TI OMAP technology (so it's got an ARM with a DSP on the side).

Anyway, my initial investigation put Android on it (in a fairly dumb manner), and I've spent the last couple of days getting the head-of-tree OMAP Linux to boot on it, with busybox. This last I hope, when it's a little more polished, to use as a replacement for the "simple linux" example in the muddle distribution.

Anyway, here as a teaser is today's version of the build description for OMAP Linux on a beagleboard:

Tuesday, 8 September 2009

Handy hints for debugging optimised assembly, number 2431

If you're trying to see what effect your optimisations have on assembly code, a useful hint is often to put volatile assembler labels at strategic points in your code.
asm volatile ("foo1:");
in GNU C/C++ source will turn into something like:
# 667 "src/iatools.cpp" 1
# 0 "" 2
in the assembler. This may have some slightly adverse effects on the optimiser (though not too many - labels have no side-effects), but it means you can bracket loops you're trying to optimise quite successfully without having to read the runes to work out which bits of assembler correspond to which bits of C.

Thursday, 3 September 2009

USB, meet Infra-red

Been looking at this for a while now, and we've finally got something working.

This little widget will allow us to use an infra-red remote to control media playback (or do pretty much anything else) on pretty much any PC without the need for additional drivers (so long as it can support a USB keyboard).

It is programmable over USB using a simple command line interface allowing the user to configure it on a per-button basis. Currently working on configurations for controlling a PS3 for video playback.

More work being done, so watch this space!