mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-19 00:56:16 +00:00
feat: implement missing endpoints and serve static resources from downloads/media hosts (#199)
Endpoints:
- POST /streaming/music/musicprovider/{id}/trial/is_eligible (reuses
is_eligible handler)
- POST /bmx/tunein/v1/favorite/{stationID} with datastore persistence
(SaveTuneInFavorite)
- DELETE /bmx/tunein/v1/favorite/{stationID} (DeleteTuneInFavorite)
- POST /bmx/core02/svc-bmx-adapter-orion/prod/orion/token (anonymous
Orion token)
- GET /bmx-icons/* serving embedded static/media assets (media.bose.io)
- GET /ced/* serving embedded firmware index, release notes, and 10
app-help XMLs (downloads.bose.com)
Add media.bose.io and downloads.bose.com to DNS redirect lists (setup.go
both domain slices, dns.go shouldIntercept list, main.go getDomains
map). Document implemented endpoints in
tests/interactions_20260502_missing_external.md; mark rows 0246–0247 as
self/☑ in the interactions table.
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
0b2e03820b
commit
e99c04888c
@@ -2038,3 +2038,33 @@ func (ds *DataStore) DeleteGroup(account, groupID string) error {
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// SaveTuneInFavorite records a TuneIn station as favorited by creating a marker file.
|
||||
// File presence indicates the station is a favorite; no content is stored.
|
||||
func (ds *DataStore) SaveTuneInFavorite(stationID string) error {
|
||||
if ds == nil || ds.DataDir == "" || stationID == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
dir := ds.safeJoin("tunein", "favorites")
|
||||
if err := os.MkdirAll(dir, 0755); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return os.WriteFile(ds.safeJoin("tunein", "favorites", stationID), nil, 0644)
|
||||
}
|
||||
|
||||
// DeleteTuneInFavorite removes a previously saved TuneIn favorite marker file.
|
||||
// Returns nil if the station was not favorited.
|
||||
func (ds *DataStore) DeleteTuneInFavorite(stationID string) error {
|
||||
if ds == nil || ds.DataDir == "" || stationID == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
err := os.Remove(ds.safeJoin("tunein", "favorites", stationID))
|
||||
if os.IsNotExist(err) {
|
||||
return nil
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -4,12 +4,14 @@ package handlers
|
||||
import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/gesellix/bose-soundtouch/pkg/service/bmx"
|
||||
"github.com/gesellix/bose-soundtouch/pkg/service/datastore"
|
||||
"github.com/go-chi/chi/v5"
|
||||
)
|
||||
|
||||
@@ -148,6 +150,29 @@ func (s *Server) HandleTuneInToken(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
// HandleOrionToken returns an anonymous Orion access token.
|
||||
// The token is a base64-encoded JSON serial, matching the pattern used by the real Bose BMX Orion service.
|
||||
func (s *Server) HandleOrionToken(w http.ResponseWriter, _ *http.Request) {
|
||||
token := datastore.GenerateSerialSecret("orion")
|
||||
|
||||
resp := map[string]interface{}{
|
||||
"_embedded": map[string]interface{}{
|
||||
"bmx_account": map[string]string{
|
||||
"displayName": "",
|
||||
"username": "",
|
||||
},
|
||||
},
|
||||
"access_token": token,
|
||||
"refresh_token": token,
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
|
||||
if err := json.NewEncoder(w).Encode(resp); err != nil {
|
||||
http.Error(w, "Failed to encode response", http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
|
||||
// HandleOrionPlayback returns Orion playback information.
|
||||
func (s *Server) HandleOrionPlayback(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Header.Get("Authorization") == "" {
|
||||
@@ -341,3 +366,27 @@ func (s *Server) HandleTuneInSearch(w http.ResponseWriter, r *http.Request) {
|
||||
http.Error(w, "Failed to encode response", http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
|
||||
// HandleTuneInFavorite handles POST /bmx/tunein/v1/favorite/{stationID}.
|
||||
func (s *Server) HandleTuneInFavorite(w http.ResponseWriter, r *http.Request) {
|
||||
stationID := chi.URLParam(r, "stationID")
|
||||
if err := s.ds.SaveTuneInFavorite(stationID); err != nil {
|
||||
log.Printf("Failed to persist TuneIn favorite %s: %v", stationID, err)
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
w.WriteHeader(http.StatusAccepted)
|
||||
_, _ = w.Write([]byte("{}"))
|
||||
}
|
||||
|
||||
// HandleTuneInDeleteFavorite handles DELETE /bmx/tunein/v1/favorite/{stationID}.
|
||||
func (s *Server) HandleTuneInDeleteFavorite(w http.ResponseWriter, r *http.Request) {
|
||||
stationID := chi.URLParam(r, "stationID")
|
||||
if err := s.ds.DeleteTuneInFavorite(stationID); err != nil {
|
||||
log.Printf("Failed to delete TuneIn favorite %s: %v", stationID, err)
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
w.WriteHeader(http.StatusAccepted)
|
||||
_, _ = w.Write([]byte("{}"))
|
||||
}
|
||||
|
||||
@@ -17,6 +17,9 @@ var webFS embed.FS
|
||||
//go:embed static/media/*
|
||||
var mediaFS embed.FS
|
||||
|
||||
//go:embed static/ced
|
||||
var cedFS embed.FS
|
||||
|
||||
//go:embed static/bmx_services.json
|
||||
var bmxServicesJSON []byte
|
||||
|
||||
@@ -59,3 +62,21 @@ func (s *Server) HandleMedia() http.HandlerFunc {
|
||||
http.StripPrefix("/media", http.FileServer(http.FS(subFS))).ServeHTTP(w, r)
|
||||
}
|
||||
}
|
||||
|
||||
// HandleBmxIcons returns a handler for serving BMX icon assets (media.bose.io /bmx-icons/*).
|
||||
func (s *Server) HandleBmxIcons() http.HandlerFunc {
|
||||
subFS, _ := fs.Sub(mediaFS, "static/media")
|
||||
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
http.FileServer(http.FS(subFS)).ServeHTTP(w, r)
|
||||
}
|
||||
}
|
||||
|
||||
// HandleCedStatic returns a handler for serving downloads.bose.com CED static files.
|
||||
func (s *Server) HandleCedStatic() http.HandlerFunc {
|
||||
subFS, _ := fs.Sub(cedFS, "static/ced")
|
||||
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
http.StripPrefix("/ced", http.FileServer(http.FS(subFS))).ServeHTTP(w, r)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -417,7 +417,7 @@ func (m *mockSSH) Run(command string) (string, error) {
|
||||
m.runCount++
|
||||
if m.runCount > 1 {
|
||||
// Return updated hosts for verification
|
||||
return "127.0.0.1 localhost\n192.168.1.100\tstreaming.bose.com\n192.168.1.100\tupdates.bose.com\n192.168.1.100\tstats.bose.com\n192.168.1.100\tbmx.bose.com\n192.168.1.100\tcontent.api.bose.io\n192.168.1.100\tevents.api.bosecm.com\n192.168.1.100\tbose-prod.apigee.net\n192.168.1.100\tworldwide.bose.com", nil
|
||||
return "127.0.0.1 localhost\n192.168.1.100\tstreaming.bose.com\n192.168.1.100\tupdates.bose.com\n192.168.1.100\tstats.bose.com\n192.168.1.100\tbmx.bose.com\n192.168.1.100\tcontent.api.bose.io\n192.168.1.100\tevents.api.bosecm.com\n192.168.1.100\tbose-prod.apigee.net\n192.168.1.100\tworldwide.bose.com\n192.168.1.100\tmedia.bose.io\n192.168.1.100\tdownloads.bose.com", nil
|
||||
}
|
||||
return "127.0.0.1 localhost", nil
|
||||
}
|
||||
|
||||
@@ -0,0 +1,312 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<INDEX REVISION="02.11.00">
|
||||
|
||||
<!-- SoundTouch 20 -->
|
||||
<DEVICE ID="0x0923" PRODUCTNAME="SoundTouch 20">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/s/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="105879988" CRC="0x2d5a971e" FILENAME="Update_ti_27.0.6.46330.5043500.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch 30 -->
|
||||
<DEVICE ID="0x0924" PRODUCTNAME="SoundTouch 30">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/s/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="105879988" CRC="0x2d5a971e" FILENAME="Update_ti_27.0.6.46330.5043500.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch Portable -->
|
||||
<DEVICE ID="0x0925" PRODUCTNAME="SoundTouch Portable">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/s/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="105879988" CRC="0x2d5a971e" FILENAME="Update_ti_27.0.6.46330.5043500.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch App HTML5 -->
|
||||
<DEVICE ID="0x0931" PRODUCTNAME="SoundTouch App HTML5">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.13" HTTPHOST="downloads.bose.com" URLPATH="/ced/soundtouch/mr4_22097fe2/" DOCVERSION="MjAxOC0wMi0xNQ==">
|
||||
<IMAGE SUBID="0" LENGTH="18377810" CRC="0xaa8209b0" FILENAME="Stockholm_27.0.13-4277-8963611.zip" />
|
||||
<NOTES URL="https://downloads.bose.com/ced/soundtouch/mr4_22097fe2/relnotes/releasenotes_##LANG##.xml" />
|
||||
<FEATURE NAME="TRIO" STATUS="OFF" />
|
||||
<FEATURE NAME="ASTREAM" STATUS="OFF" />
|
||||
<FEATURE NAME="RVT" STATUS="ON" />
|
||||
<FEATURE NAME="AD" STATUS="OFF" />
|
||||
</RELEASE>
|
||||
<PROTOCOL REVISION="67">
|
||||
<IMAGE PLATFORM="IOS" URL="https://itunes.apple.com/us/app/soundtouch-controller/id708379313" />
|
||||
<IMAGE PLATFORM="ANDROID" URL="https://play.google.com/store/apps/details?id=com.bose.soundtouch" />
|
||||
<IMAGE PLATFORM="KINDLE" URL="http://www.amazon.com/gp/mas/dl/android?asin=B00R4VJMMU"/>
|
||||
<IMAGE PLATFORM="PC" URL="http://www.bose.com/soundtouch_app_update" />
|
||||
</PROTOCOL>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Wave SoundTouch -->
|
||||
<DEVICE ID="0x0932" PRODUCTNAME="Wave SoundTouch">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/n/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="112367416" CRC="0x49d88de4" FILENAME="Update_ti_27.0.6.46330.5043500.nelson.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- VideoWave (Developer Keys) -->
|
||||
<DEVICE ID="0x0944" PRODUCTNAME="VideoWave">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2">
|
||||
<IMAGE SUBID="0" LENGTH="215402464" CRC="0xf39b7005" FILENAME="Update_ti_27.0.6.46330.5043500.marconidev.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Lifestyle (Developer Keys) -->
|
||||
<DEVICE ID="0x0945" PRODUCTNAME="Lifestyle">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2">
|
||||
<IMAGE SUBID="0" LENGTH="215402464" CRC="0xf39b7005" FILENAME="Update_ti_27.0.6.46330.5043500.marconidev.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch Stereo JC -->
|
||||
<DEVICE ID="0x0935" PRODUCTNAME="SoundTouch Stereo JC">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/l/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="110991796" CRC="0x01e35713" FILENAME="Update_ti_27.0.6.46330.5043500.lisa.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch SA-4 -->
|
||||
<DEVICE ID="0x0936" PRODUCTNAME="SoundTouch SA-4">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/l/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="110991796" CRC="0x01e35713" FILENAME="Update_ti_27.0.6.46330.5043500.lisa.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Cinemate -->
|
||||
<DEVICE ID="0x0938" PRODUCTNAME="Cinemate">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/t/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="114125624" CRC="0x562de6f1" FILENAME="Update_ti_27.0.6.46330.5043500.triode.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch 10 -->
|
||||
<DEVICE ID="0x0939" PRODUCTNAME="SoundTouch 10">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/r/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="95906856" CRC="0xf18fe026" FILENAME="Update_ti_27.0.6.46330.5043500.rhino.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch SA-5 -->
|
||||
<DEVICE ID="0x093A" PRODUCTNAME="SoundTouch SA-5">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/b/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="100957944" CRC="0x0b99190b" FILENAME="Update_ti_27.0.6.46330.5043500.burns.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch 20 -->
|
||||
<DEVICE ID="0x093B" PRODUCTNAME="SoundTouch 20">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/s/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="99445800" CRC="0x536e6d6f" FILENAME="Update_ti_27.0.6.46330.5043500.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch 30 -->
|
||||
<DEVICE ID="0x093C" PRODUCTNAME="SoundTouch 30">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/s/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="99445800" CRC="0x536e6d6f" FILENAME="Update_ti_27.0.6.46330.5043500.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Wave SoundTouch -->
|
||||
<DEVICE ID="0x093D" PRODUCTNAME="Wave SoundTouch">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/n/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="100297132" CRC="0x2e2fd417" FILENAME="Update_ti_27.0.6.46330.5043500.nelson.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- VideoWave (Developer Keys) -->
|
||||
<DEVICE ID="0x0946" PRODUCTNAME="VideoWave">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2">
|
||||
<IMAGE SUBID="0" LENGTH="203977300" CRC="0x1858fa51" FILENAME="Update_ti_27.0.6.46330.5043500.marconidev.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Lifestyle (Developer Keys) -->
|
||||
<DEVICE ID="0x0947" PRODUCTNAME="Lifestyle">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2">
|
||||
<IMAGE SUBID="0" LENGTH="203977300" CRC="0x1858fa51" FILENAME="Update_ti_27.0.6.46330.5043500.marconidev.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch Stereo JC -->
|
||||
<DEVICE ID="0x0940" PRODUCTNAME="SoundTouch Stereo JC">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/l/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="98921512" CRC="0x07521bda" FILENAME="Update_ti_27.0.6.46330.5043500.lisa.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch SA-4 -->
|
||||
<DEVICE ID="0x0941" PRODUCTNAME="SoundTouch SA-4">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/l/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="98921512" CRC="0x07521bda" FILENAME="Update_ti_27.0.6.46330.5043500.lisa.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Cinemate -->
|
||||
<DEVICE ID="0x0942" PRODUCTNAME="Cinemate">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/t/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="102700460" CRC="0xfbcab635" FILENAME="Update_ti_27.0.6.46330.5043500.triode.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- VideoWave (Production Keys) -->
|
||||
<DEVICE ID="0x0933" PRODUCTNAME="VideoWave">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/m/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="215402464" CRC="0xd48b1181" FILENAME="Update_ti_27.0.6.46330.5043500.marconiprod.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Lifestyle (Production Keys) -->
|
||||
<DEVICE ID="0x0934" PRODUCTNAME="Lifestyle">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/m/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="215402464" CRC="0xd48b1181" FILENAME="Update_ti_27.0.6.46330.5043500.marconiprod.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- VideoWave (Production Keys) -->
|
||||
<DEVICE ID="0x093E" PRODUCTNAME="VideoWave">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/m/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="203977300" CRC="0x3f489bd5" FILENAME="Update_ti_27.0.6.46330.5043500.marconiprod.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Lifestyle (Production Keys) -->
|
||||
<DEVICE ID="0x093F" PRODUCTNAME="Lifestyle">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/m/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="203977300" CRC="0x3f489bd5" FILENAME="Update_ti_27.0.6.46330.5043500.marconiprod.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Lifestyle -->
|
||||
<DEVICE ID="0x094B" PRODUCTNAME="Lifestyle">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.5043530" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/Update.avu">
|
||||
<IMAGE SUBID="0" LENGTH="475186323" CRC="0x523be82b" FILENAME="Update_signed_27.0.6.5043530.avu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Lifestyle -->
|
||||
<DEVICE ID="0x0948" PRODUCTNAME="Lifestyle">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2">
|
||||
<IMAGE SUBID="0" LENGTH="105878364" CRC="0xc0b3d401" FILENAME="Update_ti_27.0.6.46330.5043500.bardeen.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch 300 -->
|
||||
<DEVICE ID="0x0949" PRODUCTNAME="SoundTouch 300">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/g/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="102384736" CRC="0xed21efd3" FILENAME="Update_ti_27.0.6.46330.5043500.ginger.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch Wireless Link adapter -->
|
||||
<DEVICE ID="0x094A" PRODUCTNAME="SoundTouch Wireless Link adapter">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/s/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="99445800" CRC="0x536e6d6f" FILENAME="Update_ti_27.0.6.46330.5043500.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch App for Android -->
|
||||
<DEVICE ID="0x000A" PRODUCTNAME="SoundTouch App-A" SUPPORTEDOS="4.4.0">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.1" HTTPHOST="downloads.bose.com" URLPATH="/ced/soundtouch/mr4_22097fe2/">
|
||||
<IMAGE SUBID="0" LENGTH="23351636" CRC="0x425b2109" FILENAME="SoundTouch-release_27.0.1-3345-bafe54d.apk" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch App for iOS -->
|
||||
<DEVICE ID="0x000B" PRODUCTNAME="SoundTouch App-I" SUPPORTEDOS="8.0.0">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.1" HTTPHOST="downloads.bose.com" URLPATH="/ced/soundtouch/mr4_22097fe2/">
|
||||
<IMAGE SUBID="0" LENGTH="47413805" CRC="0xe4bf4961" FILENAME="SoundTouch-27.0.1-3498-699a15c.ipa" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch App for Mac (pre OS X 10.9) -->
|
||||
<DEVICE ID="0x000C" PRODUCTNAME="SoundTouch App-M" SUPPORTEDOS="mac_10_8">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.0" HTTPHOST="downloads.bose.com" URLPATH="/ced/soundtouch/mr4_22097fe2/">
|
||||
<IMAGE SUBID="0" LENGTH="117483653" CRC="0xd6ca482b" FILENAME="SoundTouch-app-installer-27.0.0-3377-1037583.dmg" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch App for Mac (OS X 10.9 & later) -->
|
||||
<DEVICE ID="0x000E" PRODUCTNAME="SoundTouch App-M" SUPPORTEDOS="mac_10_8">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.0" HTTPHOST="downloads.bose.com" URLPATH="/ced/soundtouch/mr4_22097fe2/">
|
||||
<IMAGE SUBID="0" LENGTH="117483653" CRC="0xd6ca482b" FILENAME="SoundTouch-app-installer-27.0.0-3377-1037583.dmg" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch App for PC -->
|
||||
<DEVICE ID="0x000D" PRODUCTNAME="SoundTouch App-W" SUPPORTEDOS="windows_6_0">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.0.3377" HTTPHOST="downloads.bose.com" URLPATH="/ced/soundtouch/mr4_22097fe2/">
|
||||
<IMAGE SUBID="0" LENGTH="120307712" CRC="0x3e97da1f" FILENAME="SoundTouch-app-installer-27.0.0.3377.msi" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
</INDEX>
|
||||
@@ -0,0 +1,101 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<releases>
|
||||
<release revision="27.0.0">
|
||||
<feature>Fixed bugs and did some general cleaning up under the hood</feature>
|
||||
</release>
|
||||
<release revision="26.0.0">
|
||||
<feature>Fixed bugs and did some general cleaning up under the hood</feature>
|
||||
</release>
|
||||
<release revision="25.0.0">
|
||||
<feature>Airplay2 support arrives for SoundTouch Wireless Link adapter!</feature>
|
||||
<feature>Added improvements to the setup experience</feature>
|
||||
<feature>General bug fixes and improvements</feature>
|
||||
</release>
|
||||
<release revision="24.0.0">
|
||||
<feature>As usual, this release includes bug fixes and performance improvements</feature>
|
||||
</release>
|
||||
<release revision ="23.0.0">
|
||||
<feature platform="IOS">Added lots of under the hood changes to improve the app experience on iOS13</feature>
|
||||
<feature platform="ANDROID">Fixed an issue with Wi-Fi setup on certain Android devices</feature>
|
||||
<feature>Additional bug fixes and performance improvements</feature>
|
||||
</release>
|
||||
<release revision ="22.0.0">
|
||||
<feature>We've added RadioPlayer to our family of music services! Enjoy thousands of regional stations and on demand programs right at your fingertips. Available in select regions</feature>
|
||||
<feature>You can now disable the automatic power save mode in the app for your SoundTouch 10, SoundTouch 20 and SoundTouch 30</feature>
|
||||
<feature>Additional bug fixes & enhancements</feature>
|
||||
</release>
|
||||
<release revision ="21.0.0">
|
||||
<feature>Save more music — you can now save Favorites along with your 6 presets</feature>
|
||||
<feature>We improved Spotify search so you can get grooving faster</feature>
|
||||
<feature>It's now easier to access Recently Played</feature>
|
||||
<feature>Little tweaks here and there to make the app better for you</feature>
|
||||
</release>
|
||||
<release revision="20.0.0">
|
||||
<feature>Say hello to TuneIn (and goodbye to Internet Radio)</feature>
|
||||
<feature>Easily browse through your favorite artists in Spotify</feature>
|
||||
<feature>We made it easier to create an account and reset your password</feature>
|
||||
<feature>General improvements made with our special app-tuning forks</feature>
|
||||
</release>
|
||||
<release revision="19.0.0">
|
||||
<feature>Security related updates to improve application configuration and operation</feature>
|
||||
<feature>Many other bug fixes and enhancements</feature>
|
||||
</release>
|
||||
<release revision="18.0.0">
|
||||
<feature>By updating, you agree to our new Privacy Policy and Terms of Use available at https://worldwide.bose.com/privacypolicy and https://worldwide.bose.com/termsofuse</feature>
|
||||
<feature>Security related updates to improve application configuration and operation</feature>
|
||||
<feature>We tuned the app to include some major performance and stability improvements</feature>
|
||||
</release>
|
||||
<release revision="17.0.0">
|
||||
<feature>Enhanced broadcasting performance of AUX/wired input to other SoundTouch speakers</feature>
|
||||
<feature>Search enabled in Amazon Music</feature>
|
||||
<feature>Many other bug fixes and enhancements</feature>
|
||||
</release>
|
||||
<release revision="16.0.0">
|
||||
<feature><![CDATA[By updating the app, you agree to our new Privacy Policy, available at <a href="https://www.soundtouch.com/privacy">SoundTouch.com/privacy</a>]]></feature>
|
||||
<feature>Broadcasting of AUX/wired input to other SoundTouch speakers</feature>
|
||||
<feature>Volume and grouping enhancements</feature>
|
||||
<feature>New "Just for You" section</feature>
|
||||
<feature>Many other bug fixes and enhancements</feature>
|
||||
</release>
|
||||
<release revision="15.0.0">
|
||||
<feature>As usual, this release includes bug fixes and performance improvements</feature>
|
||||
</release>
|
||||
<release revision="14.0.0">
|
||||
<feature>We made your SoundTouch® experience better, with a completely redesigned app that's easier to use and nicer to look at</feature>
|
||||
<feature>Stereo pairing for SoundTouch® 10 speakers</feature>
|
||||
<feature>QQ Music QPlay streaming support (China only)</feature>
|
||||
<feature platform="IOS">Now you can control your speaker from your Apple Watch® – just open the Watch app and add SoundTouch®</feature>
|
||||
<feature platform="IOS">There’s a new SoundTouch® widget available for iOS – add it in the Today View so you can control your speaker even while your device is locked</feature>
|
||||
<feature>We made speaker selection and volume control more reliable</feature>
|
||||
<feature>The app now shows Pandora’s new logo</feature>
|
||||
<feature>Plus, we fixed some bugs and made things more stable</feature>
|
||||
</release>
|
||||
<release revision="13.0.0">
|
||||
<feature>Updated music library experience with faster navigation, easier search, and more album art</feature>
|
||||
<feature platform="ANDROID">Improved Android Wear support</feature>
|
||||
<feature>Bug fixes</feature>
|
||||
</release>
|
||||
<release revision="12.0.0">
|
||||
<feature>Added Amazon Prime Music (US Only)</feature>
|
||||
<feature platform="ANDROID">Android Wear notifications support</feature>
|
||||
<feature platform="ANDROID">Android lock-screen controls</feature>
|
||||
<feature>SiriusXM® Business Account support</feature>
|
||||
<feature>Over 30 bug fixes</feature>
|
||||
</release>
|
||||
<release revision="7.0.0">
|
||||
<feature>Support for additional music services (where available)</feature>
|
||||
<feature>Search for a track, album, or artist in your stored music library</feature>
|
||||
<feature>Adjust the bass performance of your SoundTouch® system</feature>
|
||||
<feature>Additional bug fixes and performance improvements</feature>
|
||||
</release>
|
||||
<release revision="6.0.0">
|
||||
<feature>Enables wireless setup of SoundTouch® products</feature>
|
||||
<feature>Faster connection to speakers on your network</feature>
|
||||
</release>
|
||||
<release revision="4.0.0">
|
||||
<feature>Enhanced detection of speakers on your network</feature>
|
||||
</release>
|
||||
<release revision="3.0.0">
|
||||
<feature>Improved system discovery</feature>
|
||||
</release>
|
||||
</releases>
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="bose_account_create_1"><item><topic>Why do I need to create an account?</topic><answer><![CDATA[<p>A SoundTouch<sup>®</sup> account is required to keep track of your speakers, presets and music service. In addition, an account helps us better support your speaker and troubleshoot problems.</p> <p>If you are setting up multiple SoundTouch<sup>®</sup> speakers, we strongly recommend that you set them up on the same SoundTouch<sup>®</sup> account. Also, any time you install the SoundTouch<sup>®</sup> app on another mobile device or computer, you are required to sign in using your SoundTouch<sup>®</sup> account info.</p>]]></answer></item><item><topic>Why do I have to provide my email address?</topic><answer><![CDATA[<p>Each SoundTouch<sup>®</sup> account is uniquely identified by an email address. Notifications of software and service updates are sent to this address. When you provide your email address, you can choose (or decline) to receive emails from Bose<sup>®</sup> about new products, events and other announcements. Please read our privacy policy to learn more about how we use your email address by selecting <strong>Settings > About > LEGAL</strong>.</p> <p>If you prefer not to provide your email address, you can set up your speaker anonymously by providing a single-purpose or even non-working email address. In this case, your speaker will continue to receive system software updates, but you will not receive email notifications explaining the new features when these updates are available.</p>]]></answer></item><item><topic>Is there a minimum character or format requirement for the password?</topic><answer><![CDATA[<p>Your password must be at least six characters in length. The password field is case sensitive.</p>]]></answer></item><item><topic>Why should I provide my name and address?</topic><answer><![CDATA[<p>We use your name and address to improve your customer service experience should you need assistance. Please read our privacy policy to understand other ways we may use your name and address by selecting <strong>Settings > About > LEGAL.</strong></p>]]></answer></item></page>
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="gabbo_ios_settings"><item><topic>How do I change my network?</topic><answer><![CDATA[<p>Change your network from the Settings menu on your mobile device.</p><ol><li><p>On your mobile device, tap the <strong>Home</strong> button.</p></li><li><p>Tap <strong>Settings > Wi-Fi</strong>.</p> <p><strong>Note</strong>: By default, the Settings menu is on the Home screen.</p></li><li><p>Select the Wi-Fi<sup>®</sup> network starting with <strong>Bose</strong>.</p></li><li><p>Tap the <strong>Home</strong> button.</p></li><li><p>Tap the SoundTouch<sup>®</sup> icon to return to the SoundTouch<sup>®</sup> app.</p></li></ol>]]></answer></item><item><topic>Why do I need to connect to the "Bose" Wi-Fi<sup>®</sup> network?</topic><answer><![CDATA[<p>Connecting to the "Bose" Wi-Fi<sup>®</sup> network enables your speaker to be set up on your home Wi-Fi<sup>®</sup> network. Connecting to this network is temporary. After you set up the speaker, you reconnect to your home network.</p>]]></answer></item><item><topic>I can't find the "Bose" Wi-Fi<sup>®</sup> network.</topic><answer><![CDATA[<p>Make sure that you're looking for the Wi-Fi<sup>®</sup> network starting with Bose. It may take up to 30 seconds for the network to appear on the list.</p><p>If the network does not appear after 30 seconds, select <strong>I Don't See This Network</strong> to put the system into setup mode and continue with setup.</p>]]></answer></item><item><topic>How do I return to the app from my mobile device's Settings menu?</topic><answer><![CDATA[<ol><li><p>On your mobile device, tap the <strong>Home</strong> button.</p><p>On the Home screen, tap the SoundTouch<sup>®</sup> icon.</p></li></ol>]]></answer></item></page>
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="gabbo_recovery_lisa"><item><topic>The Wi-Fi<sup>®</sup> indicator isn't glowing amber. What do I do now?</topic><answer><![CDATA[<p>If the Wi-Fi<sup>®</sup> indicator is not glowing solid amber, your system is not in setup mode.</p><ol><li><p>Power on your system.</p></li><li><p>Press and hold the <strong>Control</strong> button on the back of the SoundTouch<sup>®</sup> wireless adapter for 1-8 seconds.</p> <p><strong>Note</strong>: If the Wi-Fi<sup>®</sup> indicator does not glow solid amber, press and hold the <strong>Control</strong> button again, making sure to release the button before 8 seconds elapses.</p></li></ol>]]></answer></item><item><topic>Where is the Control button?</topic><answer><![CDATA[<p>The Control button is on the SoundTouch<sup>®</sup> wireless adapter's connector panel.</p>]]></answer></item><item><topic>Where is the Wi-Fi<sup>®</sup> indicator?</topic><answer><![CDATA[<p>The Wi-Fi<sup>®</sup> indicator is on the SoundTouch<sup>®</sup> wireless adapter's connector panel.</p>]]></answer></item></page>
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="gabbo_recovery_nelson"><item><topic>The Wi-Fi<sup>®</sup> indicator isn't glowing amber. What do I do now?</topic><answer><![CDATA[<p>If the Wi-Fi<sup>®</sup> indicator is not glowing solid amber, your system is not in setup mode.</p><ol><li><p>Power on your system.</p></li><li><p>Press and hold the <strong>Control</strong> button on the back of the SoundTouch<sup>®</sup> pedestal for 1-8 seconds.</p> <p>The Wi-Fi<sup>®</sup> indicator glows solid amber.</p> <p>The message <em>SETUP SEE INSTRUCTIONS</em> appears on the display.</p> <p>Your system is now in setup mode.</p></li></ol><p><strong>Note</strong>: If the Wi-Fi<sup>®</sup> indicator does not glow solid amber and the message does not appear on the display, press and hold the <strong>Control</strong> button again, making sure to release the button before 8 seconds elapses.</p>]]></answer></item><item><topic>Where is the Control button?</topic><answer><![CDATA[<p>The Control button is on the SoundTouch<sup>®</sup> pedestal’s connector panel.</p>]]></answer></item><item><topic>Where is the Wi-Fi<sup>®</sup> indicator?</topic><answer><![CDATA[<p>The Wi-Fi<sup>®</sup> indicator is on the SoundTouch<sup>®</sup> pedestal’s connector panel.</p>]]></answer></item></page>
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="gabbo_recovery_select_system">
|
||||
<item>
|
||||
<topic>What is the name of my speaker?</topic>
|
||||
<answer>
|
||||
<![CDATA[<p>Check the carton or the owner's guide that shipped with your speaker. You may also find the name of the speaker on a label on the back or bottom of the speaker.</p>]]>
|
||||
</answer></item>
|
||||
<item>
|
||||
<topic>What is the "Bose" Wi-Fi<sup>®</sup> network?</topic>
|
||||
<answer>
|
||||
<![CDATA[<p>Your speaker has its own built-in Wi-Fi network that you use to set up your speaker. You will temporarily connect to this network on the device you are using, set the speaker up on your network and then reconnect to your home Wi-Fi network.</p>]]>
|
||||
</answer>
|
||||
</item>
|
||||
</page>
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="gabbo_recovery_smt"><item><topic>The Wi-Fi<sup>®</sup> indicator isn't glowing amber. What do I do now?</topic><answer><![CDATA[<p>If the Wi-Fi<sup>®</sup> indicator is not glowing solid amber, your speaker is not in setup mode.</p><ol><li><p>Power on your speaker.</p></li><li><p>On the button pad, press and hold the <strong>2</strong> and <strong>Volume -</strong> buttons until the countdown reaches 1 and a message similar to "Setup" appears on the display.</p> <p>The Wi-Fi<sup>®</sup> indicator glows solid amber.</p> <p>Your system is now in Setup mode.</p></li></ol>]]></answer></item><item><topic>Where is the Wi-Fi<sup>®</sup> indicator?</topic><answer><![CDATA[<p>The Wi-Fi<sup>®</sup> indicator is on the front of the speaker.</p>]]></answer></item></page>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="name_device"><item><topic>Why should I name my speaker?</topic><answer><![CDATA[<p>Naming the speaker makes it easy to recognize in the app when you have multiple speakers. You can use a name that identifies the space where the speaker is placed, for example, such as Living Room.</p>]]></answer></item><item><topic>Can I rename this speaker later?</topic><answer><![CDATA[<p>Yes, you can rename the speaker from the Settings menu. Select <strong>Settings > Speaker Settings</strong>, then select your speaker.</p>]]></answer></item></page>
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="prompt_other_devices"><item><topic>Can I set up another speaker later?</topic><answer><![CDATA[<p>Yes. Select <strong>Settings > Add or Reconnect Speaker</strong>.</p>]]></answer></item><item><topic>How many speakers can I add to my network?</topic><answer><![CDATA[<p>You can add as many speakers to your network as determined by the capacity of your home Wi-Fi<sup>®</sup> network.</p>]]></answer></item></page>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="setup_done"/>
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="wifi_or_ethernet_ask"><item><topic>How should I connect my speaker to my network?</topic><answer><![CDATA[<p>You can connect your speaker to your network using a Wi-Fi<sup>®</sup> or Ethernet connection. If you select Ethernet, make sure the Ethernet cable from your router can reach your speaker.</p> <p><strong>Note</strong>: If you are setting up a SoundTouch<sup>®</sup> 10 speaker, SoundTouch<sup>®</sup> Wireless Link or SoundTouch<sup>®</sup> Portable Wi-Fi<sup>®</sup> music system, you must select <strong>WI-FI</strong>.</p>]]></answer></item><item><topic>Will there be a difference in performance between a wired and a wireless setup?</topic><answer><![CDATA[<p>Performance varies depending on the number of devices on your network and how the devices are connected. A wireless connection provides more flexibility when placing your system. A wired connection is better when your wireless router's signal is weak or can't be received.</p>]]></answer></item></page>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.3 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
@@ -278,6 +278,8 @@ func (m *Manager) GetMigrationSummary(deviceIP, targetURL, proxyURL string, opti
|
||||
"bose-prod.apigee.net",
|
||||
"worldwide.bose.com",
|
||||
"music.api.bose.com",
|
||||
"media.bose.io",
|
||||
"downloads.bose.com",
|
||||
}
|
||||
|
||||
var hostsLines []string
|
||||
@@ -1061,6 +1063,8 @@ func (m *Manager) migrateViaHosts(deviceIP, targetURL string) (string, error) {
|
||||
"events.api.bosecm.com",
|
||||
"bose-prod.apigee.net",
|
||||
"worldwide.bose.com",
|
||||
"media.bose.io",
|
||||
"downloads.bose.com",
|
||||
}
|
||||
|
||||
hostsContent, err := client.Run("cat /etc/hosts")
|
||||
|
||||
@@ -54,7 +54,7 @@ func TestMigrateViaHosts(t *testing.T) {
|
||||
if command == "cat /etc/hosts" {
|
||||
// Handle both initial read and verification read
|
||||
if len(runCalls) > 2 { // Rough heuristic: verification happens after upload
|
||||
return "192.168.1.100\tstreaming.bose.com\n192.168.1.100\tupdates.bose.com\n192.168.1.100\tstats.bose.com\n192.168.1.100\tbmx.bose.com\n192.168.1.100\tcontent.api.bose.io\n192.168.1.100\tevents.api.bosecm.com\n192.168.1.100\tbose-prod.apigee.net\n192.168.1.100\tworldwide.bose.com", nil
|
||||
return "192.168.1.100\tstreaming.bose.com\n192.168.1.100\tupdates.bose.com\n192.168.1.100\tstats.bose.com\n192.168.1.100\tbmx.bose.com\n192.168.1.100\tcontent.api.bose.io\n192.168.1.100\tevents.api.bosecm.com\n192.168.1.100\tbose-prod.apigee.net\n192.168.1.100\tworldwide.bose.com\n192.168.1.100\tmedia.bose.io\n192.168.1.100\tdownloads.bose.com", nil
|
||||
}
|
||||
return "127.0.0.1 localhost", nil
|
||||
}
|
||||
@@ -132,7 +132,7 @@ func TestMigrateViaHosts_UpdateExisting(t *testing.T) {
|
||||
runCount++
|
||||
if command == "cat /etc/hosts" {
|
||||
if runCount > 1 {
|
||||
return "127.0.0.1 localhost\n192.168.1.100\tstreaming.bose.com\n192.168.1.100\tupdates.bose.com\n192.168.1.100\tstats.bose.com\n192.168.1.100\tbmx.bose.com\n192.168.1.100\tcontent.api.bose.io\n192.168.1.100\tevents.api.bosecm.com\n192.168.1.100\tbose-prod.apigee.net\n192.168.1.100\tworldwide.bose.com", nil
|
||||
return "127.0.0.1 localhost\n192.168.1.100\tstreaming.bose.com\n192.168.1.100\tupdates.bose.com\n192.168.1.100\tstats.bose.com\n192.168.1.100\tbmx.bose.com\n192.168.1.100\tcontent.api.bose.io\n192.168.1.100\tevents.api.bosecm.com\n192.168.1.100\tbose-prod.apigee.net\n192.168.1.100\tworldwide.bose.com\n192.168.1.100\tmedia.bose.io\n192.168.1.100\tdownloads.bose.com", nil
|
||||
}
|
||||
return "127.0.0.1 localhost\n1.2.3.4\tstreaming.bose.com\n1.2.3.4\tupdates.bose.com", nil
|
||||
}
|
||||
@@ -648,7 +648,7 @@ func TestMigrateViaHosts_SkipCAIfTrusted(t *testing.T) {
|
||||
if command == "cat /etc/hosts" {
|
||||
// Handle both initial read and verification read
|
||||
if len(runCalls) > 2 { // Rough heuristic: verification happens after upload
|
||||
return "192.168.1.100\tstreaming.bose.com\n192.168.1.100\tupdates.bose.com\n192.168.1.100\tstats.bose.com\n192.168.1.100\tbmx.bose.com\n192.168.1.100\tcontent.api.bose.io\n192.168.1.100\tevents.api.bosecm.com\n192.168.1.100\tbose-prod.apigee.net\n192.168.1.100\tworldwide.bose.com", nil
|
||||
return "192.168.1.100\tstreaming.bose.com\n192.168.1.100\tupdates.bose.com\n192.168.1.100\tstats.bose.com\n192.168.1.100\tbmx.bose.com\n192.168.1.100\tcontent.api.bose.io\n192.168.1.100\tevents.api.bosecm.com\n192.168.1.100\tbose-prod.apigee.net\n192.168.1.100\tworldwide.bose.com\n192.168.1.100\tmedia.bose.io\n192.168.1.100\tdownloads.bose.com", nil
|
||||
}
|
||||
return "127.0.0.1 localhost", nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user