Help us understand the problem. What is going on with this article?

[メモ] Raspberry Pi ZeroをUSBケーブル一本でインターネット接続!(キーボード・マウス・モニター必要なし)

More than 3 years have passed since last update.
  • 母艦必要です。 ...

概要

  • らずぱいZeroは、USBデバイスになれるらしい。(Linux USB Gadget機能)
  • らずぱいZeroには、Windowsから見てネットワークアダプタとなってもらって、Windowsのインターネット接続共有で、ネット接続。
  • キーボード・マウス・モニター接続しなくてよい。(ぷちっと、電源切るけど..)
  • 参考記事: Setting up Pi Zero OTG - The quick way (No USB keyboard, mouse, HDMI monitor needed)
  • Raspberry Pi 2を母艦にするのもできた(初期設定のために、キーボート&モニター または、UARTケーブルが必要) => その他
  • (追記2017-01-08) RPi Zero v1.3 + 2016-11-25-raspbian-jessie-lite.img で動作確認。

環境

  • Raspberry Pi Zero (v1.2 & v1.3)
  • Raspbian
    • 2016-11-25-raspbian-jessie-lite.img (ssh有効にするため、sshというファイル作るのをわすれずに)
    • 2016-05-27-raspbian-jessie-lite.img
  • microUSBケーブル
  • 母艦: Windows 10 64ビット (1607ベースで、Windows Update済)

    • (2017-02-18) NG: ネットワークデバイスとして認識されないので、一覧に出てきません
      (2017-02-15) Windows10付属ドライバ? バージョン1607 OSビルド 14393.693で存在確認しましたが、動作確認してません.. だれか試してもらえませんか?(ぉ
      1. デバイスマネージャーから、該当のデバイスを右クリック
      2. ドライバーソフトウェアの更新(P)... を選択
      3. コンピュータを参照してドライバーソフトウェアを検索します(R) を選択
      4. -> コンピュータ上のデバイスドライバーの一覧から選択します(L) を選択
      5. [ ]互換性のあるハードウェアを表示(O) のチェックをはずす
      6. 製造元: Microsoft、モデル: リモートNDIS互換デバイス を選択
      7. 次へ(N) ....
  • ドライバはAcer Incorporated. - Other hardware - USB Ethernet/RNDIS Gadgetを使う。 (cabを解凍すると、RNDIS.infrndis.catが出てくる)
    http://catalog.update.microsoft.com/v7/site/ScopedViewRedirect.aspx?updateid=37e35bd4-d788-4b83-9416-f78e439f90a2

※ Win7, Win8は、ネットワークアダプタ > Microsoft Corporation > Remote NDIS Compatible Device を使用できる(Win7 64ビットで確認)

オプション

  • 外部電源 : バスパワーで、こころもとないと思ったら、電源PWR側から供給するのもよいかと。(USB3.0~900mAなら、だいじょぶだよね!?!)
  • シリアル(UART)ケーブル: 確認しながらやると、確実です。電源をぷちっと切らずに、sudo poweroff

手順

  1. 母艦で、microSDに、Raspbian Jessie Liteを焼く。
  2. microSDを一度、抜き差し(念のため)
  3. BOOTパーティションにある、設定ファイル2つ編集、sshというファイルをつくる

    1. config.txt

      • 一番下に dtoverlay=dwc2を追加
      config.txt_追加例
      ...
      ...
      # Enable audio (loads snd_bcm2835)
      #dtparam=audio=on
      
      dtoverlay=dwc2
      
    2. cmdline.txt

      • modules-load=dwc2,g_etherrootwaitquietの間に入れる.
      cmdline.txt_できあがり例
      dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait modules-load=dwc2,g_ether quiet init=/usr/lib/raspi-config/init_resize.sh
      
    3. sshというファイル作成する
      2016-11-25以降のRaspbianで、sshが有効にならない。

  4. 電源投入

  5. 30秒位したら、microUSB ケーブルで、Windowsマシンに接続

    • デバイスマネージャを開くと、USB シリアル デバイス(COMx)と認識される
      PiZERO_USB_Gad01.png
    • 右クリック > ドライバーソフトウェアの更新(P)... > コンピュータを参照してドライバーソフトウェアを検索します(R) > ... と進めて、ダウンロードしたcabファイルを解凍して、RNDIS.infを指定してインストールする。
      PiZERO_USB_Gad03.png
    • USB Ethernet/RNDIS Gadgetと認識される。うまく認識されてなかったら、Win10再起動。
  6. インターネットにつながってるネットワークアダプタのプロパティ(R)を開いて、[共有]タブを選んで、"インターネット接続の共有"で、有効にする。

    • 母艦側のUSB Ethernet/RNDIS Gadgetの IPアドレスが、192.168.137.1 / 255.255.255.0となる。
    • が、この時点で、ラズパイ側は、169.254.xxx.xxxの様な感じになってるハズ。
      => なので、うまく接続できない。
    • らずぱいの電源をぷちっと切って(ちゃんとシャットダウンしないのは気持ち悪いけど)、再度、起動する。
      => WindowsがIPを振ってくれるので、192.168.137.XXになってる。
    • Windowsでコマンドラインを開いて、arp -a -N 192.168.137.1する。
      =>192.168.137.74ってのが、あやしい!?
    • pingすると反応あり。。 PiZERO_USB_Gad05.png
  7. TeraTermとかで、SSHで接続する

    • PiZERO_USB_Gad06.png
    • あとは、通常通り使える。
      • sudo apt-get update; sudo apt-get upgradeとかできるよ.

その他

母艦にRaspberry Pi 2 (2016-05-27-raspbian-jessie-lite.img)

  • 母艦のusb0をIP:169.254.10.1に固定する。
  • PiZeroのusb0をIP:169.254.10.2固定、ゲートウェイIP:169.254.10.1(母艦)、DNS:8.8.4.4(ぐーぐる先生のとこ)に設定
  • 母艦はインターネットにeth0で、接続していて、ip_forwadingとかその辺の設定をする。
PiZero側のIPを固定設定
echo -e "interface usb0 \nstatic ip_address=169.254.10.2\nstatic routers=169.254.10.1\nstatic domain_name_servers=8.8.4.4" | sudo tee -a /etc/dhcpcd.conf 
母艦側の設定
#コマンドラインへこぴぺ
# これは一回だけ
echo -e "interface usb0 \nstatic ip_address=169.254.10.1" | sudo tee -a /etc/dhcpcd.conf 
#
#
# /etc/sysctl.conf - net.ipv4.ip_forward=1 を有効にする
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
#
export IF_INTERNET=eth0
export IF_G_ETHER=usb0
#
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
#
sudo iptables -t nat -A POSTROUTING -o $IF_INTERNET -j MASQUERADE
sudo iptables -A FORWARD -i $IF_INTERNET -o $IF_G_ETHER -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i $IF_G_ETHER -o $IF_INTERNET -j ACCEPT
#
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
#
echo "iptables-restore < /etc/iptables.ipv4.nat" | sudo tee  /lib/dhcpcd/dhcpcd-hooks/70-ipv4-nat
#
sudo sync
  • 再起動
mt08
ツイッターアカウントと紐づけてみた。[2019-11-26]
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした