ASP.NET Core app to emulate a Yamaha MusicCast Speaker
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
doc
src
.gitignore
build.cmd
build.common.ps1
build.ps1
global.json
nuget.config
readme.md
swimbait.sln

readme.md

#Swimbait#

Definition:

A class of fishing lures that imitate fish

An ASP.NET Core application that emulates the Yamaha MusicCast protocol.

swimbait MyGet Build Status

Projects

Swimbait.Server

Emulates a Yamaha MusicCast speaker by serving and responding REST HTTP on multiple ports and UDP.

Current status is

  • [almost there] ios MusicCast app can discover the fake Swimbait server
  • [todo] swimbait server can respond to and receive requests to stream audio

Swimbait.Console

See its readme file

MusicCast.Console

Client for controlling a MusicCast speaker

Setup

Swimbait requires some environment variables:

Windows Powershell

Restart Visual Studio after setting these in a powershell prompt

 # IP Address of real MusicCast speaker. Used for man in the middle replays. 
 [Environment]::SetEnvironmentVariable("Swimbait:RelayHost", "192.168.1.213", "User") 

 # Folder for activity log 
 [Environment]::SetEnvironmentVariable("Swimbait:ReplayLogFolder", "D:\Downloads\Swimbait", "User")

Swimbait.Server Execution

  1. Run the Swimbait.Server project
  2. Test the HTTP server by browsing to http://<your-machines-IP>/MediaRenderer/desc.xml
  3. Open the MusicCast app on your phone
  4. Connect to a new device
  5. Press C a few times into the server console while the app is waiting for a connection
  6. The MusicCast app should think it has found a MusicCast speaker
  7. The app will respond with an error. (More work required)

Documentation

The doc folder contains various captures and collected information, including the Yamaha authored Yamaha Extended Control API Specification (Basic) and (Advanced) and which describes much of the MusicCast REST API.

Blog

There is some more reading at this blog entry