Hingga Fedora 14 saya berhasil menggunakan cdctl
untuk mengaktifkan / menonaktifkan tombol eject CD / DVD di laptop saya (Thinkpad T410). Sayangnya sudah berhenti bekerja sekarang.
Saya telah berkonsultasi dengan metode yang dibahas dalam 2 pertanyaan ini:
- nonaktifkan tombol cd / dvd di laptop linux (ubuntu)
- Nonaktifkan tombol DVD eject pada Thinkpad yang menjalankan Linux
Tidak ada yang berhasil untuk saya. Jadi saya kembali untuk cdctl
melihat apakah kita tidak bisa memperbaiki apa yang rusak dengannya, karena sudah lama bekerja.
Men-debug masalah
Jadi, mulai dengan cdctl
sakelar, saya perhatikan bahwa sebagian besar hal tampaknya berfungsi dengan baik.
Contohnya
Hal-hal ini berhasil.
mengeluarkan drive
$ cdctl -e
daftar kemampuan
$ 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
Menurut daftar itu cdctl
bahkan berpikir bahwa itu dapat mengaktifkan / menonaktifkan tombol eject.
Can disable eject : 1
Jadi saya melanjutkan dengan men-debug masalah.
Debugging cdctl
Jadi saya pikir mari kita lakukan strace
on cdctl
untuk melihat apakah itu dapat menjelaskan apa yang terjadi.
$ 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 +++
Anehnya sepertinya cdctl
berpikir itu menonaktifkan tombol.
$ strace cdctl -o1
ioctl(3, CDROM_LOCKDOOR, 0x1) = 0
$ strace cdctl -o0
ioctl(3, CDROM_LOCKDOOR, 0) = 0
CATATAN: Jika saya memahami hak ini, kembalinya 0 berarti berhasil.
Satu hal yang menarik perhatian saya di sini adalah daftar perangkat yang cdctl
berusaha berinteraksi. Jadi saya berpikir "bagaimana jika saya mencoba perangkat ini dengan eject
"?
perintah eject
Salah satu perintah lain yang saya gunakan bertahun-tahun yang lalu adalah eject
perintah untuk berinteraksi dengan perangkat CD / DVD. Saya perhatikan bahwa perintah ini juga sekarang memiliki saklar bernama serupa:
$ eject --help
-i, --manualeject <on|off> toggle manual eject protection on/off
Contoh
$ 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
Jadi eject
juga berpikir bahwa itu menonaktifkan tombol, namun itu juga tidak. Menggunakan di strace
sini saya melihat panggilan sistem yang sama:
$ 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
Jadi sekarang saya bertanya-tanya apakah UDEV atau sesuatu yang berpotensi memblokir atau mengambil kepemilikan perangkat?
Pikiran?