All posts by Daniel Stenberg

Hack Everything!

Being an ordinary hacker person in an industrial country such as Sweden, I own lots of random technical devices that I either have and use in my home or carry around for my use and enjoyment. Most, if not all, of these provide a fair amount of features and bugs. Many of them are controlled by an internal microcontroller.

My dect phone, my gsm phone, my DVB-T boxes, my TVs, my music players, the “entertainment system” of my car, my DVD-players, my wifi-router, my printer, my digital camera, my GPS, my video camera and the likes.

lcddisplay.jpg

I seriously wish I had the docs and the source code for all of these, and thus the ability to change them to behave more like I want them to. I don’t believe I’m alone either. I wouldn’t even have to do most of these changes myself, we would have communities built up around basically all of these devices so that people from all over would share their ideas and code to improve your device. I would hack them all, if I could.

Of course, some of these devices aren’t at all possible to upgrade since they’re produced and sold without that ability and for those I’d have to accept this (and buy a different model the next time around), but a lot of these things can be reprogrammed at will already if we only knew how.

If only the manufacturers didn’t hate us.

libcurl in less than 50KB

Gary Maxwell enlightened us that his build (of a slightly older libcurl) is way below 50KB on an ARM7 architecture, while Dan Fandrich could squeeze the latest libcurl release to at least below 100KB on x86.libcurl

Of course these particular builds are fairly stripped down builds with only HTTP support left, but they are built from unmodified sources. Full-fledged builds with all protocols will of course be significantly larger.

libcurl bindings

Christopher Smith blogged about improving curlpp and not only did Jean-Philippe react immediately, it also showed me how far away I am from these C++ guys and their ideas and views of the world.

Not only I am not even aware of what functors and facets truly are (nor do I really care), but I find it interesting that the choice of them and whether or not one or the other is used or supported is such a religious thing…

You know what? The older I get, the less interested I get in the maze that is OO concepts. I just so have no interest whatsoever in C++ nor Java!

Of course I’m primarily happy they use libcurl and that they keep enhancing the ways people access it. I have work enough on the C API so I never really dive very deep in the various bindings (there are more than 30 these days).

On a slightly related note, there’s a second Lua binding now called Lua-cURL – the other one is actually called luacurl and yeah the names are… not very imaginative and very very very similar to each other.

Ainol License Violation

Ainol V2000 is one of them Chinese portable media players we see pop up every now and then in a never-ending series – most of them never really reach the western markets.Ainol V2000

For this particular player the firmware is available, and by simply inspecting the contents of that we can see that it is packed with open source and free software, but nowhere is the source for this package to be found… (not all of these packages are GPL licensed of course)

GEMDOS, Mplayer (various parts), unzip by Gilles Vollant, MAME, Snes9x, FLAC, wxMusik, VisualBoyAdvance, SDL, FFmpeg, Avifile

The image also seems to contain code from Real and possibly also from Microsoft (based on a guess on the file name strings)…

And if you want to dig around more, here’s the 5.2 MB firmware file available for download. It seems Ainol’s official web site doesn’t even mention this V2000 model?

(Marcoen brought most of this to my attention.)

3gp movies on Debian

Sony Ericsson w580iI recently shot a little video with my phone (SE w580i) and when I copied it over to my Debian Linux box I of course immediately realized I had no video players that would show a 3GP film. Or rather, they all showed it but none of them played the sound! It seems the phone uses the ‘amr_nb‘ codec for audio, which is a non-free thing that my “Debian unstable” players (not very surprisingly) don’t have built-in support for…

Anyway, if you close your eyes for the problems with closed proprietary evil, I got pointed to the cool site www.debian-multimedia.org and then I could add the following line to my /etc/apt/sources.list

deb http://www.debian-multimedia.org unstable main

… and do a plain plain “apt-get update” and “apt-get dist-upgrade” and wham, my mplayer could now show the 3gp video with sound.Film and Sound icon

The only slightly quirk remaining is that I didn’t manage to transcode the movie with audio nicely with mencode, but I didn’t really spend enough time to figure out why.

Sound on Linux has some quirks left

I’m a stupid person.

When I bought a new PC the last time, I went for a ASUS M2NPV-MX motherboard with built-inASUS M2NPV MX Motherboard sound and nvidia graphics. I had been told that the nvidia open source driver is fine enough for 2D graphics, and since I never game or anything I’m perfectly fine with 2D-only.

Ok, it didn’t take me long to realize two things about my motherboard:

  1. The built-in audio “nVidia Corporation MCP51 High Definition Audio” is not supported by Linux/ALSA. It seems to detect it fine and it can show what it is and everything but it can’t produce any sound.
  2. The open source nVidia driver does not support DVI in resolutions beyond 1280×1024, and it made me wanna cry. I switched to VGA instead, only to realize that the analog output on this board is really noticeably worse than my previous and much older trustworthy Matrox card. (New MutePCI-Express board in the pipe.)

There’s nobody to blame but myself. Lessons for next time: check the audio support better and do not go with nVidia graphics (at all) until they have a good open source driver – and really really check this. (No need to tell me there’s a binary-only nvidia driver, I know about it but I hate it and I hate the inconveniences dealing with binary drivers cause when you upgrade your system etc.)

Funnily, the motherboard has built-in Ethernet (of course) but I don’t normally use that, as I’m on 802.11g only. My work computer is on the upper floor and my (24 mbit) ADSL connection is downstairs and I like not having to connect all my computers with cables running all over.

Music NoteSo, back to the story, to get sound for my box I got an old SoundBlaster PCI card from a friend (hej Kjell) and inserted it in the last available PCI slot (the other slot has the wifi card).

Now, when I upgrade to a fresh new kernel version with Debian unstable the system boots up and defaults to the (detected but not working built-in) hda_intel stuff, and I must run alsaconf to select my ens1371-equipped SoundBlaster instead. But this is not enough. After I’ve ran alsaconf I can’t get any sound out still, but I have to reboot and when it comes up again I must run aumixer and pull up the master volume and wham, now I have sound…

I’m quite sure this can be fixed in another way, but trying to learn this and figure how I can repair my situation to always work fine in the future is a mighty task that I haven’t yet been able to overcome. I really should get involved in the ALSA project one day…

Rockbox on Gigabeat S

Toshiba Gigabeat SI thought that I’d just complete my recent series of talking about (possible) upcoming Rockbox ports, even though the guys working on this already have been in progress for a while.

This target is quite different than the (already supported) Gigabeat F and X series, and is in fact more like a Zune (claimed to be based on this hardware).

Anyway, Gigabeat S has a 530MHz CPU with FPU, 2.4″ 320×240 LCD, 30 or 60GB disk and it runs a Windows(!) edition.

As all Gigabeat players, this is notoriously hard to get your hands on, especially in Europe.