CD-RW/DVD-RW Multi-Burner

The drive itself works fine in any case, but when it's used as normal EIDE-device there's no DMA support because it's connected to the SATA-controller. Hence it's necessary to use it as SATA-device to get the full speed and low CPU utilization needed, for instance to play DVDs without annoying stuttering.

Current vanilla kernels from http://www.kernel.org have the code for ATAPI support via SATA already included, but it's not enabled by default. After reading some comments about various Linux distributors already enabling the functionality in their custom kernels, I figured it's worth giving it a try.

Kernel 2.6.12.x:

In the kernel source tree in includes/linux/libata.h you have to change

#undef ATA_ENABLE_ATAPI                /* define to enable ATAPI support */
#undef ATA_ENABLE_PATA /* define to enable PATA support in some
* low-level drivers */
#undef ATAPI_ENABLE_DMADIR /* enables ATAPI DMADIR bridge support */

at around line 40 to

#define ATA_ENABLE_ATAPI                /* define to enable ATAPI support */
#define ATA_ENABLE_PATA /* define to enable PATA support in some
* low-level drivers */
#define ATAPI_ENABLE_DMADIR /* enables ATAPI DMADIR bridge support */

Kernel 2.6.14 and beyond:

Just add "libata.atapi_enabled=1" to the kernel command line in the GRUB configuration.

Using the Debian kernel package (currently linux-image-2.6.16-1-686 in sid/unstable), just make sure that the initrd is created in a way that the libata module is loaded with the atapi_enabled=1 option set. Depending on the programm you're using to create the initrd, it's necessary to configure the following files:

Package initrd-tools:

Put the line

libata atapi_enabled=1

into /etc/mkinitrd/modules

Package initramfs-tools:

Put the above line into /etc/mkinitramfs/modules

Package yaird:

Make sure the option is configured in the /etc/modprobe.d/ directory, e.g. put the line

options libata atapi_enabled=1

into a file /etc/modprobe.d/cdrom

Either way, you have to re-create the initrd afterwards, either manually (see the manual pages for mkinitrd, mkinitramfs and yaird, respectively) or by running dpkg-reconfigure linux-image-2.6.16-1-686 

Notes:

If patching is necessary you have to recompile and install the kernel as described on the kernel configuration page. After rebooting into the new kernel, the optical drive should then be accessible via /dev/scd0 (or /dev/sr0) for reading and /dev/sg1 for writing.

If your system still uses /dev/hdc (i.e. the drive is not found in /proc/scsi/scsi) it's maybe because the IDE-detection routines at startup find the multi-burner before the libata subsystem tries to access it. You can disable the IDE-detection by passing "ide1=noprobe" as kernel parameter in your GRUB configuration.

After a week of testing there haven't been any problems so far, so it seems to work fine. Playing DVDs now works perfectly, and writing to optical media works as well. But of course, you can also wait until the kernel developers think the feature is stable enough to enable it by default in the kernel.

Since I use various kernels at the moment, some with the SATA-ATAPI features enabled and some without, I put the following lines into an init script to fix the /dev/cdrom and /dev/dvd symlinks depending on kernel configuration:

# fix dvd and cdrom links
rm -f /dev/cdrom /dev/dvd
if grep -q MATSHITA /proc/scsi/scsi
then
# running libata enabled kernel
ln -s /dev/sr0 /dev/cdrom
ln -s /dev/sr0 /dev/dvd
else
# running kernel with only IDE support
ln -s /dev/hdc /dev/cdrom
ln -s /dev/hdc /dev/dvd
fi

Sections:

Comments

Anonymous's picture

hallo(ich nehme an das ich hier deutsch schreiben kann)

ich hab seit gestern ebenfals ein thinkpat t43p leider läuft mein lüfter dauernd was ja normal ist. das geräusch ist aber ziemlich laut also er läuft wohl nicht auf der untersten stuffe. wie haben sie dies bei sich geregelt?

und könnten sie mir ev ihre xfree/xorg config per mail zukommen lassen?

