DEVELOPER DOCUMENTATION

Installation and IT

Install Bernard Review on Windows and Linux, the ports to open, offline use, and where settings, the log and crash reports live.

This page is for the people who manage a studio's workstations. The player downloads for free, without an account, from the website's download page, with the SHA-256 fingerprint of each file.

Windows

  • System: Windows 10 or 11, 64-bit; an OpenGL 3.0 or later graphics card (NVIDIA recommended for 4K and EXR).

  • Installer: BernardReview-<version>-win64.exe, run by an administrator. It installs into C:\Program Files\Bernard Review, the program being bin\BernardReview.exe, and creates the Bernard Review Start menu entry.

  • Silent installation (deployment tools, scripts): /S installs without a window; /D= chooses the folder, and must come last, without quotes, even with spaces:

    start /wait BernardReview-<version>-win64.exe /S /D=C:\Program Files\Bernard Review
    echo %ERRORLEVEL%

    The exit code says what happened:

    CodeMeaningWhat to do
    0installednothing
    3the player (or any program of its folder, the streaming companion included) is open from the installation folder: the installer stopped at once and wrote nothingrun the installation again once the player is closed

    A player opened from another folder does not stop the installation. The installer never closes the player itself: a review not yet saved would be lost. In PowerShell, (Start-Process .\BernardReview-<version>-win64.exe -ArgumentList '/S' -Wait -PassThru).ExitCode reads the code.

    A silent installation uninstalls an old BernardPlayer without asking. When it finds one of the first BernardPlayer versions (a folder C:\Program Files\BernardPlayer <version>), an interactive installation asks whether to uninstall them first; /S answers yes for you, and runs their uninstallers silently. Deploy over such a workstation knowing it, or remove them beforehand. /NOASSOC installs without writing any file association, whatever the components page would have chosen (a pipeline that decides itself which files open in the player).

  • Firewall: the installer adds the inbound rule Bernard Review (LAN sessions) for the program, on the Domain and Private profiles only, never Public (and Bernard Review (stream companion) when it ships the streaming companion). Uninstalling removes them.

  • SmartScreen: the installer is not code-signed yet, so Windows may show "unknown publisher". Check the fingerprint first:

    Get-FileHash -Algorithm SHA256 .\BernardReview-<version>-win64.exe

    then More info and Run anyway.

  • Application control (AppLocker, WDAC): the program is not signed; a rule by path or by hash applies, and a hash rule must be renewed for every version.

Linux

For RHEL 8, 9 and 10 compatible systems (Rocky Linux, AlmaLinux, Red Hat Enterprise Linux), on x86-64 processors.

  • RPM package, for every user of the workstation (administrator rights):

    sudo dnf install ./bernard-review-<version>-Linux.rpm

    The command is bernard-review.

  • Self-extracting archive, in your home folder, without administrator rights:

    mkdir -p ~/bernard-review
    sh ./bernard-review-<version>-Linux.sh --prefix=$HOME/bernard-review --exclude-subdir
    ~/bernard-review/bin/bernard-review
  • DEB package for Ubuntu: coming soon, once tested on Ubuntu.

  • Dialogs: file choosers come from the desktop (zenity, kdialog or qarma); the package recommends zenity. If none is installed, the player says so at startup and again when a dialog is needed: sudo dnf install zenity.

  • Camera RAW (RED, ARRI, Blackmagic RAW): Windows only for now; Linux and macOS coming soon.

macOS: coming soon.

Network

The player works fully offline for playback, annotation, export and sessions on the studio network: no internet connection is needed.

PortDirectionWhenTo open
TCP 9000inbound, from the studio network or the VPNwhile this workstation hosts a review sessionon the host only
TCP 5556loopback (127.0.0.1)always: the automation port, see Python API and IPCno
TCP 8080loopbackduring a Google account sign-in, five minutes at mostno
TCP 443 outboundto the tracker's sitewhile you use the Tracker windowdepending on your proxy

A guest needs no inbound port: all its connections are outgoing. A "this computer only" session listens on the loopback only.

Opening port 9000 on Linux. The packages ship the definitions, never enabled:

# firewalld (Rocky Linux, AlmaLinux, RHEL)
sudo firewall-cmd --permanent --zone=<zone> --add-service=bernard-review
sudo firewall-cmd --reload
# ufw (Ubuntu)
sudo ufw allow from <subnet> to any port 9000 proto tcp

Replace <zone> with the internal network's zone and <subnet> with the studio's. If a Group Policy (GPO) manages the Windows firewall and ignores local rules, add the rule in the policy: TCP 9000 inbound, for the program, Domain and Private profiles.

Online sessions. They go through the service's relay, with outgoing connections only:

DestinationPortRoleTo open
review.bernardengine.comTCP 443HTTPS and WSS: synchronization, the guests' web page, video signallingyes
turn.review.bernardengine.comTCP 443video and voice when nothing else gets throughyes, if only 443 is open
review.bernardengine.comUDP 50000-50100live video and voicerecommended
review.bernardengine.comTCP 7881video and voice fallback when UDP is closedrecommended if UDP is closed
turn.review.bernardengine.comUDP 3478TURN over UDPoptional

With outbound TCP 443 to those two names alone, everything works, with a little more latency. A proxy must allow CONNECT to those names on port 443, leave them out of TLS inspection and not cut an idle connection in under 120 seconds. To check from a workstation:

curl -sS https://review.bernardengine.com/api/v1/health

The expected answer contains "status":"ok".

Trackers. Kitsu, ftrack and Flow are reached over HTTPS at their site's address, through the site's proxy or the environment's (HTTPS_PROXY, NO_PROXY). The certificate is always verified, against the system's store or the site's certificate-authority file.

Where settings and the log live

SystemProfile folder
Windows%APPDATA%\BernardReview\
Linux~/.config/bernard-review/ (or $XDG_CONFIG_HOME/bernard-review/)

It holds, among others:

  • player_debug.log, the log: it records real events only (clips loaded, decode errors...) and rotates to player_debug.log.1 past 8 MB;
  • crashes\, the crash reports: a .dmp minidump on Windows, a .txt text report on Linux, named crash-<date>-<time>-<version> in UTC. Only the five most recent are kept. The log's last line names the report written;
  • session_config.json (preferences, last session), keymap.json (shortcuts), naming_rules.json (the Version Board's naming rule), trackers.json (tracker sites, without secrets), and the color_presets, export_presets, export_recipes and tracker-media folders.

To report a problem, Help > Send Log to the Bernard Team... shows exactly what would leave the machine (the log, the newest crash report only if you tick it, the version and the system), takes an optional note, and sends nothing until you click Send; it then gives a report ID to quote. Without network, Open Log Folder lets you send the files another way. After a crash, the next start asks first. Help > About... > Copy System Info copies a summary of the machine and the libraries, without user name, machine name, path or address.

Diagnostics. BERNARDPLAYER_VERBOSE=1 in the environment adds detailed tracing (remove it afterwards). BERNARDPLAYER_NO_CRASH_HANDLER=1 lets a debugger catch the crash. Launching with --self-crash crashes on purpose, to check that a report is written.

set BERNARDPLAYER_VERBOSE=1
"C:\Program Files\Bernard Review\bin\BernardReview.exe"

Secrets. Tracker secrets go to the system's credential store (Windows Credential Manager, the Secret Service on Linux). Account sign-in data is encrypted with DPAPI on Windows.

Screen sharing

If a remote-access tool or a screen share (Splashtop, Teams, OBS) receives fullscreen playback jerkily on Windows, tick Present through DWM (smooth screen sharing) in the preferences while you share. It is off by default: it costs a few repeated frames on the local screen.

Coming from BernardPlayer

The player was called BernardPlayer in earlier versions. The installer replaces the old installation, and the first start copies the old settings folder (%APPDATA%\BernardPlayer, ~/.config/bernardplayer) without changing it. BernardPlayer.exe and bernardplayer still start the player for a transition period: scripts that kill the program by name should name both.

Going further: the complete manual, parts 12 and 13 (Help > User Guide in the player), and the site's page for IT teams.

Updates

At launch the player checks in the background whether a newer release exists for your system (it sends nothing but its version number). If so, a banner offers Update on Windows (Download, the download page, on Linux and macOS), What's New (the release notes, shown in the player) and Later. Update downloads the installer in the background, checks its size and SHA-256 against what the site announces (a mismatch is never run), then, once the player is at rest (no playback, session, export or typing), counts down Restarting to install in 10 s (Restart Now, Not Now): at 0 the player closes, its session kept, the installer runs silently (UAC still asks for the administrator) and the player opens again under the user's own account, the session as it was left. Nothing happens without the click on Update, and never during a playback, a session or an export (it waits). Not Now, or a close by hand: installed at the close, the player not reopened. Preferences > General > Updates: Ask / Never turns the check off; IT can enforce that with the variable BERNARD_NO_UPDATE_CHECK=1, the key HKLM\Software\AArts Lab\Bernard Review\NoUpdateCheck=1 (Windows) or the file /etc/bernard-review/policy.json containing {"update_check": false} (Linux).