Three tutorials cover the DVB-I tools themselves, each complete on its own:
- Tutorial: DVB-I Service List Registry - publish and query service lists: run the registry, query it as a client does, register a list, check the answer against the schema.
- Tutorial: DVB-I Application Provider - publish a service list and its programme guide: run the provider, add a channel, publish the list and its guide, check the XML.
- Tutorial: DVB-I Application - open a service list and watch its channels: run the browser client, open a public list, your own list, and a list found through a registry.
Two more tutorials add the 5G parts, each complete on its own:
- Tutorial: DVB-I over 5G Media Streaming - a service list that points at 5GMS content: take the Media Entry Point of content hosted in a 5GMS system, publish it in a service list, open the list in a DVB-I client.
- Tutorial: DVB-I over 5G Broadcast - offer a service on 5G Broadcast and on unicast: publish a service with a 5G Broadcast (MBMS) instance next to a unicast DASH instance, and see how the client treats it.
The walkthroughs below cover a phone on Wi-Fi and the DVB-I-aware 5GMS application. The first runs the DVB-I chain on a laptop and plays it on a phone over Wi-Fi with the Android DVB-I client. The second stands up a DVB-I-aware 5GMS application and walks through verifying that DVB-I service discovery is working, on top of the plain 5GMS end-to-end deployment. For background on the specifications and architecture it exercises, see the Implementation status page; for the underlying repositories, see Repositories on the project index.
DVB-I on a phone over Wi-Fi
What you will build: the DVB-I chain of rt-dvb-i-examples on a laptop (a Service List Registry, the Application Provider with its service list and content guide, and a media origin encoding your own files live as DASH), with the DVB-I over 5G Reference App (on the phone, 5G-MAGflix for DVB-I), the Android client of rt-dvb-i-android-application, discovering the list and playing the channels on a phone on the same Wi-Fi network.
The demo serves its media from rt-media-origin, which is not yet public. Until it is, the steps below cannot be run end to end from the public repositories alone.
1. Prerequisites
- On the laptop: Node.js 18 or newer with npm, ffmpeg (with ffprobe), python3 and curl, and the repositories checked out side by side as the demo's README lists them. Your own H.264/AAC MP4 files, in the directory
CONTENT_ROOTinenv.shpoints at. - The genre classification schemes the registry needs, in
GENRE_CS_DIR(the registry's README says where each comes from). - To build the app: a JDK 17 or 21 and the Android SDK with platform
android-37.0and build-tools37.0.0, installed as the app's README shows. - A phone with Android 10 or newer, on the same Wi-Fi network as the laptop.
2. Start the DVB-I chain on the laptop's Wi-Fi address
Set DEMO_HOST to the laptop's own address on the Wi-Fi network:
cd rt-dvb-i-examples/scripts/dvbi-live-demo
DEMO_HOST=192.168.1.202 ./start-all.sh
The media origin then also listens on the network, and the service list, the logos, the content guide endpoints and the registry give out that address instead of localhost. ./status.sh shows every channel as LIVE once its encoder is publishing.
3. Build and install the app
cd rt-dvb-i-android-application/
./gradlew assembleDvbiDebug # app/build/outputs/apk/dvbi/debug/app-dvbi-debug.apk
adb devices
adb install -r app/build/outputs/apk/dvbi/debug/app-dvbi-debug.apk
The app reaches plain HTTP only on the hosts named at build time. The default is 192.168.1.202; for another address, build with -PdvbiCleartextHosts=<address>, and set the default endpoints with -PdvbiServiceListUrl=... and -PdvbiRegistryUrl=....
4. Discover the list and play
On the phone, the defaults point at the laptop: the service list at http://192.168.1.202:4000/service-list.xml and the Service List Registry at http://192.168.1.202:7000/query. In Settings, Query the registry and pick a list sends the query and offers the lists with the default marked; Save installs the chosen one.
- The home screen shows the services with their channel numbers, now and next, and badges for ratings, access services and delivery.
- Selecting a service plays it with Media3 ExoPlayer; the schedule, the programme guide and programme information come from the provider's content guide.
- While the endpoints are reached without TLS, a notice under the top bar says so; a tap opens the warning. ETSI TS 103 770 V1.2.1 clause 7.3: "For the specific case that a DVB-I client connects to a DVB-I metadata endpoint located on the same private subnet (see clause 3 of IETF RFC 1918 [27]), HTTP may be used without TLS."
When you are done, stop the chain with the same DEMO_HOST:
DEMO_HOST=192.168.1.202 ./stop-all.sh
DVB-I with 5G Media Streaming
The 5GMSd-Aware Application and the Exo DVB-I Player are built from rt-5gms-application. Its README describes the 5GMSd-Aware Application as driven by the M8 JSON source list of the 5GMS end-to-end tutorial, not by a DVB-I service list, and the Exo DVB-I Player is a patched ExoPlayer demo whose launch URL is fixed in the patch. No documented procedure points either at a service list of your own.
What you can do today is follow the DVB-I over 5G with 5G Media Streaming tutorial: it publishes a service list whose service instance points at a 5GMS Media Entry Point (M4d) and shows what the browser client does with it. Sections that need a 5GMS Application Function and Application Server are marked Not run on that page.
Next steps
- Implementation status - the reference architecture these components implement
- Repositories - the underlying repositories and releases
- 5G Media Streaming Tutorials - the full set of 5GMS AF/AS walkthroughs this one builds on
Developer Exchange
Our YouTube channel hosts some practical videos provided by developers on the use of the Reference Tools.
Some of the videos are also available here.
The recorded talk below demonstrates the DVB-I over 5G Reference Tools in use.
No DVB-I Services over 5G Systems-specific videos are curated here yet. In the meantime, here's what's recent from the wider Developer Exchange:
Connecting MBSTF to the MBS System - Developer Exchange
Introducing the Avatar Real-Time Communication Project - Developer Exchange
5G Media Streaming: Latest Additions - Developer Exchange
MBS User Services for 5G MBS (Release 18) - Developer Exchange
Advanced Media Delivery: CMCD Metrics in Action - Developer Exchange
Initial steps exposing APIs to AI systems through the MCP - Developer Exchange