2013/03/20
Nexus7 を Ubuntu にメディアデバイスとして接続する
2013/3/21 追記
以下の方法で手動マウントするのも良いのですが、gvfs を利用して自動マウントする方が簡単でした。
穀風: Android端末 を Ubuntu 12.04 にメディアデバイスとして接続する
穀風: Android端末 を Ubuntu 12.04 にメディアデバイスとして接続する
我が家の Ubuntu は Nexus7 を接続しても、うんともすんとも言ってくれません。
これでは少々使い勝手が悪いので、USBメモリのように接続したら自動でマウントして表示されるようにしてみました。
参考にしたのは以下のサイトです 。
mtpfs のインストール
mtpfsをインストールします。$ sudo apt-get install mtp-tools mtpfs
fuse.conf の編集
/etc/fuse.conf を管理者権限で開き、user_allow_other のコメントアウトを外します。/etc/fuse.conf
# Allow non-root users to specify the 'allow_other' or 'allow_root' # mount options. # user_allow_other
また、/etc/fuse.conf はデフォルトで一般ユーザに読み取り権限がありません。
これはバグらしいので、権限を修正します。
$ ll /etc/fuse.conf -rw-r----- 1 root fuse 215 3月 20 20:50 /etc/fuse.conf $ sudo chmod a+r /etc/fuse.conf $ ll /etc/fuse.conf -rw-r--r-- 1 root fuse 215 3月 20 20:50 /etc/fuse.conf
マウントポイントの作成
以下のように、マウントポイントを作成しておきます。$ sudo mkdir /media/Nexus7 $ sudo chmod 777 /media/Nexus7
51-android.rules の編集
/etc/udev/rules.d/51-android.rules に以下のように追記しますyour_username は適宜書き換えてください。
idVendor, idProduct, ID_MODEL, ID_MODEL_ID, の確認方法は後ほど書きたいと思います。
同じ Nexus7 でも、OS バージョン によっては変わったりするようなので、注意が必要です。
/etc/udev/rules.d/51-android.rules
# Google Nexus 7 SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0666" # Bootloader SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d001", MODE="0666" # Recovery SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e43", MODE="0666" # PTP media, USB debug off SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e44", MODE="0666" # PTP media, USB debug on SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e41", MODE="0666" # MTP media, USB debug off SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", MODE="0666" # MTP media, USB debug on # Google Nexus 7 MTP mode under JB 4.2+ : automatic mount & umount when plugged (USB debug on & off) ENV{ID_MODEL}=="Nexus_7", ENV{ID_MODEL_ID}=="4e41", ACTION=="add", RUN+="/usr/bin/sudo -b -u your_username /usr/bin/mtpfs -o allow_other /media/Nexus7" ENV{ID_MODEL}=="Nexus_7", ENV{ID_MODEL_ID}=="4e42", ACTION=="add", RUN+="/usr/bin/sudo -b -u your_username /usr/bin/mtpfs -o allow_other /media/Nexus7" ENV{ID_MODEL}=="Nexus_7", ENV{ID_MODEL_ID}=="4e41", ACTION=="remove", RUN+="/bin/umount /media/Nexus7" ENV{ID_MODEL}=="Nexus_7", ENV{ID_MODEL_ID}=="4e42", ACTION=="remove", RUN+="/bin/umount /media/Nexus7"
fstab の編集
fstab に以下の一行を加えます。/etc/fstab
mtpfs /media/Nexus7 fuse.mtpfs allow_other,rw,user,noauto 0 0
これを追加しておかないと、ユーザ権限でアンマウントできなくなってしまいます。
動作確認
以上を実行してから Nexus7 を接続し直すと、自動でマウントされました。gnome-shell の場合 |
idVendor, idProduct の確認方法
USBデバイスの Vendor ID と Product Id を確認するには lsusb を使用します。Nexus7 を接続した状態で lsusb を実行すると以下の通り。
$ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 009: ID 18d1:4e42 Google Inc.
最後の Google Inc. が Nexus7 です。
Vendor ID = 18d1
Product ID = 4e42
であることがわかりました。
この時、以下のモードの違いで Product ID が変化するので注意が必要です。
- MTP mode (with USB debug on or off)
- PTP mode (with USB debug on or off)
- Fastboot mode
- Recovery mode
ID_MODEL, ID_MODEL_ID の確認方法
udevadm monitor を以下のように実行した後、Nexus7 を挿抜するとその情報が表示されます。$ udevadm monitor --environment --udev monitor will print the received events for: UDEV - the event which udev sends out after rule processing UDEV [30578.986844] add /devices/pci0000:00/0000:00:1d.7/usb2/2-6 (usb) ACTION=add BUSNUM=002 DEVLINKS=/dev/libmtp-2-6 DEVNAME=/dev/bus/usb/002/012 DEVNUM=012 DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-6 DEVTYPE=usb_device ID_BUS=usb ID_MEDIA_PLAYER=1 ID_MODEL=Nexus_7 ID_MODEL_ENC=Nexus\x207 ID_MODEL_ID=4e42 ...
ID_MODEL が "Nexus_7", ID_MODEL_ID が 4e42 であることがわかりました。
ちなみに、ID_MODEL_ID も Product Id と同様、各モードによって変化するので注意が必要です。
0 件のコメント:
コメントを投稿