Bis Fedora 14 habe ich cdctl
die CD / DVD-Auswurftaste meines Laptops (Thinkpad T410) erfolgreich aktiviert / deaktiviert. Leider hat es jetzt aufgehört zu arbeiten.
Ich habe die in diesen beiden Fragen behandelten Methoden konsultiert:
- Deaktivieren Sie die CD / DVD-Taste auf einem Linux-Laptop (Ubuntu)
- Deaktivieren Sie die DVD-Auswurftaste auf einem Thinkpad unter Linux
Nichts davon hat für mich funktioniert. Also drehe ich mich zurück, um cdctl
zu sehen, ob wir nicht reparieren können, was daran kaputt ist, da es so lange funktioniert hat.
Debuggen des Problems
cdctl
Wenn ich mit Schaltern beginne, stelle ich fest, dass die meisten Dinge gut zu funktionieren scheinen.
Beispiele
Diese Dinge funktionieren.
Wirft das Laufwerk aus
$ cdctl -e
Listenfunktionen
$ 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
Laut dieser Liste cdctl
glaubt man sogar, dass man damit die Auswurftaste aktivieren / deaktivieren kann.
Can disable eject : 1
Also fahre ich mit dem Debuggen des Problems fort.
Debugging von cdctl
Also ich Figur läßt eine tun strace
auf , cdctl
um zu sehen , ob es etwas Licht auf vergießen kann , was los ist .
$ 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 +++
Seltsamerweise scheint cdctl
es, als würde es die Schaltfläche deaktivieren.
$ strace cdctl -o1
ioctl(3, CDROM_LOCKDOOR, 0x1) = 0
$ strace cdctl -o0
ioctl(3, CDROM_LOCKDOOR, 0) = 0
HINWEIS: Wenn ich dieses Recht verstehe, bedeutet die Rückgabe einer 0, dass es erfolgreich war.
Eine Sache, die mir hier aufgefallen ist, war die Liste der Geräte, cdctl
mit denen versucht wird, zu interagieren. Also dachte ich "Was ist, wenn ich diese Geräte mit eject
" probiere ?
Befehl auswerfen
Einer der anderen Befehle, die ich vor Jahren verwendet habe, war der eject
Befehl zur Interaktion mit dem CD / DVD-Gerät. Mir ist aufgefallen, dass dieser Befehl jetzt auch einen ähnlich benannten Schalter hat:
$ eject --help
-i, --manualeject <on|off> toggle manual eject protection on/off
Beispiel
$ 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
So eject
denkt auch, dass es die Schaltfläche deaktiviert, aber es ist auch nicht. Mit strace
hier sehe ich die gleichen Systemaufrufe:
$ 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
Jetzt frage ich mich also, ob UDEV oder etwas anderes das Gerät möglicherweise blockiert oder in Besitz nimmt.
Gedanken?