无法识别Coral / Google Edge TPU USB加速器,Virtualbox解决方法

时间:2019-06-17 13:36:38

标签: python usb tpu google-coral

我有一个新的Coral / Google Edge TPU USB加速器。几天来,我的运气并不好。我已经试过了

  • 在裸机Intel,AMD和RaspberryPi3 +上的Ubuntu 18.04
  • Ubuntu 18.04作为具有虚拟化Global Unichip设备的KVM来宾
  • Ubuntu 18.04作为具有虚拟化的Global Unichip设备的Virtualbox来宾

在所有情况下,鸟类检测示例应用程序都会失败,并显示各种错误消息,所有这些都归结为无法识别设备的事实。 请注意,根据我正在阅读的内容,该设备应该以lsusb的形式作为Google Inc.出现在其中,但在上述所有情况下,我所得到的仅仅是这个(根据机器的不同而有所不同):

# lsusb Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 005 Device 003: ID 046d:c05a Logitech, Inc. M90/M100 Optical Mouse Bus 005 Device 002: ID 04f3:0103 Elan Microelectronics Corp. ActiveJet K-2024 Multimedia Keyboard Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 002: ID 1a6e:089a Global Unichip Corp. <<<<<<<<<<<<<<<<<<< Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

当我看到Koji的这篇文章时,我已经怀疑是DOA设备: [https://dev.to/kojikanao/coral-edgetpu-usb-with-virtualbox-57e1][1]

在Virtualbox上使用Ubuntu,并为Global Unichip Corp.条目创建两个设备筛选器,这归结为失败。然后,需要通过将USB供应商ID更改为18d1,将产品ID更改为9302,将第二个Global Unichip条目转换为伪造的Google设备。 完成此操作后,便识别出该设备,并且示例应用程序愉快地对鹦鹉进行了分类。 这导致了一些问题:

  1. 可以在裸机Ubuntu安装和/或以KVM来宾身份运行的情况下实现上述伪造吗?以及如何?
  2. 是否有一种方法可以快速(而不是启动python应用程序并看到它失败)来确定USB Edge TPU设备正在工作?

我的所有VM均使用5.1内核在具有Centos 7主机的KVM上运行。 VirtualBox与KVM不兼容,我不希望将我的所有VM迁移到Virtualbox,也不希望对内核执行KVM Lobotomy,以使Virtualbox正常运行,只是使usb Edge TPU正常工作。 想法?

P.S .:请放心,我是Stackoverflow上的FNG。

https://dev.to/kojikanao/coral-edgetpu-usb-with-virtualbox-57e1

2 个答案:

答案 0 :(得分:0)

我认为我错了。其实不需要伪造的,因为我删除了所有伪装以再次获得边缘tpu usb的工作(第一次后,供应商ID和产品ID被我不知道的东西更改了,因为这在树莓派上没有发生和另一台ubuntu机器。)并仅添加了一个。然后它又重新工作了。

我还更新了我的帖子。

答案 1 :(得分:0)

Domo!

我也可以不用Virtualbox伪装它。奇怪的是,它在Jetson Nano上运行。...当我在/etc/udev/rules.d/99-edgetpu-accelerator.rules中找到时,我已经开始编写自定义udev规则:

SUBSYSTEM=="usb",ATTRS{idVendor}=="1a6e",GROUP="plugdev" SUBSYSTEM=="usb",ATTRS{idVendor}=="18d1",GROUP="plugdev"

这样,以前将该设备列为的lsusb

Bus 002 Device 004: ID 125f:dd4a A-DATA Technology Co., Ltd. Bus 002 Device 003: ID 1a6e:089a Global Unichip Corp

...现在将其列为

Bus 002 Device 004: ID 125f:dd4a A-DATA Technology Co., Ltd. Bus 002 Device 005: ID 18d1:9302 Google Inc.

但是,它被列为18d1:9302 Google Inc.。仅在成功运行classify_image.py之后。不知道为什么。

由于安装程序认为Jetson是Raspberry Pi,所以我必须创建如下链接:

/usr/local/lib/python3.6/dist-packages/edgetpu/swig/_edgetpu_cpp_wrapper.cpython-36m-aarch64-linux-gnu.so => /usr/local/lib/python3.5/dist-packages/edgetpu/swig_edgetpu_cpp_wrapper.cpython-36m-aarch64-linux-gnu.so

...对该目录中的所有3个* .so文件依此类推。