Coral EdgeTPU USB Accelerator with VirtualBox
Tags: machinelearning, edgetpu, coral, virtualbox
Published: 2019-05-12 22:01:35

---
title: Coral EdgeTPU USB Accelerator with VirtualBox
published: true
description: How to set up VirtualBox for Coral EdgeTPU USB Accelerator
tags: #machinelearning #edgetpu #coral #virtualbox
---

I got Coral USB stick last month. I've been playing that with Raspberry Pi3.
That is a very cool product because with Coral USB the performance is pretty good.

https://www.instagram.com/p/BxSmI5QFIUZ/


But, the thing is Raspberry Pi3B+ cannot use USB3.0 which means data transferring between Pi and Coral is limited.

So I really wanted to use Coral with USB3.0, however, unfortunately recently Parallel Desktop lite got a paid software and I didn't install it on Mac(not sure why).


In this post, I will explain how to set up VirtualBox env for `Coral`. I think it's been a while since the last time I used VirtualBox. 

https://www.instagram.com/p/BxYIPQzFbfI/


## 1 Get VirtualBox
You need to get the latest one since I tried to use 5.2.22(not the latest version) and spent so much time then it didn't work. Once I switched from 5.2.22 to 6.0.6. Everything works perfectly.
https://www.virtualbox.org/wiki/Downloads

## 2 Get Ubuntu (LTS version)
I think you can use 16.04 or 18.04. I'm using 18.04 since I use that for my GPU machine for training models. Maybe you can use 19.04, but not sure.

https://www.ubuntu.com/download/desktop


## 3 Install Ubuntu on VirtualBox
This article is very useful if you don't have any experience with VirtualBox.

https://medium.com/@tushar0618/install-ubuntu-16-04-lts-on-virtual-box-desktop-version-30dc6f1958d0

## 4 Add USB Device Filters
`This is the most important part of this article.`
`When you do this, you have to turn off your virtual machine`
Settings > Ports > USB
![ports](https://thepracticaldev.s3.amazonaws.com/i/sg56idknculwxrson1k8.png)

(the machine is running. sorry I'm lazy...)
![usb](https://thepracticaldev.s3.amazonaws.com/i/elvq26ww57ah4np367vq.png)

If you power off your machine, you can select `USB3.0`. ~~Then you need to add 2 USB Device Filters.~~ Probably you just need to add one the following.

3-1. Click Add button 
3-2. Select `Global Unichip Corp [0100]`
3-3. Add one more 
3-4. Select one filter you added and edit filter settings
![filter setting](https://thepracticaldev.s3.amazonaws.com/i/cgdf9a5vnm8abo9ai8ll.png)

Name: you can put anything you want
Vendor ID: 18d1
Product ID: 9302


## 5 Setup EdgeTPU
We are almost there. You can follow the link.
https://coral.withgoogle.com/docs/accelerator/get-started/

Seems Google update edgetpu, so we don't need to change the install shell script anymore, but I think edgetpu is optimized for python3.5.
So I set up a virtual environment for that. As you know there are some ways to set up virtual env. virtualenv, virtualenvwrapper, pyenv, pipenv and anaconda.
For this, I decided to use Anaconda since it just needs to type a couple of commands to set up the python3.5 environment.

Digital Ocean has a nice article on that.
https://www.digitalocean.com/community/tutorials/how-to-install-anaconda-on-ubuntu-18-04-quickstart

After activating your virtual environment, probably you will need this.
```bash
$ pip install edgetpu-1.9.2-py3-none-any.whl
```

## 6 Run demo
Just follow the official guide (easy easy easy)

```
$ cd /usr/local/lib/python3.6/dist-packages/edgetpu/demo

$ python3 classify_image.py \
--model ~/Downloads/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
--label ~/Downloads/inat_bird_labels.txt \
--image ~/Downloads/parrot.jpg

---------------------------
Ara macao (Scarlet Macaw)
Score :  0.761719
```


Coral repos are on Github
https://github.com/google-coral


## Additional Information
I just noticed that this post only works for the first time since something will change the Coral Edge TPU USB's `Vender ID` and `Product ID`

### `The solution`
1. Remove the first settings   
Vendor ID: 18d1    
Product ID: 9302   

2. Add a new one     
Vendor ID: 1a6e    
Product ID: 089a  
Probably these will work, but make sure that your Terminal app shows them when you run `lsusb` on your Mac.    

3. Reboot VirtualBox    

4. Devices --> USB --> Google, Inc