I am trying to control my Canon 550D with the EOS Utility (on my Mac). In theory, this is what I am looking for:

The RPi plugs into the 550D and is connected to a LAN. My Mac is on the same LAN, and is running the EOS Utility. I'd like to make it so the Mac detects the 550D as if it was physically connected to the Mac. I can then use the EOS utility to control all the camera settings (like white balance, shutter speed, focus, start/stop recording, etc).

Is this possible? If so, how?

  • You might be able to use gphoto2 to control the camera from the Raspberry Pi, but you would need some way to control gphoto2 remotely from the Mac.
    – Craig
    Jan 11, 2013 at 23:18
  • @Craig Yes, but as far as I know, gphoto2 doesn't support the 550D fully; shutter speed, aperture, etc...
    – daviesgeek
    Jan 12, 2013 at 4:56

2 Answers 2


You can share a USB device over the network by installing usbip on your RPi. I found a quick tutorial on the official Raspberry Pi forum (all credits to secretagent, the OP). I haven't tested the solution by myself.

On the Raspberry Pi (server)

  1. On Raspbian/Debian Wheezy, install usbip:

    $ sudo apt-get install usbip
  2. From now on, the usbipd daemon is running when you boot your RPi. Load the host driver:

    $ sudo modprobe usbip-host
  3. List the USB devices connected to the RPi, and note the device busid you want to share:

    $ sudo usbip list -l
  4. Add the device you want to share on the network:

    $ sudo usbip bind --busid <busid>

    You should see this message:

    bind device on busid <busid>: complete

On the Mac (client)

I don't know if you can install usbip on a Mac.

  1. Load the driver:

    $ sudo modprobe vhci-hcd
  2. List the devices shared by your RPi. You should see the same device as in the forth step of the server part. Note the busid.

    $ usbip --list <the RPi IP address>
  3. Attach the device:

    $ sudo usbip --attach <the RPi IP address> <busid>
  4. Now, you should be able to see on your Mac the device shared on the RPi:

    $ lsusb

To list the virtual USB port status:

 $ usbip --port

To detach the device:

$ sudo usbip --detach <the port in the previous step>
  • So, in theory, this will be just as if the camera was plugged straight into my Mac?
    – daviesgeek
    Jan 10, 2013 at 23:43
  • @daviesgeek Yes Jan 11, 2013 at 6:51
  • Okay...I'm still looking for a Mac version/binary though...doesn't seem like there is one :-/
    – daviesgeek
    Jan 11, 2013 at 7:02

To make the modprobe permanent on the HOST "server" side

run the following command in a ssh (or locally)

echo "usbip-host" | sudo tee -a /etc/modules

To make the modprobe permanent on the Client side

run the following command in a ssh (or locally)

echo "vhci-hcd" | sudo tee -a /etc/modules

This will make the needed modules be loaded upon reboot

  • 2
    Why does exactly answer this the question?
    – Ingo
    Mar 1, 2019 at 19:57
  • beause not adding it to the to be loaded modules will put all effort at vain upon reboot of the rpi (wanted or unwanted (powerloss) reboot). Using this technique to forward a readout-device would be anoying if it reboots, and you cant read the external data anymore.
    – Dutch2005
    Mar 3, 2019 at 16:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.