Category Archives: Open Source

Open Source, Free Software, and similar

Picture Rockbox on a Camera

Canon Powershot A550Obviously the CHDK guys have working code for Canon‘s (and other’s) Digic II powered cameras, and reading their wiki they use plain arm-elf for the job and… yeah so does Rockbox and… yeah, well it certainly at least opens a possibility for a Rockbox branch for these toys!

Of course there would be porting involved and I don’t know how these cameras have on the audio front, but those are all just details…

Email wins over Forums

Wherever there are mailing lists, some people eventually bring up the suggestion to move to or to at least offer a web forum alternative as well.

As a subscriber to over 100 mailing lists, receiving several thousands of emails every day I’m a violent opponent of web forums. Why? I’ll entertain you by stating a few reasons for my opinion on this:

  • If all my 100 lists would be forums, I would have to visit 100 sites to check for new messages. Some forums offer mail notifications on new messages, which would remove the need to poll all sites unconditionally, but that’s still just a detail.
  • There’s no way to mark individual message to deal with at a later time.
  • You’re forced to use each and every specific forum “client” instead of a single dedicated and at your choice selected email client that was written and perfected for this purpose.
  • There are people who prefer mailing lists and those who prefer forums, I’ve come to accept that fact. Thus, when introducing forums as an alternative means for communication, you also risk draining people (and thus talk, opinions, facts) from the mailing list.

By reading thousands of mails per day, I’ve worked out a system on how to deal with them all. Like I filter them in 20+ inboxes on arrival and I read them in a prioritized order and I mark interesting mails as “important” to deal with them later in case I don’t have time at the moment to reply or catch all details.

Several of my inboxes are automatically (renamed and) archived every month to make them not grow inconveniently large.

So please, don’t start more forums. Use mailing lists. Oh, and don’t top-post and/or full-quote on those lists…

Installing Rockbox on e200R is Scary

The initial way of installing Rockbox on the Sansa e200R series seriously scare away lots of people, and some of those who have attempted to perform the install really should better have been scared, judging from their desperate cries for help in the forum etc.

Another downside of the initial procedure was that it required the user to download a binary-patched version of the original bootloader, a bootloader that is the property of SanDisk that we have no rights to redistribute – especially not a modified one.

The current work-in-progress method is to build an installer program that can be uploaded to the player and then it does the necessary patching live in the target, removing the need to download anything that isn’t clearly a product of the Rockbox project.

We still lack a working way for this on Windows though, so the current plan is to initially provide a live CD with Linux and the e200R installer on for the Windows crowd, but we’ll see how things evolve…

Manufacturers Hate Customers

I’ve been involved in the Rockbox project since before it was named Rockbox and in fact long before the first code as written. I’ve contributed to it pretty much over the years and I have a fair insight in how most of the ports have been made and what efforts that are behind them. Today, Rockbox runs on around 25 different digital music players.

The first ports of Rockbox was (in retrospect) rather easy since we took it to architectures what were made with circuits and chips for which we could find documentation online.

Recently, music players as well as other consumer electronics are being made using products and circuits from companies that blatantly refuse to hand out documentation. Companies such as PortalPlayer (now Nvidia), Austrian Micro Systems, Samsung, ALI, NEC, Broadcom, Telechip, Texas Instruments, Sigmatel (to name a few) all make interesting and fun hardware but…

Let’s say I am looking into alternatives when creating new hardware. I want to build something new and cool. Something not done before, that would be portable and feature sound and an LCD and whatnot. I see what cool manufacturers there are out there and I can read their propaganda on their fancy web sites. So, I want to compare company A’s fancy chip with company B’s. I contact them in order to get to know as much as possible to be able to compare these beauties.

Data Sheet for a technical thing

No, you cannot get any docs. We will not tell you how our products are used until you sign up for a huge contract. These companies don’t only require NDAs to be signed and similar, they simply won’t let you get the docs no matter what if you’re a small player and are just interested in comparing and evaluating products.

I’ve contacted several companies with this purpose in mind. I work with embedded products for companies doing products using such chips, so I would assume I should be the kind of person these companies would respond to with an open mind and a will to sell me their stuff. But they clearly hate customers.

This problem is of course also tightly related with the eternal discussion of manufacturers not wanting to hand out docs to hardware they sell for PCs, such as graphic cards (AMD/ATI, Nvidia, etc) and network cards (Broadcom, etc). These companies usually hide behind a blurry statement about protecting their intellectual property and being afraid of ending up in the hands of the competition but that always and unconditionally end up with the arguments:

  • The competitors can get this info anyway by simply acting like a big customer, or possibly by buying the info from an existing customer. This protection only hides the info from the little people, not from the big guys with resources.
  • Getting information from the hardware based on a detailed description on how to use it is quite frankly a very ineffective way of cloning someone else’s design and not a likely scenario.
  • Development in these areas is at such a high speed these days, so getting the docs for the current hardware give hardly any competitive edge since the mere operation of copying it to make an own version of it takes a long time and by the time it would be done it would already be outdated.

I sometimes wonder if the chip manufacturers do this on demand from their bigger customers, the consumer electronics companies, to help them keep things hidden so that we – the general public – will have a harder time to modify and/or reverse engineer their products, which may lead to additional support issues for them.

We see this development of secret-docs going in the wrong direction. Samsung used to publish a lot of docs for their ARM-core based microcontrollers, but they no longer do so. Marvell bought the Xscale family from Intel and recently they took away all the public docs for them…

We see “open source” projects (like Neuros uses TI chips) go with these companies so that they can’t reveal all source code.nvidia chip

Luckily, not everything is darkness. There are occasional bright spots, as the other day when AMD announced their intention of bringing their open source ATI drivers up to speed with what could be expected of them..

So what is there to do about this? What can we “little people” do to change these big evil corporations? There’s really only one way: put the money where the docs is! Buy stuff from the good companies. Recommend your clients to release docs openly. Recommend your clients to buy hardware (parts) from companies that host their documentation publicly.

Rockbox build downloads Aug 2007

rockbox400.png

During August 2007, 71164 Rockbox zip files were downloaded from build.rockbox.org. 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 download.rockbox.org 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

Functions:

  • 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.

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.