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.
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:
| Code | Meaning | What to do |
|---|---|---|
| 0 | installed | nothing |
| 3 | the player (or any program of its folder, the streaming companion included) is open from the installation folder: the installer stopped at once and wrote nothing | run 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.
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-reviewDEB 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.
The player works fully offline for playback, annotation, export and sessions on the studio network: no internet connection is needed.
| Port | Direction | When | To open |
|---|---|---|---|
| TCP 9000 | inbound, from the studio network or the VPN | while this workstation hosts a review session | on the host only |
| TCP 5556 | loopback (127.0.0.1) | always: the automation port, see Python API and IPC | no |
| TCP 8080 | loopback | during a Google account sign-in, five minutes at most | no |
| TCP 443 outbound | to the tracker's site | while you use the Tracker window | depending 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:
| Destination | Port | Role | To open |
|---|---|---|---|
review.bernardengine.com | TCP 443 | HTTPS and WSS: synchronization, the guests' web page, video signalling | yes |
turn.review.bernardengine.com | TCP 443 | video and voice when nothing else gets through | yes, if only 443 is open |
review.bernardengine.com | UDP 50000-50100 | live video and voice | recommended |
review.bernardengine.com | TCP 7881 | video and voice fallback when UDP is closed | recommended if UDP is closed |
turn.review.bernardengine.com | UDP 3478 | TURN over UDP | optional |
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.
| System | Profile 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.
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.
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.
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).