Skip to content

Control Bose Acoustimass modules over serial port using TAP commands

License

Notifications You must be signed in to change notification settings

probonopd/TAPController

Repository files navigation

TAPController Library for Arduino

License Version

Control Bose Acoustimass modules over serial port using TAP commands.

NOTE: There is a product recall for Bose Acoustimass modules. See here for details.

Features

  • Mute and unmute the audio.
  • Control volume settings for different channels.
  • Select input sources for the Bose Acoustimass module.
  • Switch between different speaker configurations.
  • Read ADC port voltages for specific parameters.
  • Dump and modify EEPROM contents.

Disclaimer

The TAPController library is provided as-is, without any guarantees or warranties. It is intended for educational and experimental purposes and shall be used at your own risk. The library provides control over the Bose Acoustimass module via a serial interface, and improper usage may lead to undesired behavior or potential damage to the hardware. Before using this library, we strongly advise you to read the service manual ("Troubleshooting Guide Powered Acoustimass® -25 and -30 Series II Speaker System AM-25P II/ AM-30P II Digital Bass Module", Part Number 199401-TG1) and fully understand the functionality and limitations of the hardware. The author and contributors of this library are not liable for any damages or issues that may arise from using this library with the Bose Acoustimass module. Always exercise caution and responsibility when interacting with hardware components.

Installation

To use the TAPController library, you can install it through the Arduino Library Manager or PlatformIO.

Arduino Library Manager (Arduino IDE)

  1. Open the Arduino IDE.
  2. Go to Sketch -> Include Library -> Manage Libraries.
  3. Search for "TAPController" and click Install.

PlatformIO (VSCode or Atom)

  1. Add the following line to the lib_deps section in your platformio.ini file:
    lib_deps =
        TAPController
    

Usage

See the MuteUnmuteExample.ino example sketch.

API Reference

TAPController(Stream &serial)

Constructor to create an instance of the TAPController class.

General Control Functions

  • void printFirmwareRevisions(): Print firmware revisions.
  • void printUCChecksum(): Print uC checksum.
  • void resetPCB(): Reset PCB.
  • void resetDSPs(): Reset DSPs.
  • void resetCodec(): Reset codec.
  • void dumpEEPROMContents(): Dump the contents of EEPROM.
  • void writeEEPROMData(byte address, byte data): Write data "data" (hex) to EEPROM address "address" (hex).
  • void recalculateEEPROMChecksum(): Re-calculate and store EEPROM checksum.
  • void fillEEPROMWithData(byte data): Fill EEPROM with data "data" (hex).
  • void selectInput(byte inputType, byte data1, byte data2): Select input type with custom data "inputType" (hex), "data1" (hex), and "data2" (hex).
  • void setVolume(byte volumeType, byte volumeValue): Set volume with "volumeType" (hex) and "volumeValue" (hex).
  • void muteAudio(): Mute audio.
  • void unmuteAudio(): Un-mute audio.
  • void selectAudioMode(byte mode): Select audio mode with "mode" (hex).
  • void turnOff(): Turn off.

ADC Functions

  • void printBassPotPosition(): Print uC ADC port voltage for bass pot position.
  • void printTreblePotPosition(): Print uC ADC port voltage for treble pot position.
  • void printThermistorVoltage(): Print uC ADC port voltage for thermistor voltage.
  • void print3_3VSupplyVoltage(): Print uC ADC port voltage for 3.3V supply.
  • void printSPDIFDetectVoltage(): Print uC ADC port voltage for SPDIF detect.
  • void printCodecReferenceVoltage(): Print uC ADC port voltage for codec reference voltage.
  • void printTwiddlerDCOffset(): Print uC ADC port voltage for Twiddler DC offset.
  • void printTurnOnSignalVoltage(): Print uC ADC port voltage for turn-on signal.

