LG-rebadged Plextor B300SA: Speed Control doesn't work

Discussion in 'AnyDVD HD (DVD issues)' started by el Filou, Aug 30, 2017.

  1. el Filou

    el Filou Well-Known Member

    Hello.

    I am posting this issue in the DVD section but it is a general AnyDVD issue and doesn't apply to a particular kind of disc.

    I am using a Plextor PX-B300SA in my HTPC, a combo HD DVD and BD reader. This drive is actually a rebadged LG GGC-H20L.
    The problem is that the "Speed Control" option section doesn't work. I have it set to "Slow & quiet" but it doesn't change the drive speed.
    I am using my HTPC to watch my DVDs and BDs directly, so it's quite annoying because it makes a lot of noise, especially with DVDs but it still can be heard with BD (my own old Audio CDs I ripped to my hard drive so it doesn't matter most of the times but in the rare case someone visits me and brings a CD it makes an awful lot of noise).
    Previously I was using a 32-bit OS and I had found a workaround with Nero DriveSpeed, called from a batch file by AnyDVD each time I inserted a disc, but now I've upgraded to Win10 64-bit, the 2K-XP era 32-bit ASPI driver it used doesn't work anymore.
    The only workaround I have found is to manually run Nero DiscSpeed (the full benchmark app), which is preconfigured to use the slowest speed possible, and start a predefined benchmark run, which sets the drive to the slowest speed, then cancel the benchmark and exit the application. This is already not very user friendly, but in addition I have to exit my media center app (MediaPortal) because it locks the drive after it recognizes a disc and so I can't run DiscSpeed while MP is running.
    So it tried to find out what was the problem and created an AnyDVD logfile that you will find attached.
    I used the first DVD I found in my collection but the disc doesn't matter.

    I guess this is the issue:

    39.45s: get_plextor_speed failed, sense 5:20:0
    39.45s: get_plextor_speed failed!
    39.45s: set streaming failed, sense 5:21:0


    It seems AnyDVD uses Plextor-specific routines to read and set the drive speed. Is it possible that those don't work because the drive is internally an LG ?
    I'm pretty sure Plextor just put their name everywhere in the firmware but the code is still LG's.

    Edit: I've thought about flashing an LG firmware, but I've read on the Web that it can't be done and I don't wanna brick my drive.

    My question is: could it be possible for AnyDVD to recognize this drive and use another routine to read and set the speed? Maybe the one used on an LG GGC-H20L?
    Nero DiscSpeed has no problem setting the speed for CD, DVD, and BD, so I guess there is a way to make this work but I don't know how Nero does it.

    I hope you can find an easy fix for this, it's not a blocking issue but it makes the disc viewing experience not very friendly.

    Thank you again for your superb work with AnyDVD!

    Best regards,
     
  2. James

    James Redfox Development Team Staff Member

    No need for an LG firmware. AnyDVD tries teo methods to set the speed, and both fail. I have no idea why.
     
  3. el Filou

    el Filou Well-Known Member

    This MS doc page https://docs.microsoft.com/en-us/windows-hardware/drivers/storage/cd-rom-set-speed says that there are two standard ways under Windows to set an optical drive speed: SET CD SPEED and SET STREAMING. Are those the two methods you're referencing? Or do you mean the Plextor proprietary one, and the standard SET STREAMING one? If yes, would it be possible to try the SET CD SPEED one?

    Edit: it seems it's either one or the other: https://msdn.microsoft.com/en-us/library/windows/hardware/ff551370(v=vs.85).aspx
    but I don't understand how it's decided. Does the drive decides?
     
  4. Yaris

    Yaris Well-Known Member

    In my experience, some DVDs are noisier when they wobble. These are always library borrowed discs that have been mishandled by the masses.
     
  5. el Filou

    el Filou Well-Known Member

    Hum yeah, but that's not the problem here, the drive just doesn't lower its speed and reads at full speed. No PC optical drive is quiet at full speed.
     
  6. Clams

    Clams Well-Known Member

    Even when just playing a movie? Or is this a rip thing only?
    -W
     
  7. el Filou

    el Filou Well-Known Member

    Yes, as explained in my OP I only use AnyDVD to watch discs directly, and the "Speed Control" option doesn't work on my drive. :(
     
  8. el Filou

    el Filou Well-Known Member

    Hello again.
    If that is of interest to other people or to Redfox devs, I've found a better workaround for my problem with non-working AnyDVD drive speed control with this program (hope it's OK to link, it's not a Redfox competitor): SZ RimhillEx
    It stays resident and always sets the drive back to the chosen speed even after resume from standby or disc change, without needing any manual intervention or privilege elevation prompt. The only minor inconveniences are that it tells you the speed in CD-ROM speeds so you have to do some calculations, and it can't always set precise high speeds with DVD or BD discs, but as I just want to set the slowest speed possible it's fine for my usage.
    Apparently it uses SCSI commands via IOCTL to control the speed instead of specific Windows API calls (see screenshot of Process Monitor)
     

    Attached Files:

  9. LIGHTNING UK!

    LIGHTNING UK! Member

    Please excuse me for butting in but I got curious about this issue and had a little look into it.

    I believe the issue lies in the way you're calling the 'SET STREAMING' command. You're filling out the CDB's 'Parameter List Length' field (with a value of 0x001C / 28 in this case), but you aren't filling out the SRB's 'DataTransferLength' field (with any / the same value).

    Code:
      47              CMD    b6 00 00 00  00 00 00 00  00 00 1c 00                                                                   SET DVD SPEED                     149ms       168.1.0        08:10:08.814  unknown      
      47          18  SENSE  f0 00 05 7f  ff ff ff 0a  b6 00 00 0c  21 00 00 00  00 00                                               illegal request                     9us       168.2.0        08:10:08.817              
      47              SPT    38 00 02 00  00 00 0c 12  00 00 00 00  00 00 00 00  e8 03 00 00  00 00 00 00  00 00 12 03  00 00 00 00                                      2us       168.3.0        08:10:08.817              
                             3c 00 00 00  b6 00 00 00  00 00 00 00  00 00 1c 00  00 00 00 00  00 00 00 00                                                                          168.3.32                                  
      47              SRB    58 00 00 84  02 00 00 00  00 00 0c 12  80 01 00 00  00 00 00 00  e8 03 00 00  00 00 12 03  00 00 00 00  EXEC SCSI                         2.8ms       169.1.0        08:10:08.817  usbstor      
                             40 3a 61 28  80 fa ff ff  00 00 00 00  00 00 00 00  10 75 68 2c  80 fa ff ff  00 00 00 00  00 00 00 00                                                169.1.32                                  
                             00 00 00 00  00 00 00 00  b6 00 00 00  00 00 00 00  00 00 1c 00  00 00 00 00                                                                          169.1.64                                  
    
    Notice bytes 16-19 of the SRB are all 0's.

    Whereas this one works ok...

    Code:
      47              CMD    b6 00 00 00  00 00 00 00  00 00 1c 00                                                                   SET DVD SPEED                     160us       267.1.0        08:12:28.203  unknown      
      47          28  OUT    00 00 00 00  00 00 00 00  00 16 91 1f  ff ff ff ff  00 00 03 e8  ff ff ff ff  00 00 03 e8               ............................      114us       267.2.0        08:12:28.205              
      47              SPT    2c 00 00 00  00 00 0c 00  00 00 00 00  1c 00 00 00  e0 a5 01 00  00 00 00 0a  30 00 00 00  b6 00 00 00                                      1us       267.3.0        08:12:28.205              
                             00 00 00 00  00 00 1c 00  00 00 00 00                                                                                                                 267.3.32                                  
      47              SRB    58 00 00 01  00 00 00 00  00 00 0c 12  80 01 00 00  1c 00 00 00  e0 a5 01 00  00 00 00 0a  00 00 00 00  EXEC SCSI                         1.9ms       268.1.0        08:12:28.205  usbstor      
                             40 36 e2 0c  80 fa ff ff  00 00 00 00  00 00 00 00  80 17 10 10  80 fa ff ff  00 00 00 00  00 00 00 00                                                268.1.32                                  
                             00 00 00 00  00 00 00 00  b6 00 00 00  00 00 00 00  00 00 1c 00  00 00 00 00                                                                          268.1.64                                  
    
    Hope that helps! :)
     
  10. James

    James Redfox Development Team Staff Member

    Much appreciated!

    This is odd, because I certainly set the data transfer length to 0x1C/28.
    Which program are you using to monitor the traffic?
    Is it possible, that the tool reports the wrong length, because the request failed with an "illegal request" sense code?
     
  11. LIGHTNING UK!

    LIGHTNING UK! Member

    I was using Bus Hound 6.01.

    Ok yeah so I messed up...haha. Not sure why it doesn't / can't show the 'OUT' bytes even when the command fails. I figured it wasn't doing it because it didn't think there was anything to show and that was because the DataTransferLength field was wrong.

    The real issue is with the generic 'End LBA' value you're specifying - 0x7FFFFFFF. That drive (and in my case, a GGW-H20L I dug out) only works with a valid value - up to and including whatever's returned by 'READ CAPACITY' or whatever.
     
    el Filou and whatever_gong82 like this.
  12. James

    James Redfox Development Team Staff Member

    Thanks, this makes much more sense. I have a few LG drives, which are happy with 0x7FFFFFFF. I will change this for the next version.
     
  13. James

    James Redfox Development Team Staff Member

    Please try AnyDVD 8.1.8.4.
     
  14. Clams

    Clams Well-Known Member

    Heh...... That didn't take you long. :)
    -W
     
  15. LIGHTNING UK!

    LIGHTNING UK! Member

    8.1.8.4 works fine with my GGW-H20L now. I tried all 4 speed setting options and the command issued for each one was accepted by the drive :)

    Hopefully the OP's issue is now resolved too.
     
  16. el Filou

    el Filou Well-Known Member

    Hello. Thanks James and LIGHTNING UK, it now works perfectly for DVDs and BDs! (y)
    Just one last little thing: it doesn't work with Audio CDs. I know this is last century tech but I still listen to one once in a while so it would be nice if it worked with them too.
    I tried creating a logfile with an Audio CD, it says it's created but there is no file in the AnyDVD_logs folder. Maybe because an Audio CD has no volume name and it confuses AnyDVD when it writes the ziplog file?

    EDIT: after tinkering a bit more, I found out Speed Control now works with Audio CDs too only if I uncheck "Audio CD => Remove CD Digital Audio Protection"
    Is this a bug?
    Note that it still doesn't want to provide a log file with that option unchecked.

    Thank you again. :)

    PS: I noticed there was an error dialog that appeared when I first installed v8.1.8.4, but it disappeared just as quickly and I didn't have time to look at what it said. AnyDVD worked fine when installed but just to be sure I reinstalled it after rebooting and that time no error dialog popped up anymore.
    Is there any install log somewhere that could have logged it? I didn't find any in Windows' temp folders.
     

    Attached Files:

    Last edited: Sep 23, 2017
  17. el Filou

    el Filou Well-Known Member

    Hi @James . Unfortunately, after updating from 8.1.8.4 beta to to 8.1.9.0 release the fix doesn't work anymore. :(
    Code:
    8.00s: get_plextor_speed failed, sense 5:20:0
    8.00s: get_plextor_speed failed!
    8.02s: set streaming failed, sense 5:21:0
    (tell me if you need the full log but I think it wouldn't help)
    AnyDVD.sys is dated 15/09 10:27 v8.1.8.3 , is this right?
    The AnyDVD update is the only system-level change I did. I rebooted after the update just to be sure.

    Could you also have a look at why it didn't work with Audio CDs if you have some time? (see previous post)
    Thanks.
     
  18. DrinkLyeAndDie

    DrinkLyeAndDie Retired Moderator

    The properties for AnyDVD.sys are the same as this on my system.
     
    el Filou likes this.
  19. LIGHTNING UK!

    LIGHTNING UK! Member

    It looks like it broke for Video DVD again because the value used for the 'End LBA' has been set to the size of the disc (in sectors) rather than the last addressable LBA on the disc - which of course is always 1 less.

    I'd say using the value from 'READ CAPACITY' is a safe bet.

    As for the Audio CD issue, I can't see it making any attempt to issue the SET CD SPEED command. It just tries and fails at the SET STREAMING one - and that's with it using the generic 0x7FFFFFFF value it used to use for Video DVD.
     
    whatever_gong82 and el Filou like this.
  20. James

    James Redfox Development Team Staff Member

    Yes, my fault in not understanding my own code.

    Yes, overlooked it, because the code for audio cds uses a different function in the program.

    Will all be fixed.
     
    whatever_gong82 and el Filou like this.