| 1 | libburnia-project.org Optical Media Rotisserie Recipes as of January 2010 |
|---|
| 2 | |
|---|
| 3 | Content: |
|---|
| 4 | - TAO Multi-Session CD Cookbook (CD-R, CD-RW) |
|---|
| 5 | - SAO CD Cookbook (CD-R, CD-RW, pure audio or pure data only) |
|---|
| 6 | - Overwriteable DVD Cookbook (DVD-RAM, DVD+RW, DVD-RW, BD-RE) |
|---|
| 7 | - Sequential DVD-R[W] Cookbook |
|---|
| 8 | - DVD+R[/DL] Cookbook |
|---|
| 9 | - BD-R Cookbook |
|---|
| 10 | |
|---|
| 11 | ------------------------------------------------------------------------------- |
|---|
| 12 | TAO Multi-Session CD Cookbook |
|---|
| 13 | ------------------------------------------------------------------------------- |
|---|
| 14 | Guided by reading mmc-r10a.pdf , O.8 "Write a Track" |
|---|
| 15 | from http://www.t10.org/ftp/t10/drafts/mmc/ |
|---|
| 16 | backed by reading mmc5r03c.pdf from http://www.t10.org/ftp/t10/drafts/mmc5/ |
|---|
| 17 | by reading spc3r23.pdf from http://www.t10.org/ftp/t10/drafts/spc3/ |
|---|
| 18 | by reading libburn/* from http://icculus.org/burn |
|---|
| 19 | and by experiments with drives NEC ND-4570A, LG GSA-4082B, LITE-ON LTR48125S |
|---|
| 20 | which used in part code from http://icculus.org/burn. |
|---|
| 21 | |
|---|
| 22 | For libburnia-project.org by Thomas Schmitt <scdbackup@gmx.net> |
|---|
| 23 | |
|---|
| 24 | ------------------------------------------------------------------------------- |
|---|
| 25 | |
|---|
| 26 | Media type can be recognized by Current Profile from 46h GET CONFIGURATION. |
|---|
| 27 | (mmc5r03c.pdf 6.6.2.1) |
|---|
| 28 | |
|---|
| 29 | CD-R 0009h |
|---|
| 30 | CD-RW 000ah |
|---|
| 31 | |
|---|
| 32 | The following topics are covered in this text: |
|---|
| 33 | - About blank, appendable and finalized CD media |
|---|
| 34 | - Writing a session to CD in TAO mode |
|---|
| 35 | - Obtaining CD multi-session info for extending ISO-9660 filesystems |
|---|
| 36 | - Obtaining a Table Of Content from CD |
|---|
| 37 | |
|---|
| 38 | |
|---|
| 39 | ------------------------------------------------------------------------------- |
|---|
| 40 | About blank, appendable and finalized CD media : |
|---|
| 41 | |
|---|
| 42 | CD media have to be blank or appendable in order to be writeable in TAO mode. |
|---|
| 43 | The according status may be inquired by 51h READ DISC INFORMATION requesting |
|---|
| 44 | Data Type 000b Standard Disc Information, where reply value Disc Status |
|---|
| 45 | indicates: |
|---|
| 46 | 00b blank |
|---|
| 47 | 01b appendable |
|---|
| 48 | 10b finalized |
|---|
| 49 | 11b others (unsuitable for this recipe) |
|---|
| 50 | (mmc5r03c.pdf 6.22.3.1.4) |
|---|
| 51 | |
|---|
| 52 | CD-RW which are finalized or appendable may be blanked by command A1h BLANK |
|---|
| 53 | with blanking types 000b "Blank the disc" or 001b "Minimally blank the disc". |
|---|
| 54 | The Start Address/Track Number will be ignored so it may well be 0. |
|---|
| 55 | |
|---|
| 56 | Because the operation is long running it is advised to set the Immed bit and to |
|---|
| 57 | watch the progress by commands 00h TEST UNIT READY and 03h REQUEST SENSE |
|---|
| 58 | with DESC bit set to 0 for fixed format reply. |
|---|
| 59 | It is done when 00h succeeds and 03h reports 0 in PROGRESS INDICATION |
|---|
| 60 | (byte 1+2 in Table 22 = byte 16+17 SENSE KEY SPECIFIC in table 26). |
|---|
| 61 | (mmc5r03c.pdf 6.2 BLANK) |
|---|
| 62 | (spc3r23.pdf 4.5.2.4.4 table 22, 4.5.3 table 26, |
|---|
| 63 | 6.27 REQUEST SENSE, 6.33 TEST UNIT READY) |
|---|
| 64 | |
|---|
| 65 | |
|---|
| 66 | ------------------------------------------------------------------------------- |
|---|
| 67 | Writing a session to CD in TAO mode : |
|---|
| 68 | |
|---|
| 69 | The writing method for blank or appendable media is the same. A new session |
|---|
| 70 | will get created automatically by the first track when it is written. If the |
|---|
| 71 | media is blank then the new session will be the first and only one in the |
|---|
| 72 | table of content. If the media is appendable then a new session will be |
|---|
| 73 | appended to the existing sessions. In any case the new track will be the |
|---|
| 74 | first one in the new session. |
|---|
| 75 | |
|---|
| 76 | Speed may be set by BBh SET CD SPEED parameter Drive Write Speed. Note that |
|---|
| 77 | kbytes/sec means 1000 bytes/sec and not 1024/sec. Rotational control should |
|---|
| 78 | be set to 00b. 1x CD speed is 176.4 kbytes/sec. Speed is usually set to the |
|---|
| 79 | next lower possible value by the drive. So it is helpful to add a few |
|---|
| 80 | kbytes/sec just in case the drive has rounding problems. |
|---|
| 81 | (mmc5r03c.pdf 6.37) |
|---|
| 82 | |
|---|
| 83 | Before writing can occur, a Write Parameters mode page 05h has to be composed |
|---|
| 84 | and transmitted via 55h MODE SELECT. Mode page 05h describes several burn |
|---|
| 85 | parameters: |
|---|
| 86 | BUFE Buffer Underrun protection 0=off, 1=on |
|---|
| 87 | Test Write -dummy mode for writing 0=off, 1=on |
|---|
| 88 | Write Type Packet/TAO/SAO/RAW 01h = TAO |
|---|
| 89 | Multi-session Whether to keep appendable 00b = finalize |
|---|
| 90 | 11b = keep appendable |
|---|
| 91 | Track Mode Describes frame type 4 for data , 0 for audio |
|---|
| 92 | Data Block Type Layout of payload blocks 8 for 2048 byte data blocks |
|---|
| 93 | 0 for 2352 byte audio blocks |
|---|
| 94 | Audio Pause Length 150 = 2 seconds |
|---|
| 95 | Any other parameters may be set to 0. |
|---|
| 96 | Mode page data as of MMC-5 table 644 are preceded by a Mode Parameter Header |
|---|
| 97 | as of SPC-3 table 240. This 8-byte header may be filled with zeros. |
|---|
| 98 | (mmc5r03c.pdf 7.5.4 The Mode Page, 4.2.3.4 Table 17 CONTROL = Track Mode) |
|---|
| 99 | (spc3r23.pdf 6.8 MODE SELECT, 7.4.3 Mode parameter header formats) |
|---|
| 100 | |
|---|
| 101 | |
|---|
| 102 | Writing has to begin at the address returned by 52h READ TRACK INFORMATION |
|---|
| 103 | with Address/Number Type set to 01b and Logical Block Address/Track/Session |
|---|
| 104 | Number set to FFh. The Next Writeable Address as of table 500 is the number |
|---|
| 105 | to start writing with. |
|---|
| 106 | (mmc5r03c.pdf 6.27 ) |
|---|
| 107 | |
|---|
| 108 | Writing is performed by one or more 2Ah WRITE transactions with the Logical |
|---|
| 109 | Block Address counted up from the initial number in sync with the number of |
|---|
| 110 | blocks written. I.e the Transfer Length of the previous 2Ah WRITE has to be |
|---|
| 111 | added to the Logical Block Address for the next 2Ah WRITE. Only full blocks |
|---|
| 112 | can be written. |
|---|
| 113 | (mmc5r03c.pdf, 6.44) |
|---|
| 114 | When writing is done, it is mandatory to force the drive's buffer to media by |
|---|
| 115 | 35h SYNCHRONIZE CACHE. |
|---|
| 116 | (mmc5r03c.pdf, 6.41) |
|---|
| 117 | |
|---|
| 118 | A track must at least contain 300 payload blocks: 4 seconds of audio or |
|---|
| 119 | 600 KiB of data. |
|---|
| 120 | (mmc5r03c.pdf 6.3.3.1.2) |
|---|
| 121 | |
|---|
| 122 | Up to december 2009 the track was closed by 5Bh CLOSE TRACK SESSION Close |
|---|
| 123 | Function 001b. Older MMC specifies a valid Logical Track Number FFh to depict |
|---|
| 124 | the open track. MMC-5 is quite silent about this. FFh worked for my drives. |
|---|
| 125 | (mmc5r03c.pdf 6.3.3.1.2) |
|---|
| 126 | This is omitted since libburn-0.7.4, relying entirely on 35h SYNCHRONIZE CACHE. |
|---|
| 127 | First appeared a drive where CLOSE TRACK fails in simulation mode, later |
|---|
| 128 | another one produced error replies even with real burning. |
|---|
| 129 | |
|---|
| 130 | After that, a new track may be written beginning with sending the mode page 05h |
|---|
| 131 | again. It is not tested whether 05h can be omitted if Track Mode and Data Block |
|---|
| 132 | Type are the same as with the previous track. |
|---|
| 133 | The new track will be added to the session which was opened by the first track. |
|---|
| 134 | |
|---|
| 135 | After the last track of a session, 5Bh CLOSE TRACK SESSION Close Function 010b |
|---|
| 136 | with Logical Track Number 0 closes the session. It depends on the Multi-Session |
|---|
| 137 | value in mode page 05h whether the disc is finalized or stays appendable. |
|---|
| 138 | (mmc5r03c.pdf 6.3.3.1.3) |
|---|
| 139 | |
|---|
| 140 | |
|---|
| 141 | ------------------------------------------------------------------------------- |
|---|
| 142 | Obtaining CD multi-session info for extending ISO-9660 filesystems : |
|---|
| 143 | |
|---|
| 144 | Program mkisofs expects two numbers with its option -C which describe the |
|---|
| 145 | situation on an appendable CD which already contains a ISO-9660 filesystem |
|---|
| 146 | in the first track of the last session. |
|---|
| 147 | |
|---|
| 148 | The first number is the Logical Block Address of that track containing the |
|---|
| 149 | existing ISO-9660 filesystem image. This number is needed for mkisofs option |
|---|
| 150 | -M to connect to the existing image. The new image will refer to files in |
|---|
| 151 | the previously existing image. mkisofs option -M needs read access to the |
|---|
| 152 | CD or a blockwise copy of it on hard disk. |
|---|
| 153 | The number is gained by 43h READ TOC/PMA/ATIP. |
|---|
| 154 | (mmc5r03c.pdf 6.26) |
|---|
| 155 | Untested is Format 0001b which in table 478 promises quick access via |
|---|
| 156 | Start Address Of First Track In Last Session. |
|---|
| 157 | (mmc5r03c.pdf 6.26.2.5 table 478, 6.26.3.3.1) |
|---|
| 158 | libburn gets the number from its Table Of Content model which is obtained |
|---|
| 159 | by 43h READ TOC/PMA/ATIP, Format 0010b. See below. |
|---|
| 160 | |
|---|
| 161 | The second number is an exact prediction of the Logical Block Address of the |
|---|
| 162 | new track which will contain the newly generated ISO-9660 image. |
|---|
| 163 | Even without mkisofs option -M this second number is still needed to make the |
|---|
| 164 | inner block address pointers of the image match the Logical Block Addresses |
|---|
| 165 | on CD. For that one may inquire 52h READ TRACK INFORMATION with |
|---|
| 166 | Address/Number Type set to 01b and Logical Block Address/Track/Session |
|---|
| 167 | Number set to FFh. The Next Writeable Address as of table 500 is the number |
|---|
| 168 | to use. |
|---|
| 169 | (mmc5r03c.pdf 6.27 ) |
|---|
| 170 | |
|---|
| 171 | |
|---|
| 172 | ------------------------------------------------------------------------------- |
|---|
| 173 | Obtaining a Table Of Content from CD : |
|---|
| 174 | |
|---|
| 175 | The structure of a CD is comprised of sessions. Each session contains one or |
|---|
| 176 | more tracks and is followed by a lead-out. A track has an address and a length. |
|---|
| 177 | |
|---|
| 178 | Table of content information is gained by 43h READ TOC/PMA/ATIP, Format 0010b. |
|---|
| 179 | (mmc5r03c.pdf 6.26.2.5 table 478) |
|---|
| 180 | |
|---|
| 181 | The number of sessions is given by Last Complete Session Number. |
|---|
| 182 | The number of TOC Track descriptors is: (TOC Data Length - 2)/11 . |
|---|
| 183 | |
|---|
| 184 | Each TOC Track Descriptor contains a Session Number. |
|---|
| 185 | |
|---|
| 186 | If POINT is >= 1 and <= 99 (63h) then the descriptor is about the track of |
|---|
| 187 | which POINT tells the number. |
|---|
| 188 | The start address of this track can be read from PMIN, PSEC, PFRAME where |
|---|
| 189 | it is encoded in MSF format: |
|---|
| 190 | blocks = frames - 150, 75 frames = 1 sec , 60 sec = 1 min. |
|---|
| 191 | The length of the track is given by MIN,SEC,FRAME in the same format. |
|---|
| 192 | |
|---|
| 193 | If POINT = A0h then the descriptor tells in PMIN the first track number of its |
|---|
| 194 | session. |
|---|
| 195 | POINT = A1h tells in PMIN the last track number of its session. |
|---|
| 196 | POINT = A2h describes in PMIN, PSEC, PFRAME the lead-out of a session, i.e the |
|---|
| 197 | first address after the session's end. (Next writeable address typically is |
|---|
| 198 | lead-out + 11400 after the first session, lead-out + 6900 after further |
|---|
| 199 | sessions.) |
|---|
| 200 | POINT = B0h tells in MIN,SEC,FRAME this next writeable address or FFh,FFh,FFh |
|---|
| 201 | for finalized disc. |
|---|
| 202 | (mmc5r03c.pdf 6.26.3.4 table 489, 4.2.3.7 Mode-1 Q, Mode-5 Q) |
|---|
| 203 | |
|---|
| 204 | |
|---|
| 205 | In libburn the address of the first track in the last session is obtained from |
|---|
| 206 | the last session's POINT = A0h and from the track descriptor with the POINT |
|---|
| 207 | value matching the PMIN value of the A0h descriptor. |
|---|
| 208 | Untested is whether POINT = B0h and 52h READ TRACK INFORMATION are always in |
|---|
| 209 | sync. libburn uses the info provided by 52h READ TRACK INFORMATION. |
|---|
| 210 | |
|---|
| 211 | |
|---|
| 212 | ------------------------------------------------------------------------------- |
|---|
| 213 | |
|---|
| 214 | ------------------------------------------------------------------------------- |
|---|
| 215 | SAO CD Cookbook |
|---|
| 216 | ------------------------------------------------------------------------------- |
|---|
| 217 | Guided by reading libburn/* from http://icculus.org/burn |
|---|
| 218 | backed by reading mmc5r03c.pdf from http://www.t10.org/ftp/t10/drafts/mmc5/ |
|---|
| 219 | and by experiments with drives NEC ND-4570A, LG GSA-4082B, LITE-ON LTR48125S |
|---|
| 220 | which used in part code from http://icculus.org/burn. |
|---|
| 221 | |
|---|
| 222 | For libburnia-project.org by Thomas Schmitt <scdbackup@gmx.net> |
|---|
| 223 | |
|---|
| 224 | ------------------------------------------------------------------------------- |
|---|
| 225 | |
|---|
| 226 | Recognition of media type and state (blank, appendable, finalized) is as |
|---|
| 227 | described in the TAO Multi-Session CD Cookbook. See there. |
|---|
| 228 | |
|---|
| 229 | The MMC specs do not give much hint about the combination of SAO and |
|---|
| 230 | multi-session. My drives refused not only on a few experiments which i did |
|---|
| 231 | in libburn but also failed with cdrecord -sao on an appendable CD. |
|---|
| 232 | So for now only blank CD seem to be suitable for SAO writing. |
|---|
| 233 | |
|---|
| 234 | Different from TAO mode, the whole session layout is announced to the drive by |
|---|
| 235 | sending a Cue Sheet. This implies that the sizes of the tracks have to be known |
|---|
| 236 | in advance, which is a heavy drawback when dealing with track data sources like |
|---|
| 237 | stdin, named pipes or sockets. |
|---|
| 238 | Nevertheless, SAO seems to be best writing mode for audio purposes, as our |
|---|
| 239 | audio expert Lorenzo Taylor found out. |
|---|
| 240 | |
|---|
| 241 | A SAO session in libburn may either consist entirely of audio tracks or |
|---|
| 242 | entirely of data tracks. For mixed sessions, only TAO is usable yet. |
|---|
| 243 | |
|---|
| 244 | - Composing a SAO CD Cue Sheet (either audio or data, but not mixed) |
|---|
| 245 | - Writing the prepared SAO CD session |
|---|
| 246 | - What is known about mixed mode sessions |
|---|
| 247 | |
|---|
| 248 | |
|---|
| 249 | ------------------------------------------------------------------------------- |
|---|
| 250 | Composing a Cue Sheet (either audio or data, but not mixed) : |
|---|
| 251 | |
|---|
| 252 | The Cue Sheet will get submitted to the drive by 5Dh SEND CUE SHEET. |
|---|
| 253 | Each entry of the sheet is of 8 bytes size. Its fields are named |
|---|
| 254 | CTL|ADR, TNO, INDEX, DATA FORM, SCMS, MIN, SEC, FRAME . |
|---|
| 255 | (mmc5r03c.pdf 6.33) |
|---|
| 256 | |
|---|
| 257 | CTL is 40h for data and 00h for audio. |
|---|
| 258 | (mmc5r03c.pdf 6.33.3.4) |
|---|
| 259 | ADR is always 01h. |
|---|
| 260 | TNO is the track number (1 to 99). |
|---|
| 261 | INDEX is a subaddress within tracks. This recipe uses only INDEX 01h within |
|---|
| 262 | tracks. |
|---|
| 263 | (mmc5r03c.pdf 4.2.3.5.2) |
|---|
| 264 | DATA FORM is 00h for audio payload , 10h for data. (01h for audio pause is not |
|---|
| 265 | used in libburn). |
|---|
| 266 | (mmc5r03c.pdf 6.33.3.11 CD-DA Data Form, 6.33.3.12 CD-ROM mode 1 Form) |
|---|
| 267 | SCMS is always 00h. |
|---|
| 268 | MIN, SEC, FRAME give the MSF address where the described data entity starts. |
|---|
| 269 | LBA = frames - 150, 75 frames = 1 sec , 60 sec = 1 min. |
|---|
| 270 | This address must increase from entry to entry (or at least stay equal). |
|---|
| 271 | |
|---|
| 272 | |
|---|
| 273 | The first entry describes the Lead-in. Its content is |
|---|
| 274 | (CTL|ADR ,00h,00h,01h,00h,00h,00h,00h) |
|---|
| 275 | With the CTL|ADR for the first track: 41h for data, 01h for audio. |
|---|
| 276 | |
|---|
| 277 | The LBA for the first write is negative: -150. This corresponds to MSF address |
|---|
| 278 | 00h:00h:00h. All addresses are to be given in MSF format. |
|---|
| 279 | The first information track on disc is preceded by a pause encoding of 2 sec: |
|---|
| 280 | (CTL|ADR,01h,00h, DATA FORM ,00h,00h,00h,00h) |
|---|
| 281 | with DATA FORM = 00h for audio and 10h for data. By those 2 seconds the MSF |
|---|
| 282 | address increases to 00h:02h:00h = LBA 0. |
|---|
| 283 | |
|---|
| 284 | Each track is represented by an entry |
|---|
| 285 | (CTL|ADR, TNO ,01h,DATA FORM,00h, MIN , SEC , FRAME) |
|---|
| 286 | TNO gives the track number. MIN, SEC, FRAME give the MSF address which becomes |
|---|
| 287 | the start address of the track. The MSF address is then increased by the size |
|---|
| 288 | of the track (to be used with next track or with lead-out). |
|---|
| 289 | |
|---|
| 290 | A track must at least contain 300 payload blocks: 4 seconds of audio or |
|---|
| 291 | 600 KiB of data. |
|---|
| 292 | (mmc5r03c.pdf 6.33.3.6) |
|---|
| 293 | |
|---|
| 294 | At the end of the session there is a lead-out entry |
|---|
| 295 | (CTL|ADR,AAh,01h,01h,00h,MIN,SEC,FRAME) |
|---|
| 296 | marking the end of the last track. (With libburn CTL is as of the last track.) |
|---|
| 297 | |
|---|
| 298 | |
|---|
| 299 | ------------------------------------------------------------------------------- |
|---|
| 300 | Writing the prepared session : |
|---|
| 301 | |
|---|
| 302 | Speed may be set by BBh SET CD SPEED parameter Drive Write Speed. Note that |
|---|
| 303 | kbytes/sec means 1000 bytes/sec and not 1024/sec. Rotational control should |
|---|
| 304 | be set to 00b. 1x CD speed is 176.4 kbytes/sec. Speed is usually set to the |
|---|
| 305 | next lower possible value by the drive. So it is helpful to add a few |
|---|
| 306 | kbytes/sec just in case the drive has rounding problems. |
|---|
| 307 | (mmc5r03c.pdf 6.37) |
|---|
| 308 | |
|---|
| 309 | A Write Parameters mode page 05h has to be composed and transmitted via |
|---|
| 310 | 55h MODE SELECT. This page describes the following parameters: |
|---|
| 311 | BUFE Buffer Underrun protection 0=off, 1=on |
|---|
| 312 | Test Write -dummy mode for writing 0=off, 1=on |
|---|
| 313 | Write Type Packet/TAO/SAO/RAW 02h = SAO |
|---|
| 314 | Multi-session Whether to keep appendable 00b = finalize |
|---|
| 315 | 11b = keep appendable |
|---|
| 316 | Track Mode Describes frame type 0 (is ignored) |
|---|
| 317 | Data Block Type Layout of payload blocks 0 (is ignored) |
|---|
| 318 | Audio Pause Length 150 = 2 seconds (ignored ?) |
|---|
| 319 | Any other parameters may be set to 0. |
|---|
| 320 | Mode page data as of MMC-5 table 644 are preceded by a Mode Parameter Header |
|---|
| 321 | as of SPC-3 table 240. This 8-byte header may be filled with zeros. |
|---|
| 322 | (mmc5r03c.pdf 7.5.4 The Mode Page, 4.2.3.4 Table 17 CONTROL = Track Mode) |
|---|
| 323 | (spc3r23.pdf 6.8 MODE SELECT, 7.4.3 Mode parameter header formats) |
|---|
| 324 | |
|---|
| 325 | The Cue Sheet is submitted to the drive by 5Dh SEND CUE SHEET. Cue Sheet Size |
|---|
| 326 | is 8 times the number of entries. |
|---|
| 327 | (mmc5r03c.pdf 6.33) |
|---|
| 328 | |
|---|
| 329 | Writing is performed by multiple 2Ah WRITE transactions with the Logical |
|---|
| 330 | Block Address counted up from the initial number in sync with the number of |
|---|
| 331 | blocks written. I.e the Transfer Length of the previous 2Ah WRITE has to be |
|---|
| 332 | added to the Logical Block Address for the next 2Ah WRITE. Only full blocks |
|---|
| 333 | can be written. |
|---|
| 334 | (mmc5r03c.pdf, 6.44) |
|---|
| 335 | Writing begins at LBA -150 which is to be transmitted as 4-byte, Big-endian, |
|---|
| 336 | two's-complement. E.g: -150 = FFh FFh FFh 6Ah. This is the natural form found |
|---|
| 337 | with about any 32-bit processor, so only the endianness has to be taken into |
|---|
| 338 | respect when converting a 32-bit integer into a LBA for command 2Ah WRITE. |
|---|
| 339 | |
|---|
| 340 | |
|---|
| 341 | At first the mandatory pause preceding the first track has to be written as |
|---|
| 342 | 150 blocks of the matching sector size: 2048 for data, 2352 for audio. |
|---|
| 343 | By this, the LBA increases from -150 to 0. |
|---|
| 344 | |
|---|
| 345 | Next the tracks' payload is sent. For each track exactly the number of blocks |
|---|
| 346 | has to be transmitted as is announced in the Cue Sheet by the difference |
|---|
| 347 | of the track's own start address and the start address of the next entry in |
|---|
| 348 | the Cue Sheet. After each write the LBA for the next write has to be increased |
|---|
| 349 | by the number of blocks transmitted. Just like with TAO writing. |
|---|
| 350 | |
|---|
| 351 | There is no separator between the tracks of a pure mode SAO session. |
|---|
| 352 | (If the session was mixed mode, there would be extended Pre-gaps and Post-gaps |
|---|
| 353 | between data mode tracks and audio mode tracks.) |
|---|
| 354 | (libburn sends its own buffer to the drive at the end of each track but does |
|---|
| 355 | not sync the drive's chache. It is unclear whether this separation of tracks |
|---|
| 356 | on the level of 2Ah WRITE is necessary with a pure mode session. It does not |
|---|
| 357 | harm in any case and would probably be unavoidable if audio and data tracks |
|---|
| 358 | were mixed.) |
|---|
| 359 | |
|---|
| 360 | When writing of all tracks is done, it is mandatory to force the drive's buffer |
|---|
| 361 | to media by 35h SYNCHRONIZE CACHE. |
|---|
| 362 | (mmc5r03c.pdf, 6.41) |
|---|
| 363 | |
|---|
| 364 | No further finalization is necessary. (I.e. no 5Bh CLOSE TRACK SESSION.) |
|---|
| 365 | |
|---|
| 366 | |
|---|
| 367 | ---------------------------------------------------------------------------- |
|---|
| 368 | What is known about mixed mode sessions : |
|---|
| 369 | |
|---|
| 370 | For now, SAO sessions with a mix of data and audio are not supported in |
|---|
| 371 | libburn. Here are the reasons why. |
|---|
| 372 | |
|---|
| 373 | Obviously the code of http://icculus.org/burn is incomplete in this aspect. |
|---|
| 374 | In mmc5r03c.pdf comparison of table 555 and 6.33.3.18 seems self-contradicting. |
|---|
| 375 | (The second Pre-gap in table 555 does not match any of the criteria of |
|---|
| 376 | 6.33.3.18. Also, there is no Post-gap shown in table 555 although 6.33.3.19 |
|---|
| 377 | would prescribe some.) |
|---|
| 378 | |
|---|
| 379 | If a data track follows an audio track then the data track gets a preceding |
|---|
| 380 | extended Pre-gap: |
|---|
| 381 | (CTL|ADR, TNO ,01h,DATA FORM,00h, MIN , SEC , FRAME) |
|---|
| 382 | with TNO already the number of the data track. The MSF address is to be |
|---|
| 383 | increased by 3 seconds. The first second of the extended Pre-gap needs to be |
|---|
| 384 | written in the audio track's mode and the other 2 seconds are to be written |
|---|
| 385 | in the data track's mode. |
|---|
| 386 | (libburn compares DATA FORM rather than burn_track.mode . Wrong ?) |
|---|
| 387 | (libburn currently does only 2 seconds and the second part of Pre-gap. There is |
|---|
| 388 | an issue with burn_track.pregap1 about this. Seems libburn mistakes the pause |
|---|
| 389 | preceding track 1 for a part 2 of an extended Pre-gap.) |
|---|
| 390 | |
|---|
| 391 | If a data track is followed by an audio track then it gets a Post-gap of at |
|---|
| 392 | least two seconds. |
|---|
| 393 | No example of Post-gap is given for Cue Sheet. Maybe it is to be added to the |
|---|
| 394 | track, or maybe it gets an own Cue Sheet entry ... who knows ? |
|---|
| 395 | (libburn contains write code for pregap1, pregap2 and postgap. But only |
|---|
| 396 | pregap2 ever gets activated. Once hackingly for the first 2 second pause, once |
|---|
| 397 | incompletely for a change of DATA FORM.) |
|---|
| 398 | |
|---|
| 399 | Seems nobody ever tested this. Libburnia simply knows no use case where the |
|---|
| 400 | correctness of Pre-gap and Post-gap would become evident. |
|---|
| 401 | |
|---|
| 402 | |
|---|
| 403 | ------------------------------------------------------------------------------- |
|---|
| 404 | |
|---|
| 405 | ------------------------------------------------------------------------------- |
|---|
| 406 | Overwriteable DVD Cookbook |
|---|
| 407 | ------------------------------------------------------------------------------- |
|---|
| 408 | Inspired by Andy Polyakov's http://fy.chalmers.se/~appro/linux/DVD+RW/tools , |
|---|
| 409 | backed by reading mmc5r03c.pdf from http://www.t10.org/ftp/t10/drafts/mmc5/ |
|---|
| 410 | by own experiments with drives NEC ND-4570A, LG GSA-4082B, PHILIPS SPD3300L, |
|---|
| 411 | LG GGW H20L, and by BD-RE experiments done by Giulio Orsero on LG BE06LU10. |
|---|
| 412 | |
|---|
| 413 | For libburnia-project.org by Thomas Schmitt <scdbackup@gmx.net> |
|---|
| 414 | |
|---|
| 415 | ------------------------------------------------------------------------------- |
|---|
| 416 | |
|---|
| 417 | Media type can be recognized by Current Profile from 46h GET CONFIGURATION. |
|---|
| 418 | (mmc5r03c.pdf 6.6.2.1) |
|---|
| 419 | |
|---|
| 420 | DVD-RAM 0012h |
|---|
| 421 | DVD-RW Restricted Overwrite 0013h |
|---|
| 422 | DVD-RW Sequential Recording 0014h (i.e. unformatted) |
|---|
| 423 | DVD+RW 001Ah |
|---|
| 424 | BD-RE 0043h |
|---|
| 425 | |
|---|
| 426 | A short compilation of the write model: |
|---|
| 427 | - Overwriting in general |
|---|
| 428 | |
|---|
| 429 | The recipes described here are depending on formatting state: |
|---|
| 430 | - DVD-RAM, fully formatted DVD+RW, DVD-RW, BD-RE |
|---|
| 431 | - Unformatted DVD+RW |
|---|
| 432 | - Partly formatted DVD+RW |
|---|
| 433 | - Unformatted DVD-RW |
|---|
| 434 | - Partly formatted DVD-RW |
|---|
| 435 | - Intermediate state DVD-RW |
|---|
| 436 | - DVD-RAM and BD-RE formatting |
|---|
| 437 | - DVD-RAM and BD-RE speed tuning |
|---|
| 438 | |
|---|
| 439 | Slightly off topic are |
|---|
| 440 | - ISO 9660 multi-session emulation on overwriteable media |
|---|
| 441 | - ISO 9660 based TOC emulation on overwriteable media |
|---|
| 442 | |
|---|
| 443 | ------------------------------------------------------------------------------- |
|---|
| 444 | Overwriting in general : |
|---|
| 445 | |
|---|
| 446 | Depending on media type, some kind of formatting has to have happened before |
|---|
| 447 | data can be written. Formatting may happen separately from writing or |
|---|
| 448 | simultaneously. See the particular recipes below. |
|---|
| 449 | |
|---|
| 450 | No Write Parameters mode page 05h is to be sent. Speed can be influenced by |
|---|
| 451 | B6h SET STREAMING , speed capabilities can be inquired by ACh GET PERFORMANCE. |
|---|
| 452 | It is advised to set only speeds and sizes which are returned by ACh. |
|---|
| 453 | (mmc5r03c.pdf 6.39 SET STREAMING, 6.8 GET PERFORMANCE) |
|---|
| 454 | Optimal performance is promised without any speed setting. But my experiments |
|---|
| 455 | showed that SET STREAMING values persist after media change. |
|---|
| 456 | |
|---|
| 457 | In the formatted area of the media, coarse random access is possible. |
|---|
| 458 | For DVD-RAM, DVD+RW, BD-RE write addresses and data size need to be aligned |
|---|
| 459 | to 2 KiB. For DVD-RW alignment has to be 32 KiB. Within these limitations |
|---|
| 460 | the write address is at the discretion of the sending program. |
|---|
| 461 | Just use 2Ah WRITE to send data. |
|---|
| 462 | (mmc5r03c.pdf, 6.44) |
|---|
| 463 | When writing is done, it is mandatory to force the drive's buffer to media by |
|---|
| 464 | 35h SYNCHRONIZE CACHE. |
|---|
| 465 | (mmc5r03c.pdf, 6.41) |
|---|
| 466 | |
|---|
| 467 | The size of the formatted area can be inquired by 23h READ FORMAT CAPACITIES. |
|---|
| 468 | The Number Of Blocks value in the Current/Maximum Capacity Descriptor gives |
|---|
| 469 | this size in 2 KiB blocks. But this is true only if Descriptor Type is 10b |
|---|
| 470 | ("Formatted Media"). |
|---|
| 471 | (mmc5r03c.pdf, 6.24.3.2.1, 6.24.3.2.3) |
|---|
| 472 | |
|---|
| 473 | Not yet formatted areas may be completely forbidden or they may be allowed for |
|---|
| 474 | sequential writing (DVD-RW Intermediate state) or they may be allowed for |
|---|
| 475 | random access only after the necessary waiting time for formatting to reach |
|---|
| 476 | the desired address (DVD+RW with background formatting active). |
|---|
| 477 | |
|---|
| 478 | Already written areas can be overwritten without special precaution. |
|---|
| 479 | Blanking a DVD-RW actually destroys its formatting. |
|---|
| 480 | |
|---|
| 481 | |
|---|
| 482 | Most of the concepts usually expressed in Write Parameters mode page 05h do not |
|---|
| 483 | apply to the recipes here: Test-Write, Buffer Underrun protection, |
|---|
| 484 | Multi-session, Write Type, Block Type, Track Mode, ... |
|---|
| 485 | There are hints for multi-session formats with DVD-RW but both of my drives |
|---|
| 486 | do not offer "Add Session" Format Types 12h or 14h. |
|---|
| 487 | (mmc5r03c.pdf 6.5.4.2.7 , 6.5.4.2.9) |
|---|
| 488 | |
|---|
| 489 | |
|---|
| 490 | Caution: Drive and media compatibility seems still to be quite an adventure. |
|---|
| 491 | If you experience problems, especially problems with readability, then try |
|---|
| 492 | different drives and media brands. Failure does not necessarily mean that the |
|---|
| 493 | software did anything wrong. |
|---|
| 494 | |
|---|
| 495 | |
|---|
| 496 | ------------------------------------------------------------------------------- |
|---|
| 497 | DVD-RAM, fully formatted DVD+RW, DVD-RW, BD-RE : |
|---|
| 498 | |
|---|
| 499 | Full format is the natural state of DVD-RAM. |
|---|
| 500 | |
|---|
| 501 | BD-RE are sold unformatted and need to be fully formatted first. |
|---|
| 502 | See paragraph about DVD-RAM and BD-RE formatting below. |
|---|
| 503 | |
|---|
| 504 | DVD+RW reaches this state if Background Formatting is allowed to finish without |
|---|
| 505 | being stopped by 5Bh CLOSE TRACK SESSION. |
|---|
| 506 | (mmc5r03c.pdf, 6.5 FORMAT UNIT, 6.5.4.2.14 Format Type = 26h) |
|---|
| 507 | The formatting state of a DVD+RW may be inquired by 51h READ DISC INFORMATION |
|---|
| 508 | requesting Data Type 000b "Standard Disc Information". In the reply, |
|---|
| 509 | BG Format 3 indicates fully formatted media. |
|---|
| 510 | (mmc5r03c.pdf 6.22.3.1.13) |
|---|
| 511 | |
|---|
| 512 | DVD-RW reaches this state either by Format Type 00h (or 10h) with maximum |
|---|
| 513 | size given as Number Of Blocks, or by writing sequentially until the disc is |
|---|
| 514 | completely full into an intermediate session opened by format 15h resp. 13h. |
|---|
| 515 | (mmc5r03c.pdf, 6.5 FORMAT UNIT, 6.5.4.2.1, 6.5.4.2.10, 6.5.4.2.8) |
|---|
| 516 | A fully formatted DVD-RW can be recognized by 23h READ FORMAT CAPACITIES. The |
|---|
| 517 | Descriptor Type of the Current/Maximum Capacity Descriptor is 10b ("Formatted |
|---|
| 518 | Media") and 0 blocks are offered with Format Types 13h or 11h. |
|---|
| 519 | (mmc5r03c.pdf, 6.24.3.2.1, 6.24.3.3) |
|---|
| 520 | See also discussion of unformatted or partially formatted DVD-RW below. |
|---|
| 521 | |
|---|
| 522 | |
|---|
| 523 | In fully formatted state there is no need for any formatting before writing nor |
|---|
| 524 | for any finalizing other than forcing the drive's buffer to media by |
|---|
| 525 | 35h SYNCHRONIZE CACHE (which is mandatory for writing, anyway). |
|---|
| 526 | (mmc5r03c.pdf, 6.41) |
|---|
| 527 | |
|---|
| 528 | (It seems to do no harm to send to DVD+RW or DVD-RW a 5Bh CLOSE TRACK SESSION |
|---|
| 529 | with Close Function 010b despite there is no session open in this scenario.) |
|---|
| 530 | |
|---|
| 531 | |
|---|
| 532 | ------------------------------------------------------------------------------- |
|---|
| 533 | Unformatted DVD+RW : |
|---|
| 534 | |
|---|
| 535 | This is the state of previously unused DVD+RW media. |
|---|
| 536 | |
|---|
| 537 | The formatting state of a DVD+RW may be inquired by 51h READ DISC INFORMATION |
|---|
| 538 | requiring Data Type 000b "Standard Disc Information". |
|---|
| 539 | In the reply, BG Format 0 indicates unformatted media (or unsuitable media). |
|---|
| 540 | (mmc5r03c.pdf 6.22.3.1.13) |
|---|
| 541 | |
|---|
| 542 | Formatting has to be started by command 04h FORMAT UNIT, Format Type 26h. |
|---|
| 543 | Different from other format types, 26h allows to send a fantasy size of |
|---|
| 544 | 0xffffffff blocks and does not require the caller to know the exact maximum |
|---|
| 545 | size offered with that format. |
|---|
| 546 | (mmc5r03c.pdf, 6.5 FORMAT UNIT, 6.5.4.2.14 Format Type = 26h) |
|---|
| 547 | |
|---|
| 548 | As its name suggests, one has not to wait for background formatting to end |
|---|
| 549 | but may very soon start writing as on formatted media. Random access to |
|---|
| 550 | yet unformatted areas can last long, though. |
|---|
| 551 | |
|---|
| 552 | If backup formatting has been started at the beginning of the session, then |
|---|
| 553 | it may get stopped after the final cache sync by 5Bh CLOSE TRACK SESSION |
|---|
| 554 | with Close Function 010b. |
|---|
| 555 | (mmc5r03c.pdf 6.3.3.6) |
|---|
| 556 | |
|---|
| 557 | Formatting of DVD+RW is called "de-icing" because unformatted areas offer |
|---|
| 558 | no hold for random access addressing and are thus slippery like ice. One can |
|---|
| 559 | also see a color change from shiny unformatted to more dull formatted media. |
|---|
| 560 | |
|---|
| 561 | |
|---|
| 562 | ------------------------------------------------------------------------------- |
|---|
| 563 | Partly formatted DVD+RW : |
|---|
| 564 | |
|---|
| 565 | This state is achieved by stopping background formatting before the media |
|---|
| 566 | was completely formmatted. |
|---|
| 567 | |
|---|
| 568 | The formatting state of a DVD+RW is obtained by 51h READ DISC INFORMATION |
|---|
| 569 | requiring Data Type 000b "Standard Disc Information". |
|---|
| 570 | In the reply, BG Format 1 indicates partly formatted media. |
|---|
| 571 | (mmc5r03c.pdf 6.22.3.1.13) |
|---|
| 572 | |
|---|
| 573 | If the data of the session surely fit into the formatted area, then it would |
|---|
| 574 | be unnecessary to restart background formatting. |
|---|
| 575 | But in order to make the DVD+RW surely accept its maximum number of bytes, |
|---|
| 576 | formatting may be restarted by command 04h FORMAT UNIT, Format Type 26h, |
|---|
| 577 | with the Restart bit set and Number of Blocks set to 0xffffffff. |
|---|
| 578 | (mmc5r03c.pdf, 6.5 FORMAT UNIT, 6.5.4.2.14 Format Type = 26h) |
|---|
| 579 | |
|---|
| 580 | From then on, the same rules apply as for previously unformatted DVD+RW. |
|---|
| 581 | |
|---|
| 582 | |
|---|
| 583 | ------------------------------------------------------------------------------- |
|---|
| 584 | Unformatted DVD-RW (media profile is 0014h) : |
|---|
| 585 | |
|---|
| 586 | This state is present with previously unused media. It is also present with |
|---|
| 587 | media blanked by programs cdrecord, wodim or dvd+rw-format and with media which |
|---|
| 588 | were sequentially written from blank state. |
|---|
| 589 | Profile transition from formatted 0013h to unformatted 0014h is done by |
|---|
| 590 | A1h BLANK. |
|---|
| 591 | (mmc5r03c.pdf, 6.2) |
|---|
| 592 | Experiments on my drives indicate that only Blanking Type 000b "Blank the disc" |
|---|
| 593 | achieves neat media. Media blanked via type 001b offer no feature 0021h and |
|---|
| 594 | stall cdrecord or libburn already when those media get examined. growisofs can |
|---|
| 595 | burn them - but only via DAO (feature 002Fh which prescribes Write Type 2). |
|---|
| 596 | (mmc5r03c.pdf 5.3.11, 5.3.25) |
|---|
| 597 | |
|---|
| 598 | For becoming overwriteable such media need to be treated by command 04h FORMAT |
|---|
| 599 | UNIT. |
|---|
| 600 | (mmc5r03c.pdf, 6.5) |
|---|
| 601 | The Format Type has to be chosen from the list replied by 23h READ FORMAT |
|---|
| 602 | CAPACITIES. Suitable are Format Types 00h, 10h, 15h. |
|---|
| 603 | (mmc5r03c.pdf 6.24) |
|---|
| 604 | |
|---|
| 605 | Format Types 00h and 10h provide a writeable area of a size given by Number of |
|---|
| 606 | Blocks. Type 00h seems to be the most traditional and complete one. It needs |
|---|
| 607 | no closing of a session at the end of writing. |
|---|
| 608 | The Number Of Blocks may be at most the value reported by 23h READ FORMAT |
|---|
| 609 | CAPACITIES in the entry for the desired format type. Full format is achieved |
|---|
| 610 | by sending exactly the reported value. |
|---|
| 611 | (mmc5r03c.pdf, 6.5.4.2.1 Format Type = 00h, 6.5.4.2.5 Format Type = 10h) |
|---|
| 612 | |
|---|
| 613 | Format Type 15h provides a writeable area of given size too, but this area can |
|---|
| 614 | be expanded by sequential writing and afterwards marked as overwriteable by |
|---|
| 615 | closing the session. It is even allowed to format with size 0 and to leave |
|---|
| 616 | the size claim entirely to a sequential write process beginning at LBA 0. |
|---|
| 617 | (mmc5r03c.pdf, 6.5.4.2.10 Format Type = 15h) |
|---|
| 618 | When writing is done and cache is synced, one should send 5Bh CLOSE TRACK |
|---|
| 619 | SESSION with Close Function 010b in order to bring the session out of |
|---|
| 620 | Intermediate state. |
|---|
| 621 | (mmc5r03c.pdf 6.3.3.2.3) |
|---|
| 622 | If not written up to the last 32 KiB block, the DVD-RW is only partly formatted |
|---|
| 623 | after that. |
|---|
| 624 | |
|---|
| 625 | |
|---|
| 626 | ------------------------------------------------------------------------------- |
|---|
| 627 | Partly formatted DVD-RW (media profile is 0013h) : |
|---|
| 628 | |
|---|
| 629 | This state is achieved by formatting a DVD-RW with a number of blocks which |
|---|
| 630 | is less than offered for the Format Type by the drive's reply to 23h READ |
|---|
| 631 | FORMAT CAPACITIES. If the media was most recently formatted by Format Types |
|---|
| 632 | 015h or 013h then it must have got written some bytes and afterwards treated |
|---|
| 633 | by 5Bh CLOSE TRACK SESSION, 010b in order to be partly formatted. |
|---|
| 634 | (mmc5r03c.pdf 6.3.3.2.3 CLOSE TRACK SESSION 010b, 6.24 READ FORMAT CAPACITIES) |
|---|
| 635 | Elsewise the media is in Intermediate state. See below. |
|---|
| 636 | |
|---|
| 637 | A partly formatted DVD-RW can be recognized by 23h READ FORMAT CAPACITIES. The |
|---|
| 638 | Descriptor Type of the Current/Maximum Capacity Descriptor is 10b ("Formatted |
|---|
| 639 | Media") and the Number Of Blocks with formats 00h, 10h or 15h is larger than the |
|---|
| 640 | currently formatted size, resp. more than 0 blocks are offered with Format |
|---|
| 641 | Types 13h or 11h. |
|---|
| 642 | (mmc5r03c.pdf, 6.24.3.2.1, 6.24.3.3) |
|---|
| 643 | |
|---|
| 644 | If the data of the session surely fit into the formatted area, then it would |
|---|
| 645 | be unnecessary to do any further formatting. |
|---|
| 646 | But in order to make the DVD-RW surely accept its maximum number of bytes, |
|---|
| 647 | partial formatting may be expanded by command 04h FORMAT UNIT, Format Type 13h, |
|---|
| 648 | which is supposed to be offered by the drive in this state. This brings the |
|---|
| 649 | session again into Intermediate state and thus allows expansion by sequential |
|---|
| 650 | writing. As with Format Type 15h it is ok to set Number Of Blocks to 0, so that |
|---|
| 651 | no fixed size formatting work is done and writing can begin soon after. |
|---|
| 652 | (mmc5r03c.pdf, 6.5.4.2.8 Format Type = 13h) |
|---|
| 653 | |
|---|
| 654 | When writing is done and cache is synced, one should send 5Bh CLOSE TRACK |
|---|
| 655 | SESSION with Close Function 010b in order to bring the session out of |
|---|
| 656 | Intermediate state. |
|---|
| 657 | (mmc5r03c.pdf 6.3.3.2.3) |
|---|
| 658 | If not written up to the last 32 KiB block, the DVD-RW is only partly formatted |
|---|
| 659 | after that. |
|---|
| 660 | |
|---|
| 661 | Format Type 13h has been tested only with expanding sessions formatted by 15h. |
|---|
| 662 | Nevertheless it is offered with sessions from 00h and 10h, too. |
|---|
| 663 | According to the specs, Format Type 11h would expand a session by a fixed |
|---|
| 664 | size. This has not been tested yet because it is less appealing than 13h. |
|---|
| 665 | (mmc5r03c.pdf, 6.5.4.2.6 Format Type = 11h) |
|---|
| 666 | |
|---|
| 667 | |
|---|
| 668 | ------------------------------------------------------------------------------- |
|---|
| 669 | Intermediate state DVD-RW (media profile is 0013h) : |
|---|
| 670 | |
|---|
| 671 | This state is achieved by formatting a DVD-RW with Format Type 15h or 13h |
|---|
| 672 | without subsequentially writing data and sending 5Bh CLOSE TRACK SESSION |
|---|
| 673 | with Close Function 010b. |
|---|
| 674 | Such media behave very unpleasing with my DVD-ROM drive under Linux 2.4 ide-cd. |
|---|
| 675 | One should therefore better avoid to release media in this state. |
|---|
| 676 | |
|---|
| 677 | This state can be recognized by 23h READ FORMAT CAPACITIES. The Descriptor Type |
|---|
| 678 | of the Current/Maximum Capacity Descriptor is 11b ("Unknown Capacity") and |
|---|
| 679 | no formats 13h or 11h are offered. |
|---|
| 680 | (mmc5r03c.pdf, 6.24.3.2.1, 6.24.3.3) |
|---|
| 681 | |
|---|
| 682 | One may treat such media as if Format Type 15h or 13h had been freshly applied. |
|---|
| 683 | I.e. sequential writing from LBA 0. After cache sync bring the session out |
|---|
| 684 | of Intermediate state by 5Bh CLOSE TRACK SESSION with Close Function 010b. |
|---|
| 685 | (mmc5r03c.pdf 6.3.3.2.3) |
|---|
| 686 | |
|---|
| 687 | |
|---|
| 688 | ------------------------------------------------------------------------------- |
|---|
| 689 | DVD-RAM and BD-RE formatting : |
|---|
| 690 | |
|---|
| 691 | Although DVD-RAM usually are sold formatted, there may still arise the wish |
|---|
| 692 | to adjust formatting. |
|---|
| 693 | BD-RE are sold unformatted and need to be formatted prior to usage. |
|---|
| 694 | |
|---|
| 695 | Two format types are relevant for DVD-RAM : 00h and 01h. |
|---|
| 696 | 00h offers the default size format and usually a maximum payload size format. |
|---|
| 697 | Even with that maximum size payload there is hardware defect management. |
|---|
| 698 | (mmc5r03c.pdf 6.5.4.2.1.2) |
|---|
| 699 | 01h allows to convert payload capacity into spare blocks for defect |
|---|
| 700 | managment. There is no way to increase payload capacity by format 01h. |
|---|
| 701 | (mmc5r03c.pdf 6.5.4.2.2.1) |
|---|
| 702 | |
|---|
| 703 | With BD-RE there are three format types : 00h, 30h and 31h. |
|---|
| 704 | 00h offers the default size format. This may be the only fast formatting |
|---|
| 705 | mode that is offered by the drive. |
|---|
| 706 | Feature 0023h tells whether format 31h and certain 30h subtypes are available. |
|---|
| 707 | (mmc5r03c.pdf 5.3.13) |
|---|
| 708 | 30h offers several sizes with defect management. Usually there are three |
|---|
| 709 | sizes given: #1: default size, #2: maximum spare area, #3: minimal spare. |
|---|
| 710 | One may demand any spare size between maximum and minimum. There may be quick |
|---|
| 711 | certification and full certification. See feature 0023h. |
|---|
| 712 | 31h offers a single size and disables defect management. This has the side |
|---|
| 713 | effect to speed up writing to nominal speed. |
|---|
| 714 | (mmc5r03c.pdf 6.5.4.2.15, 6.24.3.3, Table 472) |
|---|
| 715 | |
|---|
| 716 | Only format sizes from the list of format descriptors are permissible |
|---|
| 717 | for DVD-RAM. The format list can be obtained by 23h READ FORMAT CAPACITIES. |
|---|
| 718 | It also includes a description of the current formatting state. |
|---|
| 719 | (mmc5r03c.pdf 6.24, 6.24.3.2, 6.24.3.3) |
|---|
| 720 | |
|---|
| 721 | Formatting is done by command 04h FORMAT UNIT. Its data payload consists |
|---|
| 722 | of a Format List Header and a Format Descriptor. It is advisable to set |
|---|
| 723 | the Immed bit and the FOV bit in header byte number 1. The descriptor should |
|---|
| 724 | be a copy of a descriptor from 23h READ FORMAT CAPACITIES. |
|---|
| 725 | (mmc5r03c.pdf 6.5, 6.5.3.2, 6.5.3.3) |
|---|
| 726 | With nearly all formats Sub-type should be set to 0. But with BD-RE formats |
|---|
| 727 | 30h and 31h the Sub-type selects the certification mode. |
|---|
| 728 | Usable with 30h seem 10b Full Certification and 11b Quick Certification. |
|---|
| 729 | Usable with 31h seem also 00b Quick Reformat and 01b No Certification. |
|---|
| 730 | (mmc5r03c.pdf 6.5.4.2.15.1) |
|---|
| 731 | |
|---|
| 732 | Other format types have their certification intensity controlled by |
|---|
| 733 | a pair of bits: CmpList and DCRT. |
|---|
| 734 | CmpList resides in CDB byte 1 as bit 3. DCRT resides in the payload byte 1 |
|---|
| 735 | as bit 5. Both together should request a quick size change without lengthy |
|---|
| 736 | certification but maintaining the list of known defects. |
|---|
| 737 | (mmc5r03c.pdf 6.5, table 249, 6.5.3.2) |
|---|
| 738 | With DVD-RAM on my PHILIPS SPD3300L drive they prevent any format size |
|---|
| 739 | change though. The TSSTcorp SH-S203B works properly. |
|---|
| 740 | With BD-RE format 00h, the default is specified to be Quick Reformat, |
|---|
| 741 | and with 00h in general certification can only be disabled not enabled. |
|---|
| 742 | (mmc5r03c.pdf 6.5.4.2.1.7) |
|---|
| 743 | |
|---|
| 744 | |
|---|
| 745 | ------------------------------------------------------------------------------- |
|---|
| 746 | DVD-RAM and BD-RE tuning : |
|---|
| 747 | |
|---|
| 748 | A special aspect of DVD-RAM and BD-RE is their low speed with write operations, |
|---|
| 749 | which usually is only half than the nominal speed of media and drive. |
|---|
| 750 | This is blamed to the automatic checkreading which happens for managing |
|---|
| 751 | eventual defects. |
|---|
| 752 | |
|---|
| 753 | Defect management of BD-RE can be disabled by format type 31h. See above. |
|---|
| 754 | There is no drive known yet which would apply command 2Ah WRITE10 to DVD-RAM |
|---|
| 755 | with full speed. |
|---|
| 756 | |
|---|
| 757 | The only known way to get full speed from DVD-RAM or BD-RE with enabled defect |
|---|
| 758 | management is the use of AAh WRITE12 with Streaming Bit set to 1. |
|---|
| 759 | (mmc5r03c.pdf 6.45) |
|---|
| 760 | With some DVD-RAM drives this fails if a write buffer is not full 32 kB. |
|---|
| 761 | With the tested BD-RE one must write full 64 kB buffers, or else writing |
|---|
| 762 | might not get into effect at all. |
|---|
| 763 | |
|---|
| 764 | Although it seems not optimal, this is specified not only to disable the |
|---|
| 765 | cumbersome checkread but also to ignore known defects and to write data |
|---|
| 766 | to these defective addresses. |
|---|
| 767 | (mmc5r03c.pdf 4.8.5) |
|---|
| 768 | So the speed-up is only advisable as long as the media are free of |
|---|
| 769 | incorrectable errors. |
|---|
| 770 | |
|---|
| 771 | Caveat: |
|---|
| 772 | MMC-5 does not guarantee AAh WRITE12 to work on DVD-RAM or BD-RE at all. |
|---|
| 773 | None of the features of profiles 0012h and 0043h promises the existence of |
|---|
| 774 | AAh WRITE12. |
|---|
| 775 | (mmc5r03c.pdf 5.4.13, 6.45) |
|---|
| 776 | Nevertheless it worked on all tested drives if proper alignment and block |
|---|
| 777 | size was observed. |
|---|
| 778 | |
|---|
| 779 | |
|---|
| 780 | ------------------------------------------------------------------------------- |
|---|
| 781 | ISO 9660 multi-session emulation on overwriteable media : |
|---|
| 782 | |
|---|
| 783 | Overwriteable media provide a single overwriteable track which may grow up to |
|---|
| 784 | the full media capacity. There is no builtin table-of-content which records |
|---|
| 785 | the history of write sessions. |
|---|
| 786 | mount -t iso9660 will use sbsector=0 as default. |
|---|
| 787 | The term "superblock" shall depict the first 64 KiB after the sbsector address. |
|---|
| 788 | |
|---|
| 789 | ISO 9660 multi-session depends on typical TOC information in two ways: |
|---|
| 790 | It needs the superblock address MSC1 of the most recently recorded session and |
|---|
| 791 | it needs the Next Writeable Address NWA for which to prepare the adress offset. |
|---|
| 792 | |
|---|
| 793 | The following is learned from growisofs and from ECMA-119: |
|---|
| 794 | http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-119.pdf |
|---|
| 795 | |
|---|
| 796 | ISO 9660 filesystems provide information about the number of sectors which |
|---|
| 797 | is also the lowest unused block address and thus a suitable NWA. |
|---|
| 798 | This block address is stored in the Primary Volume Descriptor which is supposed |
|---|
| 799 | to be stored in block 16 (eventually relative to MSC1). |
|---|
| 800 | The bytes 0 to 5 of a PVD block are |
|---|
| 801 | 0x01 'C' 'D' '0' '0' '1' |
|---|
| 802 | The sector count can then be read from byte 80 to 83 |
|---|
| 803 | sectors= pvd[80] | (pvd[81] << 8) | (pvd[82] << 16) | (pvd[83] << 24); |
|---|
| 804 | (Ecma-119.pdf 8.4) |
|---|
| 805 | To support CD, DVD and BD media alike, it is advisable to round the NWA |
|---|
| 806 | to the next multiple of 32 (= 64 KiB). |
|---|
| 807 | |
|---|
| 808 | So one can use 0 as MSC1 and prepare a new ISO session for the computed NWA. |
|---|
| 809 | After writing the session it is necessary to patch the PVD at LBA 16. |
|---|
| 810 | The minimal change would be to update the number of image sectors. |
|---|
| 811 | It is stored in both notations LSB and MSB: |
|---|
| 812 | for(i= 0; i < 4; i++) |
|---|
| 813 | pvd[87 - i]= pvd[80 + i]= (sectors >> (8 * i)) & 0xff; |
|---|
| 814 | |
|---|
| 815 | cdrskin --grow_overwriteable_iso not only patches the sector fields of the |
|---|
| 816 | PVD block but also the blocks up to LBA 31 which begin with |
|---|
| 817 | 0xff 'C' 'D' '0' '0' '1' |
|---|
| 818 | libisoburn submits 64 KiB data buffer to libisofs before image generation and |
|---|
| 819 | afterwards writes these 64 KiB as new superblock to LBA 0. |
|---|
| 820 | |
|---|
| 821 | |
|---|
| 822 | ------------------------------------------------------------------------------- |
|---|
| 823 | ISO 9660 based TOC emulation on overwriteable media : |
|---|
| 824 | |
|---|
| 825 | Above method of multi-session emulation yields a single session image after |
|---|
| 826 | each add-on session. No reliable session history can be read because the |
|---|
| 827 | sector size of the existing session gets overwritten by the new one. |
|---|
| 828 | A TOC with session history is nevertheless desirable with incremental backups |
|---|
| 829 | in order to access older backup states by mounting older superblocks at the |
|---|
| 830 | start addresses of older sessions. |
|---|
| 831 | |
|---|
| 832 | All usual ISO 9660 formatter programs write a complete superblock to the |
|---|
| 833 | start of each session. |
|---|
| 834 | With a uniform NWA rounding rule it is possible to compute the address of |
|---|
| 835 | superblock N+1 as the NWA after session N. The only problem is N=1 |
|---|
| 836 | because it gets overwritten by later sessions. |
|---|
| 837 | |
|---|
| 838 | libisoburn preserves the information of session 1 by writing the first session |
|---|
| 839 | to LBA 32 rather than LBA 0. Afterwards it writes the overall superblock to |
|---|
| 840 | LBA 0 (up to 31). |
|---|
| 841 | So with all further add-on sessions the superblock at LBA 0 will enclose the |
|---|
| 842 | overall image, while the superblocks of the sessions form a chain beginning |
|---|
| 843 | at LBA 32. Each session superblock points to the next one by its sector count |
|---|
| 844 | rounded up to 32. The chain end is marked by the overall image size. |
|---|
| 845 | This chain gives the start addresses of sessions. The sector count minus start |
|---|
| 846 | address gives the size of a particular session. ECMA-119 explains how to |
|---|
| 847 | retrieve more info from the PVD (e.g. the volume id). |
|---|
| 848 | |
|---|
| 849 | See also the multi-session example in libisofs/doc/checksums.txt. |
|---|
| 850 | |
|---|
| 851 | |
|---|
| 852 | ------------------------------------------------------------------------------- |
|---|
| 853 | |
|---|
| 854 | ------------------------------------------------------------------------------- |
|---|
| 855 | Sequential DVD-R[W] Cookbook |
|---|
| 856 | ------------------------------------------------------------------------------- |
|---|
| 857 | Inspired by Andy Polyakov's http://fy.chalmers.se/~appro/linux/DVD+RW/tools , |
|---|
| 858 | backed by reading mmc5r03c.pdf from http://www.t10.org/ftp/t10/drafts/mmc5/ |
|---|
| 859 | and by experiments with drives NEC ND-4570A and LG GSA-4082B. |
|---|
| 860 | |
|---|
| 861 | For libburnia-project.org by Thomas Schmitt <scdbackup@gmx.net> |
|---|
| 862 | |
|---|
| 863 | ------------------------------------------------------------------------------- |
|---|
| 864 | |
|---|
| 865 | Media type can be recognized by Current Profile from 46h GET CONFIGURATION. |
|---|
| 866 | (mmc5r03c.pdf 6.6.2.1) |
|---|
| 867 | DVD-R 0011h |
|---|
| 868 | DVD-RW Restricted Overwrite 0013h |
|---|
| 869 | DVD-RW Sequential Recording 0014h |
|---|
| 870 | (DVD-R/DL Sequential Recording 0015h untested, might be single-session only) |
|---|
| 871 | |
|---|
| 872 | There are two approaches for writing to sequential DVD-R[W]: DAO and |
|---|
| 873 | Incremental. Not all media and drives offer Incremental which allows |
|---|
| 874 | multi-session as with CD media and does not demand a predicted track size. |
|---|
| 875 | DAO seems to be the older method. It allows only one single session and |
|---|
| 876 | track and it demands an exactly predicted track size. |
|---|
| 877 | |
|---|
| 878 | - About overwriteable, blank, appendable and finalized DVD-R[W] media |
|---|
| 879 | - Incremental writing |
|---|
| 880 | - DAO writing |
|---|
| 881 | - Obtaining DVD-R[W] multi-session info for extending ISO-9660 filesystems |
|---|
| 882 | - Obtaining a Table Of Content from DVD-R[W] |
|---|
| 883 | - Hearsay about DVD-R/DL (Dual Layer) |
|---|
| 884 | |
|---|
| 885 | |
|---|
| 886 | ------------------------------------------------------------------------------- |
|---|
| 887 | About overwriteable, blank, appendable and finalized DVD-R[W] media : |
|---|
| 888 | |
|---|
| 889 | DVD-RW can be either in formatted state Restricted Overwrite or in unformatted |
|---|
| 890 | state Sequential Recording. Sequential media can be either blank, appendable |
|---|
| 891 | or finalized. |
|---|
| 892 | |
|---|
| 893 | Only blank and appendable media are sequentially writeable. For overwriteable |
|---|
| 894 | DVD-RW see the Overwriteable DVD Cookbook. |
|---|
| 895 | |
|---|
| 896 | Overwriteable DVD-RW can be detected by their profile number 0013h in contrast |
|---|
| 897 | to profile number 0014h for sequential DVD-RW. |
|---|
| 898 | The status of sequential media can be inquired like with CD by 51h READ DISC |
|---|
| 899 | INFORMATION requesting Data Type 000b Standard Disc Information, where reply |
|---|
| 900 | value Disc Status indicates: |
|---|
| 901 | 00b blank |
|---|
| 902 | 01b appendable |
|---|
| 903 | 10b finalized |
|---|
| 904 | 11b others (unsuitable for this recipe) |
|---|
| 905 | (mmc5r03c.pdf 6.22.3.1.4) |
|---|
| 906 | |
|---|
| 907 | Finalized, appendable or overwriteable DVD-RW can be brought into blank |
|---|
| 908 | sequential state by command A1h BLANK with blanking type 000b "Blank the disc". |
|---|
| 909 | See TAO Multi-Session CD Cookbook for details about blanking. |
|---|
| 910 | |
|---|
| 911 | After minimal blanking (type 001b) DVD-RW my two drives do not offer the |
|---|
| 912 | Incremental Streaming feature 0021h the media any more. Full blanking (000b) |
|---|
| 913 | brings back this feature. |
|---|
| 914 | (mmc5r03c.pdf 6.2) |
|---|
| 915 | |
|---|
| 916 | |
|---|
| 917 | ------------------------------------------------------------------------------- |
|---|
| 918 | Incremental writing : |
|---|
| 919 | |
|---|
| 920 | Incremental writing allows to produce multi-session DVDs. It is indicated |
|---|
| 921 | by feature 0021h being marked current in the reply of 46h GET CONFIGURATION. |
|---|
| 922 | growisofs inquires 0021h by setting Starting Feature Number to 0x21 and |
|---|
| 923 | Allocation Length to 16 in order to get only this one. The feature descriptor |
|---|
| 924 | begins at byte 8 of the reply. Its availability is indicated by the Current |
|---|
| 925 | Bit. libburn obtains the full feature list for this and other info. |
|---|
| 926 | (mmc5r03c.pdf 5.2.2. Feature Descriptor format, 5.3.11 Feature 0021h, |
|---|
| 927 | 6.2 46h GET CONFIGURATION, ) |
|---|
| 928 | In mode page 05h this method is selected by Write Type 00h. |
|---|
| 929 | |
|---|
| 930 | Speed can be influenced by B6h SET STREAMING , speed capabilities can be |
|---|
| 931 | inquired by ACh GET PERFORMANCE. It is advised to set only speeds and sizes |
|---|
| 932 | which are returned by ACh. |
|---|
| 933 | (mmc5r03c.pdf 6.39 SET STREAMING, 6.8 GET PERFORMANCE) |
|---|
| 934 | |
|---|
| 935 | growisofs fetches a mode page 05h template by MODE SENSE and inserts its own |
|---|
| 936 | parameters. It sets Multi-session to 11b, unless dvd_compat is nonzero. |
|---|
| 937 | libburn composes its mode page 05h from zero and allows control of |
|---|
| 938 | Multi-Session by the application. |
|---|
| 939 | BUFE Buffer Underrun protection 0=off, 1=on |
|---|
| 940 | LS_V Link size valid 1=true |
|---|
| 941 | Test Write -dummy mode for writing 0=off, 1=on |
|---|
| 942 | Write Type Packet/TAO/SAO/RAW 00h = Incremental (Packet) |
|---|
| 943 | Multi-session Whether to keep appendable 00b = finalize |
|---|
| 944 | 11b = keep appendable |
|---|
| 945 | Track Mode Describes frame type 5 [*1] |
|---|
| 946 | Data Block Type Layout of payload blocks 8 [*2] |
|---|
| 947 | Link Size ??? 16 [*3] |
|---|
| 948 | FP Fixed Packet Size Bit 1 |
|---|
| 949 | Packet Size 16 [*4] |
|---|
| 950 | (mmc5r03c.pdf 7.5.4 The Mode Page, 4.2.3.4 Table 17 CONTROL = Track Mode) |
|---|
| 951 | (spc3r23.pdf 6.8 MODE SELECT, 7.4.3 Mode parameter header formats) |
|---|
| 952 | [*1:] |
|---|
| 953 | growisofs takes the Track Mode from 52h READ TRACK INFORMATION, Address/Number |
|---|
| 954 | Type 1, Track 1, Track Information Block byte 5 & 0xf. |
|---|
| 955 | (mmc5r03.pdf 6.27) |
|---|
| 956 | The specs predict that this will be Track Mode 4 (6.27.3.8) and also state that |
|---|
| 957 | default is 5 (7.5.4.12). 4 means: uninterrupted, do not copy. 5 means |
|---|
| 958 | increment, do not copy. |
|---|
| 959 | [*2:] |
|---|
| 960 | 8 means: 2048 byte data blocks. growisofs sets this value if Data Mode from |
|---|
| 961 | above 52h READ TRACK INFORMATION is 1 or Fh, which is predicted by the specs |
|---|
| 962 | to be always true. |
|---|
| 963 | (mmc5r03.pdf 6.27.3.10) |
|---|
| 964 | [*3:] |
|---|
| 965 | growisofs (transport.hxx) sets Link Size to 16 for profiles 0011h and 0014h. |
|---|
| 966 | libburn now records the first link size from feature 0021h in its burn_drive |
|---|
| 967 | structure. If another link size item is 16, then 16 is used. |
|---|
| 968 | [*4:] |
|---|
| 969 | growisofs takes Packet Size from 52h. Specs predict it will be 16 (= 32 kiB). |
|---|
| 970 | (mmc5r03.pdf 7.5.4.16) |
|---|
| 971 | |
|---|
| 972 | The writing process is much like in "Writing a session to CD in TAO mode" : |
|---|
| 973 | Next Writeable Address is fetched from the reply of 52h READ TRACK INFORMATION. |
|---|
| 974 | libburn writes full 32 kiB buffers via 2Ah WRITE. |
|---|
| 975 | (mmc5r03c.pdf, 6.27 READ TRACK INFORMATION, 6.44 WRITE) |
|---|
| 976 | When writing is done, it is mandatory to force the drive's buffer to media by |
|---|
| 977 | 35h SYNCHRONIZE CACHE. |
|---|
| 978 | (mmc5r03c.pdf, 6.41) |
|---|
| 979 | |
|---|
| 980 | The track has to be closed by 5Bh CLOSE TRACK SESSION Close Function 001b. |
|---|
| 981 | growisofs uses the logical track number for that and not FFh like libburn |
|---|
| 982 | does with TAO CD. So libburn obtains the Last Track Number in Last Session |
|---|
| 983 | from the reply of 51h READ DISC INFORMATION requesting Data Type 000b |
|---|
| 984 | "Standard Disc Information". |
|---|
| 985 | (mmc5r03c.pdf 6.3.3.2.2 CLOSE TRACK, 6.22.3.1.) |
|---|
| 986 | |
|---|
| 987 | Multiple tracks are permissible in a single session. After all of them have |
|---|
| 988 | been written, 5Bh CLOSE TRACK SESSION Close Function 010b with Logical Track |
|---|
| 989 | Number 0 closes the session. It depends on the Multi-Session value in mode |
|---|
| 990 | page 05h whether the disc is finalized or stays appendable. |
|---|
| 991 | (mmc5r03c.pdf 6.3.3.2.3) |
|---|
| 992 | |
|---|
| 993 | |
|---|
| 994 | ------------------------------------------------------------------------------- |
|---|
| 995 | DAO writing : |
|---|
| 996 | |
|---|
| 997 | DAO is the mode described by feature 002Fh. This feature also gives information |
|---|
| 998 | about capabilities for Burnfree (BUF), Test Write and DVD-RW. |
|---|
| 999 | (mmc5r03c.pdf 5.3.25) |
|---|
| 1000 | Experiments with growisofs showed that the track size needs to be predicted |
|---|
| 1001 | and may not be exceeded during the write process. (growisofs ran into SCSI |
|---|
| 1002 | errors with piped non-ISO-9660 images and with piped ISO-9660 which have |
|---|
| 1003 | trailing data.) |
|---|
| 1004 | |
|---|
| 1005 | Speed can be influenced by B6h SET STREAMING , speed capabilities can be |
|---|
| 1006 | inquired by ACh GET PERFORMANCE. It is advised to set only speeds and sizes |
|---|
| 1007 | which are returned by ACh. |
|---|
| 1008 | (mmc5r03c.pdf 6.39 SET STREAMING, 6.8 GET PERFORMANCE) |
|---|
| 1009 | |
|---|
| 1010 | The mode page 05h to be sent : |
|---|
| 1011 | BUFE Buffer Underrun protection 0=off, 1=on |
|---|
| 1012 | LS_V Link size valid 0=false [*3] |
|---|
| 1013 | Test Write -dummy mode for writing 0=off, 1=on |
|---|
| 1014 | Write Type Packet/TAO/SAO/RAW 02h = DAO (same code as SAO) |
|---|
| 1015 | Multi-session Whether to keep appendable 00b = finalize |
|---|
| 1016 | Track Mode Describes frame type 5 [*1] |
|---|
| 1017 | Data Block Type Layout of payload blocks 8 [*2] |
|---|
| 1018 | Link Size ??? 0 [*3] |
|---|
| 1019 | FP Fixed Packet Size Bit 0 [*3] |
|---|
| 1020 | Packet Size 0 [*3] |
|---|
| 1021 | (mmc5r03c.pdf 7.5.4 The Mode Page, 4.2.3.4 Table 17 CONTROL = Track Mode) |
|---|
| 1022 | (spc3r23.pdf 6.8 MODE SELECT, 7.4.3 Mode parameter header formats) |
|---|
| 1023 | [*1:] |
|---|
| 1024 | growisofs takes the Track Mode from 52h READ TRACK INFORMATION, Address/Number |
|---|
| 1025 | Type 1, Track 1, Track Information Block byte 5 & 0xf. |
|---|
| 1026 | (mmc5r03.pdf 6.27) |
|---|
| 1027 | [*2:] |
|---|
| 1028 | 8 means: 2048 byte data blocks. growisofs sets this value if Data Mode from |
|---|
| 1029 | above 52h READ TRACK INFORMATION is 1 or Fh, which is predicted by the specs |
|---|
| 1030 | to be always true. (If not: growisofs aborts.) |
|---|
| 1031 | (mmc5r03.pdf 6.27.3.10) |
|---|
| 1032 | [*3:] |
|---|
| 1033 | Link Size, Packet Size and their companions only apply to Write Type 00h. |
|---|
| 1034 | |
|---|
| 1035 | The session layout must be described by 53h RESERVE TRACK, RMZ=ARSV=0. |
|---|
| 1036 | Reservation size should better already be aligned to 32 KiB. It has not been |
|---|
| 1037 | tested yet, what happens if not enough data get written. |
|---|
| 1038 | (mmc5r03c.pdf 6.31) |
|---|
| 1039 | |
|---|
| 1040 | Next Writeable Address is fetched from the reply of 52h READ TRACK INFORMATION. |
|---|
| 1041 | The reply is supposed to be 0. libburn writes full 32 kiB buffers via |
|---|
| 1042 | 2Ah WRITE. |
|---|
| 1043 | (mmc5r03c.pdf, 6.27 READ TRACK INFORMATION, 6.44 WRITE) |
|---|
| 1044 | If the track source delivers less than the announced size then libburn pads up |
|---|
| 1045 | by zeros. |
|---|
| 1046 | When writing is done, it is mandatory to force the drive's buffer to media by |
|---|
| 1047 | 35h SYNCHRONIZE CACHE. |
|---|
| 1048 | (mmc5r03c.pdf, 6.41) |
|---|
| 1049 | |
|---|
| 1050 | No further finalization is necessary. (I.e. no 5Bh CLOSE TRACK SESSION.) |
|---|
| 1051 | |
|---|
| 1052 | |
|---|
| 1053 | ------------------------------------------------------------------------------- |
|---|
| 1054 | Obtaining DVD-R[W] multi-session info for extending ISO-9660 filesystems : |
|---|
| 1055 | (valid for DVD+R too) |
|---|
| 1056 | |
|---|
| 1057 | Like with CD it is necessary to obtain the two numbers for mkisofs option -C |
|---|
| 1058 | in order to prepare a ISO-9660 filesystem image which by its inner pointers |
|---|
| 1059 | matches the block addresses of the future location on media. |
|---|
| 1060 | These are the start address of the first track in the last complete session |
|---|
| 1061 | and the predicted start address of the track which will host the new image. |
|---|
| 1062 | See TAO Multi-Session CD Cookbook for some more info about mkisofs aspects. |
|---|
| 1063 | |
|---|
| 1064 | |
|---|
| 1065 | The first number may be gained by 43h READ TOC/PMA/ATIP Format 0001b which in |
|---|
| 1066 | table 478 promises quick access via Start Address Of First Track In Last |
|---|
| 1067 | Session. |
|---|
| 1068 | (mmc5r03c.pdf 6.26.2.5 table 478, 6.26.3.3.1) |
|---|
| 1069 | Regrettably the MMC-5 specs still define a useless reply for non-CD media |
|---|
| 1070 | which obviously stems from MMC-3 times when no multi-session was possible |
|---|
| 1071 | with non-CD. |
|---|
| 1072 | (mmc5r03c.pdf 6.26.3.3.3) |
|---|
| 1073 | Both my drives do give a useful reply with the correct number for appendable |
|---|
| 1074 | DVD-RW. But not being backed by the specs this method appears unappealing . |
|---|
| 1075 | |
|---|
| 1076 | Another approach would be a formatted Table of Content, obtained by 43h READ |
|---|
| 1077 | TOC/PMA/ATIP Format 0000b. The specs do not totally outrule that this returns |
|---|
| 1078 | useful data with non-CD but they define a crippled TOC for multi-session. |
|---|
| 1079 | (mmc5r03c.pdf 6.26.3.2.4) |
|---|
| 1080 | My LG drive returns a more detailed TOC, my NEC drive stays with the rather |
|---|
| 1081 | suboptimal specs. So one would get different TOCs on different drives. |
|---|
| 1082 | Nevertheless, the MMC-5 compliant TOC would return the desired number in |
|---|
| 1083 | the Track Start address of the track with the highest number before AAh. |
|---|
| 1084 | |
|---|
| 1085 | Most stable seems the approach to obtain the desired number from the reply |
|---|
| 1086 | of 52h READ TRACK INFORMATION, Address/Number Type 01b. The field Logical Block |
|---|
| 1087 | Address/Track/Session has to bear the track number of the first track in the |
|---|
| 1088 | last complete session. To determine this number one has to determine the |
|---|
| 1089 | number of the last session and the number of the last track from 51h READ DISC |
|---|
| 1090 | INFORMATION and to iterate over the tracknumber by 52h READ TRACK INFORMATION |
|---|
| 1091 | until the first track with the desired session number appears and reveils |
|---|
| 1092 | its start address. |
|---|
| 1093 | (mmc5r03c.pdf 6.22 51h DISC, 6.27 52h TRACK) |
|---|
| 1094 | This method is very near to fabricating an own TOC. So libburn does this |
|---|
| 1095 | when inspecting the media. If the first number for -C is needed, libburn |
|---|
| 1096 | inquires its TOC model for the address of the first track in the last |
|---|
| 1097 | complete session. See below for a detailed description of TOC fabrication. |
|---|
| 1098 | |
|---|
| 1099 | |
|---|
| 1100 | The second -C number is the exact prediction of future track start address. It |
|---|
| 1101 | is gained like with CD by 52h READ TRACK INFORMATION Type 01b. Different from |
|---|
| 1102 | CD one may not use track number FFh but has to use the Last Track in Last |
|---|
| 1103 | Session from 51h READ DISC INFORMATION. |
|---|
| 1104 | (mmc5r03c.pdf 6.22 51h DISC, 6.27 52h TRACK) |
|---|
| 1105 | |
|---|
| 1106 | |
|---|
| 1107 | ------------------------------------------------------------------------------- |
|---|
| 1108 | Obtaining a Table Of Content from DVD-R[W]: |
|---|
| 1109 | (valid for DVD+R too) |
|---|
| 1110 | |
|---|
| 1111 | The raw TOC entries from 43h READ TOC/PMA/ATIP Format 0010b as described with |
|---|
| 1112 | CD media are not available with non-CD. |
|---|
| 1113 | There is a Format 0000b "Formatted TOC" but this is with non-CD a fictional |
|---|
| 1114 | information much at the discretion of the drive. Two drives with the same disc |
|---|
| 1115 | may well return different Formatted TOC. They are supposed to be consistent |
|---|
| 1116 | only about the last complete session and even there the MMC-5 specification |
|---|
| 1117 | 6.26.3.2.5 seems to prescribe a structure which does not match the true |
|---|
| 1118 | structure of incremental writing to sequential DVD-R[W]. |
|---|
| 1119 | (mmc5r03c.pdf 6.26.3.2) |
|---|
| 1120 | So i prefer not to use this method of getting a TOC. |
|---|
| 1121 | |
|---|
| 1122 | |
|---|
| 1123 | The alternative is to produce an own TOC from information gained by 51h READ |
|---|
| 1124 | DISC INFORMATION and by 52h READ TRACK INFORMATION which reveil a CD-like |
|---|
| 1125 | structure of sessions and 1:n related tracks. |
|---|
| 1126 | |
|---|
| 1127 | 51h READ DISC INFORMATION Data Type 000b, fields Number of Sessions (Least |
|---|
| 1128 | Significant Byte) and Number of Sessions (Most Significant Byte) give the |
|---|
| 1129 | number of sessions. The last complete session number of an appendable disc |
|---|
| 1130 | is one less because there is an incomplete session at its end. libburn only |
|---|
| 1131 | records complete sessions in its TOC model. |
|---|
| 1132 | libburn uses Last Track in Last Session as a hint for the range of track |
|---|
| 1133 | numbers. |
|---|
| 1134 | (mmc5r03c.pdf 6.22) |
|---|
| 1135 | |
|---|
| 1136 | Next step is to iterate from 1 up to the last track number and to obtain |
|---|
| 1137 | the according track info by 52h READ TRACK INFORMATION. Each track tells its |
|---|
| 1138 | Session Number (LSB at byte 2, MSB at 33), its Logical Track Start Address, |
|---|
| 1139 | its Logical Track Size, and much more which is not needed for a fake CD TOC. |
|---|
| 1140 | One may analyze the track info more finely but for this special purpose |
|---|
| 1141 | it is enough to discard the tracks which do not belong to complete sessions. |
|---|
| 1142 | (mmc5r03c.pdf 6.27) |
|---|
| 1143 | |
|---|
| 1144 | At the end of each session libburn inserts fake leadout entries into its TOC |
|---|
| 1145 | model. Their start address is computed from the start and size of the last |
|---|
| 1146 | track of the session. |
|---|
| 1147 | |
|---|
| 1148 | |
|---|
| 1149 | ------------------------------------------------------------------------------- |
|---|
| 1150 | Hearsay about DVD-R/DL (Dual Layer) : |
|---|
| 1151 | |
|---|
| 1152 | DVD-R/DL can assume profile 0015h DVD-R Dual Layer Sequential which is supposed |
|---|
| 1153 | to behave like DVD-R or 0016h DVD-R Dual Layer Jump which has no counterpart |
|---|
| 1154 | with DVD-R. |
|---|
| 1155 | |
|---|
| 1156 | A half-sentence in mmc5r03c.pdf 6.3.3.3.3 might indicate that closing a session |
|---|
| 1157 | by 5Bh CLOSE TRACK SESSION Close Function 010b overrides the multi-session bits |
|---|
| 1158 | in mode page 05h. |
|---|
| 1159 | growisofs applies this function in case of not DAO, though. A comment in |
|---|
| 1160 | growisofs_mmc.cpp states: "// DVD-R DL Seq has no notion of multi-session". |
|---|
| 1161 | I am not reading this from the specs - but not explicitely the contrary either. |
|---|
| 1162 | |
|---|
| 1163 | For now libburn will close the session but there is a macro prepared in |
|---|
| 1164 | libburn/write.c Libburn_dvd_r_dl_multi_no_close_sessioN which will suppress |
|---|
| 1165 | close session if multi-session is demanded. |
|---|
| 1166 | |
|---|
| 1167 | |
|---|
| 1168 | ------------------------------------------------------------------------------- |
|---|
| 1169 | |
|---|
| 1170 | ------------------------------------------------------------------------------- |
|---|
| 1171 | DVD+R[/DL] Cookbook |
|---|
| 1172 | ------------------------------------------------------------------------------- |
|---|
| 1173 | Inspired by reading mmc5r03c.pdf from http://www.t10.org/ftp/t10/drafts/mmc5/ |
|---|
| 1174 | backed by Andy Polyakov's http://fy.chalmers.se/~appro/linux/DVD+RW/tools , |
|---|
| 1175 | |
|---|
| 1176 | For libburnia-project.org by Thomas Schmitt <scdbackup@gmx.net> |
|---|
| 1177 | |
|---|
| 1178 | ------------------------------------------------------------------------------- |
|---|
| 1179 | |
|---|
| 1180 | Media type can be recognized by Current Profile from 46h GET CONFIGURATION. |
|---|
| 1181 | (mmc5r03c.pdf 6.6.2.1) |
|---|
| 1182 | DVD+R 001bh |
|---|
| 1183 | DVD+R/DL 002bh |
|---|
| 1184 | |
|---|
| 1185 | - About empty, appendable and finalized DVD+R |
|---|
| 1186 | - Writing a Pseudo Session to DVD+R |
|---|
| 1187 | - DVD+R/DL (Dual Layer |
|---|
| 1188 | |
|---|
| 1189 | The following two chapters of the Sequential DVD-R[W] Cookbook are valid for |
|---|
| 1190 | DVD+R media too: |
|---|
| 1191 | - Obtaining DVD-R[W] multi-session info for extending ISO-9660 filesystems |
|---|
| 1192 | - Obtaining a Table Of Content from DVD-R[W] |
|---|
| 1193 | |
|---|
| 1194 | ------------------------------------------------------------------------------- |
|---|
| 1195 | About blank, appendable and finalized DVD+R : |
|---|
| 1196 | |
|---|
| 1197 | In the beginning a DVD+R holds an empty session and the Incomplete Fragment. |
|---|
| 1198 | From these one may spawn reserved fragments or one may write directly to |
|---|
| 1199 | the incomplete fragment. As soon as this is done the empty session becomes the |
|---|
| 1200 | open session which finally needs to get closed. By closing fragments and |
|---|
| 1201 | session a new empty session with empty Incomplete Fragment gets spawned. |
|---|
| 1202 | So the disc stays appendable. |
|---|
| 1203 | |
|---|
| 1204 | A DVD+R may hold 153 closed sessions with a single track each. |
|---|
| 1205 | The open session may hold up to 15 open fragments. But on closure of the |
|---|
| 1206 | session those fragments together form a single logical track. So one will |
|---|
| 1207 | usually only use a single fragment for sequential writing. |
|---|
| 1208 | (mmc5r03c.pdf 4.3.6.2) |
|---|
| 1209 | |
|---|
| 1210 | The disc may get finalized by another close command so that no more data can |
|---|
| 1211 | be written. |
|---|
| 1212 | (mmc5r03c.pdf 6.3.3.4.4) |
|---|
| 1213 | |
|---|
| 1214 | |
|---|
| 1215 | ------------------------------------------------------------------------------- |
|---|
| 1216 | Writing a Pseudo Session to DVD+R : |
|---|
| 1217 | |
|---|
| 1218 | Session writing has to be pseudo because only one logical track per session |
|---|
| 1219 | can be distinguished. So actually there have to be written multiple sessions |
|---|
| 1220 | to mark multiple tracks. The pseudo session cannot get marked on disc and thus |
|---|
| 1221 | the tracks of a pseudo session cannot be grouped accordingly in a TOC. |
|---|
| 1222 | |
|---|
| 1223 | Speed can be influenced by B6h SET STREAMING , speed capabilities can be |
|---|
| 1224 | inquired by ACh GET PERFORMANCE. It is advised to set only speeds and sizes |
|---|
| 1225 | which are returned by ACh. |
|---|
| 1226 | (mmc5r03c.pdf 6.39 SET STREAMING, 6.8 GET PERFORMANCE) |
|---|
| 1227 | |
|---|
| 1228 | No mode page 05h is to be sent. |
|---|
| 1229 | growisofs sends a page but the specs clearly state that one shall not do. |
|---|
| 1230 | (mmc5r03c.pdf 7.5.3) |
|---|
| 1231 | |
|---|
| 1232 | It is optional whether a track size is reserved in advance or not. Eventually |
|---|
| 1233 | this is done by 53h RESERVE TRACK, RMZ=ARSV=0. Reservation size should better |
|---|
| 1234 | already be aligned to 32 KiB. |
|---|
| 1235 | (mmc5r03c.pdf 6.31) |
|---|
| 1236 | The specs promise to pad up the track if not enough data get written. |
|---|
| 1237 | (mmc5r03c.pdf 6.3.3.4.2) |
|---|
| 1238 | |
|---|
| 1239 | Next Writeable Address is fetched from the reply of 52h READ TRACK INFORMATION |
|---|
| 1240 | with track number FFh. |
|---|
| 1241 | (mmc5r03c.pdf 6.27) |
|---|
| 1242 | Since the fixely set write type is 16-block packet, full 32 kiB buffers have |
|---|
| 1243 | to be transmitted via 2Ah WRITE. |
|---|
| 1244 | (mmc5r03c.pdf 4.3.6.2.2) |
|---|
| 1245 | |
|---|
| 1246 | When writing is done, it is mandatory to force the drive's buffer to media by |
|---|
| 1247 | 35h SYNCHRONIZE CACHE. |
|---|
| 1248 | (mmc5r03c.pdf 6.41) |
|---|
| 1249 | |
|---|
| 1250 | The written fragment (i.e. track-to-be) has to be closed by 5Bh CLOSE TRACK |
|---|
| 1251 | SESSION Close Function 001b. |
|---|
| 1252 | (mmc5r03c.pdf 6.3.3.4.2) |
|---|
| 1253 | libburn obtains the necessary logical track number from Last Track Number in |
|---|
| 1254 | Last Session from the reply of 51h READ DISC INFORMATION requesting |
|---|
| 1255 | Data Type 000b. |
|---|
| 1256 | (mmc5r03c.pdf 6.22) |
|---|
| 1257 | |
|---|
| 1258 | After each track 5Bh CLOSE TRACK SESSION Close Function 010b with Logical Track |
|---|
| 1259 | Number 0 closes the DVD+R session but keeps the media appendable. |
|---|
| 1260 | (mmc5r03c.pdf 6.3.3.4.3) |
|---|
| 1261 | If the media shall not stay appendable then the last DVD+R session is to be |
|---|
| 1262 | closed by Close Function 101b rather than 010b. This finalizes the media |
|---|
| 1263 | "with minimal radius". |
|---|
| 1264 | (mmc5r03c.pdf 6.3.3.4.4) |
|---|
| 1265 | |
|---|
| 1266 | Note: growisofs has code for that gesture but explicitly avoids to use it, if |
|---|
| 1267 | the media was appendable before writing began. Instead it recommends to fill |
|---|
| 1268 | up the media with zeros. This gesture nevertheless caused error replies from |
|---|
| 1269 | the drives in my own experiments. |
|---|
| 1270 | The reason given by Andy Polyakov is that some DVD-ROM drives get mislead by |
|---|
| 1271 | the lead-out information of (formerly) appendable media unless the media is |
|---|
| 1272 | fully written. |
|---|
| 1273 | (http://fy.chalmers.se/~appro/linux/DVD+RW/ , "Compatibility: caveat lector") |
|---|
| 1274 | |
|---|
| 1275 | Own experiments showed no such problems with PC attached PATA DVD-ROM drives. |
|---|
| 1276 | For best DVD-ROM compatibility one should avoid appendable media at all |
|---|
| 1277 | by closing them already after the first session. |
|---|
| 1278 | |
|---|
| 1279 | |
|---|
| 1280 | ------------------------------------------------------------------------------- |
|---|
| 1281 | DVD+R/DL (Dual Layer) : |
|---|
| 1282 | |
|---|
| 1283 | libburn treats DL media just like their single layer equivalents. |
|---|
| 1284 | This seems to work fine for DVD+R/DL, according to a report by nightmorph |
|---|
| 1285 | in http://libburnia-project.org/ticket/13 . |
|---|
| 1286 | |
|---|
| 1287 | ------------------------------------------------------------------------------- |
|---|
| 1288 | |
|---|
| 1289 | ------------------------------------------------------------------------------- |
|---|
| 1290 | BD-R Cookbook |
|---|
| 1291 | ------------------------------------------------------------------------------- |
|---|
| 1292 | Inspired by reading mmc5r03c.pdf from http://www.t10.org/ftp/t10/drafts/mmc5/ |
|---|
| 1293 | backed by experiments iwith drive LG GGW H20L. |
|---|
| 1294 | |
|---|
| 1295 | For libburnia-project.org by Thomas Schmitt <scdbackup@gmx.net> |
|---|
| 1296 | |
|---|
| 1297 | ------------------------------------------------------------------------------- |
|---|
| 1298 | Media type can be recognized by Current Profile from 46h GET CONFIGURATION. |
|---|
| 1299 | (mmc5r03c.pdf 6.6.2.1) |
|---|
| 1300 | BD-R 0042h |
|---|
| 1301 | |
|---|
| 1302 | There are two basic recording modes defined: Sequential Recording Mode SRM and |
|---|
| 1303 | Random Recording Mode RRM. The latter is optional and for now not topic of this |
|---|
| 1304 | text. |
|---|
| 1305 | (mmc5r03c.pdf 4.5.3.5) |
|---|
| 1306 | |
|---|
| 1307 | |
|---|
| 1308 | - SRM Formatting |
|---|
| 1309 | - Writing a session in SRM-POW |
|---|
| 1310 | (- Pseudo-OverWrite SRM+POW) |
|---|
| 1311 | |
|---|
| 1312 | |
|---|
| 1313 | ------------------------------------------------------------------------------- |
|---|
| 1314 | SRM Formatting: |
|---|
| 1315 | |
|---|
| 1316 | Despite being write-once media BD-R can optionally carry some formatting. |
|---|
| 1317 | |
|---|
| 1318 | SRM has a disc structure model with tracks and sessions. |
|---|
| 1319 | Several tracks may be open at the same time, each having its own NWA. |
|---|
| 1320 | (mmc5r03c.pdf 4.5.3.5.2.2) |
|---|
| 1321 | This structure is formatted onto blank media automatically as soon as the |
|---|
| 1322 | first serious write attempt occurs. |
|---|
| 1323 | (mmc5r03c.pdf 4.5.3.5) |
|---|
| 1324 | Before such a write attempt, blank media may be explicitely formatted with |
|---|
| 1325 | spares, which provide defect management. |
|---|
| 1326 | (mmc5r03c.pdf 4.5.3.5.3) |
|---|
| 1327 | Tracks get created from other tracks via RESERVE TRACK splitting. |
|---|
| 1328 | (mmc5r03c.pdf 4.5.3.5.2.5) |
|---|
| 1329 | |
|---|
| 1330 | On top of defect management there may be Pseudo-OverWrite SRM+POW, a costly |
|---|
| 1331 | way to write several times to the same LBA. See below. |
|---|
| 1332 | Fully sequential states are called SRM-POW. |
|---|
| 1333 | (mmc5r03c.pdf 4.5.3.5.4) |
|---|
| 1334 | |
|---|
| 1335 | Explicite formatting is done by 04h FORMAT UNIT. Its data payload consists |
|---|
| 1336 | of a Format List Header and a Format Descriptor. It is advisable to set |
|---|
| 1337 | the Immed bit and the FOV bit in header byte number 1. The descriptor should |
|---|
| 1338 | be a copy of a descriptor from 23h READ FORMAT CAPACITIES but the size may be |
|---|
| 1339 | adjusted within a certain range. |
|---|
| 1340 | (mmc5r03c.pdf 6.5, 6.5.3.2, 6.5.3.3) |
|---|
| 1341 | |
|---|
| 1342 | Format type 00h creates SRM layouts with a default number of spares (or |
|---|
| 1343 | eventually RRM) chosen by the format sub-type: |
|---|
| 1344 | 00b = SRM with support for POW |
|---|
| 1345 | 01b = SRM without POW (but with some spares for defect management) |
|---|
| 1346 | 10b = (RRM) |
|---|
| 1347 | (mmc5r03c.pdf 6.5.4.2.1.6) |
|---|
| 1348 | |
|---|
| 1349 | Format type 32h uses the same sub-types but allows to allocate non-default |
|---|
| 1350 | amounts of spares. Similar to BD-RE format 31h, three format descriptors are |
|---|
| 1351 | offered: #1: default size, #2: maximum spare area, #3: minimal spare. |
|---|
| 1352 | The size may be chosen within that range. |
|---|
| 1353 | |
|---|
| 1354 | The sense behind the Type Dependent Parameters is obscure |
|---|
| 1355 | to me. Best will be to set ISA_V and TDMA_V to 0. |
|---|
| 1356 | (mmc5r03c.pdf 6.5.4.2.1.17) |
|---|
| 1357 | |
|---|
| 1358 | |
|---|
| 1359 | ------------------------------------------------------------------------------- |
|---|
| 1360 | Writing a session in SRM: |
|---|
| 1361 | |
|---|
| 1362 | The procedure and constraints for writing BD-R SRM-POW are very similar to |
|---|
| 1363 | DVD+R. libburn flatly re-uses its DVD+R code except the Close Function for |
|---|
| 1364 | finalizing a disc. |
|---|
| 1365 | |
|---|
| 1366 | In short: |
|---|
| 1367 | If all written sessions are closed, then there is exactly one NWA. |
|---|
| 1368 | In the beginning there is an empty session and track. A new track can be |
|---|
| 1369 | written either with pre-announced size (by RESERVE TRACK) or open-end by |
|---|
| 1370 | simply starting to write to the NWA. When done the track gets closed by |
|---|
| 1371 | close function 001b. Then either session or disc gets closed depending on |
|---|
| 1372 | the Close Function used: |
|---|
| 1373 | - Close Function 010b closes the session and keeps the media appendable |
|---|
| 1374 | (same as with DVD+R) |
|---|
| 1375 | - Close Function 110b finalizes the media and makes it read-only. |
|---|
| 1376 | (differs from libburn DVD+R procedure which uses 101b) |
|---|
| 1377 | |
|---|
| 1378 | ------------------------------------------------------------------------------- |
|---|
| 1379 | Pseudo-OverWrite POW: (no used yet by libburn) |
|---|
| 1380 | |
|---|
| 1381 | This enhancement of SRM emulates overwriting of existing data blocks. |
|---|
| 1382 | (mmc5r03c.pdf 4.5.3.5.4) |
|---|
| 1383 | |
|---|
| 1384 | POW establishes a virtual vLBA space on top of the real address space rLBA. |
|---|
| 1385 | All read and write commands deal with vLBA. It seems that track NWAs are |
|---|
| 1386 | assumed to be identical in vLBA space and in rLBA space. |
|---|
| 1387 | It is not clear whether one may write to vLBA blocks which are neither written |
|---|
| 1388 | yet nor at one of the track NWAs. Probably not, or else one could make NWAs run |
|---|
| 1389 | into vLBAs which are associated with older rLBAs. |
|---|
| 1390 | |
|---|
| 1391 | Replacing invalidated blocks consumes addresses in rLBA space at the NWA of |
|---|
| 1392 | some track. I.e. no spares are consumed by POW. Nevertheless it is costly by |
|---|
| 1393 | a special map called Orphanage. It covers rLBA which have been consumed |
|---|
| 1394 | by differing vLBAs. It never shrinks and can grow with each write to remapped |
|---|
| 1395 | addresses. |
|---|
| 1396 | To avoid heavy Orphanage growth it is advised to write mostly to vLBA which |
|---|
| 1397 | still coincide with their rLBA. E.g. those addresses which have neither been |
|---|
| 1398 | written as rLBA nor as vLBA yet. So one should begin the vLBA of new sessions |
|---|
| 1399 | at the NWA of a sufficiently sized track. |
|---|
| 1400 | (mmc5r03c.pdf 4.5.3.5.4.2 , 4.5.3.6.9) |
|---|
| 1401 | |
|---|
| 1402 | ------------------------------------------------------------------------------- |
|---|
| 1403 | |
|---|