CDトレイを閉じることができません

CDトレイを閉じることができません

あなたが私を助けることができることを願っています。 USB経由で接続された外付け(スリム)Blu-rayドライブがあります。ドライブの電源を入れるたびに、アクティビティLEDがすばやく点滅し始め、ドライブの電源を切ることはできません。閉じようとすると、すぐにトレイが表示されます。トレイを閉じるにはUSBを取り外す必要があります。

Windowsではこの問題は発生しないため、ソフトウェア関連の問題のようです。 Ubuntu 20.04.3 LTSがあります。システムログに興味深い内容があります。

Sep 14 11:36:07 linux-gurke kernel: scsi 6:0:0:0: CD-ROM            PIONEER  BD-RW   BDR-UD04 1.11 PQ: 0 ANSI: 0
Sep 14 11:36:07 linux-gurke kernel: sr 6:0:0:0: Power-on or device reset occurred
Sep 14 11:36:07 linux-gurke kernel: sr 6:0:0:0: [sr0] scsi3-mmc drive: 62x/62x writer dvd-ram cd/rw xa/form2 cdda tray
Sep 14 11:36:07 linux-gurke kernel: sr 6:0:0:0: Attached scsi CD-ROM sr0
Sep 14 11:36:07 linux-gurke kernel: sr 6:0:0:0: Attached scsi generic sg2 type 5
Sep 14 11:36:13 linux-gurke kernel: usb 6-1: USB disconnect, device number 4
Sep 14 11:36:13 linux-gurke kernel: scsi 6:0:0:0: rejecting I/O to dead device
Sep 14 11:36:13 linux-gurke systemd-udevd[8161]: sr0: Process 'cdrom_id --eject-media /dev/sr0' failed with exit code 1.

ドライブが切断されるとすぐに、最後の行「メディアの取り出しに失敗しました」がシステムログに記録されます。明らかに、一部のプロセスはトレイが開いている間にトレイを取り出し/閉じるコマンドを実行しようとしています。

いくつかの情報:

$> lsusb -s 006:005 -t
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
    |__ Port 1: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
$> lsusb -s 006:005
Bus 006 Device 005: ID 18a5:0428 Verbatim, Ltd Verbatim 4K BD RW

ドライブはそのまま製造されていますが、システムログにはPioneerドライブとして表示されます。

私はこれを試しましたが、echo 0 > /proc/sys/dev/cdrom/autoclose違いecho 0 > /proc/sys/dev/cdrom/autoejectはありません。問題を特定するのに役立ちますか?

ベストアンサー1

問題を起こす悪い奴らを見つけました。アクティビティLEDがすばやく点滅するたびに、systemd-udevdCPU時間の約3%を占めることがわかりました。これにより、CDを挿入して取り出しボタンを押したときにコマンドを実行するようになりましたudevadm monitor -u(ボタンを押した瞬間を線で表示しましたpress)。

$> udevadm monitor -u
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing

UDEV  [6294.187246] change   /devices/pci0000:00/0000:00:08.1/0000:2d:00.3/usb6/6-1/6-1:1.0/host6/target6:0:0/6:0:0:0/block/sr0 (block)
press
UDEV  [6319.266413] change   /devices/pci0000:00/0000:00:08.1/0000:2d:00.3/usb6/6-1/6-1:1.0/host6/target6:0:0/6:0:0:0/block/sr0 (block)
UDEV  [6319.393838] change   /devices/pci0000:00/0000:00:08.1/0000:2d:00.3/usb6/6-1/6-1:1.0/host6/target6:0:0/6:0:0:0/block/sr0 (block)
UDEV  [6319.481907] change   /devices/pci0000:00/0000:00:08.1/0000:2d:00.3/usb6/6-1/6-1:1.0/host6/target6:0:0/6:0:0:0/block/sr0 (block)
UDEV  [6319.574832] change   /devices/pci0000:00/0000:00:08.1/0000:2d:00.3/usb6/6-1/6-1:1.0/host6/target6:0:0/6:0:0:0/block/sr0 (block)
UDEV  [6319.672829] change   /devices/pci0000:00/0000:00:08.1/0000:2d:00.3/usb6/6-1/6-1:1.0/host6/target6:0:0/6:0:0:0/block/sr0 (block)
UDEV  [6319.770823] change   /devices/pci0000:00/0000:00:08.1/0000:2d:00.3/usb6/6-1/6-1:1.0/host6/target6:0:0/6:0:0:0/block/sr0 (block)
UDEV  [6319.868807] change   /devices/pci0000:00/0000:00:08.1/0000:2d:00.3/usb6/6-1/6-1:1.0/host6/target6:0:0/6:0:0:0/block/sr0 (block)
UDEV  [6319.966829] change   /devices/pci0000:00/0000:00:08.1/0000:2d:00.3/usb6/6-1/6-1:1.0/host6/target6:0:0/6:0:0:0/block/sr0 (block)
UDEV  [6320.064811] change   /devices/pci0000:00/0000:00:08.1/0000:2d:00.3/usb6/6-1/6-1:1.0/host6/target6:0:0/6:0:0:0/block/sr0 (block)
UDEV  [6320.163830] change   /devices/pci0000:00/0000:00:08.1/0000:2d:00.3/usb6/6-1/6-1:1.0/host6/target6:0:0/6:0:0:0/block/sr0 (block)

これらの変更イベントは、デバイスの接続が切断されるまで引き続き表示されます。いくつかの調査の最後に、/lib/udev/rules.d/60-cdrom_id.rules次の行を含むこのファイルが見つかりました。

# media eject button pressed
ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"

システムログに表示されたエラーを覚えていますか?ファイルをコピーして行を/etc/udev/rules.d次に変更しました。

ENV{DISK_EJECT_REQUEST}=="?*", GOTO="cdrom_end"

別の問題が発生しましたが、これは問題をすぐに解決しました。取り出しボタンを押しても何も起こりません。ただし、イジェクトコマンドを実行するとeject /dev/sr0正常に動作し、ドライブは奇妙に動作しません。 (このコマンドは、以前はハードウェアの取り出しボタンを押すのと同じ効果がありました!)

わかりませんが、udevパッケージ内のバグである可能性があります。私の「修正」は確かに解決策です。何かがudevイベントの無限のソースを生成しているので、トレイが閉じるとすぐにメディアが排出されるようです。

おそらく、この問題が発生した他の人に役立ちます!

おすすめ記事