[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: growisofs cannot set speed



> > > tennert@ilka2000:/scr> growisofs -speed=4 -dvd-video -Z /dev/sr0=image
> > > Executing 'builtin_dd if=image of=/dev/sr0 obs=32k seek=0'
> > > :-( Failed to change write speed: 8310->5540
> > >
> > > On the other hand, setting no speed at all, results in a burning process
> > > starting at 6x, then ending at 8x:
> > > ...
> > > tennert@ilka2000:~/tmp> dvd+rw-mediainfo /dev/sr0
> > >  Current Write Speed:   8.0x1385=11080KB/s
                              ^^^ Perfectly agrees with the fact that
original recording was performed at 8x...

> tennert@ilka2000:/arch> growisofs -dvd-video -speed=4 -Z /dev/sr0=image
> :-( Failed to change write speed: 8310->5540
> tennert@ilka2000:/arch> dvd+rw-mediainfo /dev/sr0
>  Current Write Speed:   4.0x1385=5540KB/s
                          ^^^ If followed by growisofs *without* -speed
argument recording should have been performed at 4x...

> tennert@ilka2000:/arch> growisofs -dvd-video -speed=1 -Z /dev/sr0=image
> :-( Failed to change write speed: 8310->3324
> tennert@ilka2000:/arch> dvd+rw-mediainfo /dev/sr0
>  Current Write Speed:   2.4x1385=3324KB/s
                          ^^^ If followed by growisofs *without* -speed
argument recording should have been performed at 2.4x...

I bet by now you wonder how come growisofs says "failed to change write
speed," if information is right there? Point is that if unit was found
to reply to "GET [CURRENT] PERFORMANCE" command, then "Current Write
Speed" value is disregarded. Why? For following reasons:

1. This value comes from Page2A, which was classified as "no longer
recommended for use" in latest MMC specification;
2. There is a number of units, which either don't provide this
information through Page2A (e.g. Ricoh derivatives) or provide *bogus*
information through Page2A (e.g. NEC derivatives). Given 1. it's not a
violation of standard.
3. Those units which were found to reply to "GET [CURRENT] PERFORMANCE"
command were also found to provide *current* writing speed there.

Given that growisofs is designed to be a "common denomiator" for all
units, it first simply checks if unit replies to "GET [CURRENT]
PERFORMANCE" command and if it does, then it just disregards Page2A.
Plextor apparently breaks 3rd expectation by returning following at all
occasions:

> GET [CURRENT] PERFORMANCE:
>  Write Performance:     6.0x1385=8310KB/s@[0 -> 385023]
>                         8.0x1385=11080KB/s@[385024 -> 2295103]

It remains to be seen if it's firmware deficiency or intended behaviour.
Plextor has been contacted regarding this issue already. Depending on
outcome growisofs will be modified or firmware update would be required.
*Meanwhile* either use growisofs is pairs, first with -speed=N and then
without -speed argument to achieve the desired result or modify
growisofs to disregard outcome of the check if speed change was
successful (just locate "Failed to change write speed" in
growisofs_mmc.cpp and get rid of exit() following that line).

> Interestingly,
> when I tried "speed=1", growisofs seems to have tried to burn at
> double (!) speed,

-speed=1 basically means "set the lowest possible speed," and not really
1x. As 2.4x *was* listed as lowest possible speed, the fact that it
tried to change speed to 3324 is perfectly expected. A.



Reply to: