Add ham radio control to your smart home dashboard with a custom Lovelace card.
💡 Key Features
Full Radio Control
Frequency tuning, mode selection, rig switching
Audio Streaming
Listen to your radio directly in Home Assistant
Morse Decoder
Real-time CW decoding display
Memory Buttons
Quick frequency recall with configurable count
Theme Support
Dark, light, or auto (follows HA theme)
Touch Friendly
Works great on tablets and touch screens
OmniRig Radio Card on Home Assistant dashboard with dark theme
📋 Requirements
- Home Assistant 2021.12 or newer
- OmniRig Remote Server running with WebSocket enabled (port 8083)
- Network access from Home Assistant to server
- Modern browser with Web Audio API support
🛠 Installation
Copy Files to Home Assistant
Copy the card files to your Home Assistant config/www folder
config/www/omnirig/
omnirig-radio-card.js
pcm-player-processor.js
You can copy the files via:
- File Editor add-on: Navigate to /config/www and create the omnirig folder
- Samba share: Access the config share and copy files
- SSH/SCP: Copy files via command line
Add as Lovelace Resource
Register the card as a custom resource in Home Assistant
- Go to Settings > Dashboards
- Click the three-dot menu (top right) and select Resources
- Click Add Resource
- Enter URL:
/local/omnirig/omnirig-radio-card.js - Select type: JavaScript Module
- Click Create
Restart Home Assistant
Restart Home Assistant or perform a hard refresh (Ctrl+Shift+R) in your browser
📝 Adding the Card
Using the UI Editor
- Edit your Lovelace dashboard
- Click Add Card
- Scroll down and select Manual
- Paste the YAML configuration (see below)
- Click Save
Basic Configuration
type: custom:omnirig-radio-card
server: 192.168.1.100
port: 8083
Full Configuration
type: custom:omnirig-radio-card
server: 192.168.1.100
port: 8083
title: Shack Radio
show_memories: true
show_morse: true
memory_count: 10
theme: auto
🔧 Configuration Options
| Option | Type | Default | Description |
|---|---|---|---|
server | string | required | IP address of OmniRig Remote Server |
port | number | 8083 | WebSocket port number |
title | string | “OmniRig Radio” | Card title displayed at top |
show_memories | boolean | true | Show memory buttons |
show_morse | boolean | true | Show Morse decoder section |
memory_count | number | 10 | Number of memory buttons (1-14) |
theme | string | “dark” | Color theme: “dark”, “light”, or “auto” |
🎮 Using the Card
Frequency Tuning
- Tap any digit to select it (highlighted with glow)
- Tap arrows to adjust the selected digit
- Long-press arrows for continuous tuning
- Label shows current step size (e.g., “10 kHz”, “100 Hz”)
Mode and Rig Selection
- Tap Mode dropdown to change: USB, LSB, CW, AM, FM, etc.
- Tap Rig dropdown to switch between configured radios
Memory Buttons
- Tap a memory button (M1, M2, etc.) to recall frequency
- Long-press (800ms) to save current frequency to that slot
- Active memory is highlighted when frequency matches
Audio Streaming
- Tap Start Audio to begin streaming
- Audio plays through your browser/device speakers
- Tap Stop Audio to end streaming
⚠ Browser Audio Policy
Browsers require user interaction before playing audio. The first time you tap “Start Audio”, you may need to interact with the card first.
🎨 Theme Options
Dark Theme
Optimized for dark Home Assistant themes. Uses dark backgrounds with light text and accent colors.
Light Theme
Bright backgrounds with dark text for well-lit environments.
Auto Theme
Automatically follows Home Assistant’s current theme. Switches between dark and light based on your HA settings or system preference.
🔧 Troubleshooting
Card Not Loading
- Verify the resource URL is correct:
/local/omnirig/omnirig-radio-card.js - Check that both .js files are in the www/omnirig folder
- Clear browser cache and hard refresh (Ctrl+Shift+R)
- Check browser console for errors (F12 > Console)
Cannot Connect to Server
- Verify server IP address in card configuration
- Ensure OmniRig Remote Server is running
- Check that port 8083 is not blocked by firewall
No Audio
- Click inside the card first (browser autoplay policy)
- Check browser allows audio for your Home Assistant URL
- Ensure audio streaming is enabled on the server
🔒 Security Notes
WebSocket connection is unencrypted (ws://). Intended for local network use only. For remote access, use Home Assistant’s built-in remote access (Nabu Casa) or VPN.