As described in a previous post, I had been struggling for years to get various versions of Windows to reliably recognize and upload data from an Olympus VN-960PC digital voice recorder (DVR), before finally arriving at a seemingly stable solution (i.e., connecting through a USB 3.0 hub). Now I wanted to use that Olympus DVR with a Linux computer. This post discusses the process through which I pursued that goal.
There were two parts to this task: hardware and software. On the hardware side, I had to get the Linux computer to recognize the device. On the software side, I needed to run the Olympus Digital Wave Player software, or something like it, to work with the data coming in from the DVR.
Connecting the Hardware
The Linux solution, for this device (and apparently for other Olympus VN DVRs), seemed to be based on the odvr project, originally archived at Google Code but cloned to GitHub. The first step was to download the driver from one of those code locations. Among the various downloads listed at the Google Code site, I chose the most recent: odvr-0.1.5.tar.gz (September 27, 2009). Eventually I figured out that this would require me to compile source code, which I did not know how to do. I was willing to learn, but the original developer said that this most recent version included only small fixes, aside from “a raw download option” that might be of interest to “advanced users trying to decode PULCOD files found on VN-xx00PC devices.” Mine, a VN-960PC, was not a VN-xx00PC device, and anyway I had no clue about PULCOD files.
So I backed off and downloaded the older odvr_0.1.4.1_i386.deb — again, taking literally the developer’s statement that HQ audio was “still unsupported on VN-xx00PC models.” As soon as I clicked to download that file on my Linux Mint 17.3 KDE machine, the GDebi Package Installer opened and presented me with an Install Package button, which I clicked. According to Hellomoto, the next step was to connect the VN-960PC to the Linux machine via USB cable. Unlike the situation in Windows, of course, this was not going to cause the Olympus Digital Wave Player (DWP) software to pop up. Instead, I had to enter commands to see what was going on.
I opened Terminal and typed “odvr -l.” (Note: this post uses standard English punctuation. This means that, in that example, my command consisted of odvr -l, without the quotation marks or closing period. And by the way, that’s odvr followed by a lowercase -L, not by the number one.) That gave me an error message: “Failed to open Olympus device: couldn’t claim interface.” I tried again: “sudo odvr -l.” That worked. I got a listing of two files I had recorded onto the VN-960PC, with dates and other information about those files.
To get the list of available commands, I typed “sudo odvr -h.” (I assumed “odvr” was short for “Olympus Digital Voice Recorder.”) The list was as follows:
-= Options =- -h : This help. -v : Print version. -d <folder> : Download all files in <folder>. -e : Download everything. -l : List all files. -x <folder> : Delete all recordings in <folder>. -c : Delete all recordings. -y : "yes" to all yes/no questions. -r : Reset the DVR. This may fix some sync issues. -D : Enable debug tracing.
I used “sudo odvr -e” to download (I would say upload) the files from the VN-960PC to the computer. Terminal said that it was downloading those two files. It didn’t say where. Terminal had opened in my Mint home folder (i.e., /home/ray), and that turned out to be where the files were.
At this point, I was rather sorry that I had not been using Linux to upload recordings from the VN-960PC for all these years. Despite the initial hassle of figuring out how to use it, this seemed very much simpler and more straightforward than the various problems I’d had with the VN-960PC in Windows.
I decided not to use “sudo odvr -c” to delete the recordings I had downloaded. Instead, I wanted to compare the results that I would get by connecting that same device, with those same recordings, to a Windows machine with the Olympus DWP software. There didn’t seem to be any way to unmount the device from the Linux machine, so I relied on the fact that it wasn’t doing anything at the moment, and simply unplugged it, and then plugged it into the Windows machine.
The DWP software popped up and I proceeded with the upload. Windows Explorer > right-click > Properties reported that the first file was 12,416 bytes and the second was 25,216 bytes. But the Linux machine said 37,816 and 72,890, respectively. Each of the two versions of the two recordings were only one or two seconds long; they all played OK, and I couldn’t tell any difference by listening to them. The README file included in the source code download (above) provided an explanation for the size difference. The full text of the Notes section of that README file was as follows:
Downloaded files are signed 16 bit PCM WAV files at the recorded sample rate. Olympus DVRs internally use a 3-bit differential PCM format with 14 bit resolution. Unfortunately, the Windows software converts from this format into lossy 4bit IMA ADPCM *and* it resamples. Files downloaded by odvr should be of higher quality than with the Windows software, but it does result in larger WAV files. It is recommended to recompress the WAV files with MP3, Vorbis, or Speex if file size is an issue.
Some programs may have difficulty playing or reading the odd bitrate WAV files. If they do, I recommend using “sox” to resample them into something more common, such as 44100hz.
Mac/PPC support is currently non-existent. There are several places in the odvr code that are endian sensitive, and the code hasn’t been tested on big-endian machines. PPC Mac/Linux/BSD developers are more than welcome to submit patches!
odvr may get out-of-sync with the attached DVR. Use “-r” to force a DVR reset when odvr runs. For example, “odvr -r -l” will reset and then list recordings.
Some Olympus DVRs have a high-quality encoding option (PULCOD). This encoding type is not directly supported and odvr will complain about it. Use a different quality level for your recordings or try the unsupported “sandec” program that that is included with this source. It requires wine, the wine development envornment, and a copy of “san_dec.dll.” Use odvr to download the raw files, then run sandec with the filename of the raw file.
Since odvr did not complain about the two files I uploaded, I assumed that my VN-960PC did not use the PULCOD type of encoding. To test whether the files were indeed of different levels of quality, I looked at Windows Explorer > right-click > Properties > Details tab. It said they were recorded at a bitrate of 88kbps. I did not (yet) have a Linux file manager with that Windows Explorer capability, so I right-clicked on the uploaded files in the Amarok audio player and chose Edit Track Details. There, I saw the a reported bitrate of 256 kbps. That explained why the Linux uploads were about three times as large.
Olympus Digital Wave Player (DWP) Software
Having explored those matters, I plugged the VN-960PC back into the Linux machine and tried “sudo odvr -l” again. That worked as before. I compared the file dates and times reported there against those shown in the DWP program’s “Created Date” column in Windows. They reported the same dates and times, and agreed that the first of the two files had been created at 6:35 AM, three days earlier. As in Windows, however, the Linux file manager (in this case, Dolphin) reported that the files were created today (i.e., on the day when they were uploaded from the VN-960PC to the computer). As in Windows, then, it appeared that I might need the Olympus DWP software if I wanted to identify the dates and times when recordings were actually made. An alternative in Linux, not available in Windows, would be to capture the data reported by the “sudo odvr -e” command during the upload.
I searched in vain for a Linux version or alternative to the DWP software. Another possibility was to run DWP in Wine. Unfortunately, the Wine AppDB database yielded no relevant results in response to searches for “Olympus” or “Digital Wave Player.” The same was true for the CrossOver database.
It occurred to me that Wine might still run DWP, even if it wasn’t (yet) listed in the Wine database. As described in another post, I went through the process of installing Wine on this machine. With that in place, I was positioned to try to install the DWP software. I had downloaded Olympus Digital Wave Player 2.1.4.exe. I renamed it to be DWP.exe. As described in another post, I then endured an extensive struggle to try to get DWP to work via Wine. Despite others’ claims that they were successful, I was not. Until I could figure out how they had done it, if I wanted to use the Olympus Digital Wave Player software in Linux, I would have to do so in a Windows virtual machine.