Raspberry Pi ZeroをUSBケーブル1本で遊ぶ

5月リリースのRaspbianから、Raspberry Pi ZeroをOTGスレーブモードで動作させられるようになっていたようです。2つほど設定を記述して、Raspberry Pi ZeroをPCと接続すると、USB-Ethernetデバイスとして接続されて、SSHやVNCで接続できるようになります。Raspberry Pi公式ブログで紹介されていたので早速試してみました。

Raspberry Pi Zero

写真が暗くなってしまった……。

(参照元)
Programming your Pi Zero over USB – Raspberry Pi
Raspberry Pi Zero – Programming over USB! (Part 2) | Andrew’s blog

設定のしかた

Raspbianのディスクイメージをダウンロードして、イメージをSDカードに書き込みます。

書き込んだ後に認識されたbootパーティション(ドライブ)を開いて、以下のファイルを書き換えます。

config.txt
dtoverlay=dwc2の1行を追記します。
cmdline.txt
modules-load=dwc2,g_etherの1文をrootwaitのあとに追記します。改行せずスペース区切りで続けて記述するように注意します。
参照元ブログの方が記述例を提供してくれています。

書き換えが済んだら、SDカードをアンマウントして、Raspberry Pi Zeroに挿入します。

PC側の準備

PCとRaspberry Pi Zeroを接続するときはBonjourが必要になります。PCのOSによって必要なソフトウェアが異なります。

Windowsの場合はBonjourが必要になります。iTunesをインストールすれば自動的にBonjourもインストールされます。Linuxの場合はavahi-daemonが必要になります。Macの場合は特に何も用意しなくても良いです。

PCと接続

PCとRaspberry Pi ZeroのUSBポートにUSBケーブルを接続します。しばらく待つとraspberrypi.localのアドレスで接続できるようになります。


$ ssh pi@raspberrypi.local
Warning: Permanently added 'raspberrypi.local,169.254.75.218' (RSA) to the list of known hosts.
pi@raspberrypi.local's password:

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri May 27 11:50:26 2016
pi@raspberrypi:~ $

Raspberry Pi ZeroにVNCサーバーをインストールすればデスクトップ画面も開くことができますね。

Raspberry Pi Zeroからインターネットに出る

Raspberry Pi ZeroとPCはネットワークで接続されましたが、ローカル接続なのでRaspberry Pi Zeroはインターネット接続ができません。インターネット接続するにはPC側でインターネット共有を設定すると良いでしょう。Macの場合はシステム環境設定から共有設定ができます。Raspberry Pi ZeroはRNDIS/Ethernet Gadgetとして認識されているので、これを「相手のコンピュータが使用するポート」に指定します。

インターネット共有の例

うまくつながらないとき

うまく接続されない時は、設定が正しいこと、USBケーブルがUSBホストケーブルであることを確認してみてください。とくにUSBケーブルは、充電専用ケーブルは通常のデータ通信ケーブルでは動作しないので注意が必要です。

(追記)USB Aオス-MicroUSB AオスケーブルでUSBホストケーブルになっているものは意外と少ないみたいです。手元のケーブルでは2〜3種類しか対応していませんでした。一般的なUSB Aメス-MicroUSB AオスアダプターとUSB Aオスオスケーブルを組み合わせてみても良いかもしれません。

(USBケーブルの違い参考) USBホストケーブル(OTGケーブル)について | ゆゆぶろぐ

また、Windowsでは動作しないと言う報告が上がっているようです。私もWindows10で試したところ、シリアルデバイスとして認識されてしまい、うまくネットワーク接続できないようでした。

対応機種はZeroだけ

OTGモードはなかなか便利な機能ですが、対応機種はRaspberry Pi Zeroだけとなります。Model BはUSBハブ(LAN951x)を経由しているため、Model AはIDピンがないため、それぞれ使用できないとのことです。

Raspberry Pi Zeroは買えます

