如果沒有RJ45網路線,也沒有UART線,要如何遠端登入Raspberry Pi?
我們可以利用Raspberry Pi OS的「USB Linux Gadget」功能,將樹莓派用USB傳輸線插到電腦,透過RNDIS協定連線登入SSH,而非透過Wifi連線。
注意USB連線應該只視為應急作法,因為樹莓派4以後的型號吃電較兇,USB供電容易不穩,樹莓派負載一升高就會自動關機。因此可以的話直接用Wifi連線登入SSH還是比較好。
1. 準備項目#
- Linux電腦,我使用Ubuntu LTS
- Raspberry Pi 5,安裝Raspberry Pi OS Bookworm
- Type-C to USB A傳輸線x1
由於樹莓派5最低開機電流為600mAh,所以電腦端必須準備USB 3.0的埠,才能供給足夠的電流,讓樹莓派開機。
2. 調整樹莓派系統#
利用 RPI Imager安裝Raspberry Pi OS,設定Wifi連線密碼。
將SD卡拔出,插到電腦讀卡機。如果桌面環境沒有掛載,就手動掛載SD卡分區
lsblk
mount /dev/mmcblk0p1 /mnt/bootfs
mount /dev/mmcblk0p2 /mnt/rootfs
開啟bootfs分區下的
/firmware/config.txt
在檔案底部加入dtoverlay
dtoverlay=dwc2
- 並註解掉otg_mode
# otg_mode=1
- 編輯
/firmware/cmdline.txt
,在rootwait
後面開機載入dwc2核心模組的參數,啟用RNDIS
modules-load=dwc2,g_ether
接著要確認主機名稱,開啟rootfs分區的
/etc/hostname
檔案確認主機名稱為何。如果是透過RPI Imager安裝,預設應該為raspberry.local
退出SD卡。
sudo umount /mnt/bootfs
sudo umount /mnt/rootfs
3. 連線到樹莓派#
將SD卡插回樹莓派
將樹莓派插到電腦,應會自動開機
等到亮黃燈的時候,在電腦端執行
lsusb
指令,應該會看到一個RNDIS裝置出現
Bus 001 Device 016: ID 0525:a4a2 Netchip Technology, Inc. Linux-USB Ethernet/RNDIS Gadget
- 執行
ip addr
會看到出現樹莓派的網路卡
14: enp0s20f0u3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
有的桌面環境會一直嘗試連線到樹莓派網路,請手動將其停止。
安裝Avahi套件,並啟用服務
sudo apt-get install avahi-daemon
sudo systemctl enable --now avahi-daemon
- 手動用Avahi分配IP
sudo avahi-autoipd -D enp0s20f0u3
- 再讓Avahi依照樹莓派主機名稱解析DNS
avahi-resolve -n raspberrypi.local
- 按照分配到的IP登入樹莓派