User:Skierpage/CD drive woes
Kubuntu 11.04 was working fine in one AMD64-bit PC. I swapped my hard drive into another PC, HP Pavilion a1012x, and it booted right up and everything works fine! Except... on the new PC no Device Actions trigger when I insert a data CD, music CD, or DVD into either of its CD-ROM drives.
I don't get the "Available Devices" menu of options to Open with File Manager/VLC /Dragon, and the USB icon says "No Devices Available". I have the usual rules for this in System Settings > Device Actions, but they don't fire.
Works
A music CD shows up fine in dolphin, device action "kioclient exec audiocd:/" works fine, vlc can File > Open Disk > /dev/cdrom1" fine...
Inserting a USB flash drive makes "Available Devices" appear with option to mount it.
Tried
I tried system settings -> removable devices > enable automatic mounting of removable media, didn't help
Solid!
Maybe some hardware didn't get reconfigured.
The problem seems to be in the Solid layer.
% solid-hardware list details ... udi = '/org/freedesktop/UDisks/devices/sr0' parent = '/org/freedesktop/UDisks' (string) vendor = 'HP' (string) product = 'HP DVD Writer 640' (string) description = 'CD-RW/DVD±RW DL Drive' (string) Block.major = 11 (0xb) (int) Block.minor = 0 (0x0) (int) Block.device = '/dev/sr0' (string) StorageDrive.bus = 'Scsi' (0x3) (enum) StorageDrive.driveType = 'CdromDrive' (0x1) (enum) StorageDrive.removable = true (bool) StorageDrive.hotpluggable = false (bool) StorageDrive.inUse = false (bool) StorageDrive.size = 572993536 (0x22273000) (qulonglong) OpticalDrive.supportedMedia = 'Cdr|Cdrw|Dvd|Dvdr|Dvdrw|Dvdplusr|Dvdplusrw|Dvdplusdl' (0x1df) (flag) OpticalDrive.readSpeed = 0 (0x0) (int) OpticalDrive.writeSpeed = 0 (0x0) (int) OpticalDrive.writeSpeeds = {} (int list)
udi = '/org/freedesktop/UDisks/devices/sr0:media' parent = '/org/freedesktop/UDisks/devices/sr0' (string) vendor = 'HP' (string) product = 'HP DVD Writer 640' (string) description = 'CD-ROM' (string) Block.major = 11 (0xb) (int) Block.minor = 0 (0x0) (int) Block.device = '/dev/sr0' (string) StorageVolume.ignored = true (bool) StorageVolume.usage = 'Other' (0x0) (enum) StorageVolume.fsType = (string) StorageVolume.label = (string) StorageVolume.uuid = (string) StorageVolume.size = 572993536 (0x22273000) (qulonglong) OpticalDisc.availableContent = 'Audio|Data' (0x3) (flag) OpticalDisc.discType = 'CdRom' (0x0) (enum) OpticalDisc.appendable = false (bool) OpticalDisc.blank = false (bool) OpticalDisc.rewritable = false (bool) OpticalDisc.capacity = 572993536 (0x22273000) (qulonglong)
Solid knows there's an Audio Optical Disc plugged in, but it's ignored, and the System Settings > Device Actions rules include "The devices Ignored must equal false".
How do I tell Solid not to ignore the storage volume?!
Solid is in KDE Base. I found the source for this `solid-hardware` command line, but all it does is call SolidHardware shell()'s shell.hwList() command. There's an isIgnored in StorageAccess, but I can't find the source code for the implementation of this in the Udisks back-end.
udisks
Solid is probably (?) talking to udisks, I have a process
udisks-daemon: polling /dev/sr1 /dev/sdg /dev/sdd /dev/sdc /dev/sdf /dev/sde /dev/sr0
I ran udisks --monitor-detail and when I inserted a music CD I got
changed: /org/freedesktop/UDisks/devices/sr0 Showing information for /org/freedesktop/UDisks/devices/sr0 native-path: /sys/devices/pci0000:00/0000:00:02.5/host1/target1:0:0/1:0:0:0/block/sr0 device: 11:0 device-file: /dev/sr0 presentation: /dev/sr0 by-id: /dev/disk/by-id/ata-HP_DVD_Writer_640_CNL854011C by-path: /dev/disk/by-path/pci-0000:00:02.5-scsi-1:0:0:0 detected at: Fri 12 Aug 2011 01:45:08 PM PDT system internal: 0 removable: 1 has media: 1 (detected at Tue 16 Aug 2011 03:56:38 PM PDT) detects change: 1 detection by polling: 1 detection inhibitable: 1 detection inhibited: 0 is read only: 0 is mounted: 0 mount paths: mounted by uid: 0 presentation hide: 0 presentation nopolicy: 0 presentation name: presentation icon: size: 572993536 block size: 2048 job underway: no usage: type: version: uuid: label: optical disc: blank: 0 appendable: 0 closed: 0 num tracks: 16 num audio tracks: 16 num sessions: 1 drive: vendor: HP model: HP DVD Writer 640 revision: CS30 serial: CNL854011C WWN: detachable: 0 can spindown: 0 rotational media: Yes, unknown rate write-cache: unknown ejectable: 1 adapter: /org/freedesktop/UDisks/adapters/0000_3a00_3a02_2e5 ports: /org/freedesktop/UDisks/adapters/0000_3a00_3a02_2e5/host1 similar devices: media: optical_cd compat: optical_cd optical_cd_r optical_cd_rw optical_dvd optical_dvd_plus_r optical_dvd_plus_r_dl optical_dvd_plus_rw optical_dvd_r optical_dvd_rw optical_mrw optical_mrw_w interface: scsi if speed: (unknown) ATA SMART: not available Advanced probing on /dev/sr0 failed while reading block size
Bugs
This sounds similar to Launchpad bug 709868 "kde 4.6 device actions broken".
He has the StorageVolume.ignored = true. He comments
- Ok... experimented a bit about how solid-hardware works and found what the latest problem is
- One needs to create /media/cdrom0 by hand.
- Solid does not manage mount points automatically creating dirs in media at need
- Solid does not anymore mount by label... namely should have mounted as /media/CDSTOMPER35 but mounts as /media/cdrom0
But I have a /media/cdrom symlinks to /media/cdrom0 , so that's not it. I have /dev/cdrom1 and cdrom2 symlinking to /dev/sr0 and /dev/sr1. Do I need to create a /media/cdrom1 ?
I filed KDE Bug 280229 "Device Actions don't trigger for my CD-ROM drives, StorageVolume.ignored"
Another bug TODO: none of the links on solid.kde.org work, they just redirect to the home page.
Devices
System Settings > Multimedia > Audio CDs > General > Specify CD Device is /dev/cdrom. I don't have this, I have /dev/cdrom1 and /dev/cdrom2. Should I change this or TODO is it another bug that this is wrong?
I changed it to /dev/cdrom1 and that didn't seem to help, or change anything; VLC's Media > Open Disk > Audio CD Disc device is still /dev/cdrom by default.
TODO Maybe I should create /media/cdrom1 and 2? udisks doesn't care, it's working at the /dev/sr0,1 level. I'm just guessing.