Control your JAM WiFi speakers (Symphony, Rhythm, Voice) using the LinkPlay HTTP API - no discontinued app needed!
This project provides a complete replacement for the discontinued JAM WiFi mobile app, allowing you to:
- Set up new speakers (WiFi configuration)
- Control playback (play, pause, volume, next/previous)
- Configure device names
- Discover speakers on your network
- Create multi-room audio groups
- Complete Setup Tool - Configure WiFi and device name in one step
- Auto-Discovery - Find speakers on your network automatically
- Offline Setup - WiFi configuration works without internet
- Multi-Room Support - Group multiple speakers
- Network Diagnostics - Troubleshooting tools included
- Pure Python - No external dependencies except standard library
- Python 3.6+
- JAM WiFi Speaker (Symphony, Rhythm, or Voice model)
- Mac/Linux/Windows computer
# Clone the repository
git clone https://github.com/veghadam/jam-wifi-control.git
cd jam-wifi-control
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt-
Put speaker in pairing mode:
- Press and hold WiFi button for 5-10 seconds
- Wait for WiFi LED to blink
- Speaker creates hotspot:
JAM SYMPHONY_XXXX
-
Connect your computer to speaker's WiFi hotspot
-
Run the setup script:
python3 setup.py
-
Follow the prompts:
- Enter speaker name (e.g., "Living Room")
- Enter your WiFi network name
- Enter WiFi password
- Confirm and wait for speaker to connect
-
Done! Speaker will automatically reboot and connect to your WiFi
# Find speakers on your network
python3 scan_network.py # or scan_192_168_1.py for different subnet
# Test a specific speaker
python3 test_speaker.py 192.168.1.100
# Interactive control
python3 discover_speakers.py- SETUP_GUIDE.md - Detailed setup instructions
- PAIRING_INSTRUCTIONS.txt - Step-by-step pairing guide
- API_REFERENCE.md - HTTP API command reference
setup.py- Main setup wizard (configure speaker name + WiFi)
discover_speakers.py- Auto-discover speakers with interactive controlscan_network.py- Network scanner (auto-detects network or specify subnet)test_speaker.py- Quick test of specific speaker IPdiagnostics.py- Network troubleshooting tools
set_name.py- Change speaker device name
# Get status
curl 'http://192.168.1.100/httpapi.asp?command=getPlayerStatus'
# Set volume to 50%
curl 'http://192.168.1.100/httpapi.asp?command=setPlayerCmd:vol:50'
# Play/Pause
curl 'http://192.168.1.100/httpapi.asp?command=setPlayerCmd:play'
curl 'http://192.168.1.100/httpapi.asp?command=setPlayerCmd:pause'
# Next/Previous
curl 'http://192.168.1.100/httpapi.asp?command=setPlayerCmd:next'
curl 'http://192.168.1.100/httpapi.asp?command=setPlayerCmd:prev'from discover_speakers import JAMSpeaker
# Connect to speaker
speaker = JAMSpeaker("192.168.1.100")
# Control playback
speaker.set_volume(60)
speaker.play()
speaker.pause()
speaker.next_track()
# Get status
status = speaker.get_status()
print(f"Volume: {status['vol']}")- Hold WiFi button longer (10-15 seconds)
- Try factory reset: hold WiFi button for 20+ seconds
- Power cycle the speaker
- Make sure WiFi LED is blinking
- Look for networks starting with "JAM" or "HMDX"
- Move closer to the speaker
- Check SSID and password are correct (case-sensitive!)
- Ensure WiFi is 2.4GHz (speakers don't support 5GHz)
- Verify router uses WPA/WPA2 (not WPA3)
- Check router has available DHCP addresses
- Wait 30-60 seconds after configuration
- Check router's DHCP client list
- Run network scan:
python3 scan_network.py - Check speaker and computer are on same network
- JAM Symphony (HX-W14901)
- JAM Rhythm (HX-W09901)
- JAM Voice (HX-P590)
- WiFi: 802.11 b/g/n, 2.4GHz
- Security: WPA/WPA2-PSK (WPA3 may not work)
- Ports: 8080 (HTTP), 8819, 8899
JAM WiFi speakers use the LinkPlay A31 module (firmware 4.2.x). This project uses the LinkPlay HTTP API for communication.
Key Commands:
getStatus- Device informationgetPlayerStatus- Playback statuswlanConnectApEx:ssid=HEX:ch=0:auth=WPA2PSK:encry=AES:pwd=HEX:chext=1- WiFi configuration (extracted from official app)setDeviceName:NAME- Change device namesetPlayerCmd:CMD- Playback control
Note: The WiFi configuration command was reverse-engineered from the official JAM WiFi Android app to ensure 100% compatibility.
Contributions are welcome! Please feel free to submit a Pull Request.
- Support for additional LinkPlay devices
- Home Assistant integration
- Web-based control interface
- Streaming service integration (Spotify, etc.)
- Multi-room synchronization improvements
MIT License - see LICENSE file for details.
This is an unofficial project and is not affiliated with, endorsed by, or connected to JAM Audio, HMDX, or LinkPlay. Use at your own risk.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with โค๏ธ by the community
Giving new life to discontinued hardware