Canon PTZ Control – DJF 4.0 User Guide


  • Looking for Canon PTZ Installation instructions? Jump here.


Operation Modes

PTZ 1 Home Page – Select Drive Modes, Loop, set speed, Preview/Program, Manual Pan Tilt Zoom, and select cameras.

On the HOME page for each of the 6 cameras, there are different modes of operation along the top row.

  • FAST / MED / SLOW – quickly alter the TIME or SPEED of the Drive Mode to 2-seconds, 7-seconds, or 30-seconds. (you can set a specific time on the Adjust page).
  • TIME / SPEED – sets the camera into Drive TIME mode. Press a second time to enable Drive SPEED mode. Use these modes to get the smoothest on-air maneuvers.
  • REPO – for “reposition” (also documented by Canon as “Normal” mode). This provides the fastest repositioning from one preset to another, but does not create a smooth on-air movement. Use this when previewing a camera before taking to program.
  • LOOP / LOOP OFF / LOOP ACTIVE– press to arm the LOOP mode, then select a preset to loop between that and the last used preset. Press another preset button to update the two presets in use. The speed of the loop is determined by the number of seconds that the Drive Time Mode is set to, so preset the TIME before looping. Button will show LOOP ACTIVE when the camera is in an active loop cycle. Press the LOOP ACTIVE button again to disable the loop. The camera will finish the current maneuver before stopping. The looping will be canceled if you press any of the following buttons while active: FAST / MED / SLOW, TIME, SPEED, REPO, LOOP ACTIVE, or the manual PAN or TILT buttons.
  • GANG / GANG OFF – when GANG is active, any adjustments to camera drive speed or manual adjustment speed will be replicated across all 6 cameras. Disable the GANG to adjust camera speeds independently. Note that when you activate LOOP, it will automatically disengage GANG to prevent a camera loop from being canceled by speed changes made on other cameras.
  • PVW / PGM / PVW PGM OFF – Choose between a Preview or Program mode: Preview will set the selected camera into the ATEM’s Preview monitor. This is useful to preview a camera and position it before cutting it to program. Program mode: this disables the Preview function, and instead will automatically put the camera into Program when a Preset button is pushed. Use this to easily cut between different shot sizes directly, without having to Preview and then Cut. There are two variations to this Program behavior: when in Drive Speed (SPEED) or Drive Time (TIME), the camera will cut to program immediately, and you will see the maneuver play out on air. When in REPO mode: the camera will reposition rapidly to the new preset position, and then cut to program on a 2750ms delay. The delay is to allow the sharp camera reposition movement to occur off air, before taking the camera live.


Navigating the Back End Pages

Companion has 1-99 pages available for use. This is where buttons are programmed, but doesn’t reflect how the front end navigation on a Stream Deck XL surface appears.

Here’s a quick-start reference to a few key pages that this profile utilizes:

  • Page 1 – HOME – Blank Custom Home page for you to copy most used buttons to for quick access
  • Page 2 – SHOT – Switching page
  • Page 3 – SCENE – Custom Macros and Scene compounds for easy recall
  • Page 4 – SHOW – Custom functions to run a show, such as start/stop streaming/recording, mute audio etc
  • Page 5 – CUE – Custom Run Of Show to execute 1-24 cues with a simple advance button (#8)
  • Page 76 – PTZ GANG – A backend page containing functions utilized by the GANG, PGM, PVW Modes on the front end (leave this page unmodified).
  • Page 77 – PTZ1 – HOME – Set PTZ mode operation, Recall Presets 1-8, manual Pan Tilt Zoom, select Cameras (add Preset names here)
  • Page 78 – PTZ1 – RECALL – Recall Presets 9-36 (Add Preset names here)
  • Page 79 – PTZ1 – ADJUST – Adjust camera exposure settings, and Custom Trace templates for you to modify
  • Page 80-94 – PTZ 2-6 HOME/RECALL/ADJUST pages (same as above for PTZ1)
  • Page 99 – MENU – Main Menu to jump to all other pages in the profile, including PTZ camera control

Install Canon PTZ Control DJF 4.0

Welcome to the installation guide for Canon PTZ control via DJF 4.0 Companion Profile.

System Requirements

  • Mac, Windows, or Raspberry Pi 4 8GB to host the Companion Application
  • Router and network switch to connect your local computer and PTZ cameras via ethernet




For a more detailed introduction to Companion, see the Companion Installation guide for the initial steps to installing the Companion application itself, then come back here to configure the Canon PTZ cameras.

After downloading the Companion 3.1.1 application, unzip the file and open the disk image. Copy Companion to your Application folder and open.

On a Mac, Companion will run in the Menu Bar in the top right. Click “Show/Hide Window”, and choose your interface – wired is preferred.

Open the GUI in a web browser and navigate to the Import/Export Tab.

Select your Canon PTZ Control DJF 4.0 Profile from your local disk and choose full import.

NOTE: This will overwrite any existing settings, so if you have used Companion before, Export your previous work to back it up. 


Set Camera IP Addresses

Under Companion’s Connections tab, select each PTZ module (ptz1, ptz2, ptz3, ptz4, ptz5, ptz6) and enter the camera’s IP address.

Click Save. The Status column will turn green when the camera’s IP address has been located successfully.


BANK: Control 18 cameras in 3x Banks of 6 cameras

By default, the profile is set up to control Companion Canon modules for PTZ 1 – 6.

However, if you have more than six cameras, you can store additional IP addresses and ATEM Inputs in the program’s Custom Variables for easy switching between three banks of six cameras (grouped by 1-6, 7-12, 13-18).

Instead of inputting IP addresses directly in the modules in the Connections tab, instead go to Buttons > Variables > Custom Variables, and type “ptz_i” in the Filter field.

This will shortlist the variables to show the 18 IP addresses and 18 ATEM Inputs. (Use the Contract/Expand View button next to the red “Back” button for easy viewing of the list).

You now have a matrix to assign a camera IP to an ATEM switcher input. For example, you could use

  • $(internal:custom_ptz_ip7) =
  • $(internal:custom_ptz_input17) = 7

This would link the PTZ camera with the address with the ATEM’s 7th Input.

Now when you toggle the BANK button (#31), you will toggle between camera slots for 1-6, 7-12, 13-18.

Long press the BANK button to disable it to ensure you don’t accidentally press it during a show. Long press to re enable BANK switching.

User-selectable input routing: You don’t have to follow strict sequential order either. This gives the flexibility to choose which ATEM input to route your camera’s video signal into.

For example, if you had PTZ Camera 4 that you needed to route into the ATEM’s 15th input because inputs 1-14 were already occupied, you would enter “15” in the Custom Variable field for $(internal:custom_ptz_input4). Now the 4th PTZ slot is occupied by Input 15.


Multiple Stream Deck XL or Emulator Operation

This profile supports up to 4x Stream Deck XL’s (or four web browser emulators, or 4x iPads – however, the Stream Decks are recommended as the most responsive and powerful to operate).

You don’t have to have four Stream Decks to make use of this. It will work with one or two, but three is the sweet spot to display each camera’s three pages (HOME, RECALL, ADJUST) at one time.

The profile ships with 4 Emulators grouped in a QUAD by default. To change this to your physical surfaces, first connect your four Stream Deck XL’s via USB to the computer. (A powered USB 3.0 hub is recommended, unless your computer supports full power to four USB ports).

Under the Surfaces tab, label your Stream Deck XL’s 1, 2, 3, 4. It’s also a good idea to label your physical Stream Deck XL surface 1, 2, 3, 4 to know which order they are in.

Then copy the ID of each emulator or Stream Deck surface. It will look like:

  • emulator:cbpYBxiS-omuxtJSupMaa
  • streamdeck:CL49E2F01228

On Page 99 (MENU) (shown above) of the Companion profile, button (#8) called SURFACE has 4 Steps. These correspond with the Surfaces operating as a SOLO, DUO, TRIO, or QUAD group.

Paste the IDs in a cascading array like this:


  1. Blank
  2. Blank
  3. Blank
  4. Blank


  1. ID1
  2. ID2
  3. Blank
  4. Blank


  1. ID1
  2. ID2
  3. ID3
  4. Blank


  1. ID1
  2. ID2
  3. ID3
  4. ID4

Now you have a button that can toggle between grouping emulators or decks as SOLO, DUO, TRIO, or QUAD operation.

Keeping all fields blank in Tab 1 (SOLO) will ensure all surfaces operate independently.

Note that you can still use a fifth or even more surfaces independently, but that when using a DUO, TRIO, or QUAD grouping, navigating through the additional surfaces will mirror updates in the group array.

For example, if you had grouped four Stream Deck XL’s into a QUAD, and then generated a new Emulator for use on an iPad, as you select cameras 1-6 on the iPad, the QUAD surfaces will mirror the iPad.

Selecting cameras on the QUAD will not mirror changes on the iPad.


User Guide

Ready to start using the Canon PTZ Control DJF 4.0 Profile? Jump to the User Guide here.


Recommended Hardware:

Canon CR N300 PTZ – BH: Amazon:

Canon CR N500 PTZ – BH: Amazon:

Elgato Stream Deck XL – BH: Amazon:

Netgear 8-port Unmanaged POE+ Network Switch: BH: Amazon:

Beryl Travel Router:

Yololiv Instream

Thoughts and Impressions on the Yololiv Instream

Having received the Yololiv Instream from our friends over at Yololiv, here’s a running summary of my thoughts on the device.

Updated 2/11/2023

Initial Impressions

  • Good size balance between easy to handle and transport, and screen being big enough to view.
  • Touch screen interface is a little tricky to navigate between the apps and the Instream console. Swiping up to reveal the Android navigation controls to switch apps or go full screen is easy to miscalculate – not something you’d want to get wrong mid livestream.
  • Managing and responding to comments in stream is challenging.
  • Device seems powerful and responsive.
  • Need to do more testing on the rendering quality of the “Crop” mode – initial impressions is that the 9:16 crop-in was not as sharp as anticipated – from what I see in the recording playback. This might be less noticeable on mobile, but doesn’t appear to be full 1080 lines.


  • Would like to be able to boot up the Instream to optionally run the Yolobox horizontal platform. Not sure what the tech limitations are here, but I can see that being valuable for customers to be able to use the hardware in a horizontal mode.
  • “Snapshots” feature: Once you have compiled a look (ie selected a PIP of two or more inputs, graphic background, lower third, countdown), have a “snapshot” button that will save the current layout (with the correct graphic layering) so that the scene can be switched back to with a single click during a show.
  • Screen Capture & Auto Thumbnail update – I want to pull screen grabs from program feed and save to SD card as a PNG/ JPEG. I use this all the time on the ATEMs when scheduling a future YouTube livestream – I’ll grab a still, and upload the image to be the program thumbnail. It would be amazing if Yolobox could automate this – with the option to update the scheduled livestream Thumbnail on YouTube, and to save the image to SD card. Additional option to automatically email the image to the user’s email address and a guest email address would help to work with the file immediately without having to eject the SD card.
  • Graphics: user-selectable option to place graphics in the background. Currently they are only foreground, but would help to have a full screen graphics in background by default to layer video inputs over the top.
  • FTP access of the SD card… i.e. use a laptop to load videos or graphics onto or off the SD card via the network, or copy off a program recording without having to eject the SD card.

Development Ideas

Yololiv Instream – livestreaming DJF Live to Instagram

  • Something I am still workshopping is how to optimize for a simultaneous Youtube and Instagram livestream – not the hardware, but the horizontal vs vertical design layout. Current easiest method is to scale down the 16:9 Youtube program to fit within a 9:16 letterbox crop for mobile. The problem is this makes for a very small viewing experience on a phone screen.
  • This is where integration with Companion could help – we could use Triggers to follow ATEM program commands and switch secondary outputs on the Yololiv Instream’s two HDMI inputs and graphics that is optimized for vertical.
  • For example, a mid shot of a presenter on CAM1 would go out horizontal to the ATEM. The Instream would be receiving the ATEM’s mix-effect 2 bus into HDMI1. Companion would know when CAM1 is in ME2 program, and would tell Instream to switch to the cropped-in version of HDMI1, so that the mid-shot is full screen.
  • The Instream’s HDMI2 could use a vertical chroma graphics source to overlay vertically optimized graphics. H2R Graphics output 1 would send horizontal to ATEM, and Output 2 would be aligned vertically and sent to Instream’s HDMI2, with a permanently-on chroma key applied.
  • Then if we cut to a two-shot (ie two people talking in the same frame) on CAM2 on the ATEM, Companion would tell the Instream to switch to a 16:9-within-9:16 layout so that full coverage is visible.


What has been your experience of the Yololiv Instream? What questions do you have about how it operates or is capable of?

Install VLC Playback Control on Stream Deck XL

Get the pre-configured DJF VLC Companion Profile (v1.1)

If you’re looking for a video and audio playback solution across multiple platforms, VLC is your answer!

This famous media player can pretty much handle any format you throw at it, so if your client comes to you with an obscure file a minute before showtime, you’ll be fine.

It’s very easy to drop files into the playlist and rearrange the cue list on the fly – all of which is updated on the Stream Deck instantly.

VLC Console Features

The DJF VLC Companion Profile has been thoughtfully designed to fit all essential playback features into a single page of a Stream Deck XL:

  • Time Of Day clock
  • Elapsed Time Counter (green)
  • Remaining Time Counter (red, with warning colors at under 10-seconds remaining)
  • Loop 1, Loop All, Full Screen buttons
  • Seek forwards/backwards by 1-second and by 10-seconds
  • Play, Pause, Stop, Next, Previous
  • Cue button, to load & pause the first frame of the next video
  • Playlist Cue buttons for 10 items (long-press to delete items from cue)
  • VLC Audio Volume increase/decrease audio volume by 5%
  • ATEM Audio button (for channel audio On/Off, and long-press for Audio-follows-video (AFV))
  • ATEM Auto and Cut buttons
  • Auto In & Auto Out Triggers, for automated Hyperdeck-like control with ATEMs (requires adding the triggers, as outlined below)


Stream Deck XL control of VLC Video Playback


Download VLC

Download the free VLC application ( for Mac, PC, Linux


Install Companion on your Mac, PC, or Raspberry Pi

Installation instructions for Mac and PC

Installation instructions for “CompanionPi” (a preconfigured Raspberry Pi 4 disk image)


Import VLC v1.1 Configuration file into Companion

Open Companion in your web browser (likely the local “” address, as per the “Install Companion” instructions above)

Within Companion:

  • Navigate tabs to Buttons > Import/Export > click on “Import
  • Find the “djf-vlc-1.0.companionconfig” file on your local drive that you downloaded from this website
  • Choose a blank page within your 99 Companion pages
  • Click “Import to page XX” to overwrite the selected page


Set up a Page Jump in Companion

By default, Button #1 (with the big “X”) in your new DJF VLC v1.0 profile will exit you out of the VLC playback page and take you back to Page 1 of Companion.

You can update this button to jump to any of Companion’s 99 Pages, but let’s use Page 1 as our default “Home page” that we will use to be about to access VLC.

  • In your VLC page, select Button #1 and copy using “Command+C”.
  • Navigate back to Page 1 (or type “1” in the page field and hit enter)
  • Select a new blank button on Page 1.
  • Press Paste (Command+V), and a copy of the “X” button will be created.
  • Select this new button, and rename “X” to “VLC” in the “Button text” field.
    • Under “Press actions“, navigate to the “internal: Set surface with s/n to page” action
      • Change the “Page” field to the page number that you installed VLC on to.

You’ve now created a navigational loop.

On your Stream Deck surface, you will be able to click into and out of the VLC Playback page.


Configure Companion to connect to VLC

In the Companion web browser, navigate to:

  • Connections tab > module > vlc > EDIT

Under the Edit Connections tab, ensure the following settings:

  • Label: vlc
  • Target IP:
  • HTTP Password (required): vlcpassword
  • Number of clip names to reserve: 10
  • Target Port: 8080
  • Increase timer resolution: Checked
  • Use • for empty: Unchecked

Alternative setup for VLC running on a remote computer:

  • If you are not running VLC on the same local computer as your Companion installation, you can change the Target IP to a different computer on your local network.
  • This helps if you want to have VLC running on a separate, dedicated computer, but be controlled by the main Companion installation.
    • Simply change the “Target IP” from the local address to the IP address of the remote computer (find that address in that computer’s network settings).


Configure VLC to connect to Companion

There are many playback behaviors you can customize within VLC. We’ll focus here on the main items to get you up and running.

General Preferences

In the VLC application, go to Preferences:

  • Interface tab
    • Playback Behavior:
      • Control external music players: Do nothing (select “Do nothing” if you don’t want external music sources to be affected by VLC control; otherwise, select Pause (or Pause and resume) to ensure there is no other audio source such as iTunes or Spotify competing with VLC).
    • HTTP Web Interface (at the bottom):
      • Enable HTTP web interface: Checked
      • Password: vlcpassword  (this is the matching password within the Companion Profile VLC module. If you use a different password here in the VLC application, make sure to update the password within the Companion VLC module to match).
  • Video tab:
    • Enable videoChecked
      • Display
        • Show video within main windowUnchecked
        • Pause the video playback when minimized: Unchecked
        • Float on Top: Unchecked (I prefer this off when I’m multitasking and doing web browser demos on my livestreams so that the VLC window can sit behind the browser, but if you are setting up VLC with a dedicated output and always want VLC to be in the foreground – usually in full screen mode – then check this)
        • Window Decorations: Unchecked (for a clean Picture-in-picture look if not using full-screen)
      • Fullscreen Settings
        • Start in fullscreen: Checked
        • Use the native fullscreen mode: Unchecked (very important to uncheck this, otherwise the OS will push the video full screen in whatever current display you are working in)
        • Black screens in fullscreen mode: Unchecked
        • Fullscreen Video Device: Select the output monitor
  • Subtitles / OSD tab;
    • Onscreen Display
      • Enable OSDUnchecked (important this is unchecked to retain a clean video feed, otherwise the filenames will appear at the start of a file’s playback)
  • Input / Codecs tab:
    • Codecs/ Muxers
      • Hardware decoding: Unchecked (Unchecking this can help if you are experiencing the first few seconds of playback being scrambled video)

Make sure you click “Save” at this point, or else VLC will forget your settings before moving on to the advanced features below. Also remember to quit and restart VLC for some of these settings to take effect. 


Advanced Settings (Preferences > Show All)

Open Preferences again and click the Show All button at the bottom of the panel to access advanced settings:

  • Interface > main interface > macosx:
    • Behaviour
      • Auto-playback of new items: Unchecked
      • Keep recent items: Checked
      • Show fullscreen controller: Unchecked
      • Resize interface to the native video size: Checked
      • Pause video playback when minimized: Unchecked
      • Lock Aspect Ratio: Checked
  • Playlist
      • Play files randomly forever: Unchecked
      • Repeat all: user choice (this can be controlled at-will within the DJF Companion profile button: “Loop All”)
      • Repeat current item: user choice (this can be controlled at-will within the DJF Companion profile button: “Loop One”. This is particularly useful if you are using VLC as a background music player and want a playlist of tracks to continue cycling through)
      • Play and exit: Unchecked
      • Play and stop: Unchecked (check this if you want the VLC playback window to disappear when the video finishes playing and reveal the desktop instead – useful for one-off video playback where you are using the same HDMI connection for desktop demos)
      • Play and pause: Unchecked (check this if you want the video to freeze on the last frame of video playback. Ensure this is unchecked if you want videos to play one after the next, or if you are using VLC as an audio playlist in the background and want all music tracks to continue without pausing)
      • Start Paused: Unchecked (checking this will allow you to “select” (or pre-cue) a video, but won’t begin auto-playback, nor will it show the first frame of video. If you select this option, you’ll have to select a video to playback and then also press play to being playback)
      • Autostart: Checked

Again, remember to Save, and to quit and restart VLC in order for the changes to take effect.


ATEM Input Audio Control

Now that you have the VLC control set up, let’s connect the video out from your computer to your ATEM switcher. This is likely an HDMI out from your computer, and an HDMI into a video switcher like the ATEM Mini/Pro/ISO, or Extreme.

By default, this profile is set to use VLC into Input7 on an ATEM (Mini, Pro, Extreme, Constellation, or any other ATEM).

If you want to select a different Input source on your ATEM to control the Audio button (On/Off/AFV (audio follows video)):

  • Navigate in Companion to > Buttons > Page X (whatever page you installed VLC on to) > Button #30
  • Change the button text “AUDIO\n$(atem:short_7)” to the input number you want (ie, if using an ATEM Mini which only has four inputs, you might want to change it to “AUDIO\n$(atem:short_4)”
  • Change the Input# on all the dropdown menus for all the Actions and Feedback commands to the Input number you are using:


Change the Input# on the Actions:

Then scroll down and also change the Input# on the feedback for Button 30:


Set Up Triggers for Auto In / Auto Out

To simulate Hyperdeck control, VLC can be set up within Companion to automatically play when the VLC input is put to program. It can also automatically auto-fade out when a video finishes playing.

Buttons #9 and #10 in the DJF VLC v1.0 profile turn on “Auto In” and “Auto Out” respectively. However, Companion can’t import their associated Triggers, so we’re going to set them up now manually to connect to these buttons.


This trigger presses play in VLC when it reads that the ATEM with the Input named “VLC” has been put into Program.

  • Navigate in Companion to > “Triggers” tab > click “Add New Trigger”
  • Name: VLC AUTO IN
  • Condition
    • Type: Feedback
      • + add Feedback: internal: Check variable value
        • Variable: Label of input active on program bus (M/E 1) (atem:pgm1_input)
        • Operation: =
        • Value: VLC (note: in the ATEM Software Control application, make sure the input that VLC is connected to is called “VLC”, since the input label needs to match this Value) 
      • + add Feedback: atem: Tally: Program
        • Input: (select your relevant input number if not Input 7)
  • Action
    • + add action: vlc: Play



This trigger will perform an AUTO transition when the playback time remaining reaches 00:00:02… AND only when it also reads that VLC Input# is present in the Program Tally (in order to avoid an unwanted AUTO if previewing off air). 1 second later, VLC will pause the video so it doesn’t continue to play audio in the background.

Make sure your video files don’t have any mission critical audio within the last 1 second.

  • Navigate in Companion to > “Triggers” tab > click “Add New Trigger”
  • Name: VLC AUTO OUT
  • Condition
    • Type: Feedback
      • + add Feedback: internal: Check variable value
        • Variable: Playing time left, HH:MM:SS (vlc:r_hhmmss)
        • Operation: =
        • Value: 00:00:02
      • + add Feedback: atem: Tally: Program
        • Input: (select your relevant input number if not Input 7)
  • Action
    • + add action: atem: ME: Perform AUTO transition
      • M/E: M/E1
    • + add action: vlc: Pause/ Resume
      • Delay: 1000ms


2ME Constellation ISO Portable Rack


20-inputs, 12-outputs, 2-wheels…

Portable live streaming case with 8-channels of 1080p60 recording. Full equipment list below.

I upgraded from the ATEM Mini Extreme ISO to the ATEM 2ME Constellation HD, plus a new ATEM SDI Extreme ISO for full SDI-workflow for backup recording and streaming.

Most of all, I wanted the equipment to still fit within my SKB 4U Studio Flyer Case so that transportation remained easy.



00:00 What’s inside?

00:37 SKB 4U Studio Flyer Rack Overview

01:49 Breakaway fan & panels for internal access

02:49 Timelapse of the rack build

04:54 Internal photographs of rack power & converters

06:13 Stream Deck control panel

06:50 Use to plan your rack build

07:43 2ME Constellation HD MultiViewer loop back

08:15 Get the equipment list from




Here’s a breakdown of pretty much everything inside the rack….down to the thumbscrews.

How much? This whole rack build was approximately $8K USD, excluding any taxes.


Rack Case SKB 4U ISeries Studio Flyer

Rack Shelf 1U 14.5-inch Middle Atlantic

Power Filter

AC Power Strip 8-Switch

Exhaust Fan 1U Rackmount AC Infinity CLOUDPLATE



Front Patch Panel

Rear Patch Panel



ATEM 2 M/E Constellation HD


HyperDeck Studio HD Plus

BMD Web Presenter 4K

GL.iNet GL-AXT1800 (Slate AX) WiFi 6 Router

Netgear GS116PP 16-Port Gigabit PoE+ Compliant Unmanaged Switch



Elgato Stream Deck XL

Stream Deck Pedal

Raspberry Pi 4

Raspberry Pi 4 Case



Bi-Directional SDI to HDMI 3G Micro Converter

HDMI Splitter 1×2

60W USB-A Charging Hub 6-Port 12A

100W USB-C PD Charger

12V 5A 60W AC to DC Power Converter 100V~240V, 5.5×2.5mm (for ATEM Mini/ Extreme)



USB-A to USB-C 1-Foot Charging Cable

1-ft Figure-8 Short Power Cable IEC320 C7

1-ft IEC 18AWG Universal Power Cord

12V DC Power Connector

12v Switch

DC Power Supply Jack Socket Connection 5.5mm x 2.1mm

DC Power Adapter Cable – 5.5mm x 2.1mm Female to 3.5mm x 1.35mm Male (for Avinair HDMI Splitter Power Adapter)

POE Splitter 48V to 5V 2.4A USB-C Adapter (to power Pi from POE Switch)



CAT 6 Ethernet Patch Cables

SDI Patch Cables

HDMI Patch Cables

USB 3.0 A to B Cable 3 ft

USB-C Female-to-Female Adapter

USB-A Male to USB-C Female Adapter



Quick-Release Rack Thumb Screws #10-32 x 1/2″

Clear Zippered Pouch (fits inside SKB Studio Flyer Rack)

Hard Zippered Case (fits inside SKB Studio Flyer Rack)

Dual-Lock Velcro

Companion Satellite

What is Companion Satellite?

Companion Satellite is a sister-application that connects your Stream Deck back to your original Companion installation, allowing you to control your production equipment over the local network, or even across the internet.

Use a Stream Deck to direct your next production remotely with Companion Satellite

Use a Stream Deck to direct your next video production remotely with Companion Satellite



Install Companion

Before we get to the Satellite application, Companion itself is an application that runs on Mac, PC, and even Raspberry Pi to control over 200 brands of live production equipment on your local network – think ATEM Switchers, PTZ cameras, video playback, audio faders, timers, PowerPoint presentations and more. It centralizes the control of all your production gear into a single (or multiple!) Stream Decks.

The computer you choose to install Companion on to needs to be accessible to the other production devices on your local network. For example, Companion is installed on my Mac, which has the IP address, and it speaks to my ATEM Mini Extreme ISO which has the IP address

Typically in this scenario, the Stream Deck is connected via USB directly to the host computer. Therefore, the distance between the two is limited by the length of the USB cable (3-10 feet).

However, I can access Companion’s interface on my Mac installation from any other computer connected to the network, by opening up a web browser and typing in the address (the “:8000” indicates the port number).

If this is new to you, here’s a previous blog post I wrote about how to install Companion.


Install Companion Satellite

But what if we want to use the Stream Deck surface at a different desk, or in a different room, or in an entirely remote location?

This is where the magic of Companion Satellite comes in.

Similar to how we could use a remote computer’s web browser to connect to the original Companion installation, we can use Companion Satellite on a remote computer to connect your Stream Deck’s USB surface back to the original Companion installation.

On the remote computer (connected to the local network):

  • Connect your Stream Deck via USB to the remote computer
  • Open Companion Satellite (the icon will appear in the upper right task bar on a Mac)
  • Click “Change Host”, and input the IP address of the computer running the original Companion installation (remember, in my example, this was
  • Double check that “Change Port” is set to the default port number of 16622

Now the buttons on your Stream Deck attached to the remote computer will reflect the layout of the original Companion installation, and you can control your production remotely across the network.

If you are outside of your local network, connect via your VPN to be able to control your production over the internet.

MultiViewer Over Zoom

One last bonus step, if you use an HDMI-to-USBC webcam adapter (such as the CamLink4K), you can send your MultiViewer through a video conferencing service like Zoom (for low-latency), and you now have a truly remote switching solution so you can direct a live production outside of the studio.

Remote switching a live production with MultiViewer over Zoom and Stream Deck control via Companion Satellite

Three Tips to make the Canon R5C a Pro Video camera


TL;DR: XLR Audio, Power/Rigging, and Focus Tracking…

Where we came from and where we’re going

As a filmmaker and photographer, I spent many years building up a collection of EF-mount lenses. The crossover of photo-video utility was only partly a financial consideration. It was mostly about the simplification of transportation, storage, and inventory management.

Back in the glory days of Canon 5DmkII (hushed tone…basically celluloid), filmmakers would franken-rig it with another blockbuster indie device: the Zoom H4n. The 2-channel XLR input ran on two AA’s and had appalling battery life. It was an anxious device to use.

The Zoom H6 that followed was much more robust. It still sits in my kit to this day as a backup audio recorder. But for small gigs, such as an interview setup, it never solved the need for balanced audio inputs direct to tape. (“tape”…)

Enter the Canon Cinema line, accepting EF glass and XLR inputs.

We rented the C300 a lot for commercial and doc work, and C100 for cheaper multicam event work. I finally purchased the C200 back in 2017 and enjoyed the crossover compatibility with the EF glass from my 5D3/4 series of photography bodies.

With Canon transitioning to the new RF-mounts since 2018, it placed the lineage of EF investments in a peculiar position. EF glass can be adapted to RF camera bodies, but not vice versa. Therefore, as I continue to purchase new RF lenses, my C200 is obsolete.

I never fell in love with the C70 due to its smaller sensor size, “DSLR-body” shape, and mini-XLR inputs.

But the Canon R5C… now there’s an interesting proposition.


The new Hybrid King for the decade

This moment harkens back to the 2008 Canon 5DmkII days, when a photo camera declared it was more than a single image.

The Canon R5C is a 45-megapixel beast smiling at you like Inigo Montoya in a sword fight – the “C” portion of “R5” declaring it is not left-handed, but rather 8K60p RAW.

It gives me what I need as a photographer, and as a filmmaker, the codecs alone outstrip my C200.

However, while it works as promised out-of-the-box in photo mode, there’s one major crippling factor to the R5C being a Cinema boy-wonder (person-wonder): power.

It just burns through juice. Brand new LPE6NH batteries are supposed to give 40-min, but in the real world it’s more like 25-min… even if you’re not recording (Canon: firmware update??). And if you put in an older gen LPE6N battery, you’ll be lucky to get 5-10min.

Remember that anxiety-inducing Zoom H4n recorder?

With that in mind, on today’s livestream we will look at three tips to turn the Canon R5C into a pro video camera.



I’m not sure I love the Tascam CA-XLR2d hotshoe adapter just yet, but so far it does bring in XLR input into the Canon R5C as promised.

The design feels plasticy and cheap, it’s too big (and yet too small), and there is no digital meters or feedback that you are hitting levels correctly. There’s not even any feedback in the Canon menu to let you know the hotshoe is seated correctly.

I wouldn’t put too much weight on it, and it’s disappointing that it cuts out the possibility of a top handle, unlike the Sony FX3 handle.

I’ve also heard anecdotally from friends who own the unit that unplugging microphones while the phantom power is on can fry the unit… goodbye $500.

The two main pros are: power via the camera (one less power source to manage, phew!), and all the physical buttons are easy to access.

(The other pro is that when you remove the Tascam unit it, there’s no added bulk to a photo stills body…)

This audio device is in the category of Gets The Job Done. Here’s an affiliate link in case my tepid response hasn’t put you off:



This one will cover a couple of areas for getting around the R5C’s power limitations, including on a gimbal, on an interview rig, and for live streaming, so you’d better tune in!

Here’s the gear we’ll cover:

  • DJI RS3 Pro Combo Gimbal (Amazon)
  • Zitay LP-E6 Dummy Battery for DJI RS2/RS3 (Amazon)
  • FXLION Nano Two 98Wh V-Mount Battery (Amazon)
  • SmallRig Mini V-Lock (Amazon)
  • SmallRig Nato Clamp (Amazon)
  • SmallRig Base Plate (Amazon)
  • SmallRig 12-inch 15mm Rods (Amazon)



This tip is more of a general how-to, but understanding how the focus works on the R5C is critical to understand to avoid chasing your tail on set.

When you have the focus modes dialed in, you will make the most out of the camera, whether running with a gimbal or dialing in a super-shallow DOF during an interview, and can instantly switch between auto/manual, eye-tracking/ point-tracking.

Many people are familiar with the R5 photo menu’s approach to focusing – the capability is also there in the Cinema menu, you just need to know what to look for in the setup.



Any questions about Canon R5C or my studio setup?

Ask me live on air…

See you at the top of the hour!



YoloBox Pro

Thoughts and Impressions on the YoloBox Pro

Having just received the Yolobox Pro from our friends over at Yololiv, here’s a running summary of my thoughts on the device.

Updated 2/11/2023:

Initial Impressions

  • Smells like a new pair of shoes!
  • There is no AC adapter…Only the USB C and A cables. The PD intake is finicky and does not accept all USBC chargers. Seems to want a 5v 2.4A output – a charger should be included.
  • Would like black power cables – white stands out too much when the YBP is in the camera shot
  • Case construction is plasticy, but feels solid. Heavier than I had anticipated!
  • I like that it can sit flat on a surface and the fan grill is not blocked

Notable Wins

  • Compact form factor and swiss army knife of connectivity is an obvious win – this device is unique in its category
  • Bringing in and displaying user comments is easy
  • The ease of emailing a link and bringing in remote guests looks promising

Feature Requests

  • #1 request: open up OSC control, build module integration with Companion. To avoid having to re-set up control between shows, the Companion module would need to remember to connect to the same inputs (HDMI inputs, webcam, PIP layouts, graphics, video playback, graphics etc). Use case: I currently run my PTZ camera moves, lighting cues, audio fades and video playback via Companion cues. Being able to build Yolobox into companion would mean being able to switch camera angles, mute/unmute audio, show/hide comments and graphics, start/stop a stream or recording.
  • “Snapshots” feature: Once you have compiled a look (ie selected a PIP of two or more inputs, graphic background, lower third, countdown), have a “snapshot” button that will save the current layout (with the correct graphic layering) so that the scene can be switched back to with a single click during a show.
  • Building on the “snapshots” feature, have a Switching page with assignable Inputs 01-99…. Camera angles, supersource layouts, video playback, still images etc. So that you can recall shows and map it to a console, and ensure that a remote control like Companion remains linked to the correct inputs.
  • Add video conferencing platforms such as Zoom, Google Meet, and Skype. Use case: even in non-livestreaming productions, we often have to bring in remote clients to view a field shoot. Using a laptop is cumbersome on location. Being able to boot up the device to run Zoom natively would extend the usecases for the Yolobox.
  • Screen Capture & Auto Thumbnail update – I want to pull screen grabs from program feed and save to SD card as a PNG/ JPEG. I use this all the time on the ATEMs when scheduling a future YouTube livestream – I’ll grab a still, and upload the image to be the program thumbnail. It would be amazing if Yolobox could automate this – with the option to update the scheduled livestream Thumbnail on YouTube, and to save the image to SD card. Additional option to automatically email the image to the user’s email address and a guest email address would help to work with the file immediately without having to eject the SD card.
  • Graphics: user-selectable option to place graphics in the background. Currently they are only foreground, but would help to have a full screen graphics in background by default to layer video inputs over the top.
  • FTP access of the SD card… i.e. use a laptop to load videos or graphics onto or off the SD card via the network, or copy off a program recording without having to eject the SD card.
  • Remote director login – use case: send a camera operator to an event (with 2-3 cameras and the YBP), and then I can switch & direct remotely from home by logging in through the yolocast platform to the specific Yolobox device. Even locally in the studio, I would use a similar feature like that to be able to control and monitor the Yolobox via my Mac on the local network: ie, through a web browser, manage connectivity settings, comments, graphics, monitor stream health, manage media on the SD card, switching ability, and depending on bandwidth, a low-data-rate multiview of Program & inputs. This would help for solo-presenter modes to be able to control the YBP from a web browser on a tablet, and monitor and action comments remotely.
  • Would like to long-press-and-drag to arrange menu Icons in order of priority, in case I want easier access to the audio or switching controls during a show.
  • When in the “Full Screen” view of the monitor, would like to be able to view and select comments for on-air display as a screen overlay.


  • Need to be able to access network settings while remaining in an active live stream to be able to troubleshoot any internet/network issues that may arise.
  • *Need to test again with 2023 firmware updates: Forgets AFV Audio settings. Livestreams sessions do not remember audio parameters. For instance, I want it to remember HDMI 3 audio in, have AFV off by default, and to have my webcam audio Off.
  • Want Bluetooth access for keyboard – I like the way Apple computers automatically remember the bluetooth pairing connection after plugging in and then disconnecting a USB cable
  • Live stream event description is not automatically copied to the resulting Facebook post (just shows up on Facebook as DESCRIPTION)
  • Headphones have weird noise when scheduling a livestream on the white startup page
  • Can’t stream Privately to FB if you want to test the settings. Have to post publicly, which notifies everyone, then go to Facebook in a web browser and change to private.
  • On Facebook, kept getting “Update abnormal privacy status, please click the distribution switch button to redistribute; Or the user id has expired, please re-bind your Facebook account”. However, after rebinding, error message still appears.
  • Fan is loud for a presenting environment. Because it is touch screen controlled, it needs to be placed within arm’s reach, which places the fan in front of the microphone. Remote control (Companion, Stream Deck, OSC etc) would enable placing the screen at a distance.

“Invite Guests” Feature

YoloBox’s ability to invite guests on to a livestream shows a lot of promise. These are a few findings after using it live:

  • Need a field in the web browser for guests to enter their name when they join. Currently they just show up as “GUEST42” etc. If the host doesn’t know their name (ie, a drop-in show) then there’s no way to differentiate between the “Guests”.
  • If a guest drops off, the whole screen (even if the guest was part of a 2-UP/3-UP composite) goes black. Need to retain local HDMI source active in a 2UP, or have a default HDMI source to automatically switch back to.
  • Need a more intuitive 2UP/3UP/4UP/5UP/6UP layout if a solo presenter/streamer is going to use the feature. Takes too long while on air to build composite shots.
  • 8/12/2022: Experienced the whole YoloBox Pro crashing mid-livestream while trying to bring a composite of a Guest on screen. Need an intuitive recovery mode, since when re-entering the session, the “stop livestream” button was active, even though it was no longer streaming. Without wanting to close out the session and lose the audience currently watching on YouTube and Facebook, I was able to “pause” the livestream (rather than “Stop”), and then restart it again. Took two goes at this before it started streaming to Facebook again.
  • Guest invite list – would like to remember contacts in Most Recent address book – perhaps even sync to Google Contacts.

Ongoing Log

  • 08/23 – Yolobox Pro won’t allow a livestream to be scheduled more than 7 days in advance. Need to be able to schedule further than 7 days…what about recurring shows?
  • 08/23 – Bug: again discovered Guests appearing on the show with their audio active, even with the “mute guest audio on entry” button enabled, and even with their audio channel settings muted.

Resolved Questions or Bugs

  • Resolved – Does the audio bell notification of power connected/disconnected play through to program? Or just headphone monitoring? It does not – I tested this on my first livestream and the audio “ping” when power is reconnected only comes through headphone monitoring, not on to program.
  • Resolved – Forgets HDMI Program Out setting.
  • Resolved – Forgets USBC Out
  • Resolved – Forgets encoding settings and resets it to default 3000kbps. YouTube’s recommended rate is 4500, so I’d like YBP to remember that when it has been set.
  • Added – Would like to be able to filter comments by platform source (currently available), but also all platform comments aggregated by time – so that you don’t miss a comment on a different platform.


Do you have any input on your own experience with the YoloBox Pro? Comment below!


Companion on a Raspberry Pi 4

When you run Companion on a dedicated piece of hardware like a Raspberry Pi 4, it ensures the central control of your live streaming production is “always on”. Your laptop is freed up to be disconnected/reconnected from the network as needed, and Companion will continue to operate unhindered.

This article will show you how to install a simple “headless” setup of Companion. Headless means the Pi will operate as a server on the network, without a display, keyboard, or mouse. You already have those peripherals on your desktop anyway! So this solution will take up minimal space with low power consumption.

We can then connect a Stream Deck to the Pi via USB for tactile control at your fingertips. And we can still very easily access Companion’s button settings from a laptop web browser, connected to the same router via ethernet or WiFi.




Run CompanionPi with minimal setup: power, Pi, and microSD card.

Hardware Requirements

  • Raspberry Pi 4 (4GB or 8GB) (Optional: protective case)
  • microSD card (32GB or greater capacity. Make sure you get the “A2” rating, such as the 64GB SanDisk Extreme PLUS)
  • 15W USB-C power supply (5v, 3A – example here)
  • Other hardware assumed to be in your setup:
    • A Mac or PC to set up the Pi (in these instructions, I will refer to Mac, but the same can be achieved on PC)
    • A router & ethernet switch



Flash the microSD card

  • Insert the microSD card into your computer.
  • Use Raspberry Pi Imager to “flash” (copy) the entire CompanionPi Disk Image to the microSD card.
    • Operating System > Choose OS > scroll to bottom and select “Use custom” > then select the CompanionPi Disk Image you dowloaded previously
    • Storage > Choose Storage > choose the microSD card you inserted
    • Click “Write”
  • Eject the microSD card from your computer and insert it into your Raspberry Pi 4.

Connect the Raspberry Pi to the Network

  • Insert the flashed microSD card into the Pi
  • Connect the Pi to your router/switch via ethernet cable
  • Connect the Stream Deck to the Pi’s USB3 port (blue inner lining)
  • Connect USB-C power to the Pi
    • The first boot-up will take a bit longer, and the Stream Deck screen will flash a few times
    • The Pi has fully booted up when it displays Companion’s blank “Page 1” buttons

A “headless” CompanionPi, without keyboard or monitor.

Configure the Raspberry Pi Settings via Computer

Use the Terminal Application on a computer that is connected to the same router as the Pi.

Log into the Pi:

ssh pi@companionpi.local

(unless changed, the default password is: raspberry)

Find the Raspberry Pi’s IP Address:

ip r

Make a note of this IP address!

Configure the Pi:

sudo raspi-config

This will open up a graphical settings menu, which is easy to navigate with arrow keys and Enter:

Use the command “ip r” to reveal the Raspbery Pi’s IP Address

  • Set a Secure Password
    • 1 System Options
      • S3 Password
        • Change the password for the user “Pi”
          • <set a secure password>
          • (make a note of this password as you will need to use it next time you ssh back into the Pi)
  • Set the Country
    • 5 Localisation Options
      • L1 Locale – set your location
      • L2 Timezone – set your timezone
      • L3 Keyboard – match your keyboard layout (optional)
      • L4 WLAN Country – set legal wireless channels for your country


Access Companion’s Web Interface

Now that you have CompanionPi up and running, you will access and build your button layouts via your computer that is connected to the same network as the Pi.

Remember the Raspberry Pi’s IP Address you made note of in the previous step? Open a web browser and type that in, and append the port number “8000”.

For instance, mine was:

And that’s it! Enjoy the extensive control of your live productions!


Update CompanionPi

If a new version of Companion becomes available, you can update easily, without having to go through flashing the image process.

Open the Terminal Application on your computer and type the following:

ssh pi@companionpi.local   (hopefully you changed the password by now, otherwise the default password is: raspberry)

Once you have logged into the Pi, type the following command to run the update:

sudo companion-update



  • Make sure the Stream Deck is plugged in before you power on the Pi. If the USB connection is disconnected, cycle the Pi’s power to reboot the Pi, since CompanionPi will search for Stream Decks on startup.
  • Add a button to Companion with the variable text $(internal:all_ip) to show all IP addresses available. That way, if you ever move the CompanionPi to a different network (ie between the studio and a location shoot), you will be able to see at a glance what IP address has been assigned to the Pi on the new network, without having to connect a laptop to ssh in to check.
  • Once you have CompanionPi up and running on your network, use Companion Satellite to connect a Stream Deck to any other computer. That way you can maintain a single Companion installation from a distance.
    • For instance, say you have CompanionPi running permanently in a rack. Then you connect your laptop over Wifi, and a Stream Deck to that laptop. Using Companion Satellite, you’ll enter CompanionPi’s IP Address to operate your production remotely (because you like coffee breaks from the outdoor sofa).

Install DJF Companion Profile

Companion runs on Windows, Mac, and Pi.

Here’s a consolidated list of software downloads for the 6 Segments we will dive into below:

  1. Companion 3.1.2
  2. Blackmagic Switcher Software 9.1.2
  3. Stream Deck 6.1.0
  4. VLC 3.0.18
  5. VICREO 5.0.1
  6. H2R Graphics 2.14


** UPDATED November 2, 2023 **


Download Companion:

  • The DJF Companion Profiles require running Companion 3.1.2 or later to support the most up-to-date features and modules.


Open Companion

  • Companion’s Web Server icon will be in the top-right menu bar. Click it to open the tray.
  • Check the server is running locally on (easiest setup).
  • Set the Port to 8000
  • Launch GUI in a web browser.

Install the DJF Companion Profile

  • Navigate tabs to Buttons > Import/Export.
  • If you already have your own custom Companion setup, click “Export” to save a backup of your profile first!


  • Replace Current Configuration (recommended)
    • Select Import. Choose the DJF Companion Profile file (ends with “.companionconfig”)
    • Select “Replace current configuration”.
      • **Note that this will wipe all existing Companion pages, so make sure you’ve backed up any essential work first!

  • Individual page import (not recommended)
    • Note that the DJF Companion Profile pages are heavily inter-connected, hence it is recommended to “replace current configuration”. While you can copy and paste buttons quite easily after the initial “replace current configuration”, importing individual pages will require manually updating the Page-jump actions, plus you must be careful to target the correct instance label of a module when importing.
    • If you still wish to import individual pages, note that there are also several “backend” service pages need to be imported to very specific pages to maintain integrity:


        • Backend service pages for v3.1:
          • Extreme………..Pages 55, 56, 57, 58
          • Pro………………Pages 83, 84
          • PTZ……………..Pages 86, 87
        • Backend service pages for v2.5:
          • Pro………………Pages 22, 23


    • Once those backend pages have been imported to their specific page numbers, you can import individual pages to any other Companion page.
      • If dealing with a dual profile that contains both ATEM Extreme and ATEM Pro, make sure you target the correct instance (i.e. “ext-atem” and “pro-atem” are completely different implementations of the same ATEM Module).
      • Note that any Menu or Page-jump buttons will need to have their action “Set surface with s/n to…” updated manually.
    • For example, if you wanted to import the Extreme’s VLC page:
      • Import DJF Companion Profile Pages 55, 56, 57, 58 to their respective Pages, 55, 56, 57, 58 in your Companion profile.
      • Import the Extreme VLC (Page 30) to whatever blank page you have available in your configuration.
      • Update the Page-jump button actions (ie VLC Page’s Button #1) to target your configuration layout.


Set ATEM Module’s Target IP Address

    • Under the Connections tab, click “Edit” for the “atem Blackmagic Design” module. Update the Target IP to the IP address for your ATEM Mini/Pro/ISO, and for your ATEM Mini Extreme/ISO if running dual systems.
      • **Note: it is recommended to keep the connection labels the way they are (i.e. “ext-atem” and “pro-atem” etc.) Changing the connection label names will update most – but not all – variable names, and will leave some button text (i.e. the BLK button) unable to find the new name.
      • **Note: you can find the ATEM IP using BlackMagic’s “ATEM Setup Software”. Setting a static IP address is recommended.
    • All other modules (VLC, H2R, VICREO, OSC) are pre-set to local and don’t need to be changed.

Set the Home Page

    • Under the Surfaces tab, click the green “Settings” button for the “Elgato Streamdeck Plugin” (or the actual Stream Deck serial number, if running Companion solo).


        • Slide the Page number for your specific profile’s HOME PAGE
          • DJF PROFILE v3.1
            • 32-button Extreme…………………..PAGE 1
            • 32-button Pro…………………………PAGE 66
            • PTZ……………………………………..PAGE 88
            • Vertical Pro…………………………….PAGE 96
            • Vertical Extreme……………………..PAGE 98
          • DJF PROFILE v2.5
            • 32-button Pro…………………………PAGE 1
            • 15-button Pro…………………………PAGE 31
            • Vertical Pro…………………………….PAGE 71

Make Changes to Companion’s Settings

    • “Remove the Topbar on all buttons”:
      • Go to Companion > Settings > Navigation Buttons > “Remove the topbar on each button” > SELECT “Enabled”.
      • **Note that the PNGs and text layout on the DJF Companion Profile buttons have been designed for the full 72 x 72px.m The buttons will look squished unless you remove the topbar.
    • “Enable OSC”:
      • Go to Companion > Settings > OSC > SELECT “Enabled”.
      • Set the OSC Listen Port to “12321”.


    • If your Stream Deck is plugged in but the Companion buttons are not showing up, go to Companion’s “Surfaces” tab, and click “Rescan USB”
    • If you’d like to run this without a the actual Stream Deck hardware (i.e. use it on a computer or tablet instead), click on “Emulator” in the top left corner. Locally, the address will be
    • If there’s a conflict while running Elgato Stream Deck’s native software simultaneously with Companion, quit both applications.
      • Then try opening Elgato’s Stream Deck software first;
      • then starting the Companion server secondly.
        • (Make sure the Companion Plugin within the native Elgato Stream Deck app has been installed – see “Stream Deck” installation instructions below).


Recommended Hardware:

Canon CR N300 PTZ – BH: Amazon:

Canon CR N500 PTZ – BH: Amazon:

Elgato Stream Deck XL – BH: Amazon:

Netgear 8-port Unmanaged POE+ Network Switch: BH: Amazon:

Beryl Travel Router: