Jusqu'à Fedora 14, j'utilisais avec succès cdctlpour activer / désactiver le bouton d'éjection du CD / DVD sur mon ordinateur portable (Thinkpad T410). Malheureusement, il a cessé de fonctionner maintenant.
J'ai consulté les méthodes discutées dans ces 2 questions:
- désactiver le bouton cd / dvd sur un ordinateur portable linux (ubuntu)
- Désactivez le bouton d'éjection du DVD sur un Thinkpad sous Linux
Aucun d'entre eux n'a fonctionné pour moi. Je reviens donc cdctlpour voir si nous ne pouvons pas corriger ce qui ne fonctionne pas, car cela a fonctionné si longtemps.
Débogage du problème
Donc, en commençant par les cdctlcommutateurs, je remarque que la plupart des choses semblent bien fonctionner.
Exemples
Ces choses fonctionnent.
éjecte le lecteur
$ cdctl -e
liste des capacités
$ cdctl -k
Tray close : 1
Tray open : 1
Can disable eject : 1
Selectable spin speed : 1
Is a jukebox : 0
Is multisession capable: 1
Can read the MCN (UPC) : 1
Can report media change: 1
Can play audio discs : 1
Can do a hard reset : 1
Can report drive status: 1
Selon cette liste, cdctlpense même qu'il peut activer / désactiver le bouton d'éjection.
Can disable eject : 1
Je continue donc avec le débogage du problème.
Débogage de cdctl
Je pense donc que nous allons faire un straceessai cdctlpour voir si cela peut éclairer ce qui se passe.
$ strace cdctl -o1
...
brk(0) = 0x1371000
open("/dev/cdrom", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/dev/cd", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/dev/scd0", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/dev/sr0", O_RDONLY|O_NONBLOCK) = 3
ioctl(3, CDROM_LOCKDOOR, 0x1) = 0
close(3) = 0
exit_group(0) = ?
+++ exited with 0 +++
Curieusement, il semble cdctlque cela désactive le bouton.
$ strace cdctl -o1
ioctl(3, CDROM_LOCKDOOR, 0x1) = 0
$ strace cdctl -o0
ioctl(3, CDROM_LOCKDOOR, 0) = 0
REMARQUE: si je comprends bien, le retour d'un 0 signifie qu'il a réussi.
Une chose qui a attiré mon attention ici est la liste des appareils qui cdctltentent d'interagir avec. J'ai donc pensé "et si j'essaye ces appareils avec eject"?
commande d'éjection
L'une des autres commandes que j'utilisais il y a des années était la ejectcommande pour interagir avec le périphérique CD / DVD. J'ai remarqué que cette commande a également maintenant un commutateur nommé similaire:
$ eject --help
-i, --manualeject <on|off> toggle manual eject protection on/off
Exemple
$ eject -i 1 /dev/sr0
eject: CD-Drive may NOT be ejected with device button
$ eject -i 0 /dev/sr0
eject: CD-Drive may be ejected with device button
Pense ejectaussi à désactiver le bouton, mais ce n'est pas le cas non plus. En utilisant straceici, je vois les mêmes appels système:
$ strace eject -i 1 /dev/sr0 |& grep ioctl
ioctl(3, CDROM_LOCKDOOR, 0x1) = 0
$ strace eject -i 0 /dev/sr0 |& grep ioctl
ioctl(3, CDROM_LOCKDOOR, 0) = 0
Alors maintenant, je me demande si UDEV ou quelque chose d'autre peut bloquer ou s'approprier l'appareil?
Pensées?