Swiftpack.co - DerekK19/BlueMustang as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by DerekK19.
DerekK19/BlueMustang 1.12.0
A Swift package that acts as a Bluetooth Low Energy Central, talking to a BLE Peripheral, which is connected to a Fender Mustang electric guitar amplifier
⭐️ 1
🕓 43 weeks ago
iOS macOS
.package(url: "https://github.com/DerekK19/BlueMustang.git", from: "1.12.0")

Swift 5.2 Platforms iOS | macOS Swift Package Manager License MIT


BlueMustang is a framework written in Swift that interfaces to a Fender Mustang Amplifier through a Bluetooth bridge application


blue_mustang Bluetooth bridge application

A Bluetooth application can be found on Github. It is a Python module that can run on a Raspberry Pi. When the Raspberry Pi is connected to a Fender Mustang amplifier though USB, blue_mustang acts as a USB-Bluetooth bridge.

Defender client application

A macOS/iOS application that uses BlueMustang to control a Fender Mustang amplifier. Because Defender uses BlueMustang, it means the client device (be it a Mac or an iPad/iPhone) does not need to be physically connected to the amplifier. This resolves the major issue with controlling a Fender Mustang amplifier from an iOS device.

I made this software for personal use, but feel free to use it or contribute. My amplifier is a Fender Mustang III V2 and is connected to a Raspberry Pi Rev 3 running blue_mustang


If writing a Bluetooth module from scratch, You should implement a Bluetooth Low Energy (BLE) peripheral with the following UUIDS:


The Bluetooth service must advertise itself as a Human Interface Device, and use this UUID


The Bluetooth service must use this UUID


This characteristic should return the name of the amplifier


This characteristic should return the number of presets the amplifier provides (typically this is 100)


This characteristic should return the names of the presets as follows:

  • When the characteristic is read, it should return as many names as will fit in 100 bytes
  • When the characteristic is written to (passing two single byte integers), this should set up the next read; the first byte will be the number of bytes that may be returned by the read (this should be 100), the second byte will be the number from which preset names should be returned next


This characteristic is used for reading and writing preset values


This characteristic is used for reading and setting the amplifier's Volume, Tone etc knobs



BlueMustang is released under the MIT license. See LICENSE for details.


Stars: 1
Last commit: 3 days ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.


Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics