[Pkg-libburnia-devel] Bug#617409: brasero: Brasero corrupts all blank CD-R when burning (was: additional info)

Thomas Schmitt scdbackup at gmx.net
Sat Jul 7 17:28:53 UTC 2012


Hi,

Simon Wenner wrote:
> xorriso seems to work as expected.

Your report and the one of Alain Rpnpif support the theory that your drives
dislike CD write type TAO with your particular CD media or in general.
I failed to force Brasero into using the other write type. (Details below.)

I see in Brasero 2.30.3 source code in file
  ./plugins/libburnia/burn-libburn.c

        if (flags & BRASERO_BURN_FLAG_DAO)
                burn_write_opts_set_write_type (opts,
                                                BURN_WRITE_SAO,
                                                BURN_BLOCK_SAO);
        else {
                burn_write_opts_set_write_type (opts,
                                                BURN_WRITE_TAO,
                                                BURN_BLOCK_MODE1);

If you can modify that code, so that both become
                                                BURN_WRITE_SAO,
                                                BURN_BLOCK_SAO);
then you cripple it for appendable CD and some DVD, but would force it to
use SAO on blank CDs.

I am willing to bet 1 eurocent on this CD being readable.


George or Paul:
Can you provide Simon and Alain with a patch that does this to the Debian
source of Brasero in Wheezy ?
Just change all calls of burn_write_opts_set_write_type() to send the
same parameters as the one with BURN_WRITE_SAO.

(Program will be usable just for testing with blank CD, not for production.
 A proposal for a better remedy would follow in case of success.)


------------------------------------------------------------------------
Lengthy reasoning and experiments:

The version distributed by Debian is based on the same libburn
and the same libisofs as Brasero.

But better check this by ldd:
  $ ldd /usr/bin/xorriso | grep libisofs
  $ ldd /usr/lib/brasero-0/plugins/libbrasero-libisofs.so | grep libisofs
  $ ldd /usr/bin/xorriso | grep libburn
  $ ldd /usr/lib/brasero-0/plugins/libbrasero-libburn.so | grep libburn

If those are indeed pointing to the same .so files, then your report
supports the theory that your drive dislikes write type TAO with these media.
(NB: TAO is the default write type of wodim and cdrecord. Option -sao enables
     the other CD write mode SAO.)


>From the unreadable medium burned by Brasero:

> Media current: CD-RW
> Media product: 97m10s00f/79m59s74f , TDK / Ritek
> Media status : is written , is closed
> Media blocks : 3822 readable , 0 writable , 359847 overall
> TOC layout   : Idx ,  sbsector ,       Size , Volume Id
> Other session:   1 ,         0 ,      3820s ,
> Media summary: 1 session, 3822 data blocks, 7644k data,     0 free

These 2 extra sectors after the ISO image end look like CD TAO.
Your xorriso run on a blank CD was with write type SAO.

A TAO track ends by 2 non-data sectors. One cannot recognize them easily
before one tries to read them.
This can be confirmed by:

  $ xorriso -outdev /dev/sr0 -check_media what=disc use=outdev --
  ...
  xorriso : UPDATE : 63632 of 64064 blocks read in 44 s , 23.6xC
  libburn : SORRY : SCSI error on read_10(64062,1): [5 64 00] Illegal request. Illegal mode for this track.
  libburn : SORRY : SCSI error on read_10(64063,1): [5 64 00] Illegal request. Illegal mode for this track.
  xorriso : UPDATE : 64064 of 64064 blocks read in 44 s = 19.3xC
  Media checks :        lba ,       size , quality
  Media region :          0 ,      64062 , + good
  Media region :      64062 ,          2 , - unreadable

(NB:
 Brasero does it wrong when it does not add padding to a TAO track.
 But that would not hamper mountability but rather produce I/O errors
 when you try to read the content of the last files in the image.
 Other drives report other errors with these blocks. E.g.:
   [3 11 05] Medium error. L-EC uncorrectable error.
 When Linux encounters these blocks while loading a cache tile, then it
 marks the whole tile (128 kB ?) as unreadable.
)


I experimented with
  ~/.gconf/apps/brasero/drives/*/data_CD-RW/%gconf.xml
by trying to carry some info from Brasero source to .gconf
  debian/libbrasero-media-dev/usr/include/brasero/brasero-enums.h
        BRASERO_BURN_FLAG_NO_TMP_FILES          = 1 << 7,
        BRASERO_BURN_FLAG_DAO                   = 1 << 13,
I see in .../data_CD-RW/%gconf.xml
        <entry name="flags" mtime="1341679063" type="int" value="128"/>
and change to
        <entry name="flags" mtime="1341679063" type="int" value="8320"/>
thus setting bit 13. (Bit 7 has an effect on the checkbox for direct writing.)

Now i start Brasero and burn.
Hmmm ... the finalizing lasts long. Rather a sign for TAO.
SAO lasts long before progress begins.
Let's see:
  ISO session  :   1 ,         0 ,    241408s , Data disc (05 Jul 12)
  Media summary: 1 session, 241410 data blocks,  472m data,     0 free
Damn. Still TAO.

------------------------------------------------------------------------

Have a nice day :)

Thomas




More information about the Pkg-libburnia-devel mailing list