ich danke ihnen im voraus!

mfg mirko

Wolfgang Karall-Ahlborn's picture

hab ich mit dem Patch fuer ibm-acpi zur Steuerung bisher (seit gestern, daher auch noch keine Anleitung) gute Erfahrung gemacht. Siehe http://www.thinkwiki.org/wiki/Patch_for_controlling_fan_speed, ich hab dort auch einen angepassten Patch passend fuer Kernel 2.6.14 gepostet.

Meine xorg config ist im Moment nicht in einem veroeffentlichbaren Zustand da ich da gerade einiges ausprobiere. Gibt's ein konkretes Problem mit der Konfiguration? (funktioniert mit xorg soweit ja problemlos bis auf Powersaving und 3D)

Anonymous's picture

xorg probleme haben sich eigentlich alle behoben was ich noch testen will sind dualhead sollte aber mit meiner aktuellen config möglich sein.

an das lüftergeräusch hab ich mich mitlerweile gewöhnt werde aber trozdem nach eventuellen bios updates ausschau halten und ihre patches anschauen.

übrigens: sehr nette seite und gute informationen zum t43p! ich danke ihnen!!!

mfg mirko

Anonymous's picture

Hi!

Erstmal danke fuer die Zusammenstellung! ThinkWiki hat zwar geholfen, aber hier gabs noch ein paar Extras Wink Was mich interessiert... klappt das Brennen unter 2.6.14 und libata_atapi.enabled wirklich? Bei mir ging das nur bei 2.6.12, doch unter 2.6.14 findet cdrecord den Brenner nicht mehr (weder als 1,0,0 noch als ATAPI:1,0,0). Die Brennerkommandos laufen dann ins Leere bzw. den timeout. /dev/scd0 ist allerdings da unt tut als Lesegeraet reibungslos.

Gruesse, Torsten

Wolfgang Karall-Ahlborn's picture

sowohl CDs als auch DVDs, kein Problem... es ist uebrigens libata.atapi_enabled (Modulname.Moduloption, siehe Documentation/kernel-parameters.txt im Kernel-Source), hast du dich eventuell vertippt? bzw. was sagt "cdrecord -scanbus"?

Anonymous's picture

Sorry, der Vertipper war in meinem Beitrag. dmesg zeigt den Brenner nach wie vor korrekt an...
scsi1 : ata_piix
Vendor: MATSHITA Model: DVD-RAM UJ-830S Rev: 1.02
Type: CD-ROM ANSI SCSI revision: 05
sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray

Aber cdrecord -scanbus zeigt erstmal nichts. Nach einem "modprobe sg" (iirc bei 2.6.12 nicht noetig) sehe ich dann ein
scsibus1:
1,0,0 100) 'MATSHITA' 'DVD-RAM UJ-830S ' '1.02' Removable CD-ROM

Aber eben nur ROM. xcdroast scannt eine halbe Ewigkeit und produziert wie cdrecord -scanbus Meldungen a'la.

sr 1:0:0:0: timing out command, waited 0s
sr 1:0:0:0: timing out command, waited 90s

Ich verwende Debians linux-source-2.6.14, allerdings auch auf einem R52, von den Innereien dem T43 wohl nicht so unaehnlich.

Wolfgang Karall-Ahlborn's picture

steht immer "CD-ROM", keine Sorge, daran liegt es nicht... Lesen klappt ohne Probleme, auch z.B. DVDs ansehen?

Anonymous's picture

Ja, Lesezugriff kein Problem. Ab dem zweiten Aufruf von cdrecord -scanbus ist zB auch die Ausgabe fuer scsi1 zerstueckelt und der Text unleserlich. Offensichtlich ist hier gegenueber dem 12er etwas zerschossen. Aber seit ich von suspend2 nach swsup gegangen bin, laeuft der 12er tadellos und ich warte auf 2.6.15.

Anonymous's picture

Hallo zusammen,

