Raspberry Pi Stack Exchange is a question and answer site for users and developers of hardware and software for Raspberry Pi. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Raspberry Pi has a Micro USB port for power supply. My question is if this port is only for power purposes or can it be used for data as well? I would like to be able to attach my Raspberry Pi as a USB peripheral to another computer. Is this possible over a power port? If not, can this be done in another way?

share|improve this question
I know this question is long closed, but one thing you could do if you really wanted to would be to program an Arduino with two serial ports to simply pass messages through. A little hackish, but you should be able to get something working that way. – Ryan Muller Sep 20 '13 at 14:00
The new IO board shipped with Compute Module Development Kit seems to have USB slave connector... how can one get it working? – Kozuch Oct 1 '14 at 9:39
The port on the Pi is only for power purposes, but via a adaptor it is possible to connect to the Pi via a serial connection to have basic access to the Pi – Wilf Oct 15 '15 at 21:22
up vote 23 down vote accepted

I've had a look at the schematic; the data pins for the micro USB connection are not connected to anything. Therefore, there is no way to mount the RPi as an external device.

It could be possible to mount the RPi's hard drive or login over the network by using SSH.

The GPIO pins include a set of UART data lines, which could be used to form a serial connection to the RPi from your PC.

Bit-banging USB

Bit-banging USB has been done (AVR V-USB), however, you would need to design your own expansion board that added another USB port. It is conceivable this port could power the RPi. Having done this, you would need to write some sort of driver. Good Luck.

If you are prepared to go to all this trouble, it might be worth looking at an FTDI Chip instead. You would connect this to the UART pins of the RPi. From a software perspective, you would communicate with the computer as if it was a serial device.

share|improve this answer
Except maybe reimplementing USB with GPIO? – Tibor Jun 14 '12 at 8:21
There's no hope there. You can't bit-bang USB. – Alex Chamberlain Jun 14 '12 at 8:22
That diagram was what I was looking for. Nice answer. – Jivings Jun 14 '12 at 8:22
@Alex, Bit-banging USB has been done. A 40MHz PIC can do low-speed USB. Maybe a 700MHz ARM could do normal speed? – finnw Jun 14 '12 at 9:33
dicks.home.xs4all.nl/avr/usbtiny - another banged USB for 12Mhz AVR. Note that it's only possible because in microcontrollers you have full control over the clock and interrupts. You'd need to run RTLinux at the very least to get that kind of control. Also you should use SPI not GPIO to do this. – Alistair Buxton Jun 19 '12 at 21:03

As the data pins of the micro USB port are not connected to the SoC's USB PHY you cannot use this port for data (in either host or slave mode).

It should be possible however to use the USB Type A port on the Model A in slave mode.

Some further details;

The Model B uses a SMSC LAN9512 USB 2.0 Hub and 10/100 Ethernet Controller IC to provide multiple physical USB host ports from the single USB OTG port available on the Broadcom SoC. (See schematic here: http://www.raspberrypi.org/wp-content/uploads/2012/04/Raspberry-Pi-Schematics-R1.0.pdf)

The presence of this hub IC prevents the USB ports from being used in slave mode. However, as the Model A does not have this IC present and instead just has a single USB port connected directly to the SoC's OTG port it should be possible to configure it to act in slave mode through software.

As the Model A has a female host USB port, a HOST to HOST conversion cable will be needed.

Please see this Raspberry Pi Forum thread for more details: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=63&t=15696

share|improve this answer

Unfortunately power supply ports do not generally work this way so you will not be able to use the micro USB port for anything other than power.

I can't currently think of a way you can use the Pi as a peripheral device, however there are several other ways you can access the Pi including SSH, FTP or samba share.

If you elaborate on what you are trying to achieve then we can advise the best method of doing it.

share|improve this answer
Just a hypotetical example, I would like to use Raspberry Pi as a sound card. I would of course write drivers for both ends, but I need to connect it to the PC somehow. – Tibor Jun 14 '12 at 8:24
An elegant solution for that would be to pipe audio through SSH. Of course you could also try using the GPIO! – Jivings Jun 14 '12 at 8:28

The Model A will be able to use the standard gadget interface since the USB on the PI is OTG then you can just force it into device mode.

But this means you lose ethernet and any other USB

share|improve this answer
Thank you. Any source link? – Morgan Courbet Nov 24 '12 at 16:58

Rasberry PI A/A+/B/B+ models have OTG mode disabled by variety of reasons:

  • USB port occupied with USB hub (ethernet),
  • missing OTG 5th pin (grounded), or
  • data pins are not connected (power port).

You'd need Raspberry PI Zero for OTG or so called Gadget Mode. Both USB ports can be used for OTG, the "power" one cen be used both for power and for data. As of time of this writing Serial and Ethernet were tested, but others should work with proper amount of efforts (keyboard, disk, camera, etc.) Composite devices should work as well. See more info at

The work is expected to be merged into rpy-4.4 version of kernel for OTG functionality to be available OOTB for simpler hacking.

Majority of heavylifting was conducted in Github raspberrypi/linux Issue #1212.

share|improve this answer
Hello and welcome. Thank you for your input. You might want to contribute here too: raspberrypi.stackexchange.com/questions/38576/… – Ghanima Jan 5 at 23:08
@Ghanima: done ;) raspberrypi.stackexchange.com/a/40626/39346 – myroslav Jan 5 at 23:21
Can i use the power port as Client-Device and the other port as Host-Port? Would be cool to use the power port as virtual ethernet for connecting to the pc and the other port to connect usb-devices to the pi. – allo Jul 2 at 21:40

Yes, you can use a Model A as a USB slave device:


Although it's quite limited to just usage as a mass storage device ( SD card) - no GPIO access, display or even ARM CPU usage.

share|improve this answer

Yes you can if you use some USB Peripheral Controller with SPI Interface like MAX3420E and write driver for it if it is not yet supported in Linux and handle specific USB class you want to implement.

share|improve this answer

A lot of work has been done since the time the question was asked. Using some Rasberry Pi models as a USB peripheral device (e.g. mass storage, serial, ethernet, keyboard, mouse) is now possible. See this gist and this guide.

share|improve this answer

You could do a simple network connection from your PC to the Raspberry Pi and use Pulse Audio to transfer sound over the network. Pulse Audio is a Sound Server which offers network transparency. So you can play sound files on your PC and hear them with speakers connected to your Raspberry Pi.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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