用意するもの
- Raspberry Pi4 x1
- "raspios_lite_arm64-2020-08-24/"を使用
- MicroSD x1
- TypeC to TypeC (通信可能なもの)
- TypeC接続できるPC
USB OTG(USB On-The-Go)とは?
こちらサンワプライ様の公式HPから拝借しました。
https://www.sanwa.co.jp/seihin_joho/otg/index.html
USB機器同士を接続して使うために制定されたUSBインターフェース規格で、USB IF(Implementers Forum、USBの規格制定団体)が2001年12月にUSB2.0に追加する仕様として定められました。「USB On-The-Go」、「USB OTG」とも表記される。
Raspberry Pi4 簡易設定
今思っていること
「もしかしたらWi-Fi設定いらなくね?」
↑やっぱり必要ありませんでした。
とりあえずやって行きましょう。
まずやること
- ssh設定
- boot以下に
ssh
ファイルの作成
- boot以下に
-
WiFi設定(今回はTypeC経由でネット接続するので設定は行いません)boot/wpa_supplicant.conf
へ記述
- USB-OTG設定
-
boot/config.txt
編集 末尾にdtoverlay=dwc2
という1行を追記 -
boot/cmdline.txt
編集rootwait
のうしろにスペースひとつ空けmodules-load=dwc2,g_ether
を追記 - ここを参考: Web記事:Raspberry Pi 4とMacをUSB type Cケーブルで接続してMacのインターネット接続を共有する手順
-
- Macbook to RaspberryPi4 (TypeC to TypeC)接続の確認
ssh設定
macでマウントしているMircoSDの/boot
以下へssh
ファイルを作成する
touch /Volumes/boot/ssh
WiFi設定
今回はUSB-OTGを使用しbridgeし通信させるのでWi-Fi設定はしません。
本来の趣旨とは変わってしまいますが、Wi-FI設定までしたい方は下記のように/Volumes/boot/wpa_supplicant.conf
へ書き込みます。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
country=JP
network={
ssid="アクセスポイント名"
psk="パスワード"
}
できればコマンド1つで書き込みたいので下記を実行します。
echo 'Wi-Fiの設定' && \
{
echo 'ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev'
echo 'country=JP'
echo 'network={'
echo ' ssid="アクセスポイント名"'
echo ' psk="パスワード"'
echo '}'
} > /Volumes/boot/wpa_supplicant.conf && \
cat /Volumes/boot/wpa_supplicant.conf
USB-OTG設定
この記事を参考にしました。
Web記事:Raspberry Pi 4とMacをUSB type Cケーブルで接続してMacのインターネット接続を共有する手順
Web記事:【2019年12月版】ラズパイとMacの接続はUSB-C ケーブルだけでOK?!→ラズパイ七変化@qiita
今回面倒を減らすためにsed
コマンドを使用し置換作業をします。
MacにLinuxで採用されてるGNU版sed
をbrew
を使いインストールしてください。
Macにインストールされているsed
とLinuxのsed
は別物です。
このWeb記事:MacでGNU版sedを使う@くにぽんず☆きちめきパラダイスを参考にしてください。
brew install gnu-sed
echo 'USB-OTGの設定' && \
cp /Volumes/boot/config.txt /Volumes/boot/config.txt.bak && \
cp /Volumes/boot/cmdline.txt /Volumes/boot/cmdline.txt.bak && \
echo "dtoverlay=dwc2" >> /Volumes/boot/config.txt && \
gsed -i "s/rootwait/rootwait modules-load=dwc2,g_ether/g" /Volumes/boot/cmdline.txt
やってること-
- 念の為この2つをバックアップ
/Volumes/boot/config.txt
/Volumes/boot/cmdline.txt
-
config.txt
の編集 -
dtoverlay=dwc2
を末尾へ追記 -
cmdline.txt
の内容をsed
コマンドを使用し編集 -
rootwait
の文字列をrootwait modules-load=dwc2,g_ether
へ置換
ここまでのまとめ
brew install gnu-sed
touch /Volumes/boot/ssh && \
echo 'USB-OTGの設定' && \
cp /Volumes/boot/config.txt /Volumes/boot/config.txt.bak && \
cp /Volumes/boot/cmdline.txt /Volumes/boot/cmdline.txt.bak && \
echo "dtoverlay=dwc2" >> /Volumes/boot/config.txt && \
gsed -i "s/rootwait/rootwait modules-load=dwc2,g_ether/g" /Volumes/boot/cmdline.txt
Macbook to RaspberryPi4 (TypeC to TypeC)接続の確認
さて,RaspberryPi4へMicroSDを挿しMacとTypeCケーブルで繋ぎましょう
電源が入ったのをLED点灯で確認したらMacの環境設定->共有の設定から
①RNDIS/Ethernet Gadget
②インターネット共有
の順でチェックを入れてください。
ウイルス対策ソフトなどによっては画像のように新規ネットワークが検出されますので適宜対応してください。
arp
コマンドでIP-Addressの確認
今回Wi-Fiなどの設定はしてないので少し変わったIPアドレスが設定されているはずです。
ssh pi@ipアドレス
もしくは
ssh pi@raspberrypi.local
で接続してください。
もし弾かれた方はpingを送りIPアドレスを確認後ssh-keygen
コマンドで削除してから再接続してみてください。
ping raspberrypi.local
ssh-keygen -R IPアドレス
arp -a
Raspberry Pi4初期設定 CLI (ヘッドレス設定)
最後は簡単に初期設定をしていきましょう。
今回はraspi-config
をCLIから利用できるnonint
で設定していきます。
raspi-config nonint
の詳しい設定はこのGit-Hubのソースコードを参考にしてください。
今回やっていいることは以下のとおりです。
- 日本時間に合わせる
- localeをja_JP.UTF-8に変更する
- Wi-Fi利用国に日本を設定し,Wi-Fiのロックを解除する
- リポジトリを国内のミラーサイトに変更する
- aptアップデート&アップグレード
- NASなどで使うファイルシステム(NTFS, exFat)をインストール
- githubアカウントに登録している公開鍵を raspiに登録
- IP固定化(USB-OTG)
- hostnameの設定
sudo raspi-config nonint do_change_timezone Asia/Tokyo && \
sudo raspi-config nonint do_change_locale ja_JP.UTF-8 && \
sudo raspi-config nonint do_wifi_country JP && \
sudo sed -i "s/deb.debian.org\/debian /ftp.jp.debian.org\/debian /g" /etc/apt/sources.list && \
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && \
sudo apt install -y exfat-fuse exfat-utils ntfs-3g && \
ssh-import-id gh:自分のGit-Hubユーザ名 && \
echo 'IP固定化の設定' && \
{
echo '#イーサネットLANケーブルで接続する際のIP設定--------------'
echo 'interface eth0'
echo 'static ip_address=192.168.0.15/24'
echo 'static routers=192.168.0.1'
echo 'staitc domain_name_servers=192.168.0.1 8.8.8.8 8.8.4.4'
echo '#Wi-Fiで接続する際のIP設定--------------'
echo 'interface wlan0'
echo 'static ip_address=192.168.0.15/24'
echo 'static routers=192.168.0.1'
echo 'staitc domain_name_servers=192.168.0.1 8.8.8.8 8.8.4.4'
echo '#USB-OTGで接続する際のIP設定------------'
echo 'interface usb0'
echo 'static ip_address=192.168.2.15/24'
echo 'static routers=192.168.0.1'
echo 'staitc domain_name_servers=192.168.0.1 8.8.8.8 8.8.4.4'
} >> /etc/dhcpcd.conf && \
echo 'ネットワーク設定を表示します' && \
cat /etc/dhcpcd.conf && \
sudo raspi-config nonint do_hostname raspi4 && \
echo 'USB-OTGのIPアドレスは 192.168.2.15 に設定されています' && \
echo 'Wi-Fiの設定' && \
{
echo 'ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev'
echo 'country=JP'
echo 'network={'
echo ' ssid="アクセスポイント名"'
echo ' psk="パスワード"'
echo '}'
} > /Volumes/boot/wpa_supplicant.conf && \
sudo reboot
終わりに
大変お疲れさまでした。
後でWi-FI設定をすると予想以上に手間だったのでここで書き込んでしまうことにしました。
あまりUSB-OTGの趣旨とは違ってしまいますが私の備忘録ですのでご了承ください。
これでいろいろな接続機器がいらなくなり手元で簡単にラズパイを使えるようになりました。
このUSB-OTG
という機能はどうやらRaspberryPi3 B+
などのUSB to USB Type-MicroB
でも動作するようです。OSは他のOS例えばUbuntu
とかでもできるんですかね?
モジュールが用意されていればできそうですよね?
また時間があるときに色々試して行きたいと思います。
--追記 2021/01/20
ubuntuはわかりません。
ubuntuでは最初の状態でg_ethr
モジュールが読み込めてない(と言ううより無い)気がしています。
ここでバグとして報告され修正されているようですがちょっと初期状態での始め方は見つけれませんでした。ここの報告はあくまで起動後にUSB-OTGを試しているような気がしてます。
https://bugs.launchpad.net/ubuntu/+source/linux-raspi2/+bug/1861070