2018年6月29日 星期五

在 Arch Linux 下使用 Android USB 網路共用

最近因故沒有有線網路可用了,因此學了一下 Android USB 網路共用,順便做個紀錄。

用 USB 連接到電腦,並開啟數據共用

連接到電腦後,進入「設定」→「更多」→「網路共用與可攜式無線基地台」,並開啟「USB 網路共用」

如果 「USB 網路共用」有可能有幾個問題:
  • 誤開啟了 「USB 偵錯模式」或不是使用 「MTP 協定」與電腦連結。
  • 使用充電用而非能傳輸數據用的 USB
第二點是今天遇到的問題,據說原廠線大多沒有問題。如果想要使用非原廠的線,可能要多準備幾條測試。
  

設定網路連線

前面沒有問題之後,就可以按照原本使用的網路連線方式連線,使用的連線方式為 dhcp。
 
 ArchLInux 常用的 netctl-ifplugd 沒辦法熱拔插手機,只能利用 systemd-networkd.service 設定。

利用 udev 和 systemd-networkd 自動連線

可以在開啟「 USB 網路共用」後自動設定連線,並在關閉後取消。

編寫 udev 網路共用規則

/etc/udev/rules.d/90-android-tethering.rules
# Execute pairing program when appropriate
ACTION=="add|remove", SUBSYSTEM=="net", ATTR{idVendor}=="18d1" ENV{ID_USB_DRIVER}=="rndis_host", SYMLINK+="android", RUN+="/usr/bin/systemctl restart systemd-networkd.service"

其中的 idVendor 可藉由下列指令確定(假設手機的網卡為 enp0s26u1u2):
$ udevadm info /sys/class/net/enp0s26u1u2
 
會看到一行如  E: ID_VENDOR_ID=18d1 的資訊

接著設定相對應的 systemd-networkd 檔案:
 
/etc/systemd/network/50-enp0s26u1u2.network
[Match]
Name=enp0s26u1u2

[Network]
DHCP=ipv4

詳細資料可見:Android tethering - ArchWiki
 -- 
越來越想換到 github 上了…這次只是暫時記錄…