###### tags: `raspberrypi` # Raspberry Pi の USB Ethernet/RNDIS Gadget で 固定 IP アドレスを使う(その1) ## USB Ethernet/RNDIS Gadget 対応 Rasbperry Pi - Raspberry Pi Zero / Raspberry Pi Zero W / Raspberry Pi Zero WH - Raspberry Pi 4 これ以外の Raspberry Pi は USB Ethernet/RNDIS Gadget 未対応です。 ## Raspberry Pi の USB Gadget 設定 Raspberry Pi に USB Ethernet/RNDIS Gadget の設定を行います。 こちらの記事の通りに設定していけば OK です。 > USB 1本とSDカードライタだけでできるUSB OTGを用いたRapsberry Pi Zero WH のセットアップ > https://qiita.com/Liesegang/items/dcdc669f80d1bf721c21 以下に、重要な部分を記載しておきます。 ### Raspberry Pi 側の設定変更箇所 img を焼いた microSD の中身を PC で確認します。 次の 2 ファイル(`/boot/config.txt`、`/boot/cmdline.txt`)を変更します。 ###### /boot/config.txt ``` dtoverlay=dwc2 ``` ###### /boot/cmdline.txt rootwait の後に、以下の記述を追加します。 ``` modules-load=dwc2,g_ether ``` この状態で、PC と USB ケーブルで接続します。 ### PC 側の設定変更箇所(Windows の場合) RNDIS ドライバをインストールすると、Raspberry Pi の USB 接続が Ethernet デバイスとして見えるようになります。 PowerShell を起動して、以下のコマンドを実行します。 ``` PS C:\Users\username> Resolve-DnsName raspberrypi.local Name Type TTL Section IPAddress ---- ---- --- ------- --------- raspberrypi.local AAAA 120 Answer fe80::2778:1eaa:a8e9:ef01 raspberrypi.local A 120 Answer 169.254.101.93 ``` Raspberry Pi に 169.254.XXX.XXX の IP アドレスが割り当てられていて、これを使って ssh などで通信ができます。 しかし、これだと、接続し直す度に IP アドレスが変わってしまうので少し使いづらいです。 なので、USB Ethernet/RNDIS Gadget に固定 IP アドレスを割り当てて使えるようにします。 ## 固定 IP アドレスの設定(Raspberry Pi 側) ### DHCP 設定の変更 まずは、自動割り当て IP アドレスの状態で ssh で Raspberry Pi にログインして、以下のファイルを変更します。 ###### /etc/dhcpcd.conf ``` interface usb0 static ip_address=169.254.10.10/16 static routers=169.254.0.1 static domain_name_servers=169.254.0.1 ``` これは例なので、この通りでなくてもよいです。 この例では、Raspberry Pi に 169.254.10.10 を割り当てています。 ### 起動時実行スクリプトの設定 Raspberry Pi の起動時に usb0 インターフェイスを指定した IP アドレスで起動する設定をします。 一番下の exit 0 の手前に以下を追加します。 ###### /etc/rc.local ``` sleep 10 ifconfig usb0 169.254.10.10 up ``` > (sleep を入れないとうまく設定できなかったです。) ## 固定 IP アドレスの設定(Windows 側) Windows 側も、IP アドレスが固定になるように設定します。 Windows の「設定」->「ネットワークとインターネット」->「状態」->「アダプターのオプションを変更する」を選択します。 Raspberry Pi を USB 接続している場合は、「イーサネットn(リモート NDIS 互換デバイス)」が見えているはずです。 「イーサネットn」を右クリックし、「プロパティ」を選択します。 「ネットワーク」->「インターネット プロトコル バージョン4(TCP/IPv4)」を選択して「プロパティ」を選択します。 以下のように設定します。 <img src=https://i.imgur.com/eg5v4PB.png width=400px> これは例なので、この通りでなくてもよいです。 この例では、Windows に 169.254.10.2 を割り当てています。 ping を実行して疎通していれば OK です。 (例)PowerShell から Raspberry Pi への ping ``` PS C:\Users\username> ping 169.254.10.10 ``` --- もう少し複雑になりますが、Raspberry Pi 以外の Linux USB デバイスで使用できる方法を「その2」として記載しました。 https://hackmd.io/@yuzuafro/raspi_rndis_staticipaddr_2