For polling devices and getting information sent into udev, the package builds a program called cdrom_id
. It's located at /lib/udev/cdrom_id
. Running it will give information that is passed to udev triggers.
/lib/udev/cdrom_id /dev/sr0
ID_CDROM=1 ID_CDROM_CD=1 ID_CDROM_DVD=1 ID_CDROM_BD=1 ID_CDROM_MRW=1 ID_CDROM_MRW_W=1 ID_CDROM_MEDIA=1 ID_CDROM_MEDIA_DVD=1 ID_CDROM_MEDIA_STATE=complete ID_CDROM_MEDIA_SESSION_COUNT=1 ID_CDROM_MEDIA_TRACK_COUNT=1 ID_CDROM_MEDIA_TRACK_COUNT_DATA=1
You can use it as a poor man's check for a drive status – see if there's something in there or not.
ID_CDROM_MEDIA_DVD=1
will be present if there's a DVD in there (not a CD), and ID_CDROM_MEDIA_STATE=complete
will display if it's finished accessing the device.
However, just because udev is finished, doesn't mean the drive is immediately available. That's why I wrote dvd_drive_status which will check to see if it's really ready to be read.
Using dvd_eject will also wait for the drive to be ready, if you use it to close the tray: dvd_eject -t