Overview
Dispatcharr emulates an HDHomeRun network tuner device, enabling seamless integration with media servers like Plex, Emby, and Jellyfin. This compatibility layer allows any application that supports HDHomeRun devices to use Dispatcharr as a live TV source.What is HDHomeRun?
HDHomeRun is a popular network-attached TV tuner device that allows you to watch and record live TV over your local network. Many media center applications have built-in support for HDHomeRun devices, making it an ideal protocol for IPTV integration.How Emulation Works
Dispatcharr implements the HDHomeRun HTTP API, providing the same endpoints and response formats that physical HDHomeRun devices use. When media servers scan for tuners, they discover Dispatcharr and interact with it just like a real HDHomeRun device.Emulated Device Specifications
- Model Number: HDTC-2US
- Firmware: hdhomerun3_atsc
- Firmware Version: 20200101
- Device ID: 12345678 (default) or
dispatcharr-hdhr-{profile}for named profiles - Tuner Count: Configurable (default: 10)
- Source Type: Cable
The tuner count represents how many concurrent streams can be active simultaneously. This can be configured in Dispatcharr settings.
API Endpoints
Dispatcharr provides the following HDHomeRun-compatible endpoints:Device Discovery
Endpoint:GET /hdhr/discover.json
Endpoint (Profile): GET /hdhr/{profile}/discover.json
Returns device information and capabilities.
Response:
apps/hdhr/api_views.py:DiscoverAPIView (line 47-95)
Channel Lineup
Endpoint:GET /hdhr/lineup.json
Endpoint (Profile): GET /hdhr/{profile}/lineup.json
Returns the list of available channels with stream URLs.
Response:
apps/hdhr/api_views.py:LineupAPIView (line 98-135)
Lineup Status
Endpoint:GET /hdhr/lineup_status.json
Returns the current status of the channel lineup.
Response:
apps/hdhr/api_views.py:LineupStatusAPIView (line 138-152)
Device XML
Endpoint:GET /hdhr/device.xml
Returns device information in XML format (used by some older clients).
Response:
apps/hdhr/api_views.py:HDHRDeviceXMLAPIView (line 155-177)
Stream Proxy
Endpoint:GET /proxy/ts/stream/{channel_uuid}
Proxies the actual IPTV stream. This endpoint handles:
- Stream authentication
- Failover management
- Transcoding (if configured)
- Client tracking
- Bandwidth monitoring
apps/output/views.py (stream handling logic)
Using Channel Profiles
Channel profiles allow you to create multiple virtual HDHomeRun devices, each with different channel lineups:Create Channel Profile
In Dispatcharr:
- Navigate to Settings → Channel Profiles
- Click Add Profile
- Name your profile (e.g., “sports”, “news”, “kids”)
- Assign channels to the profile
- Save the profile
Example: Multiple Profile Setup
Network Discovery
HDHomeRun devices are typically discovered on the network using UDP broadcast. However, Dispatcharr requires manual configuration because:- HTTP-Only Implementation: Dispatcharr implements only the HTTP API, not the UDP discovery protocol
- Container Networking: Docker/containerized deployments may not support UDP broadcast
- Explicit Control: Manual configuration gives you precise control over device URLs
Manual Configuration Steps
When adding Dispatcharr to your media server:- Select manual/custom HDHomeRun device
- Enter the discovery URL:
http://YOUR_SERVER:9191/hdhr/discover.json - The media server will query this endpoint and configure the device
Technical Implementation Details
Tuner Count Calculation
The tuner count represents concurrent stream capacity:- Maximum simultaneous recordings
- Concurrent stream limits
- Resource allocation
Channel Number Formatting
Dispatcharr intelligently formats channel numbers:Stream URL Generation
Each channel gets a unique stream URL:- Unique identification of each channel
- Secure stream access
- Proper routing through Dispatcharr’s proxy
Compatibility
Dispatcharr’s HDHomeRun emulation is compatible with:| Application | Support Level | Notes |
|---|---|---|
| Plex | ✅ Full | Auto-discovery with host network mode |
| Emby | ✅ Full | Manual configuration recommended |
| Jellyfin | ✅ Full | Native HDHomeRun support |
| Channels DVR | ✅ Full | Add as custom source |
| Kodi | ✅ Partial | Via PVR IPTV Simple Client |
| VLC | ✅ Full | M3U export preferred |
| MythTV | ⚠️ Untested | Should work with manual config |
Troubleshooting
Device Not Discovered
Solution:- Use manual/custom device configuration
- Enter discovery URL directly:
http://YOUR_IP:9191/hdhr/discover.json - Verify network connectivity between services
Empty Channel Lineup
Check:- Channels are created in Dispatcharr
- Channel numbers are assigned
- Channels are enabled
- Profile filter (if using profiles)
Streams Don’t Play
Verify:- Test stream URL directly in VLC:
- Check Dispatcharr logs for stream errors
- Verify source streams are accessible
- Check stream profile configuration
Profile-Specific Issues
Common Mistakes:- Profile name mismatch (case-sensitive)
- Profile has no enabled channels
- Using default URL instead of profile URL
Advanced Configuration
Custom Base URL
If accessing Dispatcharr through a reverse proxy or custom domain:Multiple Instances
Run multiple Dispatcharr instances on different ports:Security Considerations
- Authentication: HDHomeRun protocol doesn’t include authentication. Use network-based access control in Dispatcharr.
- Firewall: Limit access to port 9191 to trusted networks
- HTTPS: Use reverse proxy with SSL for encrypted access