CD-Brennen ist schon lange kein Hexenwerk mehr, seit immer schnellere Festplatten und Computer eingesetzt werden. Aber auch in der heutigen Zeit der Gigahertz-CPUs bricht hin und wieder der Brennvorgang verfrüht ab, weil das System nebenher noch andere Aufgaben erfüllt. Mit BURN-Proof-Technik sollen verbrannte Rohlinge der Vergangenheit angehören.
Ursache für die meisten Brennabbrüche sind sogenannte Buffer-Underruns. Dabei hat der CD-Brenner alle im Schreib-Puffer (Write-Buffer) gespeicherten Daten auf die CD gebracht und wartet nun auf Daten vom Computer. Wird der Puffer nicht rechtzeitig wieder gefüllt, bricht der Brenner den Schreibvorgang ab.
Der Grund dafür ist, dass die Daten der CD mit konstanter Geschwindigkeit geschrieben werden müssen. Ein Absetzen und späteres Fortführen war bislang nicht möglich. Entscheidend für eine konstante Geschwindigkeit ist dabei nicht die Drehgeschwindigkeit der CD, sondern der Weg des Lasers auf der CD-Oberfläche. Innen sind die Spuren kürzer, außen länger. Um mit einer konstanten Datenrate lesen zu können, dreht das CD-ROM beim Lesen der inneren Spuren hörbar schneller als im Außenbereich. Man spricht von CLV (Constant Linear Velocity), der Laser überstreicht also immer den selben Weg pro Zeit. Im Falle von Single-Speed-Geräten beträgt die Datenrate 2352 mal 75 = 176400 Bytes pro Sekunde. Ein Brenner mit zwölffacher Beschleunigung schreibt folglich 12 mal 176400 Bytes pro Sekunde, das sind etwas mehr als 2 MByte pro Sekunde. Diese Datenmenge muss der Computer stets liefern.
Sobald der Computer die Daten nicht mehr schnell genug zum CD-Brenner transportieren kann, zum Beispiel weil die CPU gerade ausgelastet ist, kommt es zu einem Buffer-Underrun – der interne Pufferspeicher des CD-Brenners ist leer, und der Brennvorgang muss abgebrochen werden. Die entstandene CD-ROM ist unvollständig und in der Regel unbrauchbar.
Lösungsansätze
Da dieses Problem schon länger bekannt ist, wurden mehrere Verfahren zur Vermeidung entwickelt. Als erstes ist der vorher schon angesprochene Puffer im CD-Brenner selbst zu nennen. Er hat bei den neueren Brennern eine Kapazität von 2–4 MB und reicht so bei maximaler Brenngeschwindigkeit für etwa 1,5 bis 2 Sekunden. Auch die Brenner-Software baut im Speicher einen Puffer auf. Beim Brenn-Programm cdrecord kann man die Größe frei wählen, standardmäßig sind es 4 MB.
Das neueste Verfahren zur Vermeidung von Buffer Underruns kommt von Sanyo und nennt sich BURN-Proof (Buffer Under RuN error Proof, http://www.sannet.ne.jp/BURN-Proof/). Diese Methode versucht nicht, die Buffer Underruns zu verhindern, sondern deren Folgen. Ein kleiner Mikrokontroller direkt im CD-Brenner überprüft ständig den Füllstand des eingebauten Puffers und leitet im Falle eines drohenden Buffer Underruns (Puffer weniger als 10% gefüllt) ein geordnetes Verfahren zum Beenden des Brennvorganges ein. Sind die letzten Daten auf die CD-R geschrieben, merkt sich der Chip, wo sich diese befinden. Sobald der Puffer wieder voll ist, muss die CD-Brenn-Software den Brennvorgang wieder starten, d. h. auch die Software muss BURN-Proof unterstützen. Darauf startet der Mikrokontroller den Brennvorgang wieder direkt dort, wo die letzen Daten gebrannt wurden. Ähnliche Verfahren gibt es noch von Ricoh, wo sich das ganze “JustLink” nennt, und auch Yamaha hat etwas entsprechendes mit dem Namen “Wast-Proof Write Strategy” angekündigt. Auf dem Markt hat sich bis jetzt aber nur BURN-Proof durchgesetzt, und auch Linux unterstützt bei Verwendung von cdrecord oder cdrdao ab Version 1.1.5 bis jetzt nur diese Technologie.
BURN-Proof verwenden
Ob ein Laufwerk BURN-Proof unterstützt, kann man einfach mit dem Kommando
# cdrecord -checkdrive dev=0,X,0 driveropts=help Cdrecord 1.10a16 (i586-pc-linux-gnu) Copyright (C) 1995-2001 Jörg Schilling […] Driver options: burnproof Prepare writer to use Sanyo BURN-Proof technology noburnproof Disable using Sanyo BURN-Proof technology
feststellen (das X kann via cdrecord -scanbus bestimmt werden – im Kasten IDE Brenner unter Linux finden Sie ein Beispiel). Aktiviert wird BURN-Proof dann einfach, indem man zu dem normalen cdrecord-Befehl den Parameter driveropts=burn-proof hinzufügt.
Und funktioniert’s?
Aber jetzt mal zur Praxis: Wir hatten fünf Laufwerke mit BURN-Proof und ein Laufwerk mit JustLink von Ricoh im Test. Mit Hilfe des Ricoh-Laufwerks konnten wir feststellen, dass JustLink nicht einfach ein anderer Name für BURN-Proof ist – es muss auch anderes aktiviert werden; cdrecord kann das nicht. Bei allen anderen Laufwerken kam es dagegen zu keinen Problemen – weder mit SCSI noch mit ATAPI. Es war jedoch deutlich schwieriger als erwartet, die CD-Brenner auf BURN-Proof zu testen. Da cdrecord die POSIX-Echtzeit-Erweiterung nutzt, hat es eine höhere Priorität als alle anderen Prozesse; nur der Kernel steht noch darüber – hier kann man also nicht ansetzen. Auch ist es illusorisch, den IDE-Bus so zu blockieren, dass die Daten nicht mehr schnell genug zum Brenner kommen – kein aktuelles IDE-Gerät schafft es, den IDE-Bus dauerhaft zu überfordern. Bleibt nur noch, die Daten, welche auf die CD gebrannt werden sollen, zu behindern, bevor sie zu cdrecord kommen. So haben wir die Daten “on the fly” (also ohne Zwischenspeicherung auf Festplatte) mit mkisofs erzeugt und diesen Prozess durch Erniedrigen seiner Priorität und Starts vieler anderer Prozesse zum Stillstand gebracht. So haben wir es dann schließlich bei allen Laufwerken geschafft, einen Buffer-Underrun zu fabrizieren, und BURN-Proof hat sie stets abgefangen (cdrecord gibt dabei keine Meldung aus).
Fazit
Alle Brenner mit BURN-Proof funktionierten einwandfrei, die Unterbrechung des Datenstroms hatte auf die Lesbarkeit der CDs keine Auswirkungen. Sanyo gibt jedoch an, dass mit BURN-Proof erstellte CDs besser mit einem 4x-CD-ROM oder einem CD-Player mit Baujahr nach 1995 gelesen werden sollten. Jede Schreibunterbrechung hat eine kurze Lücke zur Folge, die ältere Laufwerke unter Umständen außer Tritt bringen könnte.
Einzig das Ricoh-Laufwerk produzierte unlesbare Rohlinge im Test, weil das notwendige JustLink-Feature zur Zeit von keinem Linux-Brennprogramm unterstützt wird. Im Falle einer Anschaffung sollten Sie deshalb vorher nachsehen, ob cdrecord oder cdrdao mit dem jeweiligen Brenner klar kommt – und im Zweifel auf BURN-Proof-Laufwerke zurückgreifen. Angesichts der Leistungsfähigkeit heutiger Rechner stellt sich allerdings die Frage, ob man wirklich ein Gerät mit dieser Technik benötigt. Zumindest unter Linux stellen “verbrannte” CDs doch eher eine Rarität dar.
Übersicht
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
|---|---|---|---|---|---|---|
| Hersteller | Lite-On | Plextor | Plextor | Plextor | Ricoh | Teac |
| Website | http://www.liteonit.com.tw | http://www.plextor.be | http://www.plextor.be | http://www.plextor.be | http://www.ricoh.de | http://www.teac.de |
| :Modell | LTR-12101B | PX-W1210A | PX-W1210S | PX-W1610A | MP9120A-DP | W512E |
| :Straßenpreis | 420 DM | 550 DM | 850 DM | 625 DM | 650 DM | 450 DM |
| :Geschwindigkeit (Schreiben/Wiederbeschreiben/Lesen) | 12/10/32 | 12/10/32 | 12/10/32 | 16/10/40 | 12/10/32(/8 DVD) | 12/10/32 |
| :Anschluss | ATAPI | ATAPI | SCSI | ATAPI | ATAPI | ATAPI |
| :Buffer-Underrun-Schutz | BURN-Proof | BURN-Proof | BURN-Proof | BURN-Proof | JustLink | BURN-Proof |
| :Geschwindigkeitstest: | ||||||
| :Brennen CDR [kB/s] | 1750 | 1736 | 1747 | 2265 | 1761 | 1739 |
| :Fixieren CDR [s] | 25,3 | 24,2 | 24,6 | 18,9 | 22,9 | 27,9 |
| :Brennen CDRW [kB/s] | 1212 | 1278 | 1272 | 1107 | 1406 | 1302 |
| :Fixieren CDRW [s] | 28,0 | 33,8 | 34,1 | 33,7 | 35,4 | 34,4 |
| :Lesen CD-ROM [kB/s] | 2145 | 2479 | 2512 | 3094 | 2483 | 2414 |
| :Lesen Audio (Spielzeit/Lesezeit) | 2,27 | 5,45 | 6,06 | 5,22 | 1,86 | 3,05 |
So haben wir getestet
Die Tests wurden auf einem AMD K6-2 mit 350 MHz und Kernel 2.4.2 durchgeführt. Bei den CD-R-Tests wurde ein 691 MByte großes ISO-9660-Image auf die CD-R gebrannt – bei den CD-RW-Tests begnügten wir uns mit 137 MByte. Die Lesetests gingen immer über die inneren Spuren – die ersten 100 MByte und die ersten 10 Minuten der Test-CD.
IDE/ATAPI-Brenner unter Linux
Wer einen SCSI-Brenner hat, der hat schon einen Vorteil – cdrecord unterstützt diese Geräte direkt, korrekte Installation des SCSI-Host-Adapters vorausgesetzt. Bei ATAPI-Geräten ist das etwas anders: Es muss zuerst eine Umsetzung von der IDE- zur SCSI-API stattfinden. Dies funktioniert über das Kernel-Modul ide-scsi: Dieses Modul stellt für jedes IDE-Laufwerk, welches noch nicht von einem anderen Treiber belegt ist, eine SCSI-Emulation zur Verfügung, so dass es für die Programme als echtes SCSI-Laufwerk erscheint.
Das eigentliche Problem ist es nun, den CD-Brenner für das ide-scsi-Modul freizuhalten. Dabei unterscheiden sich die Vorgehensweisen je nachdem, ob man IDE-CD-ROMs fest im Kernel unterstützt, oder ob es als Modul (ide-cd) geladen wird. Am einfachsten findet man dies heraus, indem man eine Daten-CD ins Dateisystem einbindet (mounted) und dann mit lsmod nachsieht, ob das ide-cd-Modul geladen wurde.
Sollte die ide-cd-Unterstützung fest im Kernel verankert sein, so muss man dem Kernel per Boot-Parameter sagen, dass er den Brenner für die SCSI Emulation frei halten soll. Das geschieht mit dem Parameter hdX=ide-scsi. Von nun an steht /dev/hdX nicht mehr zur Verfügung, und man kann den Brenner über /dev/scd0 ansprechen. Der Boot-Parameter sollte fest im Boot-Loader eingetragen werden; bei Lilo wird dazu der append-Eintrag in der /etc/lilo.conf erweitert:
append = "hdX=ide-scsi"
Sollten unter append bereits Parameter stehen, wird hdX=ide-scsi voran gestellt und mit Komma von den restlichen getrennt.
Ist ide-cd nicht fest im Kernel, so müssen erstens die ide-cd-Parameter so angepasst werden, dass dieses Modul nicht mehr auf den Brenner zugreift, und zweitens die ide-scsi-Parameter so geändert werden, dass andere Geräte nicht belegt werden, auch wenn deren Treiber noch nicht geladen ist. Beide Einstellungen werden in der Datei /etc/modules.conf festgelegt. Für das ide-cd-Modul muss einfach die Zeile
options ide-cd ignore=hdX
eingefügt werden. Sicherzustellen, dass ide-scsi nur den Brenner belegt, ist leider nicht ganz so einfach – es gibt keine Optionen für Module. Deshalb muss man dafür sorgen, dass alle Treiber für mögliche andere Geräte schon geladen sind, bevor das ide-scsi-Modul initialisiert wird. Dies bewerkstelligt der folgende Eintrag:
pre-install ide-scsi modprobe -k ide-cd;modprobe -k ide-tape;modprobe -k ide-floppy
Der Parameter -k sorgt dafür, dass die Treiber wieder automatisch entladen werden, wenn sie nicht benötigt werden.
Zuguterletzt muss in beiden Fällen noch die ide-scsi-Emulation als SCSI-Controller eingetragen werden:
alias scsi_hostadapter ide-scsi
Ob alles geklappt hat zeigt sich bei einem
# cdrecord -scanbus
Linux sg driver version: 3.1.17
Cdrecord 1.10a16 (i586-pc-linux-gnu) Copyright (C) 1995-2001 Jörg Schilling
Using libscg version 'schily-0.4'
scsibus0:
0,0,0 0) 'TEAC ' 'CD-W512EB ' '2.0B' Removable CD-ROM
0,1,0 1) *
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
Danksagung
Wir danken der Firma Strixner+Holzinger für die Bereitstellung der Lite-On-, Plextor- und Ricoh-Brenner sowie CompuPlus für die Leihgabe des Teac-Laufwerks.
Strixner+Holzinger
Schillerstr. 23
80336 Münchenhttp://www.strixner.de/
CompuPlusSchillerstr. 23a
80336 Münchenhttp://www.compuplus.de/
Glossar
-
hdX
-
Unter Linux werden alle IDE Geräte als /dev/hdX angesprochen. “hdX” steht dabei für:hda: erster Kontroller, Masterhdb: erster Kontroller, Slavehdc: zweiter Kontroller, Masterhdd: zweiter Kontroller, Slave











