Skip to content

Hardware Overview

Every SoundTouch device libretouch targets is built around the same TI AM3356 (ARM Cortex-A8) SoC on one of two processor modules. The module a device carries matters far more than which product it is: it decides how the board is wired, how it reaches the network, and which device tree it needs.

The two processor modules

SCM SM2
Full name Shelby Common Module Shelby Common Module 2
Generation first second
SoC TI AM3356, 128 MiB DDR3, 256 MiB NAND same
Wi-Fi on a separate co-processor (see below) TI WL1835 on the SoC's SDIO bus
Bluetooth none yes, on the same WL1835
Network path through the co-processor directly from the SoC

The module also carries the flash, the RAM, and the basic audio hardware, so products sharing a module share most of their description. What stays product-specific is the front panel — keypad, display, LEDs, IR receiver — and the audio routing.

The SCM co-processor

SCM boards are not a plain "AM335x with a Wi-Fi chip". They carry a second processor, a BridgeCo/SMSC DM870 module from the JukeBlox platform, which the stock software calls the BCO. It is a complete Wi-Fi audio-streaming SoC and it owns the network connection: the AM335x has no Wi-Fi and no wired Ethernet of its own, and reaches the outside world through the co-processor, over an internal USB link that presents itself as an ordinary CDC Ethernet device.

This has a practical consequence for libretouch. On SM2 the network is a normal Linux Wi-Fi interface. On SCM it is a USB network adapter that happens to be soldered to the board, and it only works once that internal link is up. Getting that link reliable is the open item in SCM support.

SM2 has no co-processor at all.

USB ports: not every device has a USB-A socket

Both modules give the AM3356 exactly one usable USB controller, usb0. On the products that have two USB connectors, both hang off that one controller behind an external mux: a GPIO (microbsel) selects which connector is live, and a second one (microbdet) reports which is in use. Only one of the two can be used at a time — that is a hardware limit, not a software one.

The micro-USB service port is on every device. The USB-A socket is not:

Has USB-A + micro-USB micro-USB only
spotty_sm2, mojo_sm2, lisa_sm2 rhino_sm2, binky_sm2, bardeen_sm2, burns_sm2
spotty_scm, mojo_scm, lisa_scm, taigan_scm

(Every product built on lisa_scm hardware inherits its USB-A socket. The remaining SM2 adapters have not been checked.)

This decides which development setup is available to you:

  • A device with a USB-A socket can boot from a USB drive, and can also use USB-RNDIS network boot on the micro-USB port.
  • A device without one has only the micro-USB port, so USB-RNDIS network boot is the only way to run libretouch on it. Booting from a USB drive is not a thing that can be made to work — there is nowhere to plug the drive in.

Known limitation. Switching the mux to the USB-A socket is described only in each board's own device tree, not in the boot-only trees (common_sm2.dtb / common_scm.dtb). A device booted with a boot-only tree therefore never reaches a USB drive: the kernel comes up, registers the USB host controller, and waits forever for a root filesystem that cannot appear. That affects bringing up a new board, where the boot-only tree is the whole point — use RNDIS there. It does not affect a board that has a device tree of its own.

Models and support status

Boards are named <board>_<module> throughout the project — the same name the device reports in its own bootloader environment. That name is what libretouch supports, and it is not always the product you bought: one board can be sold under several names. If you do not know what you have, Add support for a new device shows how to read the name off the device.

Status Meaning
Supported: the board has its own device tree and its hardware is brought up
🚧 In progress: the board has a device tree, but parts of it are unverified or not working
Not supported yet: no board device tree exists

SCM (first generation, no Bluetooth)

Status Board Sold as
🚧 lisa_scm The SoundTouch adapter. The same box is also the adapter sold for the Wave SoundTouch, VideoWave, Lifestyle, SoundTouch Stereo JC, SoundTouch SA-4 and CineMate — it takes its product name from whatever it is plugged into. See One board, many product names
spotty_scm SoundTouch 20 Series II
mojo_scm SoundTouch 30 Series II
taigan_scm SoundTouch Portable

SM2 (second generation, with Bluetooth)

Status Board Sold as
spotty_sm2 SoundTouch 20 Series III
rhino_sm2 SoundTouch 10
mojo_sm2 SoundTouch 30 Series III
lisa_sm2 SoundTouch adapter
ginger_sm2 SoundTouch 300 (Soundbar)
triode_sm2 SoundTouch Wireless Adapter for CineMate
marconiprod_sm2 SoundTouch Wireless Adapter for Lifestyle/ViewWave
nelson_sm2 Wave SoundTouch Series IV
bardeen_sm2 Lifestyle
binky_sm2 SoundTouch Wireless Link Adapter
burns_sm2 SoundTouch SA-5

bardeen, binky and burns use dedicated audio hardware rather than the module's, so they will need more work than the rest. Whether any of the SM2 adapters share one board the way the SCM ones do has not been checked.

A ❌ is not a wall. libretouch also builds a generic device tree for each module, describing only what the module itself provides — SoC, memory, NAND, the USB port and the serial console. Any board of that module can boot it and reach a shell, which is where adding a product starts. See Add support for a new device.

