Pythonでdbusを介してUdiskを使用してusbデバイス(この場合はKindle)をアンマウントしていますが、KindleをUSBモードから通常のインターフェイスに戻すため、イジェクト信号を送信したいと思います。
Udiskは、実際のドライブではないため、DriveEjectを許可しません。これは、機能であると私は考えています。与えられたエラーは次のとおりです。
dbus.exceptions.DBusException: org.freedesktop.UDisks.Error.Failed: Device is not a drive
Udisksのドキュメントには、排出可能なプロパティが記載されています。
ID_DRIVE_EJECTABLE
ドライブ内のメディアが物理的に排出可能かどうか。ドライブが本当にイジェクト可能なメディアを使用する(または使用しない)場合にのみ、これを1(または0)に設定します。特に、eject(1)を介してコマンドを送信する必要があるiPodやKindleデバイスなどでは、これを設定する必要はありません。デスクトップユーザーセッションでは、リムーバブルデバイスがイジェクト可能かどうかに関係なく、このオプションが提供されるためです。このプロパティが設定されていない場合、ヒューリスティックを使用してメディアがイジェクト可能かどうかを判断します(オプティカル、Zip、またはJazメディアを使用するドライブはイジェクト可能と見なされます)。
ただし、デスクトップユーザーセッションからこれを行う方法については説明していません。
(Nautilusを使用すると、デスクトップシェルから問題なくイジェクトできます。「eject」シェルコマンドはアンマウントされますが、sudoがないとイジェクト信号をデバイスに送信しません)
Udisksを使用してこれを行うための合法的な方法はありますか?そうでない場合、nautliusはどのようにそれを実行しますか?