clvLabs / PyATEMMax

A Python library to monitor and control Blackmagic Design ATEM video switchers.
https://clvlabs.github.io/PyATEMMax/
GNU General Public License v3.0
77 stars 20 forks source link

Unable to use audiomixer API #6

Open ethan-ou opened 3 years ago

ethan-ou commented 3 years ago

After connecting to an ATEM and successfully switching video sources, I'm finding I'm unable to control any audio sources, including volume, enable and disable etc.

Some example code I'm using for the audio mixer:

import PyATEMMax
import time
switcher = PyATEMMax.ATEMMax()
switcher.connect("192.168.8.172")
switcher.waitForConnection(infinite=False)

switcher.setAudioMixerInputMixOption(switcher.atem.audioSources.mic1, switcher.atem.audioMixerInputMixOptions.on) # Fails to turn on microphone
switcher.setAudioMixerInputVolume(switcher.atem.audioSources.mic1, 3.0)
print("Mic 1 Volume 1:", switcher.audioMixer.input["mic1"].volume) # Prints 0, when should be 3

time.sleep(1)

switcher.setAudioMixerInputMixOption(switcher.atem.audioSources.mic1, switcher.atem.audioMixerInputMixOptions.off) # Fails to turn off microphone
switcher.setAudioMixerInputVolume(switcher.atem.audioSources.mic1, 0.0)
print("Mic 1 Volume 2:", switcher.audioMixer.input["mic1"].volume) # Prints 0

When viewing the ATEM software control, I can also verify none of the values are changing as expected.

Let me know if I've written the code incorrectly or whether this is an internal bug.

clvLabs commented 3 years ago

