我有一个小型物联网设备,我正在尝试对其进行编程。当我将其插入 Mac 时,ifconfig 下会弹出一个界面,我可以通过 ssh 连接到地址 192.168.225.1。不幸的是,我需要重新刷新其上的固件,并且固件更新只能在 Linux 上运行。
我在 Linux 上为其他 IoT 设备启用的过程如下:
- 在“设备”->“USB”->“USB 设置”下启用 USB 设备
- 连接设备
- 查看设备->USB 和 lsusb 下弹出的设备
- ifconfig 上出现一个界面,我可以 ssh 进入设备
这个过程适用于我的类似物联网设备,并允许我通过 ssh 进入该设备。对于这个设备,除了没有出现可供我通过 ssh 连接到主板的界面之外,每一步都有效。我对串行通信不太熟悉,所以我的问题是:
- 研究解决这个问题有什么好处?
- 为了建立此数据连接,操作系统实际上需要做什么?
- 我可以尝试什么解决方案来解决这个问题?
E:添加更多信息!
我正在使用 Sierra 的 Mangoh Red WP76。我可以通过 ssh 访问 WP75 和 WP85 型号,但不能访问 WP76,除了我的 mac 端。 @Mark,我正在使用 Ubuntu 16.04 运行 VirtualBox
答案1
连接 USB 设备时的一般过程: 设备获取列举的,这意味着主机了解有关设备的信息,特别是供应商和设备 ID,以及设备的类别。根据这些信息,内核会搜索匹配的驱动程序,加载这些驱动程序并使用它们来初始化设备。对于类似网络的 USB 设备,相应的驱动程序会生成网络接口。然后操作系统根据内核外部的管理员策略初始化网络接口。
在此过程中,内核会产生输出,可以通过dmesg
终端访问该输出。可以在那里看到供应商和设备 ID,以及当您使用 列出所有 USB 设备时也可以看到lsusb
。
因此,对于 Linux 上任何与硬件或内核相关的模糊问题,第一步是查看dmesg
.将有问题的设备的输出与其他设备的输出进行比较。如果您不理解输出,请使用插入有问题的设备后出现的附加行来编辑您的问题。
这也许已经解决了问题所在。
并非所有物联网设备都是相似的;并且并非所有 IoT 设备都会显示为 USB 网络设备。另一种流行的选择是显示为串行设备。在 Linux 下,它们的tty
名称中通常带有(电传打字机)。这意味着您无法ssh
进入它,但您必须使用一些串行通信程序,例如minicom
或picocom
。
解决 USB 相关问题的另一个重要步骤是用 google 搜索供应商和设备 ID(每个 4 个十六进制数字),格式0123:4567
为lsusb
.通常,您会发现其他人在使用特定设备时遇到了类似的问题。
通常,固件更新问题是相反的:USB 设备使用某种专有协议来更新固件,并且仅适用于 Windows 的驱动程序/工具可用......