Retriving optical drive's firmware date and serial number



I’m trying to retrieve the optical drive’s firmware date and serial number. Here’s what I’ve done:

  1. I was able to sucessfully call GetConfiguration to retrieve the Firmware Information Feature (10Ch) and Serial Number Feature (108h) on drives that support such features.

  2. I checked the Feature Code of the returned buffer and make sure the return information is of the feature I requested (10Ch or 108H).

  3. I’ve tried this on 10+ drives and so far the only one that returns the correct info is on a LG GSA-4163B. All the other drives gives me garble characters in the firmware info or serial number fields.

My questions: Why does it work on some drives and not on the others? Clearly the feature is supported by the drive since I was able to successfully do a GetConfiguration on those features. Maybe some drive manufacturers just populated those fields with garble intentionally?



The answer is because it’s at the drive or chipset manufacturer’s discretion to include any instructions that are not important for the recording process. Also, reading the firmware date and serial number is defined at a much later date, i.e. 1999, MMC2, which started to define the ‘Get configuration’ command.

If u look at the specification (well in draft anyway) it does not mention that it will fail if a feature is not supported. It does mention that a check condition status is to be given. But this will not prevent the DeviceIOControl function to fail. Hence why u think it was successful.

One more thing, did u remember to zeroise the data buffer, before u send the command?

The garbage could just be comming from uninitialised memory allocation.

I also tried these commands for myself and none of my drives will return anything:
LiteOn 52327S successfully returned some data, but serial numbers are all spaces, i.e. ASCII code 32

Benq 1620 failed to even return any data.

Unless, I’ve made a mistake with my source code, I will assume that these commands are not very well supported.


Thanks for the reply.

I have access to 100+ drives (all manufactured 2002+) and I’ve seen different behavior on different drives. A very small number of them will return the information as documented. Some will fail the GetConfiguration call (when I say failed I meant unable to retrieve the requeseted feature). A few will return character that’s out of the proper range (20h -7Eh for serial number). A large number of them (over 90%) will return either all spaces (like your liteOn) or nothing (0x00).

I’ve confirmed that I did properly initialize the buffer.

You’re probably right. The drive manufacturer probably didn’t include those information. I’ve seen similar issues with hard drive hardware info.



What about getting firmware revision number? I’ve only seen documentation on getting firmware revision date from MMC. I’ve seen optical drive’s firmware revision number in linux, anyone know where that comes from?

They goes in the format of something like this:
Firmware revision: 1.6



That one is defined in SPC, INQUIRY command, and the returned ‘Product revision’ is what u want. The format is not always 1.6, e.g. my LiteOn gives ‘QS0E’, BENQ gives ‘B7V9’ and my Plextor gives ‘1.09’.


Thanks, that’s exactly what I was looking for. I’m wondering why many people refer that to Firmware Revision instead of Product revision?