Hacking the Aleratec Roboracer LS Duplex MAC/WIN for Audio CD Duplication with Correct Metadata

2014-09-01:

A few years ago I bought an Aleratec Roboracer LS for Mac in order to help streamline the production of CD’s for sending off to distribution centers such as CD Baby, Interpunk, Pandora etc. It was a smart buy and I’m glad I did it as it has saved me time and money in the long run.

  • It can automatically publish to 100 discs at a time and handles the loading and unloading of discs to the burner and printer.
  • It uses light-scribe to label the discs, which means no costly printer ink or smudged discs etc. It clean, efficient and looks great. Only drawback to this approach is that it is limited to monochrome graphics. Which is all right by me as most distribution is digital these days anyway, so printing of physical discs is really a “nice to have” IMO.
  • I only need to press a CD on demand, so I don’t have to keep 100 – 1000 copies of a disc lying around when I’ll really only need 20-50 at a time. I also have all of the machinery and supplies needed to make inserts, jewel cases, shrink-wrap, etc., so my cost per disc can be held pretty low, and there is no minimum number of discs that I need to make in a run.

All of that is great … HOWEVER — For trying to do stand-alone duplication of audio discs there is a snag: The Discribe software that ships with the Roboracer doesn’t understand CUE/BIN or DDP formats, AND after doing some testing I’ve discovered that it doesn’t faithfully and consistently replicate the metadata (UPC/ISRC codes etc) from audio discs. Dammit. The audio discs made by the roboracer still play just fine, but the metadata is either nonexistent or garbled. And it’s kinda important to me that the CDText and ISRC codes be accurate.

I’ve known about the CUE/BIN and DDP issues since I bought it but (I thought) I had a workaround. The problem with the metadata was only recently discovered within the last 6 months, as for a while I was running the Roboracer in “streaming mode” to duplicate discs from a master that I would burn from DDP via WAVELAB, which according to the documentation should have been faithfully replicating the master’s metadata.

So for now, the way I’ve gotten around these issues is by using WAVELABs burning capabilities to (one by one) make a batch of DDP discs, and the RoboRacer for automatically burning the graphics. Which isn’t as automated as I’d like, but some automation is better than none for making a batch of discs to send off to the warehouses.  And the good part is that since I don’t need to do this very often as most distribution is digital, its not too much of a time sink.

I’ve written a few times to the folks at Aleratech and Charismac to ask if I could be given the API for the robotic controller to write my own shell script routines to run the Roboracer. So far no such luck, as they have told me repeatedly that the API is proprietary and the public version is discontinued.  However, I just stumbled across a blog post HERE that has packet sniffed the comms going to/from the Roboracer USB controller. This might be just what I need to make some new software that automates my publishing and addresses my CUE/BIN/DDP/Metadata problems with the Roboracer!

Adding this one to my list of TODO projects for the studio …

Update 2014-09-20:

So I’ve been able to make a little progress on this. Using the program “coolTerm” I’ve been able to at least verify that some of the commands listed in the above blog post will function for operating the arms. However I haven’t been able to get his BASH shell scripting to function properly in the same way (granted its OS X not Ubuntu), which will eventually be necessary in order to use the robotic commands in conjunction with the “drutil” command in OS X to perform the burning operations. When I try and run echo or printf commands to send packets the driver seems to get stuck waiting for a response and I end up crashing the system and having to reboot. I’ve tried a number of different setups / parameter args to try and make this work and all of them fail in the same way so there must be something pretty basic that I’m missing.

There are a grand total of 3 different but related blog sites that I’ve found with information on this, but that’s about it. I’ve tried to scrape as much info as I can from the sites, but they look as though they’ve been abandoned as there hasn’t been any activity on them in a while.

http://srcbin.blogspot.com/
http://hyperdiscs.pbworks.com/w/page/19778460/Command%20Sets%20–%20Aleratec%20RoboRacer%20LS
Use Aleratec Roboracer LS Duplex under Linux to automate daily dvd backups
What I’ve been able to put together so far about controlling the ROBORACER LS Duplex Mac/Win:

The “Discribe Aleratec” software that came with it is crap for doing full blown audio work with correct metadata. (but we knew that already)
One of the reasons I bought this version of a duplicator was that Aleratec had posted on their site that there was an SDK available, well … come to find out that’s been discontinued and their support staff hasn’t really been very forthcoming with any assistance (yet … I’ve still got a few e-mails waiting for a response).

/dev/tty.usbserial is a 9600 baud, 8 bit, No parity, 1 stop bit, with no flow control connection to the robotics
Correct messages that get interpreted by the controller are echoed back immediately, otherwise … crickets …
OS X “drutil” command can be used for interrogating the drives, opening and closing trays etc
>> drutil list (list devices attached to computer)
>> drutil tray eject -device XXX (Ejects tray for device)
>> drutil tray close -device XXX (closes tray)
>> drutil burn ARGS (performing the burning … ARGS TBD for now)

To Verify CD Text or ISRC codes encoded on a disc
>> drutil cdtext
>> drutil subchannel

Open Man Pages in Preview
>> man -t drutil | open -f -a /Applications/Preview.app
…. etc (The man pages are your friend)

Need to use “/dev/tty.usbserial” and the prolific USB -> Serial driver for robotics control
!BNKSTA3 (NO OP ????)
!BNKPB8E (NO OP ????)
!BNKLF8E (TOP LED OFF)
!BNKLG8F (TOP LED ON)
???????? (BOTTOM LED OFF)
???????? (BOTTOM LED ON)
!BNKFG89 (TOP LED BLINK)
???????? (BOTTOM LED BLINK)
!BNKDP90 (DROP DISC INTO TOP TRAY)
!BNKRG95 (TOP HAND SMALL)
!BNKRH96 (TOP HAND BACK)
!BNKRB90 (TOP HAND BIG)
!BNKPG93 (BOTTOM HAND SMALL)
!BNKPH94 (BOTTOM HAND BACK)

Update 2015-03-28: 

I’ve let this project be on the back burner for a bit, but it looks like I’m going to have to bump it up in priority.  The hardware and software for controlling the Roboracer LS Duplex is now out of production and support and doesn’t seem to work correctly on OSX Yosemite.  Crud.  I guess I really do need to finish making this hack work otherwise my duplicator is now just a paperweight!  It doesn’t seem like a very difficult project, but it will take some time to finish mapping out the commands and finding the right combination of ‘nix – fu to use to do the burning, etc.

So project goal(s):

  • OSX / UNIX shell script that takes a Wavelab DDP or set of CUE/BIN files along with a .png or .jpg disc cover image and performs the necessary steps for loading buring and printing the discs using the Roboracer LS.
  • Once the basic logic / functions are working, maybe wrap in a GUI, etc

Program Logic flow:

First open, clear, and close both drive bays

Repeat for N discs:

  • Open top drive:
    • >> drutil tray eject -device XXX
  •  Load disc:
    • –> !BNKDP90 (DROP DISC INTO TOP TRAY)
  • Close Drive:
    • >> drutil tray close -device XXX (closes tray)
  • Burn DDP or CUE/BIN
    • >> ??? (Need to write or find correct commands, or good Open Source package to do this)
  • Open top drive:
    • >> drutil tray eject -device XXX
  • Open bottom drive:
    • >> drutil tray eject -device XXX
  • Drop + flip disc
    • –> !BNKRB90 (TOP HAND BIG)
  • Reset Top Tray
    • –> !BNKRH96 (TOP HAND BACK)
  • Close Top Tray:
    • >> drutil tray close -device XXX (closes tray)
  • Close Bottom Drive:
    • >> drutil tray close -device XXX (closes tray)
  • Burn LS image to disc
    • >> ??? (Need to write or find correct commands, or good Open Source package to do this)
  • Open bottom drive:
    • >> drutil tray eject -device XXX
  • Drop disc to basket
    • –> !BNKPG93 (BOTTOM HAND SMALL)
  • Bottom reset:
    • –> !BNKPH94 (BOTTOM HAND BACK)
  • Close Bottom Drive:
    • >> drutil tray close -device XXX (closes tray)

Leave a Reply