Device Profile: StreetFire Sound RBX1600 CD audio jukebox frontend
Oct 25, 2004 — by LinuxDevices Staff — from the LinuxDevices Archive — 40 viewsTwo MIT students are using a newly-available hacker-friendly embedded Linux consumer audio device to re-launch MIT's believed-to-be legal network-based interactive music distribution system, Library Access to Music Project (LAMP). The LAMP system was first launched a year ago, but shut down after its content supplier encountered legal hurdles.
Re-lighting the LAMP
The LAMP project aims to provide a legal alternative to music sharing systems based on digital file sharing, such as MLDonkey and other so-called P2P (peer-to-peer) applications. LAMP distributes music in analog form, over MIT's cable TV network, which enables it to be covered by licenses MIT already has with copyright clearinghouses such as BMI, ASCAP, and SESAC, in much the same way that the campus radio station is covered. Copyright restrictions on analog distribution systems are more permissive than those on digital systems, because the lossy nature of analog-to-digital conversion prevents perfect copies from being made.
In its first incarnation, LAMP used hard-drive based audio obtained from LoudEye, the same company that helped XM radio establish its massive disk array of more than 120,000 CDs. However, it turned out that LoudEye had not had the legal right to make the sale, and the project was suspended.
Initially, LAMP project co-founder Keith J. Winstein believed that basing LAMP on physical CD jukeboxes would not be practical. In a whitepaper published in May of 2003, Winstein wrote, “Basing the system on an actual jukebox of hundreds or thousands of physical CDs would be likely not practical for reliability, space, and financial considerations.”
Winstein's conclusion was based on the high expense of CD jukeboxes with computer interfaces, because at that time, no solution existed for gluing inexpensive consumer audio jukeboxes to computers — a situation that changed with the advent of the StreetFire Sound RBX1600.
In its new reincarnation, the LAMP project uses ten RBX1600s donated by StreetFire Sound. The RBX1600s glue ten 400-CD Sony jukeboxes to both a cable TV distribution system,and a network-based user interface that lets users — MIT students, in this case — assemble playlists and schedule them for broadcast in 80-minute time segments on 16 cable TV channels.
First, we'll profile the RBX1600 as a hacker-friendly consumer audio device. After that, we'll look at how MIT altered the device for use in the LAMP system.
The RBX1600
The $750 RBX1600 is a silent, solidstate Linux-based device that connects to as many as four Sony CD consumer audio jukeboxes. It connects to the jukebox(es) through optical (S/PDIF) digital inputs, and through “S-Link” connections that enable the RBX1600 to control the jukebox(es) using an API reverse-engineered by an open source project.
The RBX1600 puts a network interface on consumer audio CD jukeboxes
On the output side, the RBX1600 offers pass-through digital S/PDIF output, for example to a computer or stereo component with digital audio inputs. The device also includes high-quality sound chips, and normal RCA analog audio outputs.
The RBX1600 sits between 1-4 CD jukeboxes and stereo equipment, adding a network interface
(Click to enlarge)
The RBX includes an RJ-45 10/100 Ethernet port, and a CompactFlash slot offers the potential (in a future firmware revision) to add a wireless interface. Users connect to the device using an open-source Java-based desktop client compatible with JRE 1.3 environments on Linux, Windows, MacOS, and other operating systems.
The “Hades” Java client interface lets users sort, search, fast-forward, make playlists, fast-forward, rewind, etc.
(Click to enlarge)
The “now playing” screen
(Click to enlarge)
A “disc editor” lets you correct meta data acquired from online services such as FreeDB, for example to prevent some albums from appearing under “The Grateful Dead” and others under “Grateful Dead”
(Click to enlarge)
Another open-source Java application, dubbed “RBX1600,” runs on the device side on top of a J2SE 1.3 JVM (Java virtual machine).
Interestingly, except for the IBM Java JVM — likely to be replaced by the open source Kaffe JVM in a future firmware upgrade — the entire RBX1600 software stack is open source, making the device one of the most hacker-friendly products ever shipped. “[Most] companies just publish APIs. We will distribute not only the OS — based on MontaVista Linux — but also all the applications and middleware under the GPL. We're going completely open book; nobody else is doing that,” said Mark Matossian, who heads up business activities at StreetFire Sound Labs.
What's to stop other companies from producing inexpensive clones of the device — or consumer electronics giants from integrating the technology into high-end audio components?
StreetFire Sound's business model
StreetFire Sound Founder Stephen Street says he watched a lot of open source business models come and go during his years of venture investing during the booms and busts at the turn of the millennium. “To be successful in open source, you either build a service business selling support, or you have some kind of token for entry — our hardware is that token.”
“The value is in the software,” Street continues. “We're releasing almost half a million lines of code, and we encourage people to come and contribute. But the proprietary foundation we're building the business on is the hardware.”
Another reason for Street's decision to use custom, proprietary hardware was his wish to create a company that could bring rapid innovation to a sluggish consumer audio industry controlled almost completely by five slow-moving consumer electronics giants. “We want to do innovation and rapid product development. To get that, you need high quality tools and an operating system — and that's here, with open source. You also need flexible hardware design. That's what we've built.”
Retargetable hardware
The RBX1600 is based on two custom PCBs (printed circuit boards). One is a CPU module that could be reused in future products. The other is an application board providing various interfaces needed for the current RBX1600 product — as well as a few thrown in to increase the device's “hack appeal.”
The CPU module is on the left
(Click to enlarge)
The “StreetRacer” CPU module is based on a 400MHz Intel XScale PXA255, an extremely power-efficient system-on-chip often used in handheld devices such as PDAs and mobile phones. The module also includes 64MB each of Flash and RAM, as well as a Xilinx II-E 400K FPGA (field programmable gate array) that is used to glue the cpu module to the application board.
The “StreetRacer” CPU module
(Click to enlarge)
Interestingly, the FPGA loads its microcode binary at boot time from a dedicated partition on the Flash, enabling the company to bundle microcode updates into firmware revisions. For example, a planned FPGA enhancement will bring hardware Ogg and/or Flak acceleration, enabling the device to rip CDs as they play to USB-connected or network-mounted storage. “The RBX1600 will be able to stream audio data compressed or uncompressed to and from the onboard Ethernet port. The FPGA allows us to write software to create hardware . . . how cool it that?” said Street.
What else is on the playlist? Street says, “Video encoding, transport, WiFi, digital radios, software-defined radio . . .” Here, Street becomes animated. “There are these lunatics building expensive radios — but they're reconfigurable RF spectrum tuners! That's the kind of thing we anticipate being able to do cheaply so the community can have access to cutting edge technology.”
The CPU module includes an FPGA that glues it to the application board
(Click to enlarge)
The application board for the RBX1600 includes a high-quality 24-bit audio system based mostly on Cirrus Logic chips, along with DSP features of the PXA255:
- CS8415A 96kHZ Digital Audio Receiver with a 7:1 SPDIF Mux.
- CS8405A 96kHZ Digital Audio Transmitter
- CS4341 24 bit 96kHZ Stereo DAC with Volume Control
- Intel PXA255 I2S bidirection serial audio port
- Intel PXA255 built-in multiply and accumulate (MAC) math accelerator
The backpanel I/O includes serial and other ports for hack appeal
I/O ports include:
- Four optical (SPDIF) digital audio ports, for connection to four Sony CD jukeboxes
- four S-Link control ports for the jukeboxes
- Analog and digital audio out
- 10/100 Ethernet
Additionally, StreetFire Sound has thrown in a number of ports meant to future-proof the design and let hardware hackers get in on the fun, too. The RBX1600 includes “HackPoint” access points that include:
- CompactFlash slot
- LCD interface
- Bluetooth compatible serial port
- CPU accessible GPIOs
- 1 Sony Control-S
- 1 USB
- 2 aux lines
- RS-232 port
The 3.6-pound (1.6kg) device measures 11.9 x 1.8 x 7.4 (30.2 x 4.5 x 18.7 cm). It comes with two digital optical cables (Toslink), one analog stereo cable, one Ethernet cable, and a 12V unregulated external power supply.
Supported Sony CD jukeboxes, up to four of which can be mixed and matched, include:
- Any Sony CDP-CX4XX series
- Any Sony CDP-CX3XX series (ex. CDP-CX355)
- Sony CDP-CX220 model
Software side
On the software side, the RBX1600 runs a custom “2.4.20-mvl31-streetracer” kernel derived from MontaVista Professional Edition 3.1 and based on ARM Linux 2.4.19 with pre-emptible kernel and real-time performance patches. A number of custom driver stacks have been implemented, including:
- Switch Control Driver
- LED Control Driver
- Sony SLINK Communication Driver
- Cirrus SPI Driver on PXA255 NSSP hardware port
- CS8415A Digital Audio Receiver Driver
- CS8405A Digital Audio Transmitter Driver
- CS4341 DAC Driver
The RBX1600 uses the full glibc library, along with busybox 1.0. The device is shipped with a licensed copy of an XScale port of IBM's WSDD (WebSphere Studio Device Developer) 5.0 J9, along with a supporting runtime environment, effectively a 1.3 J2SE compatible JRE, according to Street. “StreetFire's application software, [including] the MediaOrb [network client] and RBX1600 [device software], are both 100 percent java applications. No Java Native Interface code was required because of the design/implementation of the custom device driver stack. The MediaOrb is 100 percent platform portable, and the same binaries run on any Java 1.3 JRE platform.”
Software architecture of RBX1600 (top) and MediaOrb (bottom)
The RBX1600 stock firmware does not offer a web-based interface, but the busybox 1.0 build does enable the httpd option, and Street expects a web interface to be among the first projects the open source community will take an interest in.
The RBX1600's kernel includes support for NFS Client and NFS root filesystem, which along with NFS support in the bootloader are sure to please embedded developers. “The RBX1600 uses u-boot-1.0.0 [link] as the system bootloader and supports bootp/dhcp/tftp kernel downloads with NFS root filesystem support. This allows developer to use a full range of XScale native development tools, which will be available as an SDK at streetfiresound.com,” Street said.
LAMP's implementation
MIT students Keith Winstein and Josh Mandel were sent the first 10 RBX1600s manufactured, and used the boxes to convert LAMP from hard-drive based content to an array of inexpensive CD jukeboxes. The RBX1600s contained pre-release firmware, and the students had to write a little bit of software to get the devices working with their pre-exising interactive web-based system.
For starters, the RBX1600s could pass audio streams through the outputs, but there was no way to avail software of access to the audio data. “They did not have a device driver for the audio input under Linux. What you could do was wrap audio and play audio through the output. The device driver we wrote allows the processor to access the SPDIF inputs so it could come across this I2S bus. The ARM [processor] has I2S pins, but there was no Linux device driver to really use them. So we wrote a simple audio device driver that lets us access the I2S bus and get the audio from the SPDIF into memory — and then it just sends it out with TCP.”
“StreetFire — mostly Mr. Street — showed us what to do,” Winstein continues. “They were very helpful. They gave us this MontaVista developer's kit. I had never done any embedded programming before, and hardly any Linux kernel hacking. I had never done that before, so it was a lot of fun.”
The students also implemented a simple webserver for the device, in C, Winstein said. “When they gave it to us, it had this Java on it. But you can do anything you want with it. We built a webserver that runs right on the RBX1600 box. The file store is the CD jukebox. So you connect with a web brower, and the browser says 'get /5/7' or something. And the webserver running on the box goes to CD 5, track 7 and gives it to you in WAV format.”
Students build playlists using a Web interface served by a front-end machine. When playlists are finalized, the front-end machine requests the songs from the network of web servers running on the RBX1600s. The songs are streamed from the jukeboxes through the RBX1600s onto the front-end server, where they are compressed and concatenated into tempory files — legally similar to the “ephemeral copies” of material that radio stations are allowed to make and store for limited periods. Once created, these files can be scheduled and rescheduled, as channels are available, until they expire.
Does Winstein think the system is a compromise, compared to using harddrive based content? “It was a much bigger pain. LoudEye was extremely convenient. I didn't actually think it was going to be practical to go to real CDs. I thought we were in big trouble. A CDROM jukebox that holds 200 CDs costs $10,000. I didn't realize we'd be able to use these consumer jukeboxes. They hold 400 CDs and they cost $210. The RBX1600 makes this possible. This thing was much easier than I expected it to be.”
Availability
The RBX1600 is available now, priced at $750. Qualified developers may apply to receive a $100 discount. Further details are available on StreetFire Sound's website.
This article was originally published on LinuxDevices.com and has been donated to the open source community by QuinStreet Inc. Please visit LinuxToday.com for up-to-date news and articles about Linux and open source.