【问题标题】:Programmable usb host to host controller可编程 USB 主机到主机控制器
【发布时间】:2011-02-09 11:14:39
【问题描述】:

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

伪装成任意 USB 设备

从 PC 获取输入,然后将其传递给另一台主机。

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

【问题讨论】:

标签: embedded usb microcontroller spoofing


【解决方案1】:

从 PC 获取输入,然后将其传递给另一台主机。

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

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

USB 也非常快。在高速 (USB2.0) 中,帧长为 125 微秒。这意味着您必须以大约 8KHz 的频率完成请求,与微控制器的时钟速度相比,这似乎很慢,但请记住,您必须同时完成其他所有操作。我不确定是否有一个业余爱好者级别的微控制器可以满足您的一切需求,尤其是您不需要为它推出自己的 USB 堆栈的微控制器。

【讨论】:

  • 是的,这就是重点。也许我没有很好地解释自己。在收到我之前问题的答案后,我在 USB 上阅读。所以我知道直接连接两台主机是不可能的。我正在寻找一种同时具有一个或多个 OTG 控制器 + 其他方式连接到它的设备(Wifi/蓝牙/以太网)。我相信我可能能够使用 GuruPlug devkit (globalscaletechnologies.com/p-40-guruplug-display-devkit.aspx) 完成它,但目前这超出了预算(我正在寻找 1/2 价格的东西),所以我想我需要把它搁置。
  • 为什么需要其他方式来连接它? Wifi/BT/Ether 是相当昂贵的方式。普通的 'ol UART 会不够快吗?
  • 控制台(主机)(主机)PC。如果设备只有一个OTG,那么你需要一个PC和设备都拥有的接口来进行通信。控制台(主机)PC(Wifi/蓝牙/以太网)。或者,您可以将键盘/鼠标连接到设备本身,但正如您所说,这可能需要设备本身的大量处理能力和内存。
  • 如果控制器从不切换角色,他们不需要是 OTG。我认为你可以用一个 USB 设备控制器获得一个相当强大的微型电脑(可能最困难的部分是在你可以使用的包中找到一些东西)。使用串行或 SPI 与芯片通信,向其发送有关发送控制台内容的信息,然后让芯片进行一些翻译并处理 USBHID 内容。
  • 这让我回到我原来的问题,你能推荐一个好的微控制器吗?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      与此同时,这个问题有一个很好的解决方案。将FaceDancer Library 与这个出色软件支持的一个板卡(即GreatFET One)一起使用,您将得到您想要的:

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

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

      【讨论】:

        猜你喜欢
        • 2017-07-15
        • 2017-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多