Просто чтобы сделать это кратким, я не смог ничего проверить.

Вы, наверное, удивляетесь, почему это заняло у меня так много времени. В любом случае, у меня нет HERO5, я все еще использую HERO4 Black, которая мне нравится и имеет все необходимые мне функции.

В предыдущих камерах GoPro была функция, которая выполняла код внутри файла с именем autoexec.ash, помещенного в корень карты памяти. Эта функция исчезла с камерами HERO4, но была возвращена с дополнительным аксессуаром GoPro altiforce.

В прошивке HERO5 есть следующее:

echo "d:\UDEC_1080I_CFG.ash"
echo "d:\UDEC_1080I_CFG.ash" > /dev/ttyRSH1
echo "d:\TSIN_NFS.ash"
echo "d:\TSIN_NFS.ash" > /dev/ttyRSH1
echo "d:\PREVIEW_HD_1080I.ash"
echo "d:\PREVIEW_HD_1080I.ash" > /dev/ttyRSH1
echo "d:\UDEC_1080I_START.ash"
echo "d:\UDEC_1080I_START.ash" > /dev/ttyRSH1
.hash
echo "d:\TSOUT_NFS.ash"
echo "d:\TSOUT_NFS.ash" > /dev/ttyRSH1
echo "d:\XCODE_U2M_1080I_CFG.ash"
echo "d:\XCODE_U2M_1080I_CFG.ash" > /dev/ttyRSH1
echo "d:\TSIN_NFS.ash"
echo "d:\TSIN_NFS.ash" > /dev/ttyRSH1
echo "d:\PREVIEW_HD_1080I.ash"
echo "d:\PREVIEW_HD_1080I.ash" > /dev/ttyRSH1
echo "d:\XCODE_U2M_1080I_START.ash"
echo "d:\XCODE_U2M_1080I_START.ash" > /dev/ttyRSH1
echo "d:\TSOUT_NFS.ash"
echo "d:\TSOUT_NFS.ash" > /dev/ttyRSH1
echo "d:\VIN_1080I.ash"
echo "d:\VIN_1080I.ash" > /dev/ttyRSH1
echo "d:\ENC_MPEG2_1080I_CFG.ash"
echo "d:\ENC_MPEG2_1080I_CFG.ash" > /dev/ttyRSH1
echo "d:\PREVIEW_HD_1080I.ash"
echo "d:\PREVIEW_HD_1080I.ash" > /dev/ttyRSH1
echo "d:\ENC_MPEG2_1080I_START.ash"
echo "d:\ENC_MPEG2_1080I_START.ash" > /dev/ttyRSH1

Это может быть использовано для выполнения любого кода, который мы хотим в /dev/ttyRSH1, я предполагаю, что это может быть обычный код Ambarella Shell или непосредственно код Linux без lu_util.

Команды

Вот что интересного нашел в прошивке:

Usage: reboot [yes]
Usage: t imgproc
Usage: t appc playback [command]
Usage: t appc settings [command]
Usage: t appc status [command]
Usage: t appc wireless bt dut [on|off]
Usage: t appc wireless pin
Usage: t appc wireless cah cah_state_get
Usage: t appc log [command]
Usage: t appc fwupdate [command]
Usage: dbg [on|off]
Usage: t appc capture [command]
Usage: t appc stream [command]
Usage: t appc liveview [command]
Usage: t gpcal cmd vig param
Usage: t gpcal cmd bpc param
Usage: t gpcal cmd rawcap param
Usage: t gpcal cmd wb param
Usage: t gpcal cmd read nv
Usage: t gpcal cmd rtfcap run
Usage: t gpcal cmd write nv
Usage: t gpcal cmd validate
Usage: t gpcal cmd invalidate
Usage: t gpcal cmd erase
Usage: t gpcal cmd unerase
Usage: t gpcal cmd sleep
Usage: t gpcal cmd logging enable
Usage: t gpcal cmd ok [param ...]
Usage: t gpcal cmd on_script_cmdfail [abort|continue]
Usage: t gpcal cmd on_script_abort [silent|flashled]
Usage: t gpcal cmd tempwait
Usage: t gpcal cmd bpc
Usage: t gpcal %sshow
Usage: t gpcal sript
Usage: ble_configure_whitelist
Usage: ble_configure_whitelist
Usage: ble_set_global_config
Usage: t api pb video_tag_info
Usage: t api pb multishot_tag_info
Usage: t video_info
Usage: t audio route
Usage: t audio_australia
Usage: t gpdrv mcu
Usage: t gpdrv mcu battery [temp|cap|volt|cur])
Usage: t drv cable
Usage: t gpdrv buzzer start [num]
Usage: t drv rtc time [yyyy-mm-dd-hh-mm-ss]
Usage: t gpdrv led start [num]
Usage: t gpdrv battery

Я также нашел некоторые конечные точки, касающиеся автоматической загрузки:

api.sandbox.staging.gopro.com/v1/tickets
http://api.gopro.com/v1/hello.html

Также некоторые другие интересные конечные точки на веб-сервере GoPro:

/gp/gpBacpac
/gp/gpCamera
/gp/gpMediaOp
/gp/gpCert

Наконец, я рекомендую прочитать это:

https://gethypoxic.com/blogs/technical/gopro-hero5-tear-down-and-software-study