До Fedora 14 я успішно використовував cdctl
для ввімкнення / відключення кнопки вилучення CD / DVD на своєму ноутбуці (Thinkpad T410). На жаль, зараз він перестав працювати.
Я порадився з методами, розглянутими в цих двох питаннях:
- вимкнути кнопку CD / DVD на ноутбуці Linux (ubuntu)
- Вимкніть кнопку вилучення DVD-дисків на Thinkpad під управлінням Linux
Жоден з яких не працював на мене. Тож я повертаюся назад, щоб cdctl
побачити, чи не можемо виправити те, що з ним порушено, оскільки воно працює так довго.
Налагодження проблеми
Отже, починаючи з cdctl
перемикачів, я помічаю, що більшість речей, здається, працюють просто чудово.
Приклади
Ці речі працюють.
викидає привід
$ cdctl -e
список можливостей
$ 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
Відповідно до цього списку cdctl
навіть думає, що може ввімкнути / вимкнути кнопку викидання.
Can disable eject : 1
Тож я продовжую налагоджувати проблему.
Налагодження cdctl
Так що цифра дозволяє виконати команду strace
на , cdctl
щоб побачити , якщо він може пролити світло на те, що відбувається.
$ 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 +++
Цікаво здається, що cdctl
думає, що це відключення кнопки.
$ strace cdctl -o1
ioctl(3, CDROM_LOCKDOOR, 0x1) = 0
$ strace cdctl -o0
ioctl(3, CDROM_LOCKDOOR, 0) = 0
ПРИМІТКА. Якщо я розумію це право, повернення 0 означає, що воно було успішним.
Одне, що мені припало до уваги, - це список пристроїв, з якими cdctl
намагаються взаємодіяти. Тож я подумав "а що, якщо спробувати ці пристрої eject
"?
команда викидання
Однією з інших команд, якими я користувався роки тому, була eject
команда для взаємодії з пристроєм CD / DVD. Я помітив, що ця команда також тепер має подібний названий перемикач:
$ eject --help
-i, --manualeject <on|off> toggle manual eject protection on/off
Приклад
$ 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
Тож eject
теж думає, що цю кнопку відключити, але це не те. Використовуючи strace
тут, я бачу ті самі системні дзвінки:
$ 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
Тож тепер мені цікаво, чи UDEV або щось інше потенційно блокує або приймає право власності на пристрій?
Думки?