Fino a Fedora 14 stavo usando con successo cdctlper abilitare / disabilitare il pulsante di espulsione CD / DVD sul mio laptop (Thinkpad T410). Purtroppo ha smesso di funzionare ora.
Ho consultato i metodi discussi in queste 2 domande:
- disabilita il pulsante cd / dvd sul laptop linux (ubuntu)
- Disabilita il pulsante di espulsione del DVD su un Thinkpad con Linux
Nessuno dei quali ha funzionato per me. Quindi torno indietro per cdctlvedere se non riusciamo a risolvere il problema, dato che ha funzionato per così tanto tempo.
Debug del problema
Quindi, a partire dagli cdctlswitch, noto che la maggior parte delle cose sembra funzionare bene.
Esempi
Queste cose funzionano.
espelle l'unità
$ cdctl -e
capacità di elenco
$ 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
Secondo tale elenco cdctlritiene addirittura di poter abilitare / disabilitare il pulsante di espulsione.
Can disable eject : 1
Quindi continuo con il debug del problema.
Debug cdctl
Così ho dato lascia fare un stracesu cdctlper vedere se può far luce su quello che sta succedendo.
$ 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 +++
Curiosamente sembra che cdctlstia disabilitando il pulsante.
$ strace cdctl -o1
ioctl(3, CDROM_LOCKDOOR, 0x1) = 0
$ strace cdctl -o0
ioctl(3, CDROM_LOCKDOOR, 0) = 0
NOTA: se capisco questo diritto, il ritorno di uno 0 significa che ha avuto successo.
Una cosa che ha attirato la mia attenzione qui è stata la lista dei dispositivi con cui si cdctlsta tentando di interagire. Quindi ho pensato "e se provassi questi dispositivi con eject"?
comando di espulsione
Uno degli altri comandi che usavo anni fa era il ejectcomando per interagire con il dispositivo CD / DVD. Ho notato che anche questo comando ora ha un simile switch chiamato:
$ eject --help
-i, --manualeject <on|off> toggle manual eject protection on/off
Esempio
$ 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
Quindi ejectpensa anche che stia disabilitando il pulsante, eppure non lo è neanche. Usando stracequi vedo le stesse chiamate di sistema:
$ 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
Quindi ora mi chiedo se UDEV o qualcos'altro sta potenzialmente bloccando o prendendo la proprietà del dispositivo?
Pensieri?