我正在尝试将一台存储空间有限的 PC(Mini ITX)连接到一台更大的全塔式 PC,该 PC 具有大量硬盘存储空间。两台机器都有 USB-C,所以我想知道我是否可以使用 USB-C 转 USB-C 电缆将它们连接在一起以开始传输文件?USB C 可以同时充当主机/客户端吗?我见过 USB 3 交叉电缆,所以如果它更简单,我愿意使用它,但我想以便宜的价格获得尽可能快的速度。
答案1
要将一个 Type-C 设备(一台 PC)与另一个 Type-C USB 设备(或另一台 PC)连接起来并期望实现某种连接,至少一个“Type-C 链接伙伴”必须支持所谓的 DRD(双角色设备)。DRD 端口通过将其 CC(通信通道)引脚从 5.1k 下拉(表示 USB 设备)连续切换到 56k-22k-10k 上拉(表示具有不同 VBUS 供电能力的 USB 主机)来宣传其双重角色。它每秒进行几次这种触发器。
但是,要成为 DRD Type-C 设备,它必须有两个 USB 控制器,一个是 xHCI(主机控制器接口),另一个是“DCI”类型 - 设备控制器接口。这两个控制器的 IO 必须在 USB 端口引脚上多路复用。目前只有少数产品(特别是英特尔 SoC 又名“atom cheery trail”系列,以及手机中发现的其他面向移动的芯片)具有此功能。如果 PC 是由台式机系列处理器制成的,则尚无 DRD 可用。
如果两台 PC 属于同一类型,则不会发生连接(也不会造成损害)。
如果一台 Type-C PC 具有 DRD 功能,它将选择其“触发器广告”阶段,其角色与所连接的单角色设备相反。如果连接设备是主机,则 DRD 设备将锁定为设备,反之亦然。如果两个设备都是 DRD,则将随机选择角色,稍后应可在软件中切换。
ADDITION(2024),经过 7 年 USB 连接方面的进步:
随着 USB4(及其原型 Thunderbolt 3/4)的发明,PCIe 隧道(和其他协议)的概念被引入,它提供了具有对称端点的能力,类似于以太网。因此,支持 USB4/TBT3/TBT4 的现代个人计算机都具有所谓的“点对点”连接能力,这在今天是强制性的,并得到 Microsoft 的全力支持。
答案2
答案3
我一直在问自己同样的问题并发现了一些事情。
首先,Apple 笔记本电脑很久以前就具有这种称为“目标磁盘模式”的功能。此模式位于计算机固件中,允许许多型号的 Apple 计算机充当另一台计算机的外部驱动器。此功能存在于具有 USB-C 端口的 Apple 计算机中。我已经使用自己的带有 USB-C 端口的 Apple 笔记本电脑进行了测试,方法是将其置于目标磁盘模式,然后使用 USB-A 公头转 USB-C 公头电缆将其用作另一台 Apple 笔记本电脑的 USB 驱动器。Apple 在固件中实现了这一点,但我看不出为什么不能在操作系统中做到这一点,并且以一种支持不仅仅是看起来像存储设备的方式实现。
我发现的第二件事是,Apple 在其笔记本电脑中安装的能够实现这一功能的 USB 芯片型号被其他计算机制造商广泛使用。有证据表明,“黑苹果”群体在运行 macOS 的非 Apple 计算机上使用 Apple 驱动程序,并看到 USB 端口正常工作。
我发现的第三件事是,有一个名为“USB Gadgets”的项目,旨在让运行开源操作系统的计算机充当另一台计算机的 USB 设备。关于 USB 2.0 的信息很多,但关于较新系统中的 USB 3.x 芯片的信息却不多。
我发现的第四件事是,用于为笔记本电脑充电/供电的 USB-C 端口必须进入设备模式才能进行充电。您可以通过将“设备”计算机(从 USB-C 接收电源)插入“主机”计算机(能够从 USB-C 提供电源)来看到这一点,并且计算机中的每个 USB-C 端口都会提供一些电源。如果查看“主机”计算机上连接的 USB 设备,将列出“设备”计算机。电源流向哪个方向以及流向多少的协商是通过 USB 端口的数据引脚进行的。与以前的系统在数据引脚上使用电阻器以非常被动的方式传达此信息不同,此新协议需要实际的数据连接。
第五,USB 3.x 规范规定了通过“超高速”数据引脚进行主机到主机通信。这意味着电缆中的所有四条双绞线数据线都可用于主机到主机通信,每条数据线都能够传输 5 Gbps 的数据。这意味着可以实现 20 Gbps 的连接。
因此,如果您有两台带有 USB-C 端口的计算机和一根 USB-C 电缆,那么所有硬件都很可能已具备在两台计算机之间建立 20 Gbps 连接的能力。只需一台计算机安装合适的软件来支持 USB-C 端口上的网络设备,另一台计算机安装合适的软件来模拟 USB-C 端口上的网络设备即可。
如果该软件存在,那我还没找到。如果不存在,那可能有人正在编写它。
答案4
我可以确认它也适用于 Ubuntu 22.04。我使用 USB-C 公对公连接了一台戴尔 Latitude 7400 和一台联想 T14 i7 Gen4,两者都运行 Ubuntu 22.04(均支持 USB 3)。以太网连接会自动创建。因此,从那里开始,任何网络的规则都适用。传输速度取决于所选方法。在我的测试中,FTP 明显胜出:
- FTP :几乎1 GB/秒
- rcp、rsync(命令行)、SFTP:我的传输速率在 200 到 400 MB/s 之间
- 与上面两个相同,但通过 WIFI(使用我的智能手机作为热点):12-20 MB / s(因此插入它是值得的:))
- SMB(samba),据我所知,它曾用于 Windows 中的本地打印机网络,其传输速率与@Ekus 显示的类似(50 MB/s)
如果这能帮到某人的话,这里有非常简短的设置信息。我将触发传输的计算机称为客户端,将另一台称为服务器或“远程”计算机。在仅测试从远程到客户端的传输时,您可能会说“下载”。在远程,您需要安装以下软件包:
- 对于 FTP:
sudo apt install vsftpd
- 对于 SSH 相关协议 (SFTP、rcp、rsync):
sudo apt install sshd
- 对于 SAMBA:
sudo apt install samba
在客户端计算机上,最简单的方法是使用 GUI 文件 > 其他位置。对于 SAMBA,网络应该直接出现(虽然我不记得是否必须设置其他任何东西……无论如何这不是要走的路)。对于其他“连接到服务器:”,要么ftp://169.XXX.XX.XXX(最快)或 sftp://169.XXX.XX.XXX(由于加密,速度较慢,显然在本地网络上不需要)。输入用户名和密码即可。
请注意,当我插拔电缆时,旧款 DELL 的连接有时会消失(幸运的是,传输过程中不会出现这种情况!)。新款 LENOVO 不会出现这种情况。如果出现这种情况,可以通过重新启动(次优!)或按照以下步骤解决这个建议重置所有 USB3.1 端口:
for port in $(lspci | grep xHCI | cut -d' ' -f1); do
echo -n "0000:${port}"| sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind;
sleep 5;
echo -n "0000:${port}" | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind;
sleep 5;
done