Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Protune settings #561

Open
hankzoid opened this issue Jul 3, 2024 · 5 comments
Open

Add Protune settings #561

hankzoid opened this issue Jul 3, 2024 · 5 comments
Labels
documentation Improvements or additions to documentation enhancement New feature or request

Comments

@hankzoid
Copy link

hankzoid commented Jul 3, 2024

I've built camera arrays using DSLRs and am looking to build one using 16-20 GoPros controlled via USB. I bought a Hero 12 to have a play with but have just realised it's not possible to control any of the protune settings - shutter speed, iso range, white balance etc. Obviously it's essential that all exposures match in a camera array so unfortunately I can't take this any further for now, unless I'm missing something?

I've seen that adding shutter speed was mentioned a couple of years ago. This seems like a no brainer so I'm sure there's a reason why it hasn't been added yet. Ideally I'd be able to set the white balance and shutter speed, and fix the ISO (or set the min and max range to the same value).

I'll keep an eye out for updates but if there are no plans to add this please let me know.

@hankzoid hankzoid added the enhancement New feature or request label Jul 3, 2024
@github-actions github-actions bot added the triage Needs to be reviewed and assigned label Jul 3, 2024
@tcamise-gpsw
Copy link
Collaborator

Yeah unfortunately this is currently blocked due to non-technical reasons. I'm going to use this ticket as the main ticket to track any similar requests.

@tcamise-gpsw tcamise-gpsw added documentation Improvements or additions to documentation and removed triage Needs to be reviewed and assigned labels Jul 8, 2024
@pavlosharhan2
Copy link

I have no isues in setting protune settings on GoPro 10/11/12 since year 2021.
It's even mentioned in the docs: https://gopro.github.io/OpenGoPro/ble/features/control.html#set-shutter

For example, the list of protune settings I'm able to set:

        "2" to "resolution",
        "3" to "fps",
        "145" to "shutter_speed",
        "102" to "iso_min",
        "13" to "iso_max",
        "115" to "white_balance",
        "116" to "color",
        "117" to "sharpness",
        "118" to "exposure",
        "121" to "lens",
        "124" to "bitrate",
        "88" to "lcd_brightness",
        
        And available options for each setting:
        
        val resolutionOptions = TwoWayDict(
        1 to "4K",
        4 to "2.7K",
        6 to "2.7K4:3",
        7 to "1440",
        9 to "1080p",
        18 to "4K4:3",
        24 to "5K",
        25 to "5K4:3",
        100 to "5.3K"
    )

    private val fpsOptions = TwoWayDict(
        0 to "240",
        1 to "120",
        2 to "100",
        5 to "60",
        6 to "50",
        8 to "30",
        9 to "25",
        10 to "24",
        13 to "200"
    )

    private val shutterOptions = TwoWayDict(
        0 to "Auto",
        3 to "1/24",
        4 to "1/25",
        5 to "1/30",
        6 to "1/48",
        7 to "1/50",
        8 to "1/60",
        11 to "1/96",
        12 to "1/100",
        13 to "1/120",
        16 to "1/192",
        17 to "1/200",
        18 to "1/240",
        25 to "1/384",
        21 to "1/400",
        22 to "1/480",
        28 to "1/800",
        23 to "1/960",
        29 to "1/1600",
        24 to "1/1920",
        30 to "1/3200",
        31 to "1/3840"
    )

    private val isoMinOptions = TwoWayDict(
        0 to "6400",
        3 to "3200",
        1 to "1600",
        4 to "800",
        2 to "400",
        7 to "200",
        8 to "100"
    )

    private val isoMaxOptions = TwoWayDict(
        0 to "6400",
        3 to "3200",
        1 to "1600",
        4 to "800",
        2 to "400",
        7 to "200",
        8 to "100"
    )

    private val whiteBalanceOptions = TwoWayDict(
        3 to "6500K",
        7 to "6000K",
        2 to "5500K",
        12 to "5000K",
        11 to "4500K",
        0 to "Auto",
        4 to "Native",
        5 to "4000K",
        10 to "3200K",
        9 to "2800K",
        8 to "2300K"
    )

    private val colorOptions = TwoWayDict(
        1 to "Flat",
        2 to "Natural",
        100 to "Vibrant"
    )

    private val lensOptions = TwoWayDict(
        7 to "Max SuperView",
        3 to "SuperView",
        0 to "Wide",
        4 to "Linear",
        8 to "Linear Horizon Leveling",
        2 to "Narrow"
    )

    private val sharpnessOptions = TwoWayDict(
        0 to "High",
        1 to "Medium",
        2 to "Low"
    )

    private val exposureOptions = TwoWayDict(
        8 to "-2.0",
        7 to "-1.5",
        6 to "-1.0",
        5 to "-0.5",
        4 to "0.0",
        3 to "0.5",
        2 to "1.0",
        1 to "1.5",
        0 to "2.0"
    )

    private val bitrateOptions = TwoWayDict(
        1 to "High",
        100 to "Standard"
    )

    private val lcdBrightnessOptions = TwoWayDict(
        10 to "10%",
        20 to "20%",
        30 to "30%",
        40 to "40%",
        50 to "50%",
        60 to "60%",
        70 to "70%",
        80 to "80%",
        90 to "90%",
        100 to "100%"
    )

@hankzoid
Copy link
Author

hankzoid commented Jul 17, 2024

Thank you for this. I was really hoping I was wrong, but I can't see how to set these? The link that you provided refers to triggering the shutter to take a photo or start/stop recording, rather than changing the shutter speed.

I've tried using http requests and the values that you've posted, but I get a 404 error when trying to set the shutter speed. I get a 200 response when setting the auto power off time using the same process. Changing any of the Protune settings are also not mentioned here - https://gopro.github.io/OpenGoPro/http#tag/settings/operation/GPCAMERA_CHANGE_SETTING::59

For example -

url = "http://172.{camera_url}:8080/gopro/camera/setting"
querystring = {"option":"4","setting":"59"}      # (Auto Power Down -> 5 mins)
response = requests.request("GET", url, params=querystring)
print(response)

returns 200 and correctly changes the Auto Power Down value. However -

url = "http://172.{camera_url}:8080/gopro/camera/setting"
querystring = {"option":"12","setting":"145"}      # (Shutter Speed -> 1/100)
response = requests.request("GET", url, params=querystring)
print(response)

returns 404 error

If you could let me know how you're changing these settings I'd really appreciate it, ideally over USB/WiFi

@hankzoid
Copy link
Author

Ok interesting, I can set the shutter speed this way in video mode but not photo mode, I guess because there are different shutter options for video and photo e.g. 1/120 for video, 1/125 for photo. Where did you find this info for the shutter speed options?

@pavlosharhan2
Copy link

Ok interesting, I can set the shutter speed this way in video mode but not photo mode, I guess because there are different shutter options for video and photo e.g. 1/120 for video, 1/125 for photo. Where did you find this info for the shutter speed options?

The shutter speed should be a multiple of the FPS. You can't set 1/100 for 60 FPS. Your options are:
1/60
1/120
1/240
1/480
etc.

1/100 would be possible if you set anti-flicker to 50 Hz first (https://gopro.github.io/OpenGoPro/http#tag/settings/operation/GPCAMERA_CHANGE_SETTING::134), which would allow you to set FPS to 25/50/100. In this case, you could use a 1/100 shutter speed.

Another important thing: ensure Protune is on before setting the settings. For example, you can always call "gp/gpControl/setting/114/1" before applying any settings

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants