Cho đến khi Fedora 14 tôi sử dụng thành công cdctl
để bật / tắt nút nhả đĩa CD / DVD trên máy tính xách tay của mình (Thinkpad T410). Đáng buồn là nó đã ngừng hoạt động bây giờ.
Tôi đã tham khảo các phương pháp được thảo luận trong 2 câu hỏi sau:
- tắt nút cd / dvd trên máy tính xách tay linux (ubfox)
- Vô hiệu hóa nút nhả DVD trên Thinkpad chạy Linux
Không ai trong số đó đã làm việc cho tôi. Vì vậy, tôi quay lại để cdctl
xem liệu chúng ta không thể sửa chữa những gì bị hỏng với nó, vì nó đã hoạt động quá lâu.
Gỡ lỗi
Vì vậy, bắt đầu với các cdctl
công tắc tôi nhận thấy rằng hầu hết mọi thứ dường như chỉ hoạt động tốt.
Ví dụ
Những điều này làm việc.
đẩy ổ đĩa
$ cdctl -e
danh sách khả năng
$ 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
Theo danh sách đó cdctl
thậm chí nghĩ rằng nó có thể bật / tắt nút nhả.
Can disable eject : 1
Vì vậy, tôi tiếp tục với việc gỡ lỗi vấn đề.
Gỡ lỗi cdctl
Vì vậy, tôi con số cho phép làm một strace
trên cdctl
để xem nếu nó có thể làm sáng tỏ về những gì đang xảy ra.
$ 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 +++
Thật kỳ lạ có vẻ như cdctl
nó nghĩ rằng nó vô hiệu hóa nút.
$ strace cdctl -o1
ioctl(3, CDROM_LOCKDOOR, 0x1) = 0
$ strace cdctl -o0
ioctl(3, CDROM_LOCKDOOR, 0) = 0
LƯU Ý: Nếu tôi hiểu quyền này, việc trả về 0 có nghĩa là nó đã thành công.
Một điều khiến tôi chú ý ở đây là danh sách các thiết bị cdctl
đang cố gắng tương tác. Vì vậy, tôi nghĩ "nếu tôi thử các thiết bị này với eject
" thì sao?
ra lệnh
Một trong những lệnh khác tôi từng sử dụng nhiều năm trước là eject
lệnh tương tác với thiết bị CD / DVD. Tôi nhận thấy rằng lệnh này bây giờ cũng có một chuyển đổi có tên tương tự:
$ eject --help
-i, --manualeject <on|off> toggle manual eject protection on/off
Thí dụ
$ 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
Vì vậy, eject
cũng nghĩ rằng nó vô hiệu hóa nút, nhưng nó cũng không. Sử dụng strace
ở đây tôi thấy các cuộc gọi hệ thống tương tự:
$ 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
Vì vậy, bây giờ tôi đang tự hỏi nếu UDEV hoặc một cái gì đó khác có khả năng chặn hoặc chiếm quyền sở hữu thiết bị?
Suy nghĩ?