The information below is for Phase3A probes (which version do I have?); for Phase3B they can be more conveniently configured to acquire multiple probes per computer with either the FPGA or PXIe systems (see IMEC manual).
By default, you can only acquire data from one probe/FPGA per computer. The reason for this is that the imec-supplied FPGA firmware expects to always receive packets from IP address 10.2.0.123 and always send them as 10.2.0.1, and we can't update the IMEC firmware. We can change the computer-side DLL to instead use 10.2.1.123, and to instead listen for 10.2.1.1, but to make this work for the FPGA we need to translate those packets for it. We can do this with an edge router lite.
The instructions below have only been tested with SpikeGLX, and only with up to three acquisitions on one computer, each to separate SSDs. This works very well - there have been no problems after multiple recordings in this configuration. Moreover, it should work just the same for open-ephys, and should work with more than three simultaneous acquisitions, even if they are to the same SSD (data rate will not be a limiting factor).
Many thanks to Max Hunter, who came up with every part of this solution.
Find the file "libNeuropix_basestation_api.dll", which comes with the acquisition software (spikeGLX or open-ephys). Open this file in a text editor. It will look like garbage, but search the file for "10.2.0.1". Change this to "10.2.X.1" where X is an integer that you choose and that you'll need to know later (e.g. 1). Save the file.
Update IP address of the ethernet port
In the IMEC manual you're instructed to set the IP address of the ethernet port that connects to the FPGA to 10.2.0.123. Now you should change it to 10.2.X.123 (X doesn't technically have to be the same integer you used above, but for clarity it probably should be).
Connect to edge router
The edge router will be doing IP address translation. So it needs to be in between your computer and the FPGA. Connect your computer to port "eth0" on the edge router, and connect the FPGA to port "eth1".
Configuring edge router
- Follow included instructions for connecting to it and bringing up the configuration GUI. If your browser has problems connecting to/finding the edge router, try this app.
- Configure the edge router with the following settings. Note, rather than setting all of these things yourself, you can try instead to upload the configuration file located here (to use this config file: connect to router, click System at the bottom, and find "restore config"). In the settings below where you see 10.2.X.123 or 10.2.X.1 you should replace X with an index, e.g. use 1 for the first extra probe you will record on the computer, but you can use 2 or 3 or any number
Click NAT on the left
add Source NAT rule:
- description "computer to fpga"; outbound interface "eth1"; translation - specify address and/or port - address: "10.2.0.123"; all protocols; src address = "10.2.X.123"
- description "fpga to computer"; outbound interface "eth0"; translation - specify address and/or port - address: "10.2.X.1"; all protocols; src address = "10.2.0.1"
add Destination NAT rule:
- description "computer to fpga"; inbound interface "eth0"; translation - address: "10.2.0.1"; all protocols; dest address = "10.2.X.1"
- description "fpga to computer"; inbound interface "eth1"; translation - address: "10.2.X.123"; all protocols; dest address = "10.2.0.123"
Go back to Dashboard
- in eth1 row, click actions->config
- manually define IP address(es): add both 10.2.0.123/24 and 10.2.0.254/24
- in eth0 row, click actions->config
- manually define IP address(es): first delete any present addresses, then add both 10.2.X.1/24 and 10.2.X.254/24
- in eth1 row, click actions->config
after clicking save here, you will get disconnected.
- Change the windows network adapter IPv4 address to 10.2.X.123.
- Now you can connect again to your edgerouter by going to https://10.2.X.254/
At this point you should be able to connect to a probe and record data over this second FPGA, and you should be able to run a second instance of spikeGLX (open-ephys untested) alongside. You can repeat the whole process with another edge router and a different X.
Good luck! Questions are best posted as issues on this github, or email to nick.steinmetz[at]gmail.