Is PCI / PCI-e via USB possible?
Is there a way to interface with PCI/PCI-e hardware, externally; via USB?
I want to attach a PCI-e device to my laptop/notebook.
FireWire, Thunderbolt, or similar would be equally suitable.
Solution 1:
There are some on the market now, like this one for thunderbolt 2: http://www.bhphotovideo.com/c/product/1007816-REG/sonnet_echo_exp_se2_echo_express_se_ii.html
If you have USB 3.0 there are limited commercial options - things like the ASUS XG Station 2 which uses 2 usb connections for its external pcie Nvidia card, but accepts other cards (apparently just graphics): http://www.pcworld.com/article/3019297/hardware/asus-rog-xg-station-2-dock-wants-to-up-your-laptops-game-with-desktop-graphics.html
USB 3.1 (which is electrically compatible with thunderbolt 3) has more options, but is only starting to roll out. I'm not aware of any commercial 3.1 products that have general pcie support.
Most of the solutions I've seen have limited application in terms of PCIe cards that they support mostly because of a lack of driver support - graphics over usb is poorly supported by anyone at this point; storage devices have the most support. I'm not aware of a generic USB to PCIe translation 'driver' for any OS, but I'd be surprised if people aren't working on it.
Thunderbolt 2, or 3 if you have it, has good support for external graphics and is your best bet at this point for generic device support.
It's pretty interesting though, as PCIe, SATA, Thunderbolt and USB are all on a path to converging. Which makes sense since they are all electrically very similar.
Solution 2:
Bandwidth is not of any significant consideration, as most forms of USB do have enough to support a PCI type interface, even if not at the full speed of the target interface.
As Jamie Hanrahan eluded to on the comments of the first answer, it is not possible to bridge USB to PCIe because of the lack of DMA (Direct Memory Access) support. There is no tweak or kludge that can address this problem - it is fundamentally impossible. For security reasons no future version of USB will implement DMA either.
As was also previously mentioned, Thunderbolt carries PCIe so this is an option for external connection.
This all having been said you will find some examples of PCIe peripherals connected via USB but these work by having a microcontroller between the USB and PCIe interfaces, as a USB slave and PCIe master, then implementing a software emulator that makes this type of connection possible for a specific type of peripheral.
For example - that bridging device may present an NVMe (PCIe interface) SSD as a USB mass storage device to the operating system.
Solution 3:
Thunderbolt 3 runs four lanes of PCIe 3.0 over the USB Type-C connector, repurposing the USB 3.0/3.1 SuperSpeed pins for the PCIe lanes. This solution is already in use for external graphics docks like the Razer Core. This enables thin-and-light laptops to get an instant graphics boost when plugged in the dock at home.
While this may not achieve precisely what you're trying to do, it certainly is technically possible.
Solution 4:
It really doesn't work well, as the USB bandwidth is too low and would cause bottlenecking.
The solution would be to use the mini PCIe that most laptops come with. You will find this under a bottom cover with Wi-Fi adapter plugged in. You can buy a riser with a PCIe slot to accommodate an external card that has a cable to plug into mini PCIe, but this will require a power source to run the riser/adaptor and obviously, a hardwired Internet connection. Also one has to leave the plat off or modify it to accommodate the new cable. Truth be told, I've done this; it works, but you lose portability in the laptop unless you’re going to unplug it and put it back together every time. :) Kits can be found on Amazon or a Google search fairly easily (mini PCIe to PCIe adaptor). :)