크롬캐스트 오디오로 멀티룸 오디오를 사용하다 작년 말 아마존 에코로 환경을 모두 변경하였다.
기존 스피커들은 Alexa built in이 없기에 Echo dot 2를 스피커마다 하나씩 붙여주었다.(AUX 연결)
대부분의 스피커는 무리없이 구동되었지만, 주방 구석에 둔 Bose Soundtouch 10에 이슈가 발생했다.
사운드터치는 20분이 지나도록 입력 신호가 없으면 자동으로 절전 모드로 들어가는데,
자동 전원 On 혹은 절전 모드 비활성화 기능이 없어서 사용하지 않다가 다시 쓰는 경우에는
수동으로 전원이나 AUX 버튼을 눌러줘야 하였다.
쉽게 말해,
"자동 Off는 있지만, 자동 On 혹은 입력을 자동 인식하는 기능은 없는" 반쪽짜리 스피커인 것이다...
대단한 기능도 아닌데 Auto off 비활성화 메뉴를 안만들어 주는 BOSE를 이해할 수가 없다.
(물론 Soundtouch 앱을 통해서 on은 가능하지만 여전히 매번 앱을 열어 on을 눌러줘야 함)
매번 전원이나 AUX를 눌러주기도 귀찮아서 방치하다 방법이 없을까 싶어 찾아보았다.
(와이프가 버튼 누르기 귀찮다고 아예 사용을 안하다보니 방치된...)
과정은 뒤이어 정리해둔 것을 참조바라며,
결론만 말하면 "NAS(Synology)에서 Bash shell script를 15분마다 실행시켜
사운드터치10의 Auto off를 진행되지 않게 하는 방법"으로 해결하였다.
bose-soundtouch-aux-keepalive.sh
스크립트가 익숙한 분들은 다음 코드를 이용하면 Synology task scheduler에서 바로 사용 가능하다.
#!/bin/bash
PATH=/opt/bin:/usr/bin/:/opt/bin/bash
# Script as below
soundtouch_ip=사운드터치ip입력부분
source=$(curl -s https://$soundtouch_ip:8090/now_playing | xmllint --xpath 'string(/nowPlaying/@source)' -)
if [ $source = "AUX" ]
then
echo SoundTouch mode is AUX: keep-alive
curl -s -o /dev/null --request POST --header "Content-Type: application/xml" --data '<key state="press" sender="Gabbo">THUMBS_UP</key>' https://$soundtouch_ip:8090/key
elif [ $source = "STANDBY" ]
then
echo SoundTouch mode is STANDBY: switch to AUX
curl -s -o /dev/null --request POST --header "Content-Type: application/xml" --data '<ContentItem source="AUX" sourceAccount="AUX"></ContentItem>' https://$soundtouch_ip:8090/select
fi
※ 'soundtouch_ip=사운드터치ip입력부분' ip를 본인 환경에 맞춰 수정해야 함
※ 스피커 On + AUX 모드면 상태 유지, Off/Standby면 AUX 모드로 변환 시켜줌
※ 인지하기 어려운 수준의 dummy를 전송해 Auto off 방지하는 형태(재생 시에도 간섭 없음)
※ 사운드터치 제품군에는 모두 적용 가능할 것으로 예상되나 불가능할 수도 있음
(1세대 ST20, ST30의 경우 그냥 telnet으로 Auto off 해제 해주는 것이 훨씬 편함)
중요한 내용은 이게 다임.
끝!
스크립트와 친하지 않은 분들께 필요한 자세한 How to do는 다음부터...
이번 포스트는 스크립트 랭귀지를 모르는 분들도 그대로 따라가기만 하면 되는 수준으로 작성되었으나,
SSH를 통한 패키지 설치 및 vi 에디터 사용 등을 하므로 이로 인한 NAS의 손상 등을 책임지지 않습니다.
자동 종료(Auto off, Auto sleep) 비활성화의 필요성
- 사운드터치 10은 입력 없이 20분이 지나면 자동종료 됨(Echo dot을 AUX로 연결하여 사용 중)
- 자동 종료된 경우 수동으로 전원/AUX 등의 물리 버튼이나 Bose 앱을 통해서 on 해줘야 함
- 쉬운 방법부터 찾아 보았지만 해당 솔루션은 특정 세대 사운드터치 20이나 30에만 작동함(telnet)
telnet soundtouchip 17000 sys timeout inactivity disable
- 사운드터치 10을 위한 스크립트를 찾았지만 상시 가동되는 Linux, Mac, 라즈베리파이 등이 필요함
(https://github.com/Matsuo3rd/bose-soundtouch-aux-keepalive)
여튼 스피커 살리자고 Mac을 켜둘 수는 없는 노릇이고, 집에서 항상 켜두는 NAS를 이용한다면
스크립트를 통해 20분 마다 잠드는 스피커의 자동 꺼짐을 방지할 수 있지 싶었다.
참고.
사운드터치 10은 블루투스가 연결된 상태에서만 자동으로 Auto off가 비활성화된다.(2년전 업데이트)
하지만 Alexa의 멀티룸 오디오 기능을 사용할 때는 무조건 Bluetooth 연결이 끊어지므로,
앱이나 보이스로 매번 재연결이 필요한 말도 안되는 상황(사실상 Auto off 비활성화가 불가능한)이다.
이 답변 올라온지 2년이 넘은듯...
아마도 개발팀의 우선순위에서 한참 밀려나 있는 것이 아닐까 싶다.
BOSE 커뮤니티에도 사용자들의 원성이 자자하다.
텔넷 연결까지 가능하게 해놓고 이런 기능을 안넣어주는 이유가 뭔지 이해 불가능하다.
(다시는 안산다는 사람부터 특별한 기능도 아닌데 안해준다는 사람들까지 다들 한 마음으로 욕을...;;)
참조
이번 이슈 해결을 위해 참고한 사항들은 다음과 같다.
필요 조건
Xpenology(Synology)를 올린 NAS의 Task scheduler(Crontab 역할을 하는)를 통해 가능하다.
다만, Synology의 DSM은 BASH 대신 ASH를 지원 하기에 약간의 수고가 필요하다.
준비물은 다음과 같다.
- BOSE Soundtouch 10
- NAS(Shell script를 task scheduling 가능한 Synology, Xpenology 등의 장비)
- Synology용 bootstrap, bash, xmllint(bash script 실행을 위해 필요, 미리 다운로드 필요없음)
* 스크립트를 Synology의 Task scheduler(작업 스케줄러) 혹은 crontab을 통해 15분 마다 실행하는 형태임
※ 스피커 ip는 공유기 DHCP에서 수동 할당해줘야 간혹 있을 수 있는 ip 변동을 방지할 수 있다.
(스크립트 실행 할 때 마다 ip 체크나 변경 하는 것 보다 수동 할당이 낫다)
설정 방법
0. 첨부된 스크립트 파일을 Synology에 업로드
※ 본 예제는 volume1에 script 폴더를 만들어 업로드한 상태가 기준임
→ /volume1/script/bose-soundtouch-aux-keepalive.sh
bose-soundtouch-aux-keepalive.sh
1. Synology SSH 활성화
* 모든 작업 종료 후 SSH는 닫으시면 됩니다.
2. Terminal(Mac), Putty 등의 Command line tool로 SSH 접속
ssh admin@서버IP
3. root 권한 획득
sudo -i
4. Synology에 bootstrap(ipkg) 다운로드
cd /volume1/tmpwget http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh
※ Synology 사양에 따라 설치 파일은 달라질 수 있음 uname --machine
명령어를 통해 cpu type 확인이 필요하며, x86_64인 경우 동일하게 진행하면 됨
※ 이 솔루션에 사용한 Xpenology는 N40L임
5. Bootstrap 퍼미션 설정
chmod +x syno-i686-bootstrap_1.2-7_i686.xsh
6. 스크립트 실행
sh syno-i686-bootstrap_1.2-7_i686.xsh
7. 링크 생성
cd / ln -s /volume1/@optware/opt cd /
8. vi를 이용하여 comment 추가
vi /root/.profile
※ profile에추가할 사항
#PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin #export PATH
※ vi 나가기 - ESC 클릭 후 :wq1 입력 후 엔터
9. 서버 리부트
10. SSH 재접속 및 root 권한 얻은 후(2, 3번 반복) bash 설치
ipkg install bash
11. vi를 이용하여 bash로 자동 로그인 설정
vi .profile
※ profile에 추가할 사항
# ... if [[ -x /opt/bin/bash ]]; then exec /opt/bin/bash fi
※ vi 나가기 - ESC 클릭 후 :wq1 입력 후 엔터
12. Ash 대신 Bash를 사용하기 위한 심볼릭 링크 생성
ln -s /opt/bin/bash /bin/bash
13. xmllint 설치 후 SSH 종료
ipkg install libxml2 ipkg install libxslt
※ 만약 에러가 나서 설치가 안된다면 다음을 활용
ipkg install libxml2 libxslt mkdir -p /home/slug/optware/syno-i686/staging ln -s /opt /home/slug/optware/syno-i686/staging/opt pip install lxml
14. Synology Task Scheduler(작업 스케줄러)에 task 생성
사운드터치가 20분 동안 입력이 없으면 Auto off 되므로 15분 단위로 스크립트 실행시킨다.
아래의 내용을 사용자 정의 스크립트에 추가한다.
sh /volume1/script/bose-soundtouch-aux-keepalive.sh
※ 맨 처음 소스코드를 스크립트에 직접 넣는다면 step. 0의 파일 업로드는 필요 없음
15. 생성한 task를 실행하여 test. 끝!
정상적으로 적용된다면 잠들어 있던 사운드터치 10이 AUX 모드로 변환된다.
(만약 On 상태에 AUX 모드라면 눈에 보이는 스피커의 물리적인 변화가 없는 것이 정상 - 상태 유지만 시키므로)
자세히 적다보니 단계가 많아서 복잡해보이지만 사실 대단한 것이 없는 수준이다.
별것도 아닌 기능을 빼두는 바람에 쓸데없이 손만 많이 가게 만들어준 BOSE에게 박수를 보낸다.
(에너지스타 인증 때문에 Auto off가 들어갔을테지만 그럼 Auto on이나 하다못해 Auto off를 끌 수나 있게 만들어줬어야...)
추가 이슈
진행하면서 스크립트 관련 이슈가 있었던 사항을 정리해둔다.
야매 코딩의 특성상 정상적인 디버깅이나 업데이트는 없을 가능성이 농후하다 :)
1. ^M 관련 에러
sh: /volume1/script/bose-soundtouch-aux-keepalive.sh: /bin/bash^M: bad interpreter: No such file or directory
→ 윈도우에서 스크립트 수정 등으로 인해 줄바꿈용 엔터값(^M) 들어간 것이므로,
vi에서 ^M 직접 삭제해주거나 Synology의 텍스트에디터로 파일 뒤 엔터값 수정
2. [: =: unary operator expected 에러
sh: line 1: xmllint: command not found (23) Failed writing body sh: line 2: [: =: unary operator expected sh: line 6: [: =: unary operator expected
→ bash shell script(sh 파일)의 PATH 설정에 문제가 있는 것이므로, path 값을 본인 환경에 맞춰 수정
(xmllint 커맨드를 인식하지 않는 상황이므로 path를 통해 xmllint 로딩시켜 커맨드 인식)
3. syntax error near unexpected token `elif' 에러
/volume1/script/bose-soundtouch-aux-keepalive.sh: line 2: xmllint: command not found /volume1/script/bose-soundtouch-aux-keepalive.sh: line 7: syntax error near unexpected token `elif' /volume1/script/bose-soundtouch-aux-keepalive.sh: line 7: `elif [ $source = "STANDBY" ]
→ PATH 설정 및 스크립트 syntax에 문제가 있는 것이므로, path 설정 및 해당 라인 수정
(2번과 같이 xmllint 커맨드를 인식하지 않는 상황이므로 path를 통해 xmllint 로딩시켜 커맨드 인식)
대박이네요. 저도 보스 유저로서 AUTO-OFF은 정말.....저도 욕만하다가...지냈습니다..흑..
https://x86.co.kr/imessage/2049646
PS. 나스 게시판 유저들에게 더욱 적절할것 같아 일단 이동하겠습니다.
미국넘들도 하나같이 환불하니 마니
물건을 이 따위로 만드는게 말이되냐 등등
다들 난리더군요-_-;
저도 얼마 전 깃허브 소스 찾아서 살짝 손만 본 수준이라 ㅎㅎ
다만 사운드터치류 쓰시는 분들에겐 희소식일 듯 합니다.
* 카테고리는 어디로 갈지 헤메다 주변기기로 뒀습니다. 어디든 괜찮습니다 :)
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 조회 수 | 날짜 | 글쓴이 |
---|---|---|---|
Plex 1.32.0.6918 버전 업데이트 이후 SSL 인증서 오류 해결 방법 +6 | 3.9만 | 23.04.1404:18 | 잠퉁이 |
시놀로지 Plex에 HTTPS (SSL) 인증서 적용하기 +4 | 9.1만 | 23.01.2004:25 | 잠퉁이 |
시놀로지 NAS Audio Station 알송 가사 플러그인 설치하기 +12 | 7만 | 22.12.3104:34 | 잠퉁이 |
시놀로지 NAS 알림을 텔레그램으로 받아보자 +9 | 7.5만 | 22.12.1001:23 | 잠퉁이 |
헤놀로지에서 제어판의 팬속도모드 안먹는 팬 속도조절 하는법 +5 | 6.9만 | 22.04.2218:04 | 룽즈 |
무료 ddns와 무료ssl로 < https:// 영문주소 >를 통해 내 ... +9 | 6.7만 | 22.04.2202:51 | 룽즈 |
메인보드 바이오스 구버전으로 롤백이 안될 때 쓰는 방법. +5 | 13만 | 22.02.1922:01 | 퓨리온 |
USB Type C to C 케이블 총정리 +15 | 6.5만 | 20.06.2918:17 | 아이브경 |
USB 키보드를 블루투스 키보드로 바꿔서(?) 사용하자 +16 | 10만 | 19.05.2206:22 | Ohchang |
컴퓨터 조립 10단계 +7 | 8.9만 | 16.02.2516:30 | Mactopia |
212 | 24.10.1915:03 | 잠퉁이 | |
148 | 24.10.2011:37 | 정발이 | |
120 | 24.10.1819:11 | 좌절금지 | |
183 | 24.10.1516:06 | 좌절금지 | |
199 | 24.10.1220:02 | Stultus | |
120 | 24.10.1121:51 | 좌절금지 | |
138 | 24.10.0522:37 | 보노 | |
157 | 24.10.0411:10 | 키아다농장 | |
225 | 24.09.2810:24 | 래니 | |
147 | 24.09.3016:43 | Dokdo | |
137 | 24.09.2620:38 | 달쇠 | |
219 | 24.09.2418:55 | 달쇠 | |
145 | 24.09.2101:34 | 애플맨 | |
325 | 24.09.2020:13 | moongate | |
167 | 24.09.1316:55 | hackillious | |
296 | 24.09.1022:07 | fullbrk | |
153 | 24.09.0613:15 | 미찌콘 | |
863 | 24.08.3118:19 | 래니 | |
322 | 24.08.2017:37 | 좌절금지 | |
252 | 24.08.1303:23 | 세유니 | |
354 | 24.08.1220:12 | Panictosh | |
245 | 24.08.0712:29 | bonusss | |
282 | 24.08.0419:23 | 좌절금지 | |
241 | 24.07.2915:51 | 피아노맨 | |
242 | 24.07.2915:32 | joy | |
3298 | 23.11.1808:55 | junsun | |
1만 | 24.01.2610:50 | junsun | |
530 | 24.07.1815:29 | jcher | |
763 | 24.07.1713:15 | 미찌콘 | |
880 | 24.07.1620:49 | 머슬링 | |
1080 | 24.07.1522:35 | 달쇠 | |
4515 | 24.07.1422:36 | 좌절금지 | |
1401 | 24.07.1420:16 | jcher | |
1618 | 24.07.1409:17 | 좌절금지 | |
1527 | 24.07.1313:26 | 제로섬 | |
2513 | 24.07.1220:00 | 좌절금지 | |
2454 | 24.07.1021:01 | moongate | |
2562 | 24.07.0918:59 | 좌절금지 | |
2321 | 24.07.0611:51 | 좌절금지 | |
2174 | 24.07.0611:50 | 좌절금지 | |
1866 | 24.07.0419:05 | 슈퍼랩터 | |
1623 | 24.06.3019:11 | Stultus | |
5211 | 24.06.2813:29 | 좌절금지 | |
1610 | 24.06.2312:03 | jcher | |
2760 | 24.06.1916:20 | soullees | |
1375 | 24.06.1613:51 | jcher | |
1513 | 24.06.1314:19 | 잠퉁이 | |
1438 | 24.06.1105:04 | 잠퉁이 | |
1402 | 24.06.1419:11 | 오늘도부 | |
2682 | 24.06.0822:43 | 좌절금지 | |
1631 | 24.05.2716:23 | 잠퉁이 | |
2737 | 24.05.2523:00 | 모노구리 | |
1408 | 24.05.2414:53 | Bong9 | |
1361 | 24.05.2317:54 | Bong9 | |
1624 | 24.05.2019:32 | 네오꿈 | |
1371 | 24.05.1921:47 | 믜늬의릐희 | |
1497 | 24.05.1812:32 | 좌절금지 | |
1245 | 24.05.1521:40 | 잠퉁이 | |
1077 | 24.05.1719:36 | Stultus | |
1083 | 24.05.1500:39 | 잠퉁이 | |
1131 | 24.05.0815:19 | 네오꿈 | |
817 | 24.05.0722:43 | 뚜찌z | |
1830 | 24.05.0319:52 | hattog | |
1799 | 24.05.0307:44 | 대영이 | |
1439 | 24.05.0223:33 | 뚜찌z | |
1669 | 24.05.0210:26 | jcher | |
1830 | 24.05.0103:05 | 제로섬 | |
1818 | 24.04.3020:35 | 래니 | |
2916 | 24.04.2718:20 | 잠퉁이 | |
3406 | 24.04.2422:41 | 뚜찌z | |
1674 | 24.04.2213:16 | jcher | |
3795 | 24.04.2011:55 | junsun | |
4031 | 24.04.1721:09 | 뚜찌z | |
4096 | 24.04.1622:16 | 믜늬의릐희 | |
2386 | 24.04.1309:01 | nowsoftkt | |
3823 | 24.04.1103:07 | 잠퉁이 | |
3596 | 24.04.0714:59 | D다 | |
3484 | 24.04.0615:31 | 에드 | |
2646 | 24.04.0521:13 | 비트러브 | |
7919 | 24.04.0520:34 | 뚜찌z |
눈에 잘 띄라고 코드박스를 썼더니 명칭이 스크립트 내용 따라 들어가는 것 같군요.
상단의 JAVA, CSS 등은 무시하시면 됩니다.