« 30-Days of Using Linux: Annoyances Listed | Main | Back To the Moon »

Reading UDF CD-RW in Xandros Linux

I wrote earlier about problems with the Linux UDF driver. This driver is used to access DVD-RWs and CD-RWs that are formated in Windows using, for example, Roxio or Adaptec's UDF drivers for multiple read/write operations. In other words, the disc has been formated in Windows to operate like a very, very large floppy. So, you can read, write, add, delete, edit and just about do everything you could do with a floppy disc.

At first, I thought I had to either re-compile the kernel, upgrade to the 2.6.11-1x kernel (see more below), or just forget about ever accessing the gigabytes of backed up data that I created while using Windows and wrote to CD-RW discs. But this is not the case.

By reading the CD-ROM How-To and especially the linux.faqts article on Linux: UDF: Windows Roxio I am now able to at least read my CD-RW backup discs. I can't write to them, but I can at least read them.

Here's what I had to do in Xandros Linux. I emphasize that the commands below may be specific to Xandros and you may need to use something else.

First, I needed to create a directory to mount the CD-RW to. To do this, I began by opening a console window to get to the command line. Note, you could do a lot of what needs to be done from within KDE or Gnome but it's easier to go to the command line. You need to be root when issuing these changes so you may was well as type in, su, hit the enter key, and then type in the password for root (if you didn't log in as root, which as a security precaution you shouldn't be doing) now. Then type in mkdir /mnt/cdrw and hit the enter key. Note, what you call the directory you are creating is up to you, as long as it isn't already being used or is a system reserved word. Otherwise, you can call it whatever you want.

The second thing to do is load the UDF driver. You do this by typing modprobe udf and hitting the enter key. To confirm whether the driver loaded, you can type in cat /proc/filesystems and hit enter. This should list a load of drivers, one of which should be udf.

Lastly, you need to mount the CD-RW by typing in mount -t udf -o ro /dev/cdrom /mnt/cdrw and hit the enter key. If all went well, you can now change to the directory /mnt/cdrw and browse the files on your CD. Note, the part of the command -o ro sets the system to read only. You can change it to -o rw but so far, when I do, I get the following message:mount: block device /dev/cdrom is write protected, mounting read-only. I need to figure out why this is happening and what, if anything, I can do about it. The how-tos are kind of vague about this and say you may or may not be able to get this to work.

Before removing the disc, you should probably unmount it by typing the command umount -a -t udf.Once unmounted, feel free to eject the disc.

In any case, I now have read access to the data, even if it's not as functional as in Windows. Oh, one other thing, Windows long file names may be displayed as a truncated 8.3 name. There is apparently a way of enabling long file name support but I haven't found out how to do that yet.

Now, in my earlier post, I had talked about upgrading to the 2.6.11 kernel. I thought I would have to download the more than 30MBs of source code and compile it myself. This was based on my search of the Xandros Network repository using the search term kernel. This search turned up only the source code. Little did I know I needed to search on xandros-kernel to find the 2.6.11 kernel image. Once I found that, installing the new kernel was just a matter of clicking on the install link and Bob's your Uncle, I had the 2.6.11 kernel installed. How cool is that?

Now if I could only get write access to the drive...YMMV. Use at your own risk. Insert disclaimer here.

[UPDATE] I need to add instructions for DVDs. As you might expect, they are very simialr to CD-RW so I won't go into an explanation:

mkdir /mnt/dvdrw
modprobe udf
mount -t udf -o ro /dev/dvd /mnt/dvdrw
umount -a -t udf

Aloha!

Comments

UDF disks are not just a problem fo Linux. Not all disks written on one windows box will be usable on another windows box. Just small version difference in drivers and firmware cause problems.

I too could not figure out why Xandros was not auto-mounting my packet-written discs as UDF (well, I still don't know why) but, thanks to your post, I learned how to generate a second mount point for the drive (mine's a DVD-RAM recorder) that will bring it up in File Manager as a UDF drive and show the actual files on the UDF-formatted partition, rather than the squirelly little HTML help files that Nero sneaks into the iso9660 partition when it formats the disc.

As I let slip above, I format my disks using Nero InCD - and their contents now show up just fine in Xandros. I'm still having a major problem though - I can't copy any LARGE files to the disc. Small files work great, but Xandros just freezes up after about 15-20 MB of a large 800 MB file I've been trying to copy (actually, it's just slowing down to a crawl, but XFM and the copy dialog act frozen for long stretches of time). It must be some problem with cacheing, or buffering, or the swap file, or somesuch. I'm going to have to do a lot of research on this probably.

Now, as to the problem you're having gaining write access, not sure if I can help, but at least I can give you my config (which worked right off the bat with full r/w access).

Main difference is in what I reference as my device name, since my Xandros (3.0) install sets up my two cdrom devices not as /dev/cdrom or /dev/dvd, but as /dev/cdroms/hdc and /dev/cdroms/hdd. That's a big difference (but maybe you're still using Xandros version 2?).

Xandros also sets up automounting of all removable drives in the /etc/mtab file, using links to the devices it's created in /var/autofs. It also does some fancy on-the-fly configuration of the mount directories /disks and /media during boot - so I wouldn't mess with any of those directories when mounting any disks yourself. My DVD-RAM drive is automounted when I start Xandros, as an iso9660 drive, and shows up in the File Manager as a separate device in the Folders list called DVD-RW, outside of the All File Systems folder entirely.

So, I created a directory for the mount point, as /mnt/dvd-ram, then I opened the /etc/fstab file in Text Editor and copy-and-pasted the line for the device (/dev/cdroms/hdd) to a new line, changing only the mount point to /mnt/dvd-ram and the "ro" option to "rw" (being careful not to delete or change the original entry for that drive).

Then, since Xandros has so kindly eradicated KDE's built-in templates for creating desktop shortcuts to any sort of drive or device, I spent a couple of hours online hunting up the syntax for a KDE block device shortcut and came up with the following shortcut file, which I placed on my desktop.

Just create this file in Text Editor and save it to your Home/Desktop folder as anything you like, so long as the file extension is ".desktop" (I named mine "DVD-RW Drive (Mount UDF)"):

[Desktop Entry]
Dev=/dev/cdroms/hdd
FSType=udf
Icon=dvd_mount
MountPoint=/mnt/dvd-ram
ReadOnly=false
Type=FSDevice
UnmountIcon=dvd_unmount

And voila (or, as you said, Bob's your uncle), I now have a shortcut on my desktop that opens up my DVD-RAM drive in WRITEABLE UDF mode just by double-clicking on it. You can also mount and ummount the drive just by right-clicking on the desktop icon. (It has a bad habit of showing up already "mounted" at boot-up, even though that particular mount point has NOT been mounted (at least not by fstab, which is set to "noauto"), but I've found that just double-clicking on it will ACTUALLY mount it UDF on-the-fly while it's opening a new File Manger window and then the right-click option to "Unmount" will be applicable.)

Hope it works for you.