カメラポート付きZeroのリリース以降、売り切れても毎週水曜日に在庫が復活する状況が続いています。需要も以前よりだいぶ落ち着いてきているようで、入荷のタイミングを見図らなくてもだいたい購入することができます。入荷後ごとの購入1台制限は変わりありませんが、最近はポンド安なので送料を含めてもお手頃な価格となっています。

Raspberry Pi Zero

Raspberry Pi ZeroをUSBケーブル1本で遊ぶ」への20件のフィードバック

  1. Windows10で試したところ、シリアルデバイスとして認識されてしまい、うまくネットワーク接続できない

    これに関して、ポートCOMnで現れてしまう場合は、次のドライバーで更新すると
    RNDISに切り替わるようです。

    (※あっきぃ注記※別ブログのファイルーの直リンクのようでしたので該当ブログの記事にURLを差し替えさせていただきました。)
    http://domotique.caron.ws/cartes-microcontroleurs/raspberrypi/pi-zero-otg-ethernet/

    • 藤井さん、コメントありがとうございました。リンクが別のブログのファイルへの直リンクのようでしたので、
      リンク先のブログの迷惑にならないよう、ブログ記事へのリンクに差し替えさせていただきました。ご了承ください。

  2. 初めまして。

    当方も最初はWindows10に接続したらCOMポートとして認識されましたが、次の場所にあるドライバに更新したところ無事にネットワークアダプタとして認識されるようになりました。

    Acer Incorporated. – Other hardware – USB Ethernet/RNDIS Gadget
    http://catalog.update.microsoft.com/v7/site/ScopedViewRedirect.aspx?updateid=37e35bd4-d788-4b83-9416-f78e439f90a2

    • オプっちさん、コメントありがとうございました。なかなか追試に着手できていないのですが時間を見つけて試してみたいと思います。

    • cobonzuさん

      wgetコマンドを使用して/dev/nullにファイルをダウンロードする方法で測定したところ、
      12.5MB/s前後出ててたので、100Mbpsのようです。

  3. arp -a で raspberrypi.local も見つかってるし、そこに PING も飛ぶのに
    > ssh: connect to host *.*.*.* port 22: Connection refused
    エラーが出るのでなんでかなーと思っていたら、単に RPi の SSH が Enable になっていなかった…。

    RPi にモニタ、キーボード、マウスを接続するのが面倒(MiniHDMI のコネクタ要るし…)で、横着して初回起動から Mac+RPi だけでセットアップしようとしたらこの有様でした。
    #しゃーない見るかーと HDMI とマウス繋げて設定見ると SSH が Disable だった。
    #Boot イメージの Config とかで設定できたら繋がなくてもよかったかもですが、そこまで調べてません^^;

    >うまくつながらないとき
    に一文足しておいてくれると誰かが喜ぶかも?

  4. あっきいさん

    わかりやすい投稿ありがとうございます。

    ラズパイゼロとUSBの接続に関してですが
    USB Ethernet/RNDIS Gadgetをインストールしようとしたのですが、
    http://catalog.update.microsoft.com/v7/site/ScopedViewRedirect.aspx?updateid=37e35bd4-d788-4b83-9416-f78e439f90a2へアクセスしても
    ダウンロードできませんでした。

    何か良い方法をご存知でしたらご教示いただけないでしょうか。

    どうぞよろしくお願いいたします。

  5. こんにちは
    zero wのセットアップをおこなおうとしております。

    imgを焼いたところでconfig.txt、cmdline.txtを編集したかったのですが、PCを再起動してしまいました。
    するとbootパーティションを認識出来なくなってしまい、編集が出来ないのです。
    imgを焼き直そうにもフォーマットも出来ませんでした。
    extのドライバを試そうとしてもうまく行かず。

    これはsdを買い換えるしかないのでしょうか。

    お手数おかけ致しますがお返事いただけましたら幸いです。

    • suisuiさん、こんにちは。

      まず、PiZeroWについてですが、現在日本では技適の確認を待っている状態であるため
      国内で使用されることを考えられているようでしたら、お控えいただくことをおすすめします。
      https://www.raspberrypi.org/blog/pi-zero-distributors-annoucement/
      (日本国内の販売店による情報は下記とおりです)
      https://www.switch-science.com/catalog/3200/
      https://raspberry-pi.ksyic.com/main/index/pdp.id/219/pdp.open/219

      SDカードのほうは、ディスクイメージの書き込み途中にPCを再起動されてしまったという認識で良いでしょうか。
      もしそうであれば、中途半端に書き込まれて不完全なディスクになっているとかんがえられるので、
      再度ディスクイメージを書いてみてはいかがでしょうか。

      config.txt、cmdline.txtを編集中にPCを再起動した場合は、
      普通は壊れたりしないかとおもうのでSDカード故障の可能性もありそうです。
      こちらも再度ディスクイメージを書いてみて、だめなら買い替えてみるのも手かもしれません。

      イメージの再書き込みは、Mac/Linuxであればddコマンドでそのまま実行すれば良いです。
      が、心配であれば(Windowsの場合は私もよくわからないので)、
      SDカードフォーマッターを使用してフォーマットしてみてください。
      (パーティションも含めてきれいにしてくれます)

      https://www.sdcard.org/jp/downloads/formatter_4/

      • 突然のコメントにもかかわらず、お返事ありがとうございます。
        別のパソコンで行ったところフォーマットが出来、焼き直し出来ました。
        感謝しております。
        Windowsから確認したところ、boot(41MB)にアクセス出来ました。
        Lアクセス出来ないと聞いていたので不思議に思っています。
        そういうもの……なのでしょうか。
        わかれたパーティションのもう一方が使用不可になっています。

        • WindowsからSDカードを見た場合、bootはFATというMicrosoft由来のフォーマットであるため読み書きができます。
          一方、rootはext4というLinuxのフォーマットでありWindowsが対応していないフォーマットになるため、読み書きはできません。
          よって、Windowsでbootしかアクセスできないのはそういうもの、ということになります。

          Windowsでext4を読むためのサードパーティ製ツールはいくつかあるようですが、動いたり動かなかったりするようです。
          (ちなみに、ext4はMacも同じような対応状況です)

  6. ありがとうございます。
    何度もご迷惑おかけしております。
    MacでなくWindowsで申し訳ないのですが、teratermでアクセスしたいと思っています。
    しかし、raspberrypi.local と指定しても無効になってしまうのです。
    どんな原因が考えられますでしょうか。

    • Windowsの場合は、記事にも書いたとおりBonjourのインストールが必要です。
      こちらはインストールされていますでしょうか?

      TeraTermからの場合、デフォルトの接続画面ではSSHではなくTelnetになっているかと思うので
      そちらを変更する点も注意です(私がよく忘れて失敗してしまうので…)。

      また、最近のRaspbianではSSHサービスがデフォルトで無効化されています。
      もし有効化されていない場合は下記記事を参考にしてみてください。
      http://www.raspi.jp/2016/12/raspbian-2016-11-25-release/

  7. こんなに回答いただけるとは思いませんでした。
    BonjourはiTunes64Setup.exeを解答しBonjourのみインストールしました。
    boot内の2ファイルに追記、そしてSSHという空ファイルを配置しています。

    デバイスマネージャーをみてみてもそれらしき姿がみえません。
    USBdeviewでドライバのないデバイス確認してみたのですが、そちらにも見あたりませんでした。

    もちろん急ぎでなくてかまいませんので、気が向くことがあれば、よろしくお願い致します。

  8. すみません。追記です。
    デバイスマネージャーの項目に ポート(COMとLPT) が表示されていませんでした。
    https://answers.microsoft.com/ja-jp/windows/forum/windows_10-hardware/windows-10/ba1ccd4b-5ac2-4527-b95c-e24663443092
    こちらを参考にしましたが未解決で、win10が原因なのかPiが原因なのかわからず右往左往しております。

    一つ前のコメント以前の問題だったようです。

  9. 無事起動することが出来ました!
    ネット接続が出来ないため、まだ苦労しそうな予感がしますが、頑張ります。
    ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です