All posts by Daniel Stenberg

Rockbox build downloads Aug 2007


During August 2007, 71164 Rockbox zip files were downloaded from All existing 25 different packages were downloaded and the download counters were distributed like this:

(Model, number of downloads, share of the total number of downloads)

  1. ipodvideo 17829 (25.1%)
  2. sansae200 9909 (13.9%)
  3. ipodnano 9110 (12.8%)
  4. ipodvideo64mb 7649 (10.7%)
  5. h300 3153 (4.4%)
  6. gigabeatf 3113 (4.4%)
  7. h120 2720 (3.8%)
  8. iaudiox5 2712 (3.8%)
  9. ipodcolor 2400 (3.4%)
  10. ipodmini2g 2286 (3.2%)
  11. ipod4gray 2098 (2.9%)
  12. h10_5gb 1380 (1.9%)
  13. h10 1322 (1.9%)
  14. ipodmini1g 1191 (1.7%)
  15. ipod3g 984 (1.4%)
  16. recorder 615 (0.9%)
  17. ipod1g2g 606 (0.9%)
  18. player 551 (0.8%)
  19. iaudiom5 341 (0.5%)
  20. h100 299 (0.4%)
  21. recorder8mb 256 (0.4%)
  22. recorderv2 227 (0.3%)
  23. fmrecorder 207 (0.3%)
  24. ondiofm 105 (0.1%)
  25. ondiosp 101 (0.1%)

Do note that #4 on the list is the bigger sized version of the #1 on the list, so taken all ipod video together they account for 35.8% of all downloads!

Also, consider that this list does not include any downloads done from the servers (that host the daily and archived builds), nor do we keep track of any svn update traffic etc.

Portalplayer targets are #1 to #4, more than 60% of the downloads…

The downloads split on main architecture:

  1. portalplayer 56764 (79.7%)
  2. coldfire 9225 (12.9%)
  3. samsung 3113 (4.3%)
  4. sh1 2062 (2.8%)

ABI Breakage

Domenico Andreoli, the Debian curl and libcurl maintainer posted to the curl-library list about the recent libcurl soname bump and the related issue of ABI breakage.

I responded, explaining my view on why the soname bump from 3 to 4 was valid, but I’ve also gone back in my mail archives and checked out a private discussion I had with Bjorn Reese over this subject a long time ago and I feel it is about time it hits the air.

An ABI breakage occurs when one or more of the following changes are made


  • Change function names
  • Remove existing functions
  • Change parameters
  • Change behavior
  • Change undefined behavior
  • Add dependence on other functions (e.g. A() must be called before B())

Data structures:

  • Change the order of elements
  • Add elements
  • Remove elements
  • Change the data type or size
  • Change alignment
  • Change element values (e.g. change bits in flag variables)

Global variables:

  • Change variable names or types
  • Remove variables

Update: Dan Fandrich posted on the curl-library list and mentioned Mike Hearn’s great related page: Writing shared libraries.

Plenty Pointless Printer Processes

I recently got a new printer for my home network. My old Epson Photo 870 printer with a D-Link Ethernet-to-parallel port printer server thing suddenly died one day not too long ago.

HP Photosmart C6180I opted for a solution with native Ethernet support that could also work as a copier and scanner so that those (even though rather rarely needed) functions would also be dealt with nicely. (In fact fax too, but I can’t think I’ll ever use that so I haven’t bothered to connect it to the phone system.) I went with the HP C6180 thing, since seemed like a nice setup for a fairly low price. Even though I don’t necessarily plan to print to it from my Linux hosts, I did read some positive reviews about it when used from Linux with CUPS so that was another point talking for this particular model. The printer even has wifi support but I’m using wired Ethernet since it is faster and I have the printer standing next to my wifi router anyway. Also, having scanner supported would mean I can finally put away my 7 year old USB scanner that I’ve been lugging out to use on occasion.

Sometimes (or is it often?) we get to hear that the printer situation on Linux is horrible or at least far from perfect, and while I agree with that I find the situation on Windows horrible – but for entirely different reasons

I followed the printer’s user manual on how to install it on Anja‘s (my wife’s) laptop that runs Windows XP, by inserting the CD and clicking “yes – over Ethernet” etc and it went on and and installed. And wow, did it get installed!

It brought four new icons to the desktop and after the lengthy process was at the end there were at least ten new processes running in the system and for some reason they actually made an impact and the system felt slower! I had to go on a kill frenzy to clear up the worst mess. The amazing part is that even though I killed every single process starting with “HP”, everything still worked exactly like I wanted. And with “msconfig” I could also prevent some of the worst stuff to start again at next reboot… (This kind of behavior is sadly not specific for printers-only on Windows…)

I did have some initial quirks with the printer, until I set it to use a fixed IP address. I’m not sure it really had something to do with it, but I wanted fixed IP anyway and the problems seemed to vanish.

ooxml vs odf


There’s this saying that a picture is worth more than a thousand words… The picture above is a cropped rip-off linked from the groklaw-article this picture will take you to. It is quite simply the OOXML standard suggestion next to the ODF one.


Rockbox on the e200R models

As Austin Appel posted on the Rockbox mailing list (early this morning, euro time), Rockbox now runs on the SanDisk Sansa e200R models.

In the end, it shows there really isn’t much difference between the two e200 versions. The Rhapsody models have a modified USB stack somehow that makes it hide the second “hidden” partition in which the bootloader and system software (mi4) is stored.

The Rhapsody bootloader doesn’t allow bootloader updates, and it also actually verifies the digital signature in the mi4 files, so in order to allow Rockbox we have to do a rather funny work-around: use e200tool to make it start the plain e200 bootloader and use that bootloaders recovery mode to upload a binary-patched version of the Rhapsody bootloader. The patched version puts back the old flawed signature check from the vanilla e200 series.

When the old broken BL signature check is in place, we can “upgrade” the target using the normal means and just put a Rockbox bootloader mi4 and the Sansa will then nicely load and run that.

MrH’s take on e200R

sansa e200RGiven the recent e250R i2c rom dump, MrH brought an analysis of what the rom actually contains and it is indeed the pre-bootloader code that loads the bootloader from the NAND flash and starts it. The perhaps most interesting part is that the e250R’s i2c rom dump is identical to the vanilla e280 one we have… meaning that they both load the bootloader the same way!

So here’s MrH’s suggested steps (keyed in on the wiki page by me) to convert your R model Sansa to make it capable of loading and starting the Rockbox bootloader.

Sony Ericsson w580i on Windows

Sony Ericsson w580iI have a fairly new phone, the Sony Ericsson w580i and I think it is a neat little thing.

I’ve been using it as a usb-storage device at home under Linux without any problems, and I’ve pretty much filled my extra 4GB M2 card with music from my collection.

Today I decided to try to get a picture from my phone to my work PC (which is running… eh, Windows XP) and guess if I’m up to a shock: it doesn’t talk to the phone. It claims it can’t find any drivers for it and for some reason it doesn’t just go for usb-storage (even though we know now that it is OHCI compatible – at least).

Crap. On the Sony Ericsson site they offer the Sony Ericsson PC Suite 2.10.38 (for Windows Vista/XP) which is a whopping 44.8 megabytes! And all I want is to access my phone as UMS. Grrrr.

Once installed, I can access the phone fine but now I get that bonus popup annoyance windows that repeatedly asks me if I want to reboot the computer so that the new stuff can take effect…