Category Archives: General

Revisiting the Belco Alpha-400

Relieved of the primary FATE maintenance duties, I decided to dust off my MIPS-based Belco Alpha-400 and try to get it doing FATE cycles. And just as I was about to get FATE running, I saw that Mans already got his MIPS-based Popcorn Hour device to run FATE. But here are my notes anyway.



Getting A Prompt
For my own benefit, I made a PDF to remind me precisely how to get a root prompt on the Alpha-400. The ‘jailbreak’ expression seems a little juvenile to me, but it seems to be in vogue right now.

alpha-400-jailbreak.pdf

Toolchain
When I last tinkered with the Alpha-400, I was trying to build a toolchain that could build binaries to run on the unit’s MIPS chip, to no avail. Sometime last year, MichaelK put together x86_32-hosted toolchains that are able to build mipsel 32-bit binaries for Linux 2.4 and 2.6. The Alpha-400 uses a 2.4 kernel and the corresponding toolchain works famously for building current FFmpeg (--disable-devices is necessary for building).

FATE Samples
Next problem: Making the FATE suite available to the Alpha-400. I copied all of the FATE suite samples onto a VFAT-formatted SD card. The filename case is not preserved for all files which confounds me since it is preserved in other cases. I tried formatting the card for ext3 but the Alpha-400 would not mount it, even though /proc/filesystems lists ext3 (supporting an older version of ext3?).

Alternative: Copy all of the FATE samples to the device’s rootfs. Space will be a little tight, though. Then again, there is over 600 MB of space free; I misread earlier and thought there were only 300 MB free.

Remote Execution
To perform FATE cycles on a remote device, it helps to be able to SSH into that remote device. I don’t even want to know how complicated it would be to build OpenSSH for the device. However, the last time I brought up this topic, I learned about a lighter weight SSH replacement called Dropbear. It turns out that Dropbear runs great on this MIPS computer.

Running FATE Remotely
I thought all the pieces would be in place to run FATE at this point. However, there is one more issue: Running FATE on a remote system requires that the host and the target are sharing a filesystem somehow. My personal favorite remote filesystem method is sshfs which is supposed to work wherever there is an SSH server. That’s not entirely true, though– sshfs also requires sftp-server to be installed on the server side, a program that Dropbear does not currently provide.

I’m not even going to think about getting Samba or NFS server software installed on the Alpha-400. According to the unit’s /proc/filesystems file, nfs is a supported filesystem. I hate setting up NFS but may see if I can get that working anyway.

Residual Weirdness
The unit comes with the venerable Busybox program (BusyBox v1.4.1 (2007-06-01 20:37:18 CST) multi-call binary) for most of its standard command line utilities. I noticed a quirk where BusyBox’s md5sum gives weird hex characters. This might be a known/fixed issue.

Another item is that the Alpha-400’s /dev/null file only has rwxr-xr-x per default. This caused trouble when I first tried to scp using Dropbear using a newly-created, unprivileged user.

Official RealVideo Specifications

A little birdie tipped me off to a publicly-accessible URL on the Helix community site (does anyone actually use Helix?) that contains a bunch of specifications for RealVideo 8 and 9. I have been sifting through the documents to see exactly what they contain as the different files seem to be higher revisions of the same documents. Here is the title, date, and version of each PDF document:

  • RNDecoderPerformanceARM.pdf: Decoder Performance on StrongARM and XScale; May 12, 2003; Version 1.1
  • rv89_decoder_summary.pdf: RealVideo 8/9 Combo Decoder Summary; October 23, 2002; Version 1.0
  • rv9_dec_external_spec_v14.pdf: RealVideo 9 External Specification; November 7, 2003; Version 1.4
  • rv8_dec_external_spec_v20.pdf: RealVideo 8 External Specification; September 19, 2002; Version 2.0
  • RV8DecoderExternalSpecificationv201.pdf: RealVideo 8 External Specification; October 20, 2006; Version 2.01
  • RV8DecoderExternalSpecificationv202.pdf: RealVideo 8 External Specification; April 23, 2007; Version 2.02
  • RV8DecoderExternalSpecificationv203.pdf: RealVideo 8 External Specification; July 20, 2007; Version 2.03
  • RV8DecoderExternalSpecificationv21.pdf: RealVideo 8 External Specification; September 11, 2007; Version 2.1
  • RV9DecoderExternalSpecificationv15.pdf; RealVideo 9 External Specification; January 26, 2002; Version 1.5
  • RV9DecoderExternalSpecificationv16.pdf; RealVideo 9 External Specification; August 17, 2005; Version 1.6
  • RV9DecoderExternalSpecificationv18.pdf; RealVideo 9 External Specification; September 11, 2007; Version 1.8

Additionally, there is an Excel spreadsheet entitled realvideo-faq.xls that appears to contain some general tech support advice for using Real’s official code. There are also 3 ZIP archives which contain profiling information about the official source code (post processing and entropy decoding top the charts which is no big surprise).

I guess the latest version of each document (the ones dated September 11, 2007) are worth mirroring. Unfortunately, those latest document versions use a terrible font.

Update: Documents mirrored here at multimedia.cx.

Parlez-Vous Binutils?

I found myself in need of some binutils today. What do you suppose it is about this basic Apache file listing page that makes Google Chrome think it’s in French?



Opting to translate doesn’t seem to have any affect, aside from ruining the alignment of the columns.

That quirk aside, the page translation facility is actually quite nifty.

Lego Mindstorms RSO Format

I recently read a magazine article about Lego Mindstorms. Naturally, the item that caught my eye was the mention of a bit of Lego software that converts various audio file formats to a custom format called RSO that can be downloaded into a Mindstorms project to make the creation output audio. To read different sources, one might be left with the impression that there is something super-duper top secret proprietary about the format. Such impressions do not hold up under casual analysis of a sample file.

A Google search for “filetype:rso” yielded a few pre-made samples that I have mirrored into the samples archive. The format appears to be an 8-byte header followed by unsigned, 8-bit PCM. More on the wiki. If FFmpeg could gain an RSO file muxer, that would presumably be a heroic feat to the Lego hacking community.