Been having all sorts of problems with my DVD drive recently, just trying to access a disk in it was causing the system to lock up – or at least run very slowly. A quick check of the system logs showed lots of DMA and Drive Not Ready errors – I was pretty sure the drive itself was ok, so what could be the cause of the problem?
The most recent change was to the kernel, an upgrade to 2.6.16-gentoo-r9 so that was the first suspect. I’ve have two hard drives in my Shuttle, one is the primiary master on the first IDE channel (the DVD is primary master on the second channel) and one on the first SATA channel. The motherboard uses the Intel 82801EB/ER (ICH5/ICH5R) IDE Controller to run both the IDE and SATA channels, which in turn means the kernel uses the ata_piix module to handle the disks.
Some digging around this module showed potential clashes with the generic IDE module that could cause similar problems to those I was experiencing, however I’d already disabled that so it wasn’t the problem. I also discovered you may need to explicitly enable support for ATAPI devices with this module, by means of a #define in the libata.h before you compile the kernel, however that was inconclusive and made no difference anyway.
I eventually decided it may be a problem with the firmware in the DVD drive itself – a quick check showed it to be running v1.04 where the Plextor website showed the most recent version to be v1.12. Worth an upgrade I thought, so off to the download section to discover that they only supply a Windows version of the update utility – a bit of a drawback when you’re running Linux.
Goggle came to the rescue again, a search throwing up the answer – which is basically to download the firmware binary from the Plextor site in Belgium and use a little utility called pxupdate that writes that out the DVD drive. Worked first time and so the firmware in the DVD drive was soon updated to v1.12.
A quick reboot and normal service was resumed, DMA access to the DVD was working and it was ripping CDs at over 20x again 🙂