This repository contains the server code for hosting an Oppo 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
- All features are supported for the UDP-20X series.
Feature | Oppo BDP-83/93/95 | Oppo UDP-10X |
---|---|---|
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 | 9001* | HTTP (TCP) |
Oppo UDP-83 | 19999 | TCP |
Oppo UDP-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 9 SDK.
- or Docker.
- Download the latest release.
- Browse to your remote's IP address.
- Click on
Core-API REST
. - Find the POST endpoint
/intg/install
- Click on
Try it out
. - Choose the file you downloaded (
unfoldedcircle-oppo.tar.gz
). - Click on
Execute
and wait for the integration to be uploaded and installed. - Go to the regular page in the web configurator for integrations and configure the integration.
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. It can also be customized to send the logs over HTTP to a remote server.
You can customize the log levels by either modifying the appsettings.json
file or by setting environment variables.
Trace
Debug
Information
Warning
Error
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",
"Oppo": "Information",
"Makaretu.Dns": "Warning"
}
}
}
Same adjustments to log levels can be made by setting environment variables.
Logging__LogLevel__UnfoldedCircle.Server
=Information
Logging__LogLevel__Oppo
=Information
Logging__LogLevel__Makaretu.Dns
=Warning
Change appsettings.json
to send logs over HTTP.
{
"HttpLogger": {
"Enabled": true,
"Endpoint": "https://YOUR_HOST:PORT/OPTIONAL_PATH"
}
}
Similarly you can configure it using environment variables:
HttpLogger__Enabled
=true
HttpLogger__Endpoint
=https://YOUR_HOST:PORT/OPTIONAL_PATH
Note that when using HTTP logging the application will default to Trace
log level.
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.Server/Dockerfile -t oppo .
dotnet publish ./src/UnfoldedCircle.Server/UnfoldedCircle.Server.csproj -c Release --self-contained -o ./publish
This 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 on
andInput source
commands 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.