csi Firmware Documentation

csi Firmware Documentation

The custom csi firmware provides extensive and flexible control of your GoPro camera by re-instating the script functionality on your HERO4 camera (previously available on the HERO3 cameras). This page outlines the commands and features available and usage notes. Please review the instructions here on how to install the custom firmware to enable this. To purchase the custom firmware, refer to the product page here.

Getting Started with Sample Scripts

The structure of the script is very simple. Just list out the settings/trigger commands you wish to undertake in a simple text file. These will be executed when the camera is turned on.

Here is a simple example which does the following:

  1. Changes the camera to photo mode
  2. Presses the shutter button (thereby taking a photo since we are in photo mode
  3. Allow a few seconds for the file to save to the SD card
  4. Turns off the camera
mode photo
shutter press
sleep 5
shutdown

The easiest way to get started is to download a basic sample script to make sure everything is working with a simple example and then modify it further using the commands below. Sample scripts are available down the bottom of this page.

Script Commands

The following table lists the commands for the HERO4 “autoexec.csi” script file

Command

Argument

Description

sleep

time in seconds

Waits the specified time.  Example: sleep 1.5

mode

photo
video

Switches to the specified mode [Lite]

photo
video
videoTimelapse
videoWithPhoto
photoContinuous
photoNight
multiBurst
multiTimelapse
multiNightlapse

Switches to the specified mode [Pro, Cloud]

setting

list

Lists the available settings for a camera in csiLog.txt.

(name) (value)

Sets the setting if not set already. A complete list of settings can be found below this table.

Example, “setting AutoOff 1”

shutter

press

Takes a picture or starts a video recording

stop

Stop a video recording

wifi

on
off

Turns WiFi on or off [Pro, Cloud]

wifiEnableMonitor

N/A

Checks if WiFi is disabled when USB data is plugged in.  Enables after USB data connection is removed.  Runs indefinitely.  [Pro, Cloud]

shutdown

N/A

Turns off camera (forced)

standby

N/A

Turns off camera, leaves WiFi on if it was on

videoLoop

videoTime
diskFreeMB
singleVideo(0 or 1)

Loops taking videos of the specified videoTime in seconds.  If the singleVideo flag is 1, this just takes one video and returns.  Either way, the command will delete old media until the amount of disk specified is free.  [Pro, Cloud] [BETA]

upload

RouterSSID
RouterMAC
RouterConnectTimeout
OverallTimeout
(photos|thumbs)
(webdav|ftp)
server
username
password
[path]
[-f PrependText]

You will need to setup your own FTP or WebDAV server for the upload destination, such as "box.com"

Uploads photos or thumbnails to a remote web server [Cloud] [BETA]

Eg:
upload MyRouter_guest 11:AA:22:BB:33:C4 30 120 photos webdav https://dav.box.com/dav/example example@email.com p4ssword folder/building2 -f building2_camera1

restConnect

RouterSSID RouterMAC

Connects the camera to a local WiFi router as a CLIENT (camera normally acts as a host). Enables the following REST GET commands to be issued:
IP/rest/modeVideo IP/rest/modePhoto IP/rest/shutterPress IP/rest/shutterStop
where IP is the IP address of the connected camera. Refer further details below. [Cloud] [BETA]

Further Details

The following dropdowns provide further detailed notes for your particular application.


How to Upload via WebDAV or FTP using Cloud csiFirmware - Detailed Notes

The script must first take a single new image before attempting the upload command. WiFi cannot be active at the start of the upload command. The upload command will activate the camera’s WiFi in client mode for the connection to an available open WiFi network with the router information described in the script for the transfer of files to the destination folder also described in the script. The upload command of the script should follow the syntax outline below:

mode photo
shutter press
upload RouterSSID RouterMAC RouterConnectTimeout OverallTimeout (photos|thumbs) (webdav|ftp) server username password [path] [-f PrependText]
shutdown

Items in the round brackets indicate a selection between the two options. Items in the square brackets are optional

As an example of the upload command:

upload MyRouter_guest 11:AA:22:BB:33:C4 30 120 photos ftp example.com usern4me p4ssword Public/camdo1 -f camera1

where:
upload = Initiation of the upload command line.
MyRouter_guest = The SSID of the WiFi router being used.
11:AA:22:BB:33:C4 = The MAC address of WiFi router being used.
30 = The script will skip the upload command if a connection to the router is not established within 30 seconds.
120 = The script will continue to transfer new files for a maximum of 2 minutes.
photos = Will upload full sized images. Select "thumbs" to upload a smaller thumbnail image.
ftp = Will use the FTP protocol for the file transfer to the web server. Select "webdav" if your web server accepts the WebDAV protocol. 
example.com = is the web address of the file server.
usern4me = is the login ID for the file server.
p4ssword = is the login password for the file server.
Public/camdo1 = is the destination folder in the file server (NOTE: the folder directory must exist prior to upload).
-f camera1 = the text after "-f" will prepend each name of the uploaded files.


Below outlines the function and requirements of each portion of the upload command:

[-f PrependText] - is optional and will prepend the filenames with the word after "-f" to each upload.

[path] - is optional and is the directory to change to on successful login to the FTP or WebDAV system. Note the directory folder must already exist.

password - is the password for the password protected FTP or WebDAV server.

username - is the username for the password protected FTP or WebDAV server.

server - can be either the name of the FTP or WebDAV server or the IP address.

(webdav|ftp) - distinguishes that the command is for automatically uploading an image to server using the WebDAV or FTP protocol.

(photos|thumbs) - if you want to upload the full sized photo, use the photos command. If you want to only upload smaller thumbnails (approx. 1000 pixels wide), use the thumbs command.

OverallTimeout - is the maximum amount of time in seconds that the camera will attempt to upload before disconnecting. If the file is not transferred, it will be cashed and another attempt to upload will occur after a successful transfer.

RouterConnectTimeout - is the maximum amount of time in second that the camera will have to verify the connection to the selected WiFi network before the command line is skipped. If the connection is not established, the image will be cached and another attempt to upload will occur after a successful transfer.

RouterMAC - is the MAC address of the router. Change for your particular router normally available in the router admin pages. Can also use arp -a command from the command line to find if not obvious in the router interface. The format for the MAC address must be that every two characters of the address are separated with a colon (:).

RouterSSID - is the wireless network's SSID. The SSID is case sensitive and cannot contain spaces or symbols, with the exception of hyphens (-) and underscores (_). Note that the wireless network must be an open network ie no security. You can hide the SSID and use MAC address filtering for security.

  • If you want to use MAC address filtering for the GoPro just run the script and watch your 'wireless clients' on the router. You'll see the GoPro connect and you can note down the MAC address. The MAC address of the GoPro can also be found in the version.txt file of the SD card.

 

REST Connect Detailed Notes

The script should contain the following command line to allow the camera to connect to the WiFi router as a CLIENT (camera normally sets itself up as a host):

restConnect RouterSSID RouterMAC

As an example:

restConnect tndguest A1:E9:84:57:F2:D4

where:
tndguest = The SSID of the WiFi router being used
A1:E9:84:57:F2:D4 = The MAC address of WiFi router being used

Once the camera has connected, you can then use a browser to issue commands. A handy tool is to use a free Chrome App like Postman to issue the HTTP GET commands. The following commands can be issued to the connected cameras. The commands can also be saved and scripted in Postman so the commands can be sent off to each of the cameras. Very quick way to validate the idea. Another nice thing is that you can see the camera response in Postman.

Form of the command to be issued (note the command is case sensitive):

IP/rest/modeVideo
IP/rest/modePhoto
IP/rest/shutterPress
IP/rest/shutterStop

where IP is the IP address of the connected camera.

Here is an example of a GET command to be issued in Postman.

192.168.0.110/rest/modeVideo
192.168.0.110/rest/modePhoto
192.168.0.110/rest/shutterPress
192.168.0.110/rest/shutterStop

192.168.0.110 was the IP address of the camera - this needs to be changed to reflect the actual IP address of your particular camera. This can be seen via your WiFi network router by looking at connected devices. If you want to keep the IP address static, you can bind the camera MAC address to the desired IP address within your router.

An easy way to find the camera MAC address is by looking in the MISC/version.txt file on the camera SD card (called "wifi mac" in the file).


Below outlines the function and requirements of each portion of the restConnect command:

RouterMAC - is the MAC address of the router. Change for your particular router normally available in the router admin pages. Can also use arp -a command from the command line to find if not obvious in the router interface. The format for the MAC address must be that every two characters of the address are separated with a colon (:).

RouterSSID - is the wireless network's SSID. The SSID is case sensitive and cannot contain spaces or symbols, with the exception of hyphens (-) and underscores (_). Note that the wireless network must be an open network ie no security. You can hide the SSID and use MAC address filtering for security.

  • If you want to use MAC address filtering for the GoPro just run the script and watch your 'wireless clients' on the router. You'll see the GoPro connect and you can note down the MAC address. The MAC address of the GoPro can also be found in the version.txt file of the SD card.

 

 

IP Address Changer - Detailed Notes

This allows you to change the IP address of your GoPro camera. The IP address is specified/chosen by a new “ip.csi” file that needs to be saved on the SD card. The IP address must be 6 characters long as the last digit (always .9) is omitted.>

ip.csi contents:

5.10.8

# ip.csi file format:
# First line of file must contain an IP address prefix
# excluding the last octet, which is always .9
# The IP address must also be exactly 6 characters long
#
# Examples:
# 10.9.2 -> Camera has IP address of 10.9.2.9
# 5.10.8 -> Camera has IP address of 5.10.8.9
# 1.1.1 -> INVALID, not 6 characters long

Settings List

Every setting available through the menu system is accessible. The following lists all of the settings that can be controlled via your script.

HERO4 Black

CamDo Solutions Controller, version: 0.8.3

List of settings supported:

setting VideoFormat (NTSC | PAL)
setting VideoPreset (0-59)
0: 4K, Wide, NTSC: 30FPS / PAL: 25FPS
1: 4K, Wide, NTSC: 24FPS / PAL: 24FPS
2: 4K-SuperView, Wide, NTSC: 24FPS / PAL: 24FPS
3: 2.7K-16:9, Wide, NTSC: 60FPS / PAL: 50FPS
4: 2.7K-16:9, Wide, NTSC: 48FPS / PAL: 48FPS
5: 2.7K-16:9, Wide, NTSC: 30FPS / PAL: 25FPS
6: 2.7K-16:9, Wide, NTSC: 24FPS / PAL: 24FPS
7: 2.7K-16:9, Medium, NTSC: 60FPS / PAL: 50FPS
8: 2.7K-16:9, Medium, NTSC: 48FPS / PAL: 48FPS
9: 2.7K-16:9, Medium, NTSC: 30FPS / PAL: 25FPS
10: 2.7K-16:9, Medium, NTSC: 24FPS / PAL: 24FPS
11: 2.7K-SuperView, Wide, NTSC: 30FPS / PAL: 25FPS
12: 2.7K-4:3, Wide, NTSC: 30FPS / PAL: 25FPS
13: 1440p, Wide, NTSC: 80FPS / PAL: 80FPS
14: 1440p, Wide, NTSC: 60FPS / PAL: 50FPS
15: 1440p, Wide, NTSC: 48FPS / PAL: 48FPS
16: 1440p, Wide, NTSC: 30FPS / PAL: 25FPS
17: 1440p, Wide, NTSC: 24FPS / PAL: 24FPS
18: 1080p-SuperView, Wide, NTSC: 80FPS / PAL: 80FPS
19: 1080p-SuperView, Wide, NTSC: 60FPS / PAL: 50FPS
20: 1080p-SuperView, Wide, NTSC: 48FPS / PAL: 48FPS
21: 1080p-SuperView, Wide, NTSC: 30FPS / PAL: 25FPS
22: 1080p-SuperView, Wide, NTSC: 24FPS / PAL: 24FPS
23: 1080p, Wide, NTSC: 120FPS / PAL: 120FPS
24: 1080p, Wide, NTSC: 90FPS / PAL: 90FPS
25: 1080p, Wide, NTSC: 60FPS / PAL: 50FPS
26: 1080p, Wide, NTSC: 48FPS / PAL: 48FPS
27: 1080p, Wide, NTSC: 30FPS / PAL: 25FPS
28: 1080p, Wide, NTSC: 24FPS / PAL: 24FPS
29: 1080p, Medium, NTSC: 60FPS / PAL: 50FPS
30: 1080p, Medium, NTSC: 48FPS / PAL: 48FPS
31: 1080p, Medium, NTSC: 30FPS / PAL: 25FPS
32: 1080p, Medium, NTSC: 24FPS / PAL: 24FPS
33: 1080p, Narrow, NTSC: 120FPS / PAL: 120FPS
34: 1080p, Narrow, NTSC: 90FPS / PAL: 90FPS
35: 1080p, Narrow, NTSC: 60FPS / PAL: 50FPS
36: 1080p, Narrow, NTSC: 48FPS / PAL: 48FPS
37: 1080p, Narrow, NTSC: 30FPS / PAL: 25FPS
38: 1080p, Narrow, NTSC: 24FPS / PAL: 24FPS
39: 960p, Wide, NTSC: 120FPS / PAL: 120FPS
40: 960p, Wide, NTSC: 60FPS / PAL: 50FPS
41: 720p-SuperView, Wide, NTSC: 120FPS / PAL: 120FPS
42: 720p-SuperView, Wide, NTSC: 60FPS / PAL: 50FPS
43: 720p, Wide, NTSC: 120FPS / PAL: 120FPS
44: 720p, Wide, NTSC: 60FPS / PAL: 50FPS
45: 720p, Wide, NTSC: 30FPS / PAL: 25FPS
46: 720p, Medium, NTSC: 120FPS / PAL: 120FPS
47: 720p, Medium, NTSC: 60FPS / PAL: 50FPS
48: 720p, Medium, NTSC: 30FPS / PAL: 25FPS
49: 720p, Narrow, NTSC: 240FPS / PAL: 240FPS
50: 720p, Narrow, NTSC: 120FPS / PAL: 120FPS
51: 720p, Narrow, NTSC: 60FPS / PAL: 50FPS
52: 720p, Narrow, NTSC: 30FPS / PAL: 25FPS
53: WVGA, Wide, NTSC: 240FPS / PAL: 240FPS
54: 1080p, Linear, NTSC: 60FPS / PAL: 50FPS
55: 1080p, Linear, NTSC: 48FPS / PAL: 48FPS
56: 1080p, Linear, NTSC: 30FPS / PAL: 25FPS
57: 1080p, Linear, NTSC: 24FPS / PAL: 24FPS
58: 2.7K-16:9, Linear, NTSC: 30FPS / PAL: 25FPS
59: 2.7K-16:9, Linear, NTSC: 24FPS / PAL: 24FPS
setting VideoLowLight (Off | On)
setting VideoTimelapseRate (0.5 | 1 | 2 | 5 | 10 | 30 | 60)
setting VideoWithPhotoRate (5 | 10 | 30 | 60)
setting VideoSpotMeter (Off | On)
setting VideoProtuneEnable (Off | On)
setting VideoProtuneWhiteBalance (Auto | 3000K | 4000K | 4800K | 5500K | 6000K | 6500K | Native)
setting VideoProtuneColor (GoPro | Flat)
setting VideoProtuneExposure (Auto | 1/12.5 | 1/15 | 1/24 | 1/25 | 1/30 | 1/48 | 1/50 | 1/60 | 1/80 | 1/90 | 1/96 | 1/100 | 1/120 | 1/160 | 1/180 | 1/192 | 1/200 | 1/240 | 1/320 | 1/360 | 1/400 | 1/480 | 1/960)
setting VideoProtuneIsoMode (Max | Lock)
setting VideoProtuneIso (6400 | 1600 | 400 | 3200 | 800 | 200 | 100)
setting VideoProtuneSharpness (High | Med | Low)
setting VideoProtuneEv (+2 | +1.5 | +1 | +0.5 | 0 | -0.5 | -1 | -1.5 | -2)
setting PhotoRes (12MP-Wide | 7MP-Wide | 7MP-Med | 5MP-Med)
setting PhotoContinuousRate (3in1 | 5in1 | 10in1)
setting PhotoNightShutterDuration (Auto | 2 | 5 | 10 | 15 | 20 | 30)
setting PhotoSpotMeter (Off | On)
setting PhotoProtuneEnable (Off | On)
setting PhotoProtuneWhiteBalance (Auto | 3000K | 4000K | 4800K | 5500K | 6000K | 6500K | Native)
setting PhotoProtuneColor (GoPro | Flat)
setting PhotoProtuneIsoMin (800 | 400 | 200 | 100)
setting PhotoProtuneIso (800 | 400 | 200 | 100)
setting PhotoProtuneSharpness (High | Med | Low)
setting PhotoProtuneEv (+2 | +1.5 | +1 | +0.5 | 0 | -0.5 | -1 | -1.5 | -2)
setting MultiRes (12MP-Wide | 7MP-Wide | 7MP-Med | 5MP-Med)
setting MultiBurstRate (3in1 | 5in1 | 10in1 | 10in2 | 10in3 | 30in1 | 30in2 | 30in3 | 30in6)
setting MultiTimelapseRate (0.5 | 1 | 2 | 5 | 10 | 30 | 60)
setting MultiNightShutterDuration (Auto | 2 | 5 | 10 | 15 | 20 | 30)
setting MultiNightlapseRate (Continuous | 30sec | 1min | 2min | 5min | 30min | 60min)
setting MultiSpotMeter (Off | On)
setting MultiProtuneEnable (Off | On)
setting MultiProtuneWhiteBalance (Auto | 3000K | 4000K | 4800K | 5500K | 6000K | 6500K | Native)
setting MultiProtuneColor (GoPro | Flat)
setting MultiProtuneIsoMin (800 | 400 | 200 | 100)
setting MultiProtuneIso (800 | 400 | 200 | 100)
setting MultiProtuneSharpness (High | Med | Low)
setting MultiProtuneEv (+2 | +1.5 | +1 | +0.5 | 0 | -0.5 | -1 | -1.5 | -2)
setting Led (Off | 2 | 4)
setting Beep (Off | 70% | 100%)
setting OnScreenDisplay (Off | On)
setting AutoOff (Never | 1 | 2 | 3 | 5)
HERO4 Silver

CamDo Solutions Controller, version: 0.8.3

List of settings supported:

setting VideoFormat (NTSC | PAL)
setting VideoPreset (0-43)
0: 4K, Wide, NTSC: 15FPS / PAL: 12.5FPS
1: 2.7K-16:9, Wide, NTSC: 30FPS / PAL: 25FPS
2: 2.7K-16:9, Wide, NTSC: 24FPS / PAL: 24FPS
3: 2.7K-16:9, Medium, NTSC: 30FPS / PAL: 25FPS
4: 2.7K-16:9, Medium, NTSC: 24FPS / PAL: 24FPS
5: 1440p, Wide, NTSC: 48FPS / PAL: 48FPS
6: 1440p, Wide, NTSC: 30FPS / PAL: 25FPS
7: 1440p, Wide, NTSC: 24FPS / PAL: 24FPS
8: 1080p, Wide, NTSC: 60FPS / PAL: 50FPS
9: 1080p, Wide, NTSC: 48FPS / PAL: 48FPS
10: 1080p, Wide, NTSC: 30FPS / PAL: 25FPS
11: 1080p, Wide, NTSC: 24FPS / PAL: 24FPS
12: 1080p, Medium, NTSC: 60FPS / PAL: 50FPS
13: 1080p, Medium, NTSC: 48FPS / PAL: 48FPS
14: 1080p, Medium, NTSC: 30FPS / PAL: 25FPS
15: 1080p, Medium, NTSC: 24FPS / PAL: 24FPS
16: 1080p, Narrow, NTSC: 60FPS / PAL: 50FPS
17: 1080p, Narrow, NTSC: 48FPS / PAL: 48FPS
18: 1080p, Narrow, NTSC: 30FPS / PAL: 25FPS
19: 1080p, Narrow, NTSC: 24FPS / PAL: 24FPS
20: 1080p-SuperView, Wide, NTSC: 60FPS / PAL: 50FPS
21: 1080p-SuperView, Wide, NTSC: 48FPS / PAL: 48FPS
22: 1080p-SuperView, Wide, NTSC: 30FPS / PAL: 25FPS
23: 1080p-SuperView, Wide, NTSC: 24FPS / PAL: 24FPS
24: 960p, Wide, NTSC: 100FPS / PAL: 100FPS
25: 960p, Wide, NTSC: 60FPS / PAL: 50FPS
26: 720p, Wide, NTSC: 120FPS / PAL: 120FPS
27: 720p, Wide, NTSC: 60FPS / PAL: 50FPS
28: 720p, Wide, NTSC: 30FPS / PAL: 25FPS
29: 720p, Medium, NTSC: 120FPS / PAL: 120FPS
30: 720p, Medium, NTSC: 60FPS / PAL: 50FPS
31: 720p, Medium, NTSC: 30FPS / PAL: 25FPS
32: 720p, Narrow, NTSC: 120FPS / PAL: 120FPS
33: 720p, Narrow, NTSC: 60FPS / PAL: 50FPS
34: 720p, Narrow, NTSC: 30FPS / PAL: 25FPS
35: 720p-SuperView, Wide, NTSC: 100FPS / PAL: 100FPS
36: 720p-SuperView, Wide, NTSC: 60FPS / PAL: 50FPS
37: WVGA, Wide, NTSC: 240FPS / PAL: 240FPS
38: 1080p, Linear, NTSC: 60FPS / PAL: 50FPS
39: 1080p, Linear, NTSC: 48FPS / PAL: 48FPS
40: 1080p, Linear, NTSC: 30FPS / PAL: 25FPS
41: 1080p, Linear, NTSC: 24FPS / PAL: 24FPS
42: 2.7K-16:9, Linear, NTSC: 30FPS / PAL: 25FPS
43: 2.7K-16:9, Linear, NTSC: 24FPS / PAL: 24FPS
setting VideoLowLight (Off | On)
setting VideoTimelapseRate (0.5 | 1 | 2 | 5 | 10 | 30 | 60)
setting VideoWithPhotoRate (5 | 10 | 30 | 60)
setting VideoSpotMeter (Off | On)
setting VideoProtuneEnable (Off | On)
setting VideoProtuneWhiteBalance (Auto | 3000K | 4000K | 4800K | 5500K | 6000K | 6500K | Native)
setting VideoProtuneColor (GoPro | Flat)
setting VideoProtuneExposure (Auto | 1/12.5 | 1/15 | 1/24 | 1/25 | 1/30 | 1/48 | 1/50 | 1/60 | 1/80 | 1/90 | 1/96 | 1/100 | 1/120 | 1/160 | 1/180 | 1/192 | 1/200 | 1/240 | 1/320 | 1/360 | 1/400 | 1/480 | 1/960)
setting VideoProtuneIsoMode (Max | Lock)
setting VideoProtuneIso (6400 | 1600 | 400 | 3200 | 800 | 200 | 100)
setting VideoProtuneSharpness (High | Med | Low)
setting VideoProtuneEv (+2 | +1.5 | +1 | +0.5 | 0 | -0.5 | -1 | -1.5 | -2)
setting PhotoRes (12MP-Wide | 7MP-Wide | 7MP-Med | 5MP-Med)
setting PhotoContinuousRate (3in1 | 5in1 | 10in1)
setting PhotoNightShutterDuration (Auto | 2 | 5 | 10 | 15 | 20 | 30)
setting PhotoSpotMeter (Off | On)
setting PhotoProtuneEnable (Off | On)
setting PhotoProtuneWhiteBalance (Auto | 3000K | 4000K | 4800K | 5500K | 6000K | 6500K | Native)
setting PhotoProtuneColor (GoPro | Flat)
setting PhotoProtuneIsoMin (800 | 400 | 200 | 100)
setting PhotoProtuneIso (800 | 400 | 200 | 100)
setting PhotoProtuneSharpness (High | Med | Low)
setting PhotoProtuneEv (+2 | +1.5 | +1 | +0.5 | 0 | -0.5 | -1 | -1.5 | -2)
setting MultiRes (12MP-Wide | 7MP-Wide | 7MP-Med | 5MP-Med)
setting MultiBurstRate (3in1 | 5in1 | 10in1 | 10in2 | 10in3 | 30in1 | 30in2 | 30in3 | 30in6)
setting MultiTimelapseRate (0.5 | 1 | 2 | 5 | 10 | 30 | 60)
setting MultiNightShutterDuration (Auto | 2 | 5 | 10 | 15 | 20 | 30)
setting MultiNightlapseRate (Continuous | 30sec | 1min | 2min | 5min | 30min | 60min)
setting MultiSpotMeter (Off | On)
setting MultiProtuneEnable (Off | On)
setting MultiProtuneWhiteBalance (Auto | 3000K | 4000K | 4800K | 5500K | 6000K | 6500K | Native)
setting MultiProtuneColor (GoPro | Flat)
setting MultiProtuneIsoMin (800 | 400 | 200 | 100)
setting MultiProtuneIso (800 | 400 | 200 | 100)
setting MultiProtuneSharpness (High | Med | Low)
setting MultiProtuneEv (+2 | +1.5 | +1 | +0.5 | 0 | -0.5 | -1 | -1.5 | -2)
setting LcdBrightness (High | Med | Low)
setting LcdLock (Off | On)
setting LcdSleep (Never | 1 | 2 | 3)
setting LcdPower (Off | On)
setting Led (Off | 2 | 4)
setting Beep (Off | 70% | 100%)
setting OnScreenDisplay (Off | On)
setting AutoOff (Never | 1 | 2 | 3 | 5)

SAMPLE SCRIPTS

A list of all the script commands is available here. The following sample scripts will help you get started and are all hosted on our GitHub page. Just click through to the HERO4 Sample Scripts folder.

Alternatively you can also download all of the scripts in a zip file here.

SAMPLE CSI LITE SCRIPTS

Here are some of the typical scripts you might find useful.

SAMPLE CSI PRO SCRIPTS

IP Changer (Pro/Cloud)

This tool lets you change the IP address of your GoPro HERO4.

The IP address is chosen by a new “ip.csi” file that needs to be saved on the SD card. A separate autoexec.csi script can be used in conjunction with changing the IP address if you want.

SAMPLE CSI CLOUD SCRIPTS

Automatic upload of images to a web server via FTP or WebDAV (requires the input of router and web server information). Information on how to adjust the script to include your personal router information and web server information can be found in the "How to Upload via WebDAV or FTP using Cloud csiFirmware - Detailed Notes" above.

Connect the camera to a local WiFi router as a CLIENT (camera normally acts as a host) to enable REST GET commands to be issued to the camera. (requires the input of router settings):

Troubleshooting and FAQ's

Where can I download sample autoexec.csi scripts?

Right here on this page! Also available on our GitHub repository here


The autoexec.csi script doesn't do anything.

Are you running the Lite version with WiFi active?

The Lite version of the HERO4 CSI firmware does not allow WiFi to be active. If WiFi is turned on, the script will not run on startup. The Lite version also has a maximum for 6 command lines with limited functions.

Have you installed the correct csiController file?

Look at the csiLog.txt file on the SD card. Error messages are shown there. For example, “Error: csiController did not match camera ID” would indicate that the csiController file on the SD card is not the one created for that camera. Each csiController is specific to the GoPro camera’s serial number.

Has the filename of the script been changed from “autoexec.csi”?

When installing or editing the "autoexec.csi" script, a lot of programs automatically convert the file into a standard text document. If the file name is changed in any way, such as "autoexec.csi.txt", or “autoexec(1).csi”, the camera will not run the file on startup.

Are you using an SD card with the required read and write speeds?

The GoPro HERO4 camera requires an SD card with a minimum read and write speed of 30MB/s (U3) for reliable operation. Our website has a link to an SD card speed tester to determine if your card has the required speeds for use with the GoPro: https://cam-do.com/pages/sd-card-speed-tester If you need to purchase a new SD card, you are strongly advised to use an SD card from the recommended list on GoPro's website, http://gopro.com/help/articles/Block/microSD-Card-Considerations.  Use of cards not on the list, especially SanDisk Ultra cards, will greatly increase your chance of trouble with your setup. Note that some SD cards have the same product name as the cards on the list but only have a U1 rating. Make sure the SD card has a class 10 and U3 rating since underperforming SD cards can prevent proper functioning of your GoPro camera's features.

The reason the script has problems on slower SD cards appears to be in the timing of the boot sequence when the camera starts up. In some cases, the card is not ready to communicate with the camera at the time the camera looks for the script. As a result, the camera might crash or the script is not seen and the camera continues its boot sequence as if no script was present.


Why does the WiFi script command not activate my camera's WiFi?

Are you using the Pro or Cloud version of the csiController?

The WiFi on/off commands are not available on the HERO4 Lite CSI firmware. You can purchase the Pro csiController here.

Have you paired your camera's WiFi signal with a device?

Make sure to first pair your GoPro's WiFi with your device before using the WiFi script command. If the GoPro's WiFi connection has not been paired with any device or the camera's WiFi has been reset from the GoPro setup menu, you will need to pair the camera before the WiFi script command will be able to turn on the camera's WiFi signal.


The upload script takes an image but no image is uploaded

Make sure to adjust the upload command line to contain your personal router information and web server information. Check the csiLog.txt of the SD card to determine the error code.

Does your router provide the required WiFi connection settings?

The GoPro requires an open WiFi network (no password) that broadcasts a 802.11n signal at 2.4GHz and maintains a stable connection to the internet. Some routers, typically 3G & 4G routers, have a power/data saving mode that needs to be disabled.

Is your router's WiFi signal in range of the GoPro camera?

The router should be placed as close as possible to the GoPro to ensure a strong signal. If you check the csiLog.txt on the SD card after the GoPro has searched for a connection, the log will display all WiFi networks in the area and the signal strength of each network as seen by the GoPro camera.

Note that if the WiFi signal strength is weak, the GoPro camera may have difficulties transmitting to the router although it can detect the WiFi network from the router. This is because the GoPro does not have as advanced of a WiFi antenna as most routers (or phones/computers). If the WiFi router location cannot be moved, you may need a secondary access point router to boost the signal closer to the camera.

Does your upload directory folder exist on your web server?

CamDo no longer hosts a Dropbox server for the upload directory. You will need to setup your own FTP or WebDAV server for the upload directory, such as box.com.  Ensure that the path to your upload destination folder has been created prior to using the upload script. If the folder indicated in the path does not exist, the script will not be able to locate or create the folder, resulting in a failed upload.


What is the format of the Cloud csiFirmware script’s upload command line?

The format for the upload command line should be:

upload RouterSSID RouterMAC RouterConnectTimeout OverallTimeout (photos | thumbs) (webdav | ftp) server username password [path] [-f PrependText]


[-f PrependText] - is optional and will prepend the filenames with the word after "-f" to each upload.

[path] - is optional and is the directory to change to on successful login to the FTP or WebDAV system. Note the directory folder must already exist.

password - is the password for the password protected FTP or WebDAV server.

username - is the username for the password protected FTP or WebDAV server.

server - can be either the name of the FTP or WebDAV server or the IP address.

(webdav | ftp) - if your server accepts WebDAV protocol for time transfers, use the webdav command. If your server only uses FTP protocol for time transfers, use the ftp command.

(photos | thumbs) - if you want to upload the full sized photo, use the photos command. If you want to only upload smaller thumbnails (approx 1000 pixels wide), use the thumbs command.

OverallTimeout - is the maximum amount of time in seconds that the camera will attempt to upload before disconnecting. If the file is not transferred, it will be cashed and another attempt to upload will occur after a successful transfer.

RouterConnectTimeout - is the maximum amount of time in second that the camera will have to verify the connection to the selected WiFi network before the command line is skipped. If the connection is not established, the image will be cashed and another attempt to upload will occur after a successful transfer.

RouterMAC - is the MAC address of the router. The MAC address for your particular router is normally available in the router admin pages. Can also use arp -a command from the command line to find if not obvious in the router interface. The format for the MAC address must be that every two characters of the address are separated with a colon (:).

RouterSSID - is the wireless network's SSID. The SSID is case sensitive and cannot contain spaces or symbols, with the exception of hyphens (-) and underscores (_). Note that the wireless network must be an open network ie no security. You can hide the SSID and use MAC address filtering for security.

For example:

upload My-Router_guest 11:AA:22:BB:33:C4 30 120 thumbs webdav https://dav.box.com/dav example@email.com p4ssword -f camera1


If I don’t know my router’s MAC address, how can I locate it?

The MAC address can typically be found in the router’s programming menu. If you do not know how to locate your router MAC address, it can be found using the GoPro camera. Save the Sample Upload script to the SD card turn the camera on in the location where the camera will be deployed. The script will automatically run when the GoPro camera is turned on using Power/Mode button on the front of the camera. The Upload script should trigger the GoPro to automatically take an image and turn the WiFi on to scan for available networks before turning off the camera. The first camera trigger might only adjust the camera to the new setting, so if the WiFi was not activated before turning off the camera, the camera will need to be powered on a second time to activate the GoPro’s WiFi to scan for available networks.

Remove the SD card from the camera and insert the SD card into your computer to open the csiLog.txt file. The csiLog.txt file should display a list of all available networks including the corresponding MAC address and strength of the WiFi signal as seen from the camera’s location.


 

Search

z