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: https://bhpho.to/3td1dbG Amazon: https://amzn.to/3GQD68l

Canon CR N500 PTZ – BH: https://bhpho.to/3aq6yG3 Amazon: https://amzn.to/3zl9gY0

Elgato Stream Deck XL – BH: https://bhpho.to/3tkNnnF Amazon: https://amzn.to/3xfqGCK

Netgear 8-port Unmanaged POE+ Network Switch: BH: https://bhpho.to/3NoQRO6 Amazon: https://amzn.to/3zfKTed

Beryl Travel Router: https://amzn.to/3MqCdnX