Fino a Fedora 14 stavo usando con successo cdctl
per 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 cdctl
vedere se non riusciamo a risolvere il problema, dato che ha funzionato per così tanto tempo.
Debug del problema
Quindi, a partire dagli cdctl
switch, 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 cdctl
ritiene 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 strace
su cdctl
per 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 cdctl
stia 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 cdctl
sta 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 eject
comando 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 eject
pensa anche che stia disabilitando il pulsante, eppure non lo è neanche. Usando strace
qui 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?