This project provides a Docker container for running Kodi (GBM mode) on headless RK35XX devices with full hardware transcoding enabled.
Successfully tested hardware decoding and playback of H.264 1080p and H.265 4K HDR10 videos on Rock 5B and Rock 5C. Need more tests information from other devices.
-
Source code: https://github.com/yrzr/gitlab-ce-arm64v8-docker
-
Docker image: https://hub.docker.com/repository/docker/yrzr/kodi-gbm
- RK35XX devices with video output capability;
- Rockchip BSP/Vendor kernel 5.10 or 6.1 are need for ffmpeg-rockchip;
- Docker installed on your system;
- Docker Compose (optional, for easier management).
docker run -d \
--name kodi-gbm \
--privileged \
--network host \
--restart unless-stopped \
-e WEBSERVER_ENABLED=true \
-e WEBSERVER_PORT=8080 \
-e WEBSERVER_AUTHENTICATION=true \
-e WEBSERVER_USERNAME=kodi \
-e WEBSERVER_PASSWORD=kodi \
-v /etc/localtime:/etc/localtime:ro \
-v /media:/media:ro \
-v /path/to/kodi/data:/usr/local/share/kodi/portable_data \
yrzr/kodi-gbm:rk35xx
Checkout the project.
git clone --depth=1 https://github.com/yrzr/kodi-docker-rk35xx.git
cd kodi-docker-rk35xx
Then modify compose.yml
and start container with docker compose
edit compose.yml
docker compose up -d
Checkout the project.
git clone --depth=1 https://github.com/yrzr/kodi-docker-rk35xx.git
cd kodi-docker-rk35xx
Build the image
docker compose build
Bring up the container
docker compose up -d
- WEBSERVER_ENABLED
Whether allow control of Kodi via HTTP
- WEBSERVER_PORT
The port of Webserver
- WEBSERVER_AUTHENTICATION
Whether to use HTTP's Basic Access Authentication
- WEBSERVER_USERNAME
The username of the webserver access authentication
- WEBSERVER_PASSWORD
The password of the webserver access authentication
See the issue here and dirty fix here
You can also do the fix manually with the following steps.
- install
device-tree-compiler
apt-get update
apt-get install device-tree-compiler
- find the dtb file of your machine
It usually located at /boot/dtbs/{your kernel version}/rockchip/rk3588{s}-{your machine model}.dtb
, for example it is /boot/dtbs/6.1.75-vendor-rk35xx/rockchip/rk3588s-rock-5c.dtb
for my Rock 5C. Then backup the original dtb file.
cd /boot/dtbs/6.1.75-vendor-rk35xx/rockchip/
cp -v rk3588s-rock-5c.dtb rk3588s-rock-5c.dtb.bak
- extract dtc source file from dtb file
dtc -I dtb -O dts -o rk3588s-rock-5c.dtc rk3588s-rock-5c.dtb
- edit your dtc file and comment out
plane-mask
andprimary-plane
...
// rockchip,plane-mask = <0x05>;
// rockchip,primary-plane = <0x02>;
...
- compile dts source file to dtb file
dtc -I dts -O dtb -o rk3588s-rock-5c.dtb rk3588s-rock-5c.dts
- reboot the system
reboot
Contributions are welcome! Please open an issue or submit a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.
- ffmpeg-rockchip - FFmpeg with async and zero-copy Rockchip MPP & RGA support.