Please add the following lines before your `switcher.connect()' , rerun the test and post its output:

switcher.setLogLevel(logging.DEBUG)
switcher.setSocketLogLevel(logging.DEBUG)

I'll try to see what's happening thru the logs.

Thank you!

ethan-ou commented 3 years ago

Here's the output:

Received UNKNOWN command: [_FAC]
Received UNKNOWN command: [_FEC]
Received UNKNOWN command: [AiVM]
Received UNKNOWN command: [TcLk]
Received UNKNOWN command: [TCCc]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KACk]
Received UNKNOWN command: [KACC]
UNKNOWN ATEMKeyFrames 0 - processing [KKFP]
UNKNOWN ATEMKeyFrames 0 - processing [KKFP]
UNKNOWN ATEMMediaPlayerSourceTypes 0 - processing [MPCE]
Received UNKNOWN command: [CapA]
Received UNKNOWN command: [FMPP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FMTl]
Received UNKNOWN command: [FAMP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [MOCP]
Received UNKNOWN command: [AMLP]
Received UNKNOWN command: [RMSu]
Received UNKNOWN command: [RTMS]
Received UNKNOWN command: [RTMR]
Received UNKNOWN command: [RMRD]
Received UNKNOWN command: [SRSU]
Received UNKNOWN command: [STAB]
Received UNKNOWN command: [StRS]
Received UNKNOWN command: [SRST]
Received UNKNOWN command: [SRSD]
Received UNKNOWN command: [SRSS]
Received UNKNOWN command: [SAth]
Received UNKNOWN command: [SLow]
Received UNKNOWN command: [NIfT]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FMTl]
Received UNKNOWN command: [FAMP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [MOCP]
Received UNKNOWN command: [AMLP]
Received UNKNOWN command: [RMSu]
Received UNKNOWN command: [RTMS]
Received UNKNOWN command: [RTMR]
Received UNKNOWN command: [RMRD]
Received UNKNOWN command: [SRSU]
Received UNKNOWN command: [STAB]
Received UNKNOWN command: [StRS]
Received UNKNOWN command: [SRST]
Received UNKNOWN command: [SRSD]
Received UNKNOWN command: [SRSS]
Received UNKNOWN command: [SAth]
Received UNKNOWN command: [SLow]
Received UNKNOWN command: [NIfT]
Mic 1 Volume 1: 0
Mic 1 Volume 2: 0
clvLabs commented 2 years ago

Hi ethan-ou,

I'm sorry I have to guess my answer, because I don't have any switcher at hand to test my answers. But anyway, I'll try.

First of all, the source code looks good at first sight.

Looking at the program log you sent, these lines worried me:

UNKNOWN ATEMKeyFrames 0 - processing [KKFP]
UNKNOWN ATEMMediaPlayerSourceTypes 0 - processing [MPCE]

Taking a look at the code, I see that neither ATEMKeyFrames nor ATEMMediaPlayerSourceTypes have any options associated with the 0 value:

class ATEMKeyFrames(ATEMConstantList):
    """KeyFrame list"""

    a = ATEMConstant('a', 1)
    b = ATEMConstant('b', 2)
    full = ATEMConstant('full', 3)
    runToInfinite = ATEMConstant('runToInfinite', 4)

class ATEMMediaPlayerSourceTypes(ATEMConstantList):
    """MediaPlayerSourceType list"""

    still = ATEMConstant('still', 1)
    clip = ATEMConstant('clip', 2)

This makes me think your hardware may have a firmware version greater than 7.5.0 and that may be a problem with this library (see https://clvlabs.github.io/PyATEMMax/about/atem-version/)

Besides, there's a lot of

Received UNKNOWN command: [xxxx]

which again makes me think of the firmware version issue.

After all these Received UNKNOWN command messages, I can see your log outputs:

Mic 1 Volume 1: 0
Mic 1 Volume 2: 0

... but I was expecting to find Sending buffer [xxx] messages in the log containing the hex strings of the sent data. That's why I asked to add the logLevel code:

switcher.setLogLevel(logging.DEBUG)
switcher.setSocketLogLevel(logging.DEBUG)

The resulting log will be veeeery long, but it will include every transaction between your PC and the switcher, and that can give us some clues.

clvLabs commented 2 years ago

Hi there!

Just borrowed a switcher a few days ago, I'm doing some testing.

I've tried the code you sent on your first post and it yielded different results in my case:

Mic 1 Volume 1: 0.0
Mic 1 Volume 2: 2.9999943210899693

This is strange at first sight anyway, seems that it's been inverted. Checking the code again, I saw that the issue was checking for the value just after sending the change request. When you call setAudioMixerInputVolume(), a request message is sent to the switcher and the value in switcher.audioMixer.input["mic1"].volume is not updated until the switcher's response is received. Adding a couple sleep() instructions fixed the issue:

#!/usr/bin/python3

import PyATEMMax
import time
switcher = PyATEMMax.ATEMMax()
switcher.connect("192.168.1.111")
switcher.waitForConnection(infinite=False)

switcher.setAudioMixerInputMixOption(switcher.atem.audioSources.mic1, switcher.atem.audioMixerInputMixOptions.on) # Fails to turn on microphone
switcher.setAudioMixerInputVolume(switcher.atem.audioSources.mic1, 3.0)
time.sleep(0.05) # NEW sleep() !!
print("Mic 1 Volume 1:", switcher.audioMixer.input["mic1"].volume) # Prints 0, when should be 3

time.sleep(1)

switcher.setAudioMixerInputMixOption(switcher.atem.audioSources.mic1, switcher.atem.audioMixerInputMixOptions.off) # Fails to turn off microphone
switcher.setAudioMixerInputVolume(switcher.atem.audioSources.mic1, 0.0)
time.sleep(0.05) # NEW sleep() !!
print("Mic 1 Volume 2:", switcher.audioMixer.input["mic1"].volume) # Prints 0

switcher.disconnect()

Now the result looks as expected:

Mic 1 Volume 1: 2.9999943210899693
Mic 1 Volume 2: 0.0

While checking the response time I wrote a little script that changes the volume and the on/off option for mic1 repeated times, waits for the values to change, calculates the elapsed time and shows the values before and after the change:

#!/usr/bin/python3
import PyATEMMax
import time

SWITCHER_IP = "192.168.1.111"
MIC_NAME = "mic1"
WAIT_FOR_CHANGE = True

switcher = PyATEMMax.ATEMMax()
switcher.connect(SWITCHER_IP)
switcher.waitForConnection()

microphone = switcher.audioMixer.input[MIC_NAME]
audio_source = switcher.atem.audioSources.mic1

def change_volume_and_wait(volume, mic_on):
    mix_option = switcher.atem.audioMixerInputMixOptions.on if mic_on else switcher.atem.audioMixerInputMixOptions.off

    print(f"---[ Turning {MIC_NAME} {mix_option}, volume: {volume} ]----------------------")
    print(f"BEFORE: mixOption: {microphone.mixOption}, volume: {microphone.volume}")
    print(f"Setting mix_option to: {mix_option}")
    switcher.setAudioMixerInputMixOption(audio_source, mix_option)
    print(f"Changing volume to: {volume}")
    switcher.setAudioMixerInputVolume(switcher.atem.audioSources.mic1, volume)

    # Wait for volume change to take effect
    wait_start = time.time()
    if WAIT_FOR_CHANGE:
        while abs(microphone.volume - volume) > 0.001:
            time.sleep(0.001)

    elapsed = time.time() - wait_start
    print(f"AFTER : mixOption: {microphone.mixOption}, volume: {microphone.volume}, took {elapsed:4.3f}s")
    print()

for volume in range(3):
    change_volume_and_wait(volume, True)

for volume in range(3, 0, -1):
    change_volume_and_wait(volume, False)

switcher.disconnect()

The output:

---[ Turning mic1 on, volume: 0 ]----------------------
BEFORE: mixOption: off, volume: 0.0
Setting mix_option to: on
Changing volume to: 0
AFTER : mixOption: off, volume: 0.0, took 0.000s

---[ Turning mic1 on, volume: 1 ]----------------------
BEFORE: mixOption: off, volume: 0.0
Setting mix_option to: on
Changing volume to: 1
AFTER : mixOption: on, volume: 0.999928958055971, took 0.040s

---[ Turning mic1 on, volume: 2 ]----------------------
BEFORE: mixOption: on, volume: 0.999928958055971
Setting mix_option to: on
Changing volume to: 2
AFTER : mixOption: on, volume: 1.9999014823585968, took 0.041s

---[ Turning mic1 off, volume: 3 ]----------------------
BEFORE: mixOption: on, volume: 1.9999014823585968
Setting mix_option to: off
Changing volume to: 3
AFTER : mixOption: off, volume: 2.9999943210899693, took 0.041s

---[ Turning mic1 off, volume: 2 ]----------------------
BEFORE: mixOption: off, volume: 2.9999943210899693
Setting mix_option to: off
Changing volume to: 2
AFTER : mixOption: off, volume: 1.9999014823585968, took 0.041s

---[ Turning mic1 off, volume: 1 ]----------------------
BEFORE: mixOption: off, volume: 1.9999014823585968
Setting mix_option to: off
Changing volume to: 1
AFTER : mixOption: off, volume: 0.999928958055971, took 0.041s

You can see the value update takes an average of 0.041s in my case, and also it seems that microphone is swiched on/off correctly in my case.

Can you try this script in your setup and send me the output please ?

68040 commented 2 years ago

Same problem here.

#!/usr/bin/python3

import PyATEMMax
import logging
import time
switcher = PyATEMMax.ATEMMax()
switcher.setLogLevel(logging.DEBUG)
switcher.setSocketLogLevel(logging.DEBUG)
switcher.connect("192.168.xxx.xxx")
switcher.waitForConnection(infinite=False)

switcher.setAudioMixerInputMixOption(switcher.atem.audioSources.mic1, switcher.atem.audioMixerInputMixOptions.on) # Fails to turn on microphone
switcher.setAudioMixerInputVolume(switcher.atem.audioSources.mic1, 3.0)
time.sleep(0.05) # NEW sleep() !!
print("Mic 1 Volume 1:", switcher.audioMixer.input["mic1"].volume) # Prints 0, when should be 3

time.sleep(1)

switcher.setAudioMixerInputMixOption(switcher.atem.audioSources.mic1, switcher.atem.audioMixerInputMixOptions.off) # Fails to turn off microphone
switcher.setAudioMixerInputVolume(switcher.atem.audioSources.mic1, 0.0)
time.sleep(0.05) # NEW sleep() !!
print("Mic 1 Volume 2:", switcher.audioMixer.input["mic1"].volume) # Prints 0

switcher.disconnect()

The result incl. DEBUG logging is:

Received UNKNOWN command: [_FAC]
Received UNKNOWN command: [_FEC]
UNKNOWN ATEMVideoModeFormats 26 - processing [VidM]
Received UNKNOWN command: [AiVM]
Received UNKNOWN command: [TcLk]
Received UNKNOWN command: [TCCc]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KACk]
Received UNKNOWN command: [KACC]
Received UNKNOWN command: [CapA]
Received UNKNOWN command: [FMPP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FMTl]
Received UNKNOWN command: [FAMP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [MOCP]
Received UNKNOWN command: [AMLP]
UNKNOWN lens feature (2)
UNKNOWN camera feature (16)
UNKNOWN camera feature (13)
UNKNOWN chip feature (3)
UNKNOWN lens feature (2)
UNKNOWN camera feature (16)
UNKNOWN camera feature (13)
UNKNOWN chip feature (3)
UNKNOWN lens feature (2)
UNKNOWN camera feature (16)
UNKNOWN camera feature (13)
UNKNOWN chip feature (3)
UNKNOWN lens feature (2)
UNKNOWN camera feature (16)
UNKNOWN camera feature (13)
UNKNOWN chip feature (3)
UNKNOWN lens feature (1)
Received UNKNOWN command: [NIfT]
UNKNOWN chip feature (3)
UNKNOWN lens feature (1)
Received UNKNOWN command: [NIfT]
Mic 1 Volume 1: 0
Mic 1 Volume 2: 0
68040 commented 2 years ago

This testing code

#!/usr/bin/python3
import PyATEMMax
import time

SWITCHER_IP = "192.168.xxx.xxx"
MIC_NAME = "mic1"
WAIT_FOR_CHANGE = True

switcher = PyATEMMax.ATEMMax()
switcher.connect(SWITCHER_IP)
switcher.waitForConnection()

microphone = switcher.audioMixer.input[MIC_NAME]
audio_source = switcher.atem.audioSources.mic1

def change_volume_and_wait(volume, mic_on):
    mix_option = switcher.atem.audioMixerInputMixOptions.on if mic_on else switcher.atem.audioMixerInputMixOptions.off

    print(f"---[ Turning {MIC_NAME} {mix_option}, volume: {volume} ]----------------------")
    print(f"BEFORE: mixOption: {microphone.mixOption}, volume: {microphone.volume}")
    print(f"Setting mix_option to: {mix_option}")
    switcher.setAudioMixerInputMixOption(audio_source, mix_option)
    print(f"Changing volume to: {volume}")
    switcher.setAudioMixerInputVolume(switcher.atem.audioSources.mic1, volume)

    # Wait for volume change to take effect
    wait_start = time.time()
    if WAIT_FOR_CHANGE:
        while abs(microphone.volume - volume) > 0.001:
            time.sleep(0.001)

    elapsed = time.time() - wait_start
    print(f"AFTER : mixOption: {microphone.mixOption}, volume: {microphone.volume}, took {elapsed:4.3f}s")
    print()

for volume in range(3):
    change_volume_and_wait(volume, True)

for volume in range(3, 0, -1):
    change_volume_and_wait(volume, False)

switcher.disconnect()

Doesn't stop:

---[ Turning mic1 on, volume: 0 ]----------------------
BEFORE: mixOption: , volume: 0
Setting mix_option to: on
Changing volume to: 0
AFTER : mixOption: , volume: 0, took 0.000s

---[ Turning mic1 on, volume: 1 ]----------------------
BEFORE: mixOption: , volume: 0
Setting mix_option to: on
Changing volume to: 1
clvLabs commented 2 years ago

Hi @NoodleBB , thanks for the feedback.

I'm feeling even more suspicious about a protocol/firmware version issue.

I just ran this code:

import PyATEMMax
import logging

SWITCHER_IP = "192.168.1.111"

switcher = PyATEMMax.ATEMMax()
switcher.setLogLevel(logging.DEBUG)
print(f"Connecting to {SWITCHER_IP}")
switcher.connect(SWITCHER_IP)
switcher.waitForConnection()
print("Connected")

version_str = f"{switcher.protocolVersion.major}.{switcher.protocolVersion.minor}"
print(f"Switcher protocol version: {version_str}")

switcher.disconnect()

and got this result:

$ python3 version-check.py
Connecting to 192.168.1.111
Connected
Switcher protocol version: 2.27

Seems I'm working with a 2.27 protocol version switcher. Can you please run the sample code and send the output ?

Thanks in advance!

68040 commented 2 years ago

Hello @clvLabs

My results with 3 different ATEM Models.

ATEM Mini: 2.30 ATEM Mini Pro ISO: 2.30 ATEM Mini Extreme ISO: prog. hangs

ATEM Mini Pro ISO:

Connecting to 192.168.xx.xx
Received UNKNOWN command: [_FAC]
Received UNKNOWN command: [_FEC]
UNKNOWN ATEMVideoModeFormats 27 - processing [VidM]
Received UNKNOWN command: [AiVM]
Received UNKNOWN command: [TcLk]
Received UNKNOWN command: [TCCc]
Wrong value for ATEMVideoSources: [9001] (<class 'int'>) - processing [InPr]
Wrong value for ATEMVideoSources: [9101] (<class 'int'>) - processing [InPr]
Wrong value for ATEMVideoSources: [9102] (<class 'int'>) - processing [InPr]
Wrong value for ATEMVideoSources: [9103] (<class 'int'>) - processing [InPr]
UNKNOWN ATEMMultiViewerLayouts 12 - processing [MvPr]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KACk]
Received UNKNOWN command: [KACC]
Received UNKNOWN command: [CapA]
Received UNKNOWN command: [FMPP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FMTl]
Received UNKNOWN command: [FAMP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [MOCP]
Received UNKNOWN command: [AMLP]
Wrong value for ATEMVideoSources: [9001] (<class 'int'>) - processing [TlSr]
Received UNKNOWN command: [RMSu]
Received UNKNOWN command: [RTMS]
Received UNKNOWN command: [RTMR]
Received UNKNOWN command: [RMRD]
Received UNKNOWN command: [ISOi]
Received UNKNOWN command: [SRSU]
Received UNKNOWN command: [STAB]
Received UNKNOWN command: [StRS]
Received UNKNOWN command: [SRST]
Received UNKNOWN command: [SRSD]
Received UNKNOWN command: [SRSS]
Received UNKNOWN command: [SAth]
Received UNKNOWN command: [SLow]
Received UNKNOWN command: [SwVr]
Received UNKNOWN command: [NIfT]
Received UNKNOWN command: [AMLP]
Wrong value for ATEMVideoSources: [9001] (<class 'int'>) - processing [TlSr]
Received UNKNOWN command: [RMSu]
Received UNKNOWN command: [RTMS]
Received UNKNOWN command: [RTMR]
Received UNKNOWN command: [RMRD]
Received UNKNOWN command: [ISOi]
Received UNKNOWN command: [SRSU]
Received UNKNOWN command: [STAB]
Received UNKNOWN command: [StRS]
Received UNKNOWN command: [SRST]
Received UNKNOWN command: [SRSD]
Received UNKNOWN command: [SRSS]
Received UNKNOWN command: [SAth]
Received UNKNOWN command: [SLow]
Received UNKNOWN command: [SwVr]
Received UNKNOWN command: [NIfT]
Connected
Switcher protocol version: 2.30
68040 commented 2 years ago

ATEM Mini:

Connecting to 192.168.xx.xx
Received UNKNOWN command: [_FAC]
Received UNKNOWN command: [_FEC]
UNKNOWN ATEMVideoModeFormats 26 - processing [VidM]
Received UNKNOWN command: [AiVM]
Received UNKNOWN command: [TcLk]
Received UNKNOWN command: [TCCc]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KACk]
Received UNKNOWN command: [KACC]
Received UNKNOWN command: [CapA]
Received UNKNOWN command: [FMPP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FMTl]
Received UNKNOWN command: [FAMP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [MOCP]
Received UNKNOWN command: [AMLP]
Received UNKNOWN command: [NIfT]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [MOCP]
Received UNKNOWN command: [AMLP]
Received UNKNOWN command: [NIfT]
Connected
Switcher protocol version: 2.30
68040 commented 2 years ago

ATEM Mini Extreme ISO + Pocket Cinema Camera 4K

Connecting to 192.168.xxx.xxx
Received UNKNOWN command: [_FAC]
Received UNKNOWN command: [_FEC]
Received UNKNOWN command: [_FMH]
UNKNOWN ATEMVideoModeFormats 27 - processing [VidM]
Received UNKNOWN command: [AiVM]
Received UNKNOWN command: [TcLk]
Received UNKNOWN command: [TCCc]
Wrong value for ATEMVideoSources: [9001] (<class 'int'>) - processing [InPr]
Wrong value for ATEMVideoSources: [11002] (<class 'int'>) - processing [InPr]
Wrong value for ATEMVideoSources: [9101] (<class 'int'>) - processing [InPr]
Wrong value for ATEMVideoSources: [9102] (<class 'int'>) - processing [InPr]
Wrong value for ATEMVideoSources: [9103] (<class 'int'>) - processing [InPr]
UNKNOWN ATEMMultiViewerLayouts 12 - processing [MvPr]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [SaMw]
UNKNOWN ATEMWindows 10 - processing [MvIn]
Received UNKNOWN command: [SaMw]
UNKNOWN ATEMWindows 11 - processing [MvIn]
Received UNKNOWN command: [SaMw]
UNKNOWN ATEMWindows 12 - processing [MvIn]
Received UNKNOWN command: [SaMw]
UNKNOWN ATEMWindows 13 - processing [MvIn]
Received UNKNOWN command: [SaMw]
UNKNOWN ATEMWindows 14 - processing [MvIn]
Received UNKNOWN command: [SaMw]
UNKNOWN ATEMWindows 15 - processing [MvIn]
Received UNKNOWN command: [SaMw]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KACk]
Received UNKNOWN command: [KACC]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KACk]
Received UNKNOWN command: [KACC]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KACk]
Received UNKNOWN command: [KACC]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KBfT]
Received UNKNOWN command: [KACk]
Received UNKNOWN command: [KACC]
Received UNKNOWN command: [CapA]
Wrong value for ATEMVideoSources: [145] (<class 'int'>) - processing [SSrc]
Received UNKNOWN command: [FMPP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FMTl]
Received UNKNOWN command: [FAMP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [MOCP]
Received UNKNOWN command: [AMLP]
Received UNKNOWN command: [FMHP]
Received UNKNOWN command: [FAMS]
Wrong value for ATEMVideoSources: [9001] (<class 'int'>) - processing [TlSr]
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN lens feature (1)
UNKNOWN lens feature (1)
Received UNKNOWN command: [RMSu]
Received UNKNOWN command: [RTMS]
Received UNKNOWN command: [RTMR]
Received UNKNOWN command: [RMRD]
Received UNKNOWN command: [ISOi]
Received UNKNOWN command: [SRSU]
Received UNKNOWN command: [STAB]
Received UNKNOWN command: [StRS]
Received UNKNOWN command: [SRST]
Received UNKNOWN command: [SRSD]
Received UNKNOWN command: [SRSS]
Received UNKNOWN command: [SAth]
Received UNKNOWN command: [SLow]
Received UNKNOWN command: [NIfT]
Received UNKNOWN command: [CapA]
Wrong value for ATEMVideoSources: [145] (<class 'int'>) - processing [SSrc]
Received UNKNOWN command: [FMPP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FMTl]
Received UNKNOWN command: [FAMP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [MOCP]
Received UNKNOWN command: [AMLP]
Received UNKNOWN command: [FMHP]
Received UNKNOWN command: [FAMS]
Wrong value for ATEMVideoSources: [9001] (<class 'int'>) - processing [TlSr]
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN lens feature (1)
UNKNOWN lens feature (1)
Received UNKNOWN command: [RMSu]
Received UNKNOWN command: [RTMS]
Received UNKNOWN command: [RTMR]
Received UNKNOWN command: [RMRD]
Received UNKNOWN command: [ISOi]
Received UNKNOWN command: [SRSU]
Received UNKNOWN command: [STAB]
Received UNKNOWN command: [StRS]
Received UNKNOWN command: [SRST]
Received UNKNOWN command: [SRSD]
Received UNKNOWN command: [SRSS]
Received UNKNOWN command: [SAth]
Received UNKNOWN command: [SLow]
Received UNKNOWN command: [NIfT]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FAIP]
Received UNKNOWN command: [FIEP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FASP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AEBP]
Received UNKNOWN command: [AIXP]
Received UNKNOWN command: [AICP]
Received UNKNOWN command: [AILP]
Received UNKNOWN command: [FMTl]
Received UNKNOWN command: [FAMP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [AMBP]
Received UNKNOWN command: [MOCP]
Received UNKNOWN command: [AMLP]
Received UNKNOWN command: [FMHP]
Received UNKNOWN command: [FAMS]
Wrong value for ATEMVideoSources: [9001] (<class 'int'>) - processing [TlSr]
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (13)
UNKNOWN lens feature (2)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN lens feature (1)
UNKNOWN lens feature (1)
Received UNKNOWN command: [RMSu]
Received UNKNOWN command: [RTMS]
Received UNKNOWN command: [RTMR]
Received UNKNOWN command: [RMRD]
Received UNKNOWN command: [ISOi]
Received UNKNOWN command: [SRSU]
Received UNKNOWN command: [STAB]
Received UNKNOWN command: [StRS]
Received UNKNOWN command: [SRST]
Received UNKNOWN command: [SRSD]
Received UNKNOWN command: [SRSS]
Received UNKNOWN command: [SAth]
Received UNKNOWN command: [SLow]
Received UNKNOWN command: [NIfT]
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN camera feature (16)
UNKNOWN chip feature (3)
UNKNOWN lens feature (1)
UNKNOWN lens feature (1)
Received UNKNOWN command: [RMSu]
Received UNKNOWN command: [RTMS]
Received UNKNOWN command: [RTMR]
Received UNKNOWN command: [RMRD]
Received UNKNOWN command: [ISOi]
Received UNKNOWN command: [SRSU]
Received UNKNOWN command: [STAB]
Received UNKNOWN command: [StRS]
Received UNKNOWN command: [SRST]
Received UNKNOWN command: [SRSD]
Received UNKNOWN command: [SRSS]
Received UNKNOWN command: [SAth]
Received UNKNOWN command: [SLow]
Received UNKNOWN command: [NIfT]
^CTraceback (most recent call last):
  File "/root/version-check.py", line 11, in <module>
    switcher.waitForConnection()
  File "/usr/local/lib/python3.9/dist-packages/PyATEMMax/ATEMConnectionManager.py", line 612, in waitForConnection
    time.sleep(0.01)
KeyboardInterrupt
^CException ignored in: <module 'threading' from '/usr/lib/python3.9/threading.py'>
Traceback (most recent call last):
  File "/usr/lib/python3.9/threading.py", line 1428, in _shutdown
    lock.acquire()
KeyboardInterrupt: 

I stopped the execution after some minutes.

Rem.: I always had to break it twice.

clvLabs commented 2 years ago

Unfortunately it seems to be a protocol/product version issue. I've received other reports of this part of the API working in some switchers and not in some others. As the protocol is not documented, I can't do much about this... (sorry) Closing the issue

clvLabs commented 2 years ago

After a conversation with one of the users of the library I think I should reopen this issue.

The fact that I don't have the hardware to test and I cannot dedicate the time for the reverse engineering required to close this issue should not mean the issue gets closed with a wontfix.

I will remove the wontfix tag, reopen the issue and add a new help-wanted tag. Maybe someone with the necessary skills and resources can help with this.

chocbic172 commented 1 year ago

I've opened PR #36 which contains basic functionality for the new Fairlight Mixer. I'm still quite new to this library so I imagine it'll need some pretty heavy review. I'm aiming to make this feature complete in the near future, but the basic functionality should cover the majority of use cases for the time being.

someag commented 1 year ago

chocbic172 Imported your files. No errors in the process, but also no function on the ATEM Mini Pro.

chocbic172 commented 1 year ago

@someag admittedly it's been a while since I wrote this so it's likely something might have broken.

Could you let me know a) the firmware of the ATEM Mini Pro you're using, and b) the specific function calls that aren't working for you?

Can you still interact with the switcher in other ways (i.e. changing video)?