For the per-feature status of the boards that are supported, see the project status page.

lisa_scm, the adapter

lisa_scm is the first SCM board libretouch supports, and it is deliberately the odd one out: everything else listed as working is SM2. It serves as the reference for the whole first generation, so most of what is learned on it carries over to the other SCM products.

One board, many product names

This is the thing to know about lisa_scm before anything else: it is one piece of hardware that calls itself different things depending on what you plug it into.

The adapter is a separate box. It does not sit inside the audio product it serves; it connects to a host Bose system through a cable that carries three things at once — power for the adapter, audio, and a control link called Advanced BoseLink (ABL). The adapter is what talks to your network and streams the music; the host is what makes the sound.

And the adapter has no stored product identity. The board calls itself lisa — that much is fixed, and it is also the name the standalone adapter goes by — but which product it is, it does not know until it asks the host over that link. The answer decides the product name it shows, the setup network name it advertises, its feature flags, and which host it expects to drive:

Host it is connected to Product profile
Wave SoundTouch nelson
VideoWave otto
Lifestyle corey
SoundTouch Stereo JC luke
SoundTouch SA-4 colin
CineMate triode

Every one of these is the same board, running the same device tree. What the hardware reports never changes: on SCM the board identity comes from an analogue board-ID resistor, and in all of them it reads lisa. Only the product identity on top of it moves.

Three consequences:

  • Supporting lisa_scm supports all of them. If a device reports lisa on the scm module, libretouch's lisa_scm support applies, whatever the label on the box says. Do not go looking for a nelson_scm or triode_scm board — there is no such thing.
  • A product name tells you almost nothing. "Wave SoundTouch" describes the radio the adapter is plugged into, not the adapter. Read the board name off the device.
  • Under libretouch the adapter never learns what it is. libretouch does not implement the BoseLink link, so it neither identifies the host nor controls it. Audio still leaves over the cable, but the host stays inert, and the stock software-update path — which refuses to start until the adapter knows its identity — does not apply.

Factory units also carry a mode flag alongside the board identity, noap, for units built without AirPlay. It selects different co-processor firmware, not a different board, and libretouch reads it but does not currently act on it.

Not a speaker

Being a box on the end of a cable rather than a speaker has consequences of its own, and they are the other reasons lisa_scm needs separate treatment:

No amplifier and no speaker — only a line output. Audio leaves down the cable to the host, which amplifies it. The amplifier-related controls the speaker products use are absent or meaningless here, and there is nothing on the adapter itself to listen to a test tone on: verifying audio needs the host system, or a scope or line input on the output.

No display and no keypad. The adapter has exactly one push-button and one white indicator labelled WIFI. Do not expect the display and button handling of a SoundTouch 20 to appear; the OLED and the four-by-four keypad simply are not fitted. (A second, amber colour in the same indicator is plausible but has not been confirmed on hardware.)

Its network is the co-processor. As described above, the wired Ethernet controller in the AM3356 is not connected on this board — its pins are used for other functions — so the only network path is the internal link to the BCO. libretouch brings that link up and configures it, but the connection currently drops under receive traffic and has to reconnect. Until that is fixed, treat networking on lisa_scm as unreliable and use a serial console for anything that matters.

The audio path is described and builds, but it has not yet been measured on lisa_scm hardware. Bluetooth does not exist on SCM at all.

Stock firmware version matters here

One more lisa_scm peculiarity is about the stock firmware rather than libretouch: from stock version 17.00.08 onward, the stock kernel stops running the USB port as a dual-role port, which removes the easiest way of getting a shell on the stock system. If you have the choice, keep a lisa_scm device on 16.00.09. See Preferred stock version on lisa_scm and Version dependency on lisa_scm.

Components of an SM2 speaker

The tables below describe spotty_sm2 (SoundTouch 20 Series III), the reference board for the second generation. This is a practical overview of the components used by the current machine support, not a complete bill of materials. An SCM board shares the SoC, memory and flash, but differs in the connectivity and audio rows.

Core platform

Component Purpose Documentation
TI AM3356 Sitara ARM Cortex-A8 SoC, memory controller, NAND, USB, Ethernet, McASP, SPI, and UART Data sheet · Technical Reference Manual
NAND flash Bootloader, environment, kernel, and persistent storage See the device's documented MTD partitions in the recovery guide.
DDR memory System memory 128 MiB is available to the system.

Connectivity and power

Component Purpose Documentation
TI WL1835 Wi-Fi and Bluetooth Data sheet
NCP6922C Power-management IC
USB controller One AM3356 USB controller, shared by the USB-A host and Micro-USB setup ports USB driver guide

Audio and display

Component Purpose Documentation
TLV320AIC3256 Stereo audio codec with miniDSP Data sheet
PCM1804 Stereo ADC Data sheet
AK4384 Stereo DAC Data sheet
Solomon SSD1327 128 × 96 grayscale OLED controller Official product page and datasheet request

See the audio driver guide and OLED display guide for their Linux interfaces and testing procedures.

User interfaces

The buttons and infrared receiver are exposed as Linux input devices. The serial console is UART3 and is available through the unusual AUX connector; see the serial-console guide for the pinout and electrical requirements.