Sebastian Kirsch: Blog

Wednesday, 18 January 2006

Linux DVD burner troubles

Filed under: — Sebastian Kirsch @ 20:59

Recently, I had much fun trying to set up an IDE DVD burner under Linux.

After asking a couple of friends, who told me, “Buy LG or BenQ, those are good", I decided on a BenQ DW1640. Little did I know …

Strangely enough, burning DVDs and CDs worked fine from the start. The drive just had trouble reading media – regardless whether it was a DVD or a CD, whether it was burned or pressed. I would get I/O errors, the media wouldn’t mount, and in some cases, the machine locked up completely or threw a kernel oops.

Obviously, this is something that is not supposed to happen. A Linux box is not supposed to throw a kernel oops or lock up just because of a DVD burner. And googling for the error messages did not turn up much useful material either.

So I tried the usual elimination strategy: I tried two different mainboards (one a P3-800, one a P4-1.5GHz), I tried two different Linux versions (2.6.5 and 2.6.14.6), I tried different media (see above). CDs written by the DVD burner would read perfectly in the CDROM drive (which the machine also has), but would not read in the DVD burner. Nothing helped.

In the end, I found my answer buried in an Ubuntu bug report:

It seems that the BenQ DW1640 does not like PIO mode. You have to use it in DMA mode. No DMA, no dice. And you need a proper 80-pin cable. If you don’t, you will get all sorts of strange errors. While testing, I even had a very helpful message telling me that “This drive is not supported by this version of the driver.” – which is quite clearly not the case. It’s just another IDE drive, ya know?

According to the bug report, a firmware upgrade may help with this problem. But of course, BenQ in their infinite wisdom only supply the firmware upgrade software for Windows (specifically, Windows 98/Me/2000/XP – if you have NT or Windows 95, you’re out of luck.) Whatever happened to supplying firmware upgrade utilities on small bootable DOS floppies? Also according to the bug report, this problem is shared by drives with the Philips Nexperia PNX7860E chipset, including the Plextor 740A.

So, thank you very much, BenQ and Linux, for two days of fun tracking down this problem!

For the record (and for Google) this is the kind of error message I got in the log file:


Jan 17 17:32:42 kernel: hdc: status error: status=0x58 { DriveReady SeekComplete DataRequest }
Jan 17 17:32:42 kernel: ide: failed opcode was: unknown
Jan 17 17:32:42 kernel: hdc: drive not ready for command
Jan 17 17:32:42 kernel: hdc: ATAPI reset complete
Jan 17 17:32:42 kernel: hdc: status error: status=0x58 { DriveReady SeekComplete DataRequest }
Jan 17 17:32:42 kernel: ide: failed opcode was: unknown
Jan 17 17:32:42 kernel: hdc: drive not ready for command
Jan 17 17:32:42 kernel: Unable to handle kernel NULL pointer dereference at virtual address 00000000
Jan 17 17:32:42 kernel: printing eip:
Jan 17 17:32:42 kernel: c015e050
Jan 17 17:32:42 kernel: *pde = 00000000
Jan 17 17:32:42 kernel: Oops: 0002 [#1]
Jan 17 17:32:42 kernel: Modules linked in: edd evdev joydev st sd_mod sr_mod ide_cd cdrom nvram speedstep_lib thermal ipv6 processor fan button battery ac paride parport intel_agp agpgart sg scsi_mod uhci_hcd i2c_i801 i2c_core 3c59x mii usbcore dm_mod
Jan 17 17:32:42 kernel: CPU: 0
Jan 17 17:32:42 kernel: EIP: 0060:[<c015e050>] Not tainted VLI
Jan 17 17:32:42 kernel: EFLAGS: 00010287 (2.6.14.6)
Jan 17 17:32:42 kernel: EIP is at create_empty_buffers+0x20/0x80
Jan 17 17:32:42 kernel: eax: 00000000 ebx: c1134fa0 ecx: 00000000 edx: 00000000
Jan 17 17:32:42 kernel: esi: 00000000 edi: dffea384 ebp: 00010000 esp: d64adce0
Jan 17 17:32:42 kernel: ds: 007b es: 007b ss: 0068
Jan 17 17:32:42 kernel: Process dd (pid: 11848, threadinfo=d64ac000 task=de3cd030)
Jan 17 17:32:42 kernel: Stack: c1134fa0 00000000 c015eba0 22e8ca00 dffede00 de5cd01c dffede08 00000020
Jan 17 17:32:42 kernel: 00000001 dfff3800 00000096 00000000 00000000 00000096 dffea388 dffea2e4
Jan 17 17:32:42 kernel: c0162ba0 c1134fa0 c021852f c1134fa0 00000000 dffea388 c1134fa0 dffea384
Jan 17 17:32:42 kernel: Call Trace:
Jan 17 17:32:42 kernel: [<c015eba0>] block_read_full_page+0x270/0x320
Jan 17 17:32:42 kernel: [<c0162ba0>] blkdev_get_block+0x0/0x80
Jan 17 17:32:42 kernel: [<c021852f>] radix_tree_insert+0xbf/0x110
Jan 17 17:32:42 kernel: [<c0144b2c>] read_pages+0x4c/0x100
Jan 17 17:32:42 kernel: [<c01427ac>] __alloc_pages+0x17c/0x410
Jan 17 17:32:42 kernel: [<c0144c84>] __do_page_cache_readahead+0xa4/0x100
Jan 17 17:32:42 kernel: [<c0144e31>] blockable_page_cache_readahead+0x51/0xd0
Jan 17 17:32:42 kernel: [<c01450b6>] page_cache_readahead+0x146/0x1a0
Jan 17 17:32:42 kernel: [<c013e896>] do_generic_mapping_read+0x326/0x490
Jan 17 17:32:42 kernel: [<c013ea00>] file_read_actor+0x0/0xf0
Jan 17 17:32:42 kernel: [<c013ec92>] __generic_file_aio_read+0x1a2/0x210
Jan 17 17:32:42 kernel: [<c013ea00>] file_read_actor+0x0/0xf0
Jan 17 17:32:42 kernel: [<c013ee05>] generic_file_read+0x95/0xc0
Jan 17 17:32:42 kernel: [<c014d45a>] do_no_page+0x6a/0x2a0
Jan 17 17:32:42 kernel: [<c012ed00>] autoremove_wake_function+0x0/0x50
Jan 17 17:32:42 kernel: [<c015b667>] vfs_read+0xd7/0x180
Jan 17 17:32:42 kernel: [<c015b9f1>] sys_read+0x41/0x70
Jan 17 17:32:42 kernel: [<c0102eaf>] sysenter_past_esp+0x54/0x75
Jan 17 17:32:42 kernel: Code: 8d 74 26 00 8d bc 27 00 00 00 00 56 89 ce b9 01 00 00 00 53 89 c3 e8 40 f7 ff ff 89 c1 89 c2 8d b6 00 00 00 00 8d bf 00 00 00 00 <09> 32 89 d0 8b 52 04 85 d2 75 f5 89 48 04 8b 03 a8 08 75 06 8b

Comments

No comments yet.

RSS feed for comments on this post.

Leave a comment

Sorry, the comment form is closed at this time.


Copyright © 1999--2004 Sebastian Marius Kirsch webmaster@sebastian-kirsch.org , all rights reserved.