【问题标题】:How to communicate with the USB Host from a Linux USB Client如何从 Linux USB 客户端与 USB 主机通信
【发布时间】:2014-06-06 07:10:31
【问题描述】:

主机部分将是一个由 c# 编写的 PC 程序,我将在其中使用 LibUSBdotnet 进行通信。 我的问题是如何让 Linux 端拾取和响应。我真的不知道从哪里开始。 每当我尝试搜索它时,所有结果显示都是“linux如何与连接到它的设备进行通信”。 或者设备是主机还是客户端都没有关系,因为它们使用相同的管道/总线? 我可以在“/dev/usb***”中使用一些东西吗?

我见过“libusb”,我相信它是 libusbdotnet 的 linux 表亲。 我可以以某种方式使用这个库吗?如果有人能告诉我正确的方向,我将不胜感激。

【问题讨论】:

  • 也许可以创建一个 Linux USB Gadget 驱动程序; Linux 内核中的 Gadget Zero 驱动程序可能是一个起点。
  • 所以我尝试研究 USB 小工具,它打开了很多东西。我还看到它有“gadget serial”并尝试安装它以尝试通过串行进行 USB 通信。但似乎 g_serial 无法与 g_mass_storage 配合使用。这是否意味着只要我使用 g_mass_storage 它就不会与其他驱动程序配合得很好?即使我基于零号小工具制作驱动程序,它们也可能无法协同工作?
  • 您可以查看在单个 UDC 上实现多个小工具设备的“多功能复合小工具”(multi.c)。 IIRC,并不是所有的 UDC 驱动都支持这个功能。
  • @myninjaname,好的,我要安装 g_multi 模块。现在看来我必须找到一个合适的复合驱动程序或 .inf 以便 windows 可以正确检测到它?
  • 我没有使用过 multi_gadget,所以我无法为您提供帮助。我最好的建议可能是确保您可以让多功能小工具在两个 Linux 系统之间运行。一旦您知道您的 UDC 可以在多功能小工具上正常工作,然后继续使其在 Windows 上工作。

标签: linux-kernel linux-device-driver embedded-linux


【解决方案1】:

AFAIK libusb 是用于 USB 主机端的库,而不是用于 USB 设备端的库。所以你不能在你的情况下使用它。我建议与 myninjaname 所说的相同 - 以分析 Linux usb 小工具驱动程序之一作为起点。

【讨论】:

  • 您是否建议将端点函数从 g_zero 添加到 mass_storage?
  • 我想在android设备和windows机器之间进行通信,如果我没记错的话,它也总是充当主机。我正在使用 OTG 电缆,因此 android 设备也将充当主机。我正在尝试开发将在 android 设备上运行并将字节发送到 windows 机器的 android 应用程序。对于这种交流和转移,我正在考虑使用libusblibusb 会为我工作吗?
猜你喜欢
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-28
相关资源
最近更新 更多