Processor Graphics Discs Parts Index
Network Power & Thermal Other Intro

Dell Inspiron 6000d
Components: Discs

James F. Carter <jimc@math.ucla.edu>, 2005-03-30 (updated 2005-12-10)

Hard Disc 40 GB, 5400 RPM, Fujitsu MHT2040AH
Optical Disc CD-RW/DVD (CD read 24X, CD burn, DVD read)

Component Details: Discs

Hard disc

Fujitsu MHT2040AH, 40 GB, 5400 RPM. This is not one of the notorious IBM-Hitachi Deathstars, a model where they pushed a design parameter farther than was wise, and ended up having to replace a lot of customers' drives. Nominal reported size is 40.0 GB before overhead. Windows reports 33.8 GB. There were two hidden partitions with Dell Diagnostics (56 MB only) and System Restore (3.5 GB). Linux reports 37.3 GB total. The average transfer rate for reading data sequentially from the raw device is 3.30e7 byte/sec.

See here for how to run the Dell Diagnostics.

The interconnection style is Ultra ATA at 100 MHz. However, the disc controller in the 915PM chipset can also do SATA, and therefore Linux uses the ata_piix driver and SCSI emulation. The disc appears as /dev/sda. Involvement of the ata_piix (SATA) driver creates a number of problems which one would not have with a parallel ATA drive, which are mentioned where they rear their nasty heads. Linux developers are working on them...

Here are some tidbits from the drive's data sheet:

Optical disc

Toshiba-Samsung CDRW/DVD SN-324S 24X CD burner and DVD reader. It's a fixed drive, i.e. takes a screwdriver to put in a different drive, but only one screw. It's on the left side, which is an improvement over the Inspiron 4100, which had it on the front and the drive opened into your stomach.

As delivered, the drive misbehaved seriously in Windows; it could not read the SuSE installation discs and had many errors when burning. Be sure to get the R90275 driver patch from Dell, identified as being for the Sonic RecordNow software, which cures all these problems. The writing style appears to be packet writing.

On Linux [kernel 2.6.8] the result was similar. Burning was tested using k3b with the most conservative settings, e.g. not on the fly, DAO mode, and nominally at 2X. 390 MB was written. This took 11 minutes (6.16e5 b/s 4.1X). On readback there were actual I/O errors on 1% of the files, i.e. diff had to exit without reading the whole file. This error rate is not acceptable. I blame it on not having DMA, even though Burnfree was turned on.

In kernel 2.6.13 (SuSE 10.0) the DMA problem is fixed, out of the box. I have not determined whether the needed patch, described below, is merged yet with the general kernel sources, but the developer works for SuSE and the patch is in the kernel that SuSE distributes.

On Linux, with kernels 2.6.8 and 2.6.11 (and from web reports, likely any earlier 2.6.x kernel), on any chipset with a SATA primary disc controller, there is a wretched tangle that prevents DMA from being used for the PATA (parallel ATA) second channel that the optical drive is on. In a stock SuSE installation (and it ends up this way in most or all distros), you have IDE generic support compiled into the kernel, and it gets initialized first, attaching the CDROM. Since it has no chipset support, it has to use PIO and not DMA to read the drive. Later when the initrd is read, ata_piix is loaded and attaches the primary disc drive, whether PATA or SATA. So everything works, sort of, if you don't try to burn. The CD appears as /dev/hdc.

If you include a kernel parameter of ide1=none, or if you build a custom kernel and kick out ide-generic (build it as a module and don't include it in the initrd), ata_piix will initialize both channels and will attach the primary disc (as SCSI). However, it will ignore the CD even if the relevant modules are preloaded. So you have DMA on the channel, but no drive. (It would be /dev/sr0 if there at all.)

Some kernel hacking reveals that the issue is being worked on actively, and within the limits of my ability to test, the new code can read fast and error free, and can burn fast and error free. Here is the kernel patch to turn on the new code in kernel 2.6.12-rc1 and to fix a bug in recognizing the PATA channel on the laptop controller. NOTE: it has not been blessed by the maintainer of the SCSI subsystem; he will release the ATAPI code for general use when he feels it's ready; and if you're doing this on a desktop mobo with separate SATA and PATA PCI devices, I haven't tested that configuration at all, so you had better check carefully yourself. The new code dies horribly in kernel 2.6.8, so don't try patching that kernel or earlier.

If you don't use the kernel patch, you will need to provide the ide_generic driver, either hardwired in the kernel or before ata_piix in the initrd.

SuSE 9.3 (kernel 2.6.11.4) has the new ATAPI code turned on, but lacks the fix in the above patch for recognizing the PATA channel on the Inspiron 6000d.

In this table, data transfer speeds are in bytes per second. 1X = 1.5e5 byte/sec on CD or 1.35e6 byte/sec on DVD. The drive is rated as 24X for CDs. The task for read data CD or DVD is to search in the whole disc or a large subdirectory for a string known to not be present. The test of sequentially reading the block device naturally will be faster becasue there is no overhead of seeking or reading directories.

Item Windows Linux (no DMA) Linux (patched)
Play music CD Works (Windows Media Player) Works (xmms) Works (xmms)
Play video DVD Works (Windows Media Player) Needs libdvdcss and configuration to use it. Needs libdvdcss
Read data CD 6.41e6 (42X) 5.65e5 (3.8X) 2.38e6 (15X)
Sequential CD 3.25e6 (22X)
Read data DVD 2.03e7 (15X) 5.65e5 (0.4X) 4.72e6 (3.5X)
Sequential DVD 4.63e6 (3.4X)
Burn data CD 8.93e5 (6X) 6.16e5 (4.1X) 1.32e6 (10X)
Read burned data CD 5.36e6 (35X)
Error free
257 of 27176 files
had I/O errors
1.07e6 (7X)
Error free

It's a fact of life that there is no official way to play a video DVD on Linux. There are legal questions about the scope of the license under which libdvdcss was written, that preclude the distros from including it.

As it's only a 24X drive, how can Windows search at 35X or 42X? Perhaps it uses the SEARCH_EQUAL opcode of ATA-SCSI, which may have some kind of optimization on a CD drive, and which Linux (grep) would not even consider using, being at the wrong protocol layer. Windows can entangle the search program and the I/O driver because it is tightly integrated and doesn't have to consider the generality of applications that grep must perform in.


Processor Graphics Discs Parts Index
Network Power & Thermal Other Intro