GoPro Hero 3+ Black can be controlled by Dual Hero BacPac™. In this post the protocol among two Blacks and the BacPac™, which is called “Smarty”, is roughly explained.
There are three devices involved:
- Master Camera
- Slave Camera
Role of a camera, Master or Slave is determined by the camera reading the first byte of I²C EEPROM located inside of Dual Hero BacPac™ connected; if the content of address 0 is 4 or 5 then the camera will play Master or Slave respectively.
After a camera knew its future role, it sends “vs” (GET_BACPAC_PROTOCOL_VERSION) command to Smarty (Please refer the other post about the detail of I²C commands).
Then Smarty respond to both “vs”s as OKs then each camera enters to each role; Master send the configuration of the camera (mode, pixels, upside-down and so on) to Smarty; and Smarty send the heard info to Slave; …
It is not so obvious that Master or Slave has two modes:
- 3d_SYNC_MASTER: Route DSP sync signals to CCD sensor
- 3d_SYNC_SLAVE: Route Dual Hero BacPac™ generated sync signals to CCD sensor
Just after a Dual Hero BacPac™ has been connected, both Master and Slave camera are in the 3d_SYNC_MASTER mode. But after the negotiation of camera configuration etc. is finished, they both go into the 3d_SYNC_SLAVE mode. This way 3d video is “genlocked” by Smarty (NOT by Master).
You are now understand the basics. Then what we can do? Maybe almost all of us don’t need “genlock”. Because many of us have only ONE GoPro Hero 3+ Black, don’t we?
MewPro don’t choose the way of generating a “genlock” signal. Instead MewPro interfere the negotiation of two cameras and leave both of them in the 3d_SYNC_MASTER state. So we don’t worry about the precision of a “genlock” signal but we can easily control all of the functionalities of GoPro Hero 3+ Black as if MewPro were a Smarty.
Tomorrow I’ll post some demonstrations or screenshots using MewPro and Arduino Pro Mini.
There is a receptacle on the back of newer GoPro cameras.
The model number of the receptacle is JAE DD1R030HA1R1300 or JAE DD1R030JA7R1300. The receptacle mates male connectors DD1B030HA1R500, DD1B030VA1, and DD1P030MA1. (cf. JAE documentations)
The connectors look very similar ones that are used by Apple’s iPods or older iPhones, but they have different keys and can’t pair.
MewPro uses a compatible connector to DD1P030MA1 and, for some technical reasons, the footprint on the PCB is designed for non-genuine one. You can buy this non-genuine but compatible connector from Ridax store where the product name is “DOCK CONNECTOR FOR PCB HOLE MOUNTING FOR SANDISK/GOPRO”, or you can order us a variation of MewPro that already includes a Herobus connector soldered.
Below is a list of pins on the connector.
Note: Pin numbering is in the reverse order to, for example, Ridax’s breakout PCB or some GoPro forum posts. According to JAE’s documents they are wrong and the reverse order to them IS correct. Thus from now on our site and our products shall adopt the JAE’s pin order.
Here is the MewPro v.1.1 Schematic:
Here is a list of I²C Commands among master/slave Bacpac™ of GoPro Dual System and GoPro Hero 3+ Black.
MewPro emulates not only the listed commands but also controls power supply of GoPro body (one letter ‘@’ command) and configures itself as master or slave (one letter ‘!’ command).
Examples: (Connect GoPro and MewPro and type a command followed by a return in your Arduino IDE Serial Monitor)
- @ : power on (MewPro command)
- PW0 : shutdown GoPro
- TM0E0A0D090F00 : set GoPro clock to 2014-10-13 09:15:00 (hexadecimal of YYYY-MM-DD hh:mm:ss)
- SY1 : shutter (camera mode) or start record (video mode)
- SY0 : stop record (video mode)
Note: Some commands may not work as expected. It may depend on the role of BacPac™, master or slave. Try changing the MewPro role by entering ‘!’. This one letter command as well as power-on command ‘@’ are special built-in commands of MewPro and not listed in below.