Speaker Configurations

  • void selectAUXInput(): Select AUX input (digital).
  • void selectVID1Input(): Select VID1 input (analog).
  • void selectTAPEInput(): Select TAPE input (analog).
  • void select2SpeakerMode(): Select 2-speaker mode.
  • void select3SpeakerMode(): Select 3-speaker mode.
  • void select5SpeakerMode(): Select 5-speaker mode.
  • void setVolume(byte volumeValue): Set normal volume with "volumeValue" (hex).
  • void setCenterSurroundVolume(byte volumeValue): Set center/surround volume with "volumeValue" (hex).
  • void volumeUp(): Volume up 1dB.
  • void volumeDown(): Volume down 1dB.
  • void surroundVolumeUp(): Center/surround volume up (3-speaker / 5-speaker).
  • void surroundVolumeDown(): Center/surround volume down.

WARNINGS:

  • The functions writeEEPROMData, recalculateEEPROMChecksum, and fillEEPROMWithData modify the contents of the EEPROM. Be cautious while using them.
  • This library interacts directly with hardware and can have potential risks. Use it at your own risk, and make sure to consult the service manual before making any changes to the hardware.

TAP Commands

TAP Command Description
tv print firmware revisions
vr print uC checksum
rs reset pcb
rc reset DSPs
rd reset codec
de dump the contents of EEPROM
we xx,yy Write data "xx" (hex) to EEPROM address "yy" (hex)
ce 0 re-calculate and store EEPROM checksum
ef xx fill EEPROM with data "xx" (hex)
sk 51,af,ff select AUX input (digital)
sk 61,af,ff select VID1 input (analog)
ad x print uC ADC port voltage, where "x" equals:
0 bass pot position
1 treble pot position
2 thermistor voltage
3 3.3V supply
4 SPDIF detect
5 codec reference voltage
6 twddler DC offset
7 turn-on signal
(result is 8-bit, 0=0V, FF=5V)
sk 42,af,ff select TAPE input (analog)
sk 31,1f,ff volume up 1dB
sk 31,2f,ff volume down 1dB
sk 31,1x,xf set volume to -xx volume
e.g.
sk 31,10,0f 00dB
sk 31,11,2f -12dB
sk 31,13,4f -34dB
sk 31,9f,ff center/surround volume up (3-speaker / 5-speaker)
sk 31,af,ff center/surround volume down
sk 31,9x,xf set center/surround volume
e.g.,
sk 31,90,0f +7dB
sk 31,90,1f +6dB
sk 31,90,7f 0dB
sk 31,91,4f -7dB
sk 31,91,5f -8dB
sk 31,4f,ff mute
sk 31,3f,ff un-mute
sk 31,d0,2f select 2-speaker mode
sk 31,d0,3f select 3-speaker mode
sk 31,d0,4f select 5-speaker mode
sk 3f,6f,ff off
tn 3,0,0,0,0,0,0,0,0 passthrough, with all signal processing
tn 6,0,0,0,0,0,0,0,0 passthrough, with no signal processing
tn 0,0,0,0,0,0,0,0,0 exit test mode, restore normal signal processing
tn 4,0,0,0,0,0,0,0,0 request DSP checksum calculation
dp 10,0,2,0,12 fetch and print DSP checksum calculation
dp 10,0,0,0,0 peek at DSP 1 address 0
dp 20,0,0,0,0 peek at DSP 2 address 0
sk 31,ex,yf x=8 2-speaker
x=9 3-speaker
x=A 5-speaker
y=4 single bits, as follows
DRC off/on
1_to_5 off/on

Source: Bose manual Part Number 199401-TG1 pp. 80

Contributing

We welcome contributions to the TAPController library and appreciate your interest in improving it. If you would like to contribute, please follow these guidelines:

  1. Fork the repository and create a new branch for your contributions.
  2. Make your changes or add new features to the library.
  3. Ensure that your code adheres to the library's coding standards and conventions.
  4. Submit a pull request to the main repository with a clear description of the changes you made.
  5. Your pull request will be reviewed by the maintainers, and any necessary feedback will be provided.
  6. Once your changes are approved, they will be merged into the main branch and become part of the library.

By contributing to the TAPController library, you're helping to make it better for everyone in the community. Thank you for your support!

License

This project is licensed under the BSD 2-Clause License. See the LICENSE file for details.

Credits

About

Control Bose Acoustimass modules over serial port using TAP commands

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages