This repository contains the server code for hosting an Oppo/Magnetar Blu-ray integration driver for the Unfolded Circle Remotes.
- Oppo BDP-83
- Oppo BDP-93
- Oppo BDP-95
- Oppo BDP-103
- Oppo BDP-105
- Oppo UDP-203
- Oppo UDP-205
- Magnetar Players
- All features are supported for the UDP-20X series.
- The Oppo players only allows one connection at a time, so if you have multiple remotes or other systems connected to the same player, the integration will keep getting disconnected and commands will fail.
| Feature | Oppo BDP-83/93/95 | Oppo BDP-10X | Magnetar |
|---|---|---|---|
| Option Command | ❌ | ✔️ | ✔️ |
| 3D Switching | ❌ | ✔️ | ❌️️ |
| Picture Adjustment | ❌ | ✔️ | ❌️ |
| HDR Mode | ❌ | ❌️ | ✔️ |
| Info Hold | ❌ | ❌️ | ❌️ |
| Resolution Hold | ❌ | ❌️ | ❌️ |
| A/V Sync | ❌ | ❌️ | ❌️ |
| Gapless Playback | ❌ | ❌️ | ❌️ |
| Track Name | ❌ | ❌️ | ❌️ |
| Album Name | ❌ | ❌️ | ❌️ |
| Album Cover | ❌ | ❌️ | ❌️ |
| Artist Name | ❌ | ❌️ | ❌️ |
- The published binary is self-contained and doesn't require any additional software. It's compiled for Linux ARM64 and is meant to be running on the remote.
- Use the Docker Image in the Core Simulator
| Service | Port | Protocol |
|---|---|---|
| Server | Random* | HTTP (TCP) |
| Oppo BDP-83 | 19999 | TCP |
| Oppo BDP-9X | 48360 | TCP |
| Oppo BDP-10X | 48360 | TCP |
| Oppo UDP-20X | 23 | TCP |
* Server port can be adjusted by specifying the desired port with the UC_INTEGRATION_HTTP_PORT environment variable.
- dotnet 10 SDK.
- or Docker.
- Download
unfolded-circle-oppo-[version]-remote.tar.gzfrom the release page - Open the remote's Web Configurator
- Click on
Integrations - Click on
Add newand thenInstall custom - Choose the file in step 1 (
unfolded-circle-oppo-[version]-remote.tar.gz) - Make sure that your device is turned on
- Click on the newly installed integration and follow the on-screen instructions
The application can be configured using the appsettings.json file or environment variables.
Additionally, the application saves configured entities to the configured_entities.json file, which will be saved to the directory specified by the UC_CONFIG_HOME environment variable.
By default, the application logs to stdout.
You can customize the log levels by either modifying the appsettings.json file or by setting environment variables.
TraceDebugInformationWarningError
Trace log level will log the contents of all the incoming and outgoing requests and responses. This includes both Websockets and Telnet.
{
"Logging": {
"LogLevel": {
"UnfoldedCircle.Server": "Information",
"UnfoldedCircle.OppoBluRay": "Information",
"Oppo": "Information",
"Makaretu.Dns": "Warning"
}
}
}Same adjustments to log levels can be made by setting environment variables.
Logging__LogLevel__UnfoldedCircle.Server=InformationLogging__LogLevel__UnfoldedCircle.OppoBluRay=InformationLogging__LogLevel__Oppo=InformationLogging__LogLevel__Makaretu.Dns=Warning
Execute publish.sh script to build the application for the remote. This will produce a tar.gz file in the root of the repository.
Execute the following from the root of the repository:
docker build -f src/UnfoldedCircle.OppoBluRay/Dockerfile -t oppo .dotnet publish ./src/UnfoldedCircle.OppoBluRay/UnfoldedCircle.BluRayPlayer.csproj -c Release --self-contained -o ./publishThis will produce a self-contained binary in the publish directory in the root of the repository.
- Selecting input on the player can only be done when the player reports that it is on, this means that you have to place a delay between the
Switch onandInput sourcecommands if you want to use this in theOn sequence, or the remote will think the start sequence fails. - The artist, album and track information might not always be available or accurate. This can't be helped as it's the information the player provides.
- The album cover might be incorrect or missing. This is because the CDDB database no longer exists, as such, the application tries to get covers by matching the current artist and album. This is not always accurate enough.