Skip to content

Instantly share code, notes, and snippets.

@KonradIT
Last active March 19, 2017 04:55
Show Gist options
  • Star 16 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save KonradIT/55ec6cfa098d88c51a45 to your computer and use it in GitHub Desktop.
Save KonradIT/55ec6cfa098d88c51a45 to your computer and use it in GitHub Desktop.
GoPro HERO4

#GoPro HERO4 (A tale of firmware leaks and marketing)

Written by /u/konrad-iturbe (Konrad Iturbe) and with help of /u/OverByThere's leaked firmware.


The GoPro HERO4 Black Adventure edition is 4x times more powerful than ever.

HERO4 cameras:

  • HERO4 Black (BANZAI)
  • HERO4 Silver (HAWII)

FEATURES (black only, silver is like a shitty hero3+ black):

  • port c:/ is SD
  • port C:/ is camera internal storage
  • BANZAI codname
  • Update path is c:/update/camera_firmware.bin [NOTE: Ambarella A9 chip does not read the update like traditional HDX-firmware.bin and WFX-app.bin and the other files]
  • autoexec.ash still exists, so like in the hero3 / hero3+ the hero4 may have all the features, but not shown in the GUI menu. With autoexec.ash is easy to unleash those features like in previous cameras.
  • Ambarella A9 chip like suggested in rumors all across the net
  • GPS, Environmental data logging (temperature, humidity, etc...)
  • Same resolutions as in the HERO3+ black Misleading data
  • Compatible with bacpacs New bacpacs (marketing!), and compatible with the HERO dual 3d system (probably same HERO3+ case)
  • Full integration with 3D HERO bacpac
  • LCD bacpac commands (seems the bacpac comes with the camera)
  • Connection to external wifi (for uploading media to a GoPro site and from there to social media)
  • New value in protune: Native WB
  • new modes: Multi shot and quick capture
  • Photo mode now have a "photo settings" section in the settings (seems photo has more parameters than just the resolution setting)
  • The GoPro HERO4 star feature: Multi shot, a dynamic burst that shoots pictures with more imaging settings
  • Show the camera info in the settings or in LCD bacpac touch
  • No WVGA 480... Misleading data
  • Night mode for pictures
  • Same pic res as HERO3+black
  • Same protune settings as HERO3+Black
  • LCD sleep (such as in smartphones)
  • Network and smart wifi settings
  • BLUETOOTH!!!
  • Streaming to the internet using secondary GOPs (http://en.wikipedia.org/wiki/Group_of_pictures)
  • IDR streaming (http://www.streaminglearningcenter.com/articles/everything-you-ever-wanted-to-know-about-idr-frames-but-were-afraid-to-ask.html)
  • Protune shutter exp (2s, 5s, 10s, 15s, 20s, 30s)
  • Submodes, new modes that merge different modes (submodes available: photo, multishot, video and quick capture)
  • NightLapse, night timelapses made easy
  • NightLapse has intervals from 15s to 60m
  • uCode with orccode binary loaded on SD
  • Ambarella ImgProc lib (Image processing) (http://docs.opencv.org/doc/tutorials/imgproc/table_of_content_imgproc/table_of_content_imgproc.html) /Supports 3A/

##RESOLUTIONS:

Here, data is misleading, the settings.json says that these are the resolutions:

  • WVGA 240
  • 720p 120
  • 720p SuperView 120
  • 960p 90 100
  • 1080p 60 80
  • 1080p SuperView 60 80
  • 1440p 48 50
  • 2.7K 24 25 30
  • 4K 12.5 12 15

#####But, the firmware says that these are the resolutions:

  • 4K 30 Wide
  • 4K 25 Wide
  • 4K 24 Wide
  • 4K 15 Wide
  • 4K 12.5 Wide
  • 4K 2 TLV 30
  • 4K 2 TLV 15
  • 1440 2 TLV 30
  • 1080 2 TLV 30
  • 4K 2 TLV 25
  • 4K 2 TLV 12.51440 2 TLV 25
  • 1080 2 TLV 25
  • 4K 24 Wide SuperView
  • 2.7K 60 Wide
  • 2.7K 50 Wide
  • 2.7K 48 Wide
  • 2.7K 30 Wide
  • 2.7K 25 Wide
  • 2.7K 30Wide SuperView
  • 2.7K 25 Wide SuperView
  • 2.7K 24 Wide
  • FHD 120 Wide
  • FHD 100 Wide
  • FHD 90 Wide
  • FHD 60 Wide
  • FHD 50 Wide
  • FHD 48 Wide
  • FHD 30 Wide
  • FHD 25 Wide
  • FHD 24 Wide
  • FHD 80 Wide SuperView
  • FHD 60 Wide SuperView
  • FHD 50 Wide SuperView
  • FHD 48 Wide SuperView
  • FHD 30 Wide SuperView
  • FHD 25 Wide SuperView
  • FHD 24 Wide SuperView
  • FHD 30 Wide SuperView
  • LPFHD 25 Wide SuperView
  • LPHD 120 Wide
  • HD 100 Wide
  • HD 60 Wide
  • HD 50 Wide
  • HD 30 Wide
  • HD 25 Wide
  • HD 120 Wide SuperView
  • HD 100 Wide SuperView
  • HD 90 Wide SuperView
  • HD 60 Wide SuperView
  • HD 50 Wide SuperView
  • FWVGA 240 Wide
  • FWVGA 200 Wide
  • WQVGA 30 WideLP
  • WQVGA 25 WideLP
  • 2.7K AR43 30 Wide
  • 2.7K AR43 25 Wide
  • QXGA 80 Wide
  • QXGA 75 Wide
  • QXGA 72 Wide
  • QXGA 60 Wide
  • QXGA 50 Wide
  • QXGA 30 Wide
  • QXGA 48 Wide
  • QXGA 25 Wide
  • QXGA 24 Wide
  • 2.7K 50 Medium
  • 2.7K 48 Medium
  • 2.7K 30 Medium
  • 2.7K 25 Medium
  • 2.7K 24 Medium
  • HD 50 Medium
  • HD 30 Medium
  • HD 25 Medium
  • WQVGA 30 Medium LP
  • WQVGA 25 Medium LP
  • QXGA 60 Medium
  • QXGA 50 Medium

Strange! :)

COMMANDS:

t imgproc
slock n + : lock n
�    slock n - : unlock n

LCD settings (touch I suggest)
Usage: t drv lcd [command]

    command
         enable
         disable
         get_brightness
         set_brightness [val]
         write_cmd [reg_addr]
         write_data [reg_addr] [data]
         set_pattern [x_start] [y_start] [width] [height] [val]
�enable��disable�config��get_brightness��lcd brightness = %d

Read the system temperature
Usage: t drv cable <show|enable|disable>

Show, eable, or disable the current 10 pin USB cable status
Usage: t drv buzzer beep  <on msec> <off msec> <num>
                    start <on msec> <off msec>
                    stop
                    enable
                    disable
                    volume [percent]
                    config <on ticks> <off ticks> <clock div> <pulse div>

Beep/Start/Stop beep at certain speed
Usage: t drv rtc time [yyyy-mm-dd-hh-mm-ss]
                 wake [sec]

Blink/Start/Stop LED at certain speed
Usage: t drv led blink  <top|bottom|front|back> <blue|red> <on msec> <off msec> <num>
                 start  <top|bottom|front|back> <blue|red> <on msec> <off msec>
                 stop   <top|bottom|front|back> <blue|red>
                 enable <top|bottom|front|back> <blue|red>
                 disable <top|bottom|front|back> <blue|red>
Read the battery level in mV
Usage: t drv battery

Turn on/off SD card temperature logging
Usage: t drv templog [on|off]

       
Usage: t drv tasks <stack>

Usage: t drv sdstr <sd id> <3|6|12|18>

Usage: t drv voutstr <3|6|12|18>

Humidity:
Usage: t drv hdmiphy <current> <preemphasis>

t appc wireless pin

       Show BLE pin code

Usage: t appc capture [command]

    command
         start     starts capture
         stop      stops capture
         still     starts still capture

Usage: t appc stream [command]

    command
         start     starts stream
         stop      stops stream

t appc fwupdate [command]
	 start [waiting]
	 ready [prompt]
	 reset
	 download
	 cancel
	 boot_fw
	 isrequired
	 iswaiting
	 isinprogress
	 state
	 notify [start|fini|failed|download|downfail|downcan|downrdy|battlow]
	 ptb
	 cal [save|restore] file.bin
	 rmdir path

Usage: t appc status [command]
	 show
	 lowbatt
	 overtemp
	 version
	 battery
	 rtf
	 beep on off num
	 file_counts
	 power_save
	 blue_led on off num
	 av_mgr
	 power_save_disable

Bluetooth: t appc wireless bt dut  [on|off]

Usage: as3715 battv
       as3715 bt <on|off>
       as3715 dumpregs
       as3715 charger_disabled <set|clear|get>
       as3715 charger_status
       as3715 ibattemp
       as3715 poweroff
       as3715 read_gpio_in <gpio number>
       as3715 readb <regaddr>
       as3715 reset
       as3715 suspend <ddr powered?> <ath powered?> <wifi enabled?> <bt enabled?>
       as3715 wifi_3v3 <on|off>
       as3715 wlan <on|off>
       as3715 writeb <regaddr> <value>
       as3715 warmboot <ddrvolt> <corevolt>
       as3715 usealtfreq <usealt>
       as3715 redled <on/off>
       as3715 blueledmux <a9/ath>
       as3715 blueled_back_a9_ctrl <disable|enable>
       as3715 blueled_top_bottom_a9_ctrl <disable|enable>

Usage: t frw imgcap [command]

    command:
         start                                     starts image capture
         stop                                      stops image capture
         lowlight [on/off]                         sets low light state
�         mctf [none/on/off]                        mctf override "none" = no override
                                                   "on" = mctf on "off" = mctf off
                                                   Note the override is only applicable in 4K modes
���         clocks [IDSP Clk] [Core Clk] [Cortex Clk] overrides the capture clock frequencies
                                                   setting clock value to 0 is no override
         get_counts                                get sof and last-pixel-ready event counters
         rst_counts                                reset sof and last-pixel-ready event counters
         ticks_dump                                dump burst capture ticks
��         load video num fullpathname               load IQ parameter file from SD card

Buttons stuff:

press <button id> [duration in ms]
     release <button id>

     id:      mode/power - 0
              shutter    - 1
              settings   - 2
              lcd        - 3

Some shitty and pretty useful stuff:

Usage: t camdata <nv|mfg> <param> [<set-value>]
	nv params:
		wifi_mac
		bt_mac
		cam_sn
		cam_pn
		crc
		len
		ver
	mfg params:
		site_result
		lens_vendor
		crc
		len
		ver


##FILES:

cherokee.conf

gopro.conf

##Streaming options Wifi:

    "scs_version": "2.13-northshore",
    "status": "",
    "errno": 0,
    "services": [
        {
            "name": "gpStream",
            "version": 1,
            "start_url": "/gp/gpExec?p1=gpStreamA9&c1=restart",
            "stop_url": "/gp/gpExec?p1=gpStreamA9&c1=stop"
        }
    ]
}

##Wifi Info and some stuff from settings.json


"commands":[{"key":"GPCAMERA_SHUTTER",
"display_name":"Start or stop capture","url":"/command/shutter",

{"key":"GPCAMERA_XMODE",
"display_name":"Set Mode and Sub-Mode","url":"/command/xmode",

{"key":"GPCAMERA_MODE",
"display_name":"Set Mode","url":"/command/mode",

{"key":"GPCAMERA_SUBMODE",
"display_name":"Set Mode and Sub-Mode","url":"/command/sub_mode",

{"key":"GPCAMERA_POWER_ID",
"display_name":"Power Off Camera","url":"/command/system/sleep",

{"key":"GPCAMERA_FWUPDATE_DOWNLOAD_START",
"display_name":"Notify start FW Update File Download","url":"/command/fwupdate/download/start",

{"key":"GPCAMERA_FWUPDATE_DOWNLOAD_DONE",
"display_name":"Notify completion of FW Update File Download","url":"/command/fwupdate/download/done",

{"key":"GPCAMERA_FWUPDATE_DOWNLOAD_CANCEL",
"display_name":"Cancel FW Update File Download","url":"/command/fwupdate/download/cancel",

{"key":"GPCAMERA_FACTORY_RESET",
"display_name":"Reset to Factory Defaults","url":"/command/system/factory/reset",

{"key":"GPCAMERA_SLEEP",
"display_name":"Power Saving Sleep Mode","url":"/command/system/sleep",

{"key":"GPCAMERA_USE_CURRENT_WIRELESS_REMOTE_ID",
"display_name":"Use with Current Wi-Fi Remote","url":"/setting/63/2",

{"key":"GPCAMERA_USE_NEW_WIRELESS_REMOTE_ID",
"display_name":"Use with New Wi-Fi Remote","url":"/command/wireless/rc/pair",

{"key":"GPCAMERA_VIDEO_PROTUNE_RESET_TO_DEFAULT",
"display_name":"Reset to Default","url":"/command/video/protune/reset",

{"key":"GPCAMERA_MULTISHOT_PROTUNE_RESET_TO_DEFAULT",
"display_name":"Reset to Default","url":"/command/multi_shot/protune/reset",

{"key":"GPCAMERA_PHOTO_PROTUNE_RESET_TO_DEFAULT",
"display_name":"Reset to Default","url":"/command/photo/protune/reset",

{"key":"GPCAMERA_SET_DATE_AND_TIME_ID",
"display_name":"Set Date and Time","url":"/command/setup/date_time",

{"key":"GPCAMERA_DELETE_LAST_FILE_ID",
"display_name":"Delete Last File","url":"/command/storage/delete/last",

{"key":"GPCAMERA_DELETE_ALL_FILES_ID",
"display_name":"Delete All Files from SD Card","url":"/command/storage/delete/all",

{"key":"GPCAMERA_DELETE_FILE_ID",
"display_name":"Delete File","url":"/command/storage/delete",

{"key":"GPCAMERA_LOCATE_ID",
"display_name":"Locate Camera","url":"/command/system/locate",

{"key":"GPCAMERA_NETWORK_NAME_ID",
"display_name":"Name","url":"/command/wireless/ap/ssid",

{"key":"GPCAMERA_AP_CONTROL",
"display_name":"Control Wi-Fi AP","url":"/command/wireless/ap/control",

{"key":"GPCAMERA_INFO_VERSION_ID",
"display_name":"Version","url":"camera_version",

{"key":"GPCAMERA_NETWORK_VERSION_ID","d1��öñéMe�ˆ��Ž�� X�isplay_name":"Version","url":"bacpac_version",

{"key":"GPCAMERA_BATTERY_LEVEL_ID",
"display_name":"Battery Level","url":"camera_battery",

{"key":"GPCAMERA_SDCARD_CAPACITY_ID",
"display_name":"SD Card Capacity","url":"sd_card",

{"key":"GPCAMERA_TAG_MOMENT",
"display_name":"Tag Moment","url":"/command/storage/tag_moment",

{"key":"GPCAMERA_RC_PAIR",
"display_name":"Pair with Known RC","url":"/command/rc/pair",

{"key":"GPCAMERA_SSID_SCAN",
"display_name":"Start Wi-Fi SSID Scan","url":"/command/wireless/ssid/scan",

{"key":"GPCAMERA_SSID_LIST",
"display_name":"Wi-Fi SSID Scan Results","url":"/command/wireless/ssid/list",

{"key":"GPCAMERA_SSID_SELECT",
"display_name":"Connect to Wi-Fi SSID","url":"/command/wireless/ssid/select",

{"key":"GPCAMERA_SSID_DELETE",
"display_name":"Delete Wi-Fi SSID from Known List","url":"/command/wireless/ssid/delete"
,"status":{"groups":[{"group":"system","fields":[
{"id":1,"name":"internal_battery_present"},
{"id":2,"name":"internal_battery_level"},
{"id":3,"name":"external_battery_present"},
{"id":4,"name":"external_battery_level"},
{"id":5,"name":"current_temperature"},
{"id":6,"name":"system_hot"},
{"id":8,"name":"system_busy"},
{"id":9,"name":"quick_capture_active"},
{"id":10,"name":"encoding_active"},
{"id":11,"name":"lcd_lock_active"},
{"id":45,"name":"camera_locate_active"}]},{"group":"app","fields":[
{"id":43,"name":"mode"},
{"id":44,"name":"sub_mode"},
{"id":12,"name":"xmode"}]},{"group":"video","fields":[
{"id":13,"name":"video_progress_counter"},
{"id":46,"name":"video_protune_default"}]},{"group":"photo","fields":[
{"id":47,"name":"photo_protune_default"}]},{"group":"multi_shot","fields":[
{"id":48,"name":"multi_shot_protune_default"},
{"id":49,"name":"multi_shot_count_down"}]},{"group":"broadcast","fields":[
{"id":14,"name":"broadcast_progress_counter"},
{"id":15,"name":"broadcast_viewers_count"},
{"id":16,"name":"broadcast_bstatus"}]},{"group":"wireless","fields":[
{"id":17,"name":"enable"},
{"id":19,"name":"state","levels":["pair_status"]},
{"id":20,"name":"type","levels":["pair_status"]},
{"id":22,"name":"state","levels":["scan_status"]},
{"id":23,"name":"scan_time","levels":["scan_status"]},
{"id":18,"name":"current_time","levels":["scan_status"]},
{"id":28,"name":"pairing"},
{"id":26,"name":"remote_control_version"},
{"id":27,"name":"remote_control_connected"},
{"id":31,"name":"app_count"},
{"id":24,"name":"provision_status"},
{"id":25,"name":"rssi_bars"},
{"id":29,"name":"wlan_ssid"},
{"id":30,"name":"ap_ssid"}]},{"group":"stream","fields":[
{"id":32,"name":"enable"}]},{"group":"storage","fields":[
{"id":33,"name":"sd_status"},
{"id":34,"name":"remaining_photos"},
{"id":35,"name":"remaining_video_time"},
{"id":36,"name":"num_group_photos"},
{"id":37,"name":"num_group_videos"},
{"id":38,"name":"num_total_photos"},
{"id":39,"name":"num_total_videos"}]},{"group":"setup","fields":[
{"id":40,"name":"date_time"}]},{"group":"fwupdate","fields":[
{"id":41,"name":"ota_status"},
{"id":42,"name":"download_cancel_request_pending",
"services":
{"live_stream_start":
{"version":1,"description":"Start real-time A/V stream using LTP.","url":"/gp/gpExec?p1=gpStreamA9&c1=restart"},"live_stream_stop":
{"version":1,"description":"Stop real-time A/V stream using LTP.","url":"/gp/gpExec?p1=gpStreamA9&c1=stop"},"media_list":
{"version":1,"description":"Supports listing of media on SD card.","url":"/gp/gpMediaList"},"media_metadata":
{"version":1,"description":"Supports extraction of metadata from a particular media file.","url":"/gp/gpMediaMetadata"},"platform_auth":
{"version":1,"description":"Supports OAuth2 cross-client authorization.","url":"/gp/gpPlatformAuth"},"fw_update":
{"version":1,"description":"Supports client-assisted Over-the-Air firmware updating.","url":"/gp/gpUpdate"}}}


###Rumors NO/Yes

#####DGISE:

"First of all GoPro Hero is a compact, rugged, lightweight (less than 100 grams) action camera with a special attachment for anything (boards, kiteboarding, surfing, windsurfing, helmets, ski poles, cars, bikes, BMXs and other that can be in motion). Everyone will be able to enjoy hours of video about your achievements and exciting emotions in 4K quality. YES

GoPro Hero 4 is really capable of recording video in 4K resolution at a speed of 30 frames per second YES, 1080p at 120fps YES and 720p at 240fps YES, which became possible with the advent of the new SoC Ambarella A9 chip (dual A9 ARM Core ® CortexTM-A9 processor 1GHz with FPU accelerator) YES for advanced applications, wireless connection YES and streaming video in social media YES.

GoPro Hero 4 will also come with a 13-megapixel photosensor NO and a completely new lens for shooting in dark YES. Multi-Exposure YES and HDR WDR tone mapping NO, electronic image stabilization YES, also improved MCTF NO. Dual sensor interfaces 12-lane SLVDS/HiSPiTM/subLVDS NO, 4-lane NO, remote viewfinder playback which is extremely easy to use NO. You shouldn’t to have special technical knowledge or skills to do it. GoPro Hero cameras are amazing because they have a waterproof housing with a flat lens for shooting under water (up to 60m). Built-in Wi-Fi module, USB & HDMI - the only thing that brings it closer to homeliness. The camera has the ability to capture still images during video recording and perform encoding H.264/ BP / MP / HP Level 5.1 and MJPEG.

GoPro Hero 4 will hit on shelves in October 2014 YES (?!?!?). Action Cameras of GoPro have become extremely popular as an excellent way to capture high-quality video at high speeds relative to the price that usually is $340."

#####Christian Today (random, more than 10 articles about HERO4 in that page):

Extreme sports enthusiasts and adventure seekers know that nothing beats a GoPro when it comes to recording live-action footage, as the camera is known to perform splendidly whatever the conditions may be. Whether it's attached to the helmet of a baseline jumper, or strapped onto the handlebars of a bike going on rough terrain, it's guaranteed to produce videos with amazing quality.YES This is the reason why fans of the brand are eagerly anticipating the latest version of the camera, the GoPro Hero 4. YES

According to Dgise.com, the GoPro Hero 4 can record in 4k resolution at a speed of 30 frames per second. YES It will also come with a 13-megapixel photo sensor, NO which is a new lens that can enable the user to shoot videos or take pictures in the dark, YES electronic image stabilization, YES and an improved MCTF, NO among others. It will also have WDR tone mapping,YES plus Wi-Fi capabilities with remote viewfinder and playback functions. YES

The new camera will also let the user record videos at a lower resolution, which results in faster video capturing, ideal for extreme sports. And yes, the camera is waterproof. YES

It is also expected to weigh less than 100 grams, ? and because it is an action camera, it includes a unique attachment that can clamp to almost anything such as skateboards, surfboards, ski poles, bikes, cars, and basically anything else that moves. YES

Aside from all these, there are rumors that the Hero 4 will be equipped with two lenses for filming in 3D, but this has not been confirmed. WTF? NO

The GoPro Hero 4 will reportedly be priced at $340 NO and is expected to be launched on October 2014. YES

###DATA FOR DEVS:

Example: C:\Jenkins\workspace\Banzai-Release\BANZAI\app_control\picture\test_pic_capture.c

  • *C:* is the internal camera memory drive, like in windows os
  • Jenkins is a oracle software that acts like a user
  • workspace is the main dir inside Jenkins
  • Banzai-Release is the code name for the HERO4 (Banzai)
  • BANZAI HERO4 codename
  • app-control controls of the camera
  • picture picture dir with lots of .c code

##Reddit and leaked info

User on reddit, who is a sport shop employee (not given any personal data to protect privacy) posted a picture clearly seen camera model, new bacpacs and price: picture

Other user wanted to buy a gopro and the shop employee confessed that there was a GoPro HERO4 Black Adventure Edition around the corner.

With the GoPro HERO4 so near shops got the HERO4 camera to stock, and unofficial GoPro company Smartree leaked the sketches of the HERO4. See megathread: http://www.reddit.com/r/gopro/comments/2hg0rm/hero4_megathread/

@TokyoWarfare
Copy link

gopro 4 never supported 3d hero system (unfortunatelly). Please correct that part.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment