今天要實現的目標是讓樹梅派可以透過乙太網路(實體網路線)與PC互連通,進行傳輸資料。


環境:

PC (作業系統 Win 11)

樹梅派 4B (作業系統 ubuntu server 23.10  64bit)

cat6實體網路線(1Gbps)


前置作業

將實體網路線一端接在樹梅派,另一端接在PC的網路接口。


在樹梅派配置

1.安裝dhcocd (用來配置靜態IP)

sudo apt-get install dhcpcd

2.編輯dhcpcd配置

sudo nano /etc/dhcpcd.conf

新增靜態IP設定:在檔案的底部加入以下內容,用你想要的IP位址和子網路遮罩替換掉192.168.1.X和255.255.255.0:

interface eth0 

static ip_address=192.168.1.X/24 

static routers=192.168.1.1 

static domain_name_servers=192.168.1.1

實際範例:

這邊用 192.168.1.156 作為樹梅派靜態IP (確保沒有其他相連裝置使用這個IP)

interface eth0 

static ip_address=192.168.1.156/24 

static routers=192.168.1.1 

static domain_name_servers=192.168.1.1

保存後,退出 (ctrl + o , ctrl + x)


3.重啟dhcpcd服務

sudo service dhcpcd restart

在Windows配置

控制台 > 網路和網際網路 > 網路和共用中心 > 變更介面卡設定

image.png

找到 乙太網路 > 右鍵 > 內容 > 網路功能 > 網際網路通訊協定第4版(TCP/IPv4) > 內容 > 一般

使用下列的IP位址

IP位址 192.168.1.157 (自定義,一樣不要跟其他裝置有衝突到IP即可)

子網路遮罩 255.255.255.0 

預設閘道 192.168.1.1


慣用DNS伺服器就設定 8.8.8.8 

Untitled.png

之後在Windows的CMD 可以 ping 192.168.1.156

並在樹梅派的終端機 ping 192.168.1.157 

看看是否都能ping的通。自己實測的結果,windows能ping通樹梅派,但樹梅派ping不通windows

原因在於,windows的防火牆,因此我們要設定防火牆規則


控制台 > 系統及安全性 > Windows Defender 防火牆 > 進階設定

image.png

在輸入規則 > 右鍵 > 新增規則 > 自訂 > 所有程式 

image.png



選擇IGMP通訊協定類型

image.png

套用規則給本機IP ,設定windows 乙太網路的靜態IP , 192.168.1.157

遠端IP則設定,樹梅派的靜態IP,192.168.1.156

Untitled-1.png

這樣就能在樹梅派ping通windows,到這邊就能用乙太網路讓樹梅派跟Windows互連通了!


接著,可以使用WinSCP用樹梅派靜態IP連線到樹梅派傳遞資料,或者安裝smb軟體。

在ubuntu安裝smb共享資料夾傳輸資料


實測傳輸結果

1Gbps(125MB/s)的線,實際傳輸600MB跟2GB的檔案,測試出來的結果

使用WinSCP 速度約為20MB/s (沒法全速跑)

使用SMB 速度約為100MB/s (合理值)



其他問題

樹梅派無法連結上網路

連接乙太網路後,可能會遇到的問題是,樹梅派的wifi無法連接上網路(外網)了,這個情況是因為,乙太網路的優先度高於wifi導致的,而我們的這種乙太網路連接方式,只是讓樹梅派跟PC互傳,本身無法直接連線到外網,因此網路無法使用,我們需要修改優先權。

#使用這個指令
ip route show

default via 192.168.1.1 dev eth0 src 192.168.1.156 metric 1002 
default via 192.168.50.1 dev wlan0 proto dhcp src 192.168.50.82 metric 3003 
192.168.1.0/24 dev eth0 proto dhcp scope link src 192.168.1.156 metric 1002 
192.168.50.0/24 dev wlan0 proto dhcp scope link src 192.168.50.82 metric 3003 
192.168.50.1 dev wlan0 proto dhcp scope link src 192.168.50.81 metric 600

metric 越低,表示優先度高
其中,wlan0是Wifi , eth0是乙太網路

修改優先度

#編輯dhcpcd.conf
sudo nano /etc/dhcpcd.conf
#在dhcpcd.conf的最後添加
interface wlan0
metric 100

interface eth0
metric 200

保存後退出重啟

sudo service dhcpcd restart


測試是否ping的通
ping 8.8.8.8


感覺PC的網路有時會突然卡一下

自從連接乙太網路線後,會感覺有時PC的網路會卡一下,然後又正常,過段時間又會在卡一下。自己有個合理的猜測是PC的乙太網路的優先度高於wifi

但乙太網路本身連不上網,所以系統有時會先用乙太網路嘗試,嘗試後發現乙太網路沒法上網,才又切換使用wifi上網,所以才會有這個情況。


(單純自己這樣猜測的,實際是否這樣不得而知...)


總之,來調整優先度,以下是Win11的操作方式

在Win11的修改方式,使用系統管理員開啟PowerShell (在CMD無效,一定得在PowerShell)

輸入Get-NetIPinterface 指令

Get-NetIPinterface 

Untitled-2.png

ifIndex是裝置的索引值(可以當作ID),InterfaceMetric則是優先度,越低優先度越高

Set-NetIPInterface -InterfaceIndex "14" -InterfaceMetric "20"

我的Wi-Fi 的ifIndex是14,具體的Wi-Fi ifIndex要改成自己的。

成功的話,不會有回傳訊息,可以用Get-NetIPinterface  看是否有變化。

注意:得用系統管理員身分開啟PowerShell (右鍵以系統管理員身分開啟),不然會沒有存取權限


改完以後,好像真的比較快了,但也可能是錯覺 哈



文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)

原文連結:
https://blog.aidec.tw/post/raspberry-pi-ethernet-conn-pc