ich kriege den Multi-Burner bei mir einfach nicht zum laufen - bin etwas neu in diesem Gebiet. Habe Debian Testing mit dem Kernel 2.6.12 laufen. cdrecord -scanbus zeigt nur die Toshiba Festplatte an. Meine Grundfrage ist eigentlich, ob ich unbedingt einen neuen Kernel kompilieren muss. Falls nicht, was wäre die Vorgehensweise.

Besten Dank für Die Hilfe,

Martin.

Anonymous's picture

hallo,
ich versuche seit einiger zeit auf meine tp dvd's zu schauen. leider bleibe ich immer am selben ort hangen. ich versuchte es mit der kernel conifig von hier aber auch mit eigenen und anderen.

versuche ich mit z.b ogle, vlc, xine, mplayer eine dvd anzuschauen meldet mir dmesg follgendes:
Buffer I/O error on device sr0, logical block 146
Buffer I/O error on device sr0, logical block 147
Buffer I/O error on device sr0, logical block 148
end_request: I/O error, dev sr0, sector 1312

alle apps geben dannach irgend eine fehlermeldung aus und stopen.

hat jemand von euch das selbe problem auch gehabt? oder funktioniert das alles bei euch?

mfg kru

Wolfgang Karall-Ahlborn's picture

daher weiss ich auch nicht, ob's im Dauereinsatz zu Schwierigkeiten kommt, aber ich hab sicher schon 3-4 DVDs ohne Problem angesehen, auch sonst gab's bisher keine derartigen Fehler. Sieht wie ein Lesefehler aus, tritt das mit allen DVDs auf? Und immer im selben Sektor?

Anonymous's picture

ja der fehler tritt bei allen dvd's auf. die sektoren unterscheiden sich aber IMHO immer (hab gerade keine dvd's zur hand)
ich werde weitersuchen und falls ich mal was finden sollte hier bericht geben...

mfg kru

kru's picture

heute ist es soweit. entlich funktioniert mein dvd laufwerk wie es sollte.

meine kernel konfig sollte sich eigentlich nicht gross von deiner unterscheiden, daher schreibe ich einfach was ich gemacht habe...

bootparameter: libata.atapi_enabled=1 anhängen

in der datei /etc/modprobe.conf (/etc/modules.conf) follgende zeile hinzufügen:

options libata atapi_enabled=1

reboot und bei mir läuft jetzt alles wunderbar! dvds gucken mit ogle, mplayer sind somit kein problem mehr!

Wolfgang Karall-Ahlborn's picture

weil den Bootparameter bzw. Module-Parameter haben wir doch schon mehrmals durchgekaut, oder? Smile (wobei nur einer davon notwendig ist, je nachdem ob der SATA-Treiber als Modul vorliegt oder nicht)

kru's picture

soweit ich das beurteilen kann ja. den ich habe die selbe kernel config wie bei 2.6.15.4 benutzt.

was ich allerdings zugeben muss ist das ich die datei /etc/modprobe.conf das erste mal verändert habe. aber da ich das modul fix im kernel habe müste die ja eigentlich nicht benötigt werden. oder liege ich da falsch?

ebenfals funktioniert suspend to ram wider ohne patch mit echo mem > /sys/power/state mit suspend2 habe ich es noch nicht getestet...

ich werden in küze unter http://t43.chao.ch auch ein paar informationen und ev kernel config usw veröffentlichen.

mfg kru
--
http://chao.ch

Anonymous's picture

What about broadcasting video thru a webpage?

Anonymous's picture

Hi,

I switched to libata so that my DVD drive gets DMA and I can watch DVD movies. But, since then, I can't read any Audio CD anymore. Looks like my players cannot get the list of audio tracks. strace or running as root does not help. Do you have a similar problem?

Thanks,
Brice

Anonymous's picture

Hi,

I have the same Audio-Problem. It seems to bee a problem in the Kernel. Make "strace -f cdparanoia -B 2>&1 | tee mylog
and you can see where it stops. Ther Kernel freezes Sad

I use Debian 2.6.17-2. Hopr that 2.6.18 will work... I will try this next.

Code