Conectar dispositivo usb na máquina virtual com host linux

Conectar dispositivo usb na máquina virtual com host linux

tl;dr

Vá no terminal e insira sudo usermod -aG dialout <seu nome de usuário>
Reinicie o computador. Seja feliz.

Explicação detalhada

Eu uso o Linux como sistema operacional principal e, para algumas coisas, uso o VirtualBox quando preciso fazer algo no Windows, como acessar o MPLAB e compilar meu código para rodar num PIC. Para fazer isso, preciso conecto o gravador (no caso, ICD 2) via USB e então acessa-lo na máquina virtual.

Ao conectar o gravador, ele acende o led de que está conectado a uma usb - ótimo, o gravador não está todo quebrado! Eu esperava que o Windows reconhecesse automaticamente que um novo dispositivo foi conectado, porém, isso não aconteceu.

Podia ser que nem o Linux não havia reconhecido. Então abrir o terminal e iserir o comando lsusb, e ele estava sim reconhecendo o gravador

macabeus@macabeus-acer ~ $ lsusb
...
Bus 002 Device 004: ID 04d8:8001 Microchip Technology, Inc. ICD2 in-circuit debugger

Desliguei a máquina virtual, selecionei no painel lateral a máquina virtual e usei ctrl+s. Fui na aba "USB" e no segundo item do menu "USB Device Filters" nunca listava o gravador

Decidi perguntar a um amigo meu do laboratório, Zavam, e ele percebeu que era problema por falta de permissão.

Ele foi ver em qual grupo estavam as portas seriais:

macabeus@macabeus-acer ~ $ ls -ls /dev/ttyS*
0 crw-rw---- 1 root dialout 4, 64 Mar 29 22:02 /dev/ttyS0
0 crw-rw---- 1 root dialout 4, 65 Mar 29 22:02 /dev/ttyS1
0 crw-rw---- 1 root dialout 4, 74 Mar 29 22:02 /dev/ttyS10
0 crw-rw---- 1 root dialout 4, 75 Mar 29 22:02 /dev/ttyS11
0 crw-rw---- 1 root dialout 4, 76 Mar 29 22:02 /dev/ttyS12
0 crw-rw---- 1 root dialout 4, 77 Mar 29 22:02 /dev/ttyS13
...

O que realmente importa aqui são duas colunas: a quinta e a última.
Na última coluna são as portas seriais. Sempre são representadas por /dev/ttyS*.
A quinta coluna é o grupo em que está o "arquivo". No caso das portas seriais, sempre é dialout.

Então, foi ver os grupos do meu usuário:

macabeus@macabeus-acer ~ $ id
uid=1000(macabeus) gid=1000(macabeus) groups=1000(macabeus),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),110(sambashare)

Eu não estou no grupo dialout, que é o grupo em que o /dev/ttyS* trabalha! Então me adicionou a ele usando sudo usermod -aG dialout macabeus

Após reiniciar o computador, conseguir acessar o gravador através da máquina virtual. Agora só falta instalar o driver no Windows e estará funcionando.