Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Use a sigle USB-C cable to transfer data between RaspberryPi 4B and iPad

License

Notifications You must be signed in to change notification settings

olivejun/RaspberryPi-One-Wire

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

12 Commits

Repository files navigation

RaspberryPi-One-Wire

零成本,一根线,iPad作为树莓派的屏幕

Use a single USB-C cable to transfer data between RaspberryPi 4B and iPad 仅仅使用一根USB-C to C的数据线来连接树莓派和iPad等设备,方便在外出等网络不方便的地方连接使用 可以使用和Wi-Fi连接时的全部功能,包括但不限于:80端口网站,22端口SSH等其他任何服务

原理实现:树莓派成为一个网关,并创建一个NCM/ECM协议的USB通道连接iPad/Mac等设备

ECM/NCM的支持在Linux/(类)Unix比较好,可以做到即插即用的水平。在Android/HarmonyOS/Windows上需要对应的驱动(待完成) RNDIS在Android与Windows支持较好,可以参阅这篇文章完成配置(未验证)

Attention:

功能实现演示:

https://www.bilibili.com/video/BV1GF411v7R6/

优势Advantages :

  • 成本为零,适用面广:(削除) 无论是USB3.0还是USB2.0的USB-C皆可;iPad(USB-C接口)、笔记本电、甚至安卓手机\平板,都适用 (削除ここまで)当前遇到了一些问题,目前仅支持Apple的带有USB-C的设备(iPad、Mac),在连接安卓、鸿蒙、Windows设备时,无法自动识别并完成配置,我们仍然在寻找解决办法,也欢迎各位在GitHub讨论。
  • 操作简单,可靠性高:每一次连接无需任何额外操作,连接即可;外出无需为手机热点无法连接而束手无策。
  • 功能全面:可以实现本地局域网的全部功能,无论是SSH终端还是VNC桌面,抑或是本地网页,都可以访问。
  • 「副作用」小:树莓派可以在有线连接的基础上使用Wi-Fi上网,不冲突。

设备需求Require :

  1. 树莓派4B
  2. 带有USB-C的iPad(iPad Pro 2018、2020、2021;iPad Air 4)或~~~其他带有USB-C的电脑、手机、安卓/鸿蒙平板~~~ 已经测试且能够成功访问: iPad Air 4(USB3.0);MacBook Pro 2021(Thunderbolt4/USB4) (我自己没有足够的设备完成测试,欢迎大家测试后在Issue放出结果)

配置方法(二者选择其一即可):

1. 自动配置

建议使用手动配置,自动配置可能会遇到无法分配IP的问题

git clone https://github.com/TANG617/RaspberryPi-One-Wire.git
cd RaspberryPi-One-Wire
chmod +x ./raspi_usb_c.sh
sudo ./raspi_usb_c.sh

2. 手动配置

  • /boot/config.txt末尾写入dtoverlay=dwc2
  • /boot/cmdline.txt末尾写入modules-load=dwc2
  • /etc/modules末尾写入libcomposite
  • /etc/dhcpcd.conf 末尾写入denyinterfaces usb0
  • 安装dnsmasq,sudo apt-get install dnsmasq
  • 创建/etc/dnsmasq.d/usb,并写入
interface=usb0
dhcp-range=10.55.0.2,10.55.0.6,255.255.255.248,1h
dhcp-option=3
leasefile-ro
  • 创建/etc/network/interfaces.d/usb0,并写入
auto usb0
allow-hotplug usb0
iface usb0 inet static
 address 10.55.0.1
 netmask 255.255.255.248
  • 创建/root/usb.sh,并写入
#!/bin/bash
cd /sys/kernel/config/usb_gadget/
mkdir -p pi4
cd pi4
echo 0x1d6b > idVendor # Linux Foundation
echo 0x0104 > idProduct # Multifunction Composite Gadget
echo 0x0100 > bcdDevice # v1.0.0
echo 0x0200 > bcdUSB # USB2
echo 0xEF > bDeviceClass
echo 0x02 > bDeviceSubClass
echo 0x01 > bDeviceProtocol
mkdir -p strings/0x409
echo "fedcba9876543211" > strings/0x409/serialnumber
echo "Ben Hardill" > strings/0x409/manufacturer
echo "PI4 USB Device" > strings/0x409/product
mkdir -p configs/c.1/strings/0x409
echo "Config 1: ECM network" > configs/c.1/strings/0x409/configuration
echo 250 > configs/c.1/MaxPower
# Add functions here
# see gadget configurations below
# End functions
mkdir -p functions/ecm.usb0
HOST="00:dc:c8:f7:75:14" # "HostPC"
SELF="00:dd:dc:eb:6d:a1" # "BadUSB"
echo $HOST > functions/ecm.usb0/host_addr
echo $SELF > functions/ecm.usb0/dev_addr
ln -s functions/ecm.usb0 configs/c.1/
udevadm settle -t 5 || :
ls /sys/class/udc > UDC
ifup usb0
service dnsmasq restart
  • /root/usb.sh 设置为可执行,chmod +x /root/usb.sh
  • /etc/rc.local文件的exit 0之前添加/root/usb.sh
  • 重新启动树莓派

About

Use a sigle USB-C cable to transfer data between RaspberryPi 4B and iPad

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 100.0%

AltStyle によって変換されたページ (->オリジナル) /