Some further findings: since music is working fine, but the player can't read its state properly, I suspected /dev/hda3. Sure enough:

empeg:/empeg/bin# dd if=/dev/hda3 of=/dev/null
hda: status error: status=0x59
hda: status error: error=0x40
end_request: I/O error, dev 03:03 (hda), sector 42
hda: drive not ready for command
dd: /dev/hda3: Input/output error
42+0 records in
42+0 records out
hda: irq timeout: status=0xd0
ide0: reset: success
hda: irq timeout: status=0xd0
ide0: reset: success
hda: irq timeout: status=0xd0
end_request: I/O error, dev 03:03 (hda), sector 44
hda: status timeout: status=0xd0
hda: drive not ready for command
ide0: reset: success
hda: irq timeout: status=0xd0
ide0: reset: success
hda: irq timeout: status=0xd0
end_request: I/O error, dev 03:03 (hda), sector 46
hda: status timeout: status=0xd0
hda: drive not ready for command
ide0: reset: success
hda: irq timeout: status=0xd0
ide0: reset: success
hda: irq timeout: status=0xd0
end_request: I/O error, dev 03:03 (hda), sector 48
empeg:/empeg/bin# ide0: unexpected interrupt, status=0x59, count=4

I'm about to email support with this, but other ideas are welcome.
_________________________
Toby Speight
030103016 (80GB Mk2a, blue)
030102806 (0GB Mk2a, blue)