Skip to content

Latest commit

ย 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

JAM WiFi Speaker Control

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

๐ŸŽฏ Features

  • 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

๐Ÿš€ Quick Start

Prerequisites

  • Python 3.6+
  • JAM WiFi Speaker (Symphony, Rhythm, or Voice model)
  • Mac/Linux/Windows computer

Installation

# 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

Setup a New Speaker

  1. 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
  2. Connect your computer to speaker's WiFi hotspot

  3. Run the setup script:

    python3 setup.py
  4. 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
  5. Done! Speaker will automatically reboot and connect to your WiFi

Control an Existing Speaker

# 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

๐Ÿ“– Documentation

๐Ÿ› ๏ธ Available Tools

Setup & Configuration

  • setup.py - Main setup wizard (configure speaker name + WiFi)

Discovery & Control

  • discover_speakers.py - Auto-discover speakers with interactive control
  • scan_network.py - Network scanner (auto-detects network or specify subnet)
  • test_speaker.py - Quick test of specific speaker IP
  • diagnostics.py - Network troubleshooting tools

Advanced

  • set_name.py - Change speaker device name

๐ŸŽต API Examples

Control via Command Line

# 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'

Control via Python

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']}")

๐Ÿ”ง Troubleshooting

Speaker won't enter pairing mode

  • Hold WiFi button longer (10-15 seconds)
  • Try factory reset: hold WiFi button for 20+ seconds
  • Power cycle the speaker

Can't connect to speaker hotspot

  • Make sure WiFi LED is blinking
  • Look for networks starting with "JAM" or "HMDX"
  • Move closer to the speaker

Speaker won't connect to WiFi

  • 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

Can't find speaker after setup

  • 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

๐Ÿ—๏ธ Technical Details

Supported Models

  • JAM Symphony (HX-W14901)
  • JAM Rhythm (HX-W09901)
  • JAM Voice (HX-P590)

Requirements

  • WiFi: 802.11 b/g/n, 2.4GHz
  • Security: WPA/WPA2-PSK (WPA3 may not work)
  • Ports: 8080 (HTTP), 8819, 8899

LinkPlay Protocol

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 information
  • getPlayerStatus - Playback status
  • wlanConnectApEx:ssid=HEX:ch=0:auth=WPA2PSK:encry=AES:pwd=HEX:chext=1 - WiFi configuration (extracted from official app)
  • setDeviceName:NAME - Change device name
  • setPlayerCmd:CMD - Playback control

Note: The WiFi configuration command was reverse-engineered from the official JAM WiFi Android app to ensure 100% compatibility.

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Areas for Contribution

  • Support for additional LinkPlay devices
  • Home Assistant integration
  • Web-based control interface
  • Streaming service integration (Spotify, etc.)
  • Multi-room synchronization improvements

๐Ÿ“ License

MIT License - see LICENSE file for details.

๐Ÿ™ Acknowledgments

โš ๏ธ Disclaimer

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.

๐Ÿ“ฎ Support


Made with โค๏ธ by the community

Giving new life to discontinued hardware

About

Open-source Python tools to control JAM WiFi speakers (Symphony, Rhythm, Voice) via LinkPlay API - complete replacement for discontinued app

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages