可编程 USB 主机到主机控制器

问题描述 投票:0回答:5

进一步回答this问题,我正在寻找一种设备,它允许我连接两个USB主机,同时仍然完全可编程。我想要一些可以执行以下操作的东西:

伪装成任意 USB 设备

从 PC 获取输入,除了将其传递到另一台主机之外什么也不做。

我一直在寻找能够让我做到这一点的微控制器(最好是预组装的),但到目前为止还是空白。有谁知道有一个控制器(最好是便宜的)可以让我做到这一点?

embedded usb microcontroller spoofing
5个回答
1
投票

从 PC 获取输入,除了将其传递到另一台主机之外什么也不做。

从 USB 角度来看,这是没有意义的。 USB 是基于主机的协议:除非主机首先请求,否则设备永远不会发送数据。请记住,“主机”和“设备”在协议本身中具有特定含义;您可以将“主机”视为主设备,将“设备”视为从设备。这些角色被纳入 USB 控制器中。无法说服任何给定 PC 或外围设备中的标准 USB 控制器交换角色。有一些用于 PC 的附加卡是 USB 设备控制器(使您的 PC 充当设备),但我不会用“便宜”这个词来形容它们。

您真正想做的是创建一个 USB 设备到设备的桥接器。所以,好吧,你需要有两个 USB(2.0) 设备控制器(也许不是那么贵,一些微型计算机已经有了便携式控制器)。然后你必须让他们互相传递一些有意义的东西。这确实很难,因为正如我上面提到的,主机必须告诉设备发送数据,并且可以随时向设备发送数据。假设游戏控制器显示为 HID 设备(假设控制台不侦听某些奇怪的自定义描述符,并使用某些奇怪的自定义协议),则将使用中断管道来传输数据。该管道保证以某个最低速率进行轮询。因此,控制台以某种速率请求数据(该速率不是固定的),并且主机作为游戏手柄以某种速率发送数据。两者不可能同步,因此您在尝试创建的小工具上需要某种大小合适的缓冲区,这会增加更多的成本和复杂性。

USB 也相当快。在高速 (USB2.0) 下,帧长为 125 微秒。这意味着您必须以 8KHz 左右的频率完成请求,与微控制器的时钟速度相比,这似乎很慢,但请记住,您必须同时执行其他所有操作。我不确定是否有一款爱好者级微控制器能够满足您所需的一切,尤其是您不需要构建自己的 USB 堆栈的微控制器。


1
投票

尝试这个芯片 -> FTDI 232 它们是协议芯片,它将数据转换为 i2c、spi、串行,无论你想要什么。不错,简单又便宜:)。 FTDI 公司,有更好的(vinculum),有 otg 和你需要的一切,但我会从 FTDI232 开始。您只需要使用您最喜欢的 uC 来完成您想要的工作。 ...另一方面,你必须做一个小板,也许需要一些焊接,:)。祝你好运!


0
投票

您将需要 $$$$ 设备和 $$$$$ 开发工作才能实现您想象的目标。您最好告诉我们您想模仿什么,如果有人已经为您完成了,请查看here。如果没有,则使用 LUFA 库和一些更大的 USB AVR,这些 AVR 可以充当 USB 主机,并通过其他协议(I2C/SPI/UART)连接其中两个(一个作为 USB 客户机,另一个作为 USB 主机)。


0
投票

与此同时,这个问题有一个很好的解决方案。将 FaceDancer Library 与这款优秀软件支持的其中一块板(即 GreatFET One)一起使用,您将得到您想要的东西:

GreatFET One 有两个 USB 连接器:第一个用于模拟任何类型的 USB 设备,而第二个用于转发通过第一个连接器接收/发送的所有请求/响应。

当然这个工具需要你知道你想要模拟的设备的USB协议。尽管有一些代码示例,但您在自定义它们后仍然必须知道自己在做什么。


0
投票

WiSer 的主机到主机版本用于 2 个 USB 主机之间的通信。 WiSer 可在 Crowd Supply 上使用。请访问https://www.crowdsupply.com/bitmerse/wiser

© www.soinside.com 2019 - 2024. All rights reserved.