I was trying to get the Arduino IDE to work inside a Docker container on OS X. I was able to get the IDE working (see Getting X11 GUI applications to work on OS X with Docker), but I could not figure out how to make the USB port for the Arduino visible.
I first tried to directly map hardware serial port into the Docker container, doing something like this:
$ docker run -it --rm --device=/dev/tty.usbserial ubuntu bash
This failed. After thinking about it, I realized that of course it would. Docker on OS X runs inside of Virtualbox VM. And it's that VM that a Docker container would need to see. Duh.
With this realization, I was able to make this work pretty easily. First, make sure the Docker VM that you want to use has USB enabled. You can see this in the summary info for the VM. If it's not enabled, make sure the VM is stopped, with
$ docker-machine stop [vm name]
Then go into Virtualbox, locate the VM and enter its Settings. From there, go to Ports -> USB and enable the USB controller (I choose USB 2.0). Save the settings, and fire up the VM again with
$ docker-machine start [vm name]
Once the VM is started, open it in Virtualbox by clicking Show or double-clicking it. Once you're in the VM, select Devices -> USB from the menu and enable what devices you want to use from the HOST in the guest (and, by extension, in the Docker container).
Once that's all set, your device should be available in the VM. For example, after following these steps, I could now see the Arduino as /dev/ttyUSB0
in the guest. And now I can map the USB device into the container like this:
$ docker run -it --rm --device=/dev/ttyUSB0 ubuntu bash
A quick test with the screen
command showed that the Arduino was now available. Yay!
@lmapii and @rubberduck203 - Follow the instructions up above. You don't pass the
/dev/tty.usb*
to the VirtualMachine, you pass the entire USB device to the VirtualMachine and linux in the VM will enumerate it as a/dev/ttyUSB0
.Make sure that after you enable USB 2.0 you also add a device filter (there's a list and a plus icon; add your device to the list). It should look something like this: https://imgur.com/6bAplMq.png
With the USB devices on the filter list and checked, whenever the VM is running those devices will be given to the VM and MacOS won't even show that they exist.