# Sleep Number 침대 루트 접근 방법

> Clean Markdown view of GeekNews topic #15632. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=15632](https://news.hada.io/topic?id=15632)
- GeekNews Markdown: [https://news.hada.io/topic/15632.md](https://news.hada.io/topic/15632.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-07-02T08:33:12+09:00
- Updated: 2024-07-02T08:33:12+09:00
- Original source: [dillan.org](https://dillan.org/articles/how-to-get-root-access-to-your-sleep-number-bed)
- Points: 2
- Comments: 1

## Topic Body

#### 동기

- 몇 년 동안 Sleep Number 침대의 로컬 네트워크 접근 가능성을 탐구해왔음
- HomeKit을 통해 침대 설정을 제어할 수 있는 homebridge 플러그인을 만들었음
- Sleep Number에서 API 요청 빈도가 높아져 플러그인을 비활성화하라는 요청을 받았음
- 로컬 네트워크 접근을 통해 서버를 우회하는 방법을 찾기로 결심했음

#### 사전 준비 사항

- Sleep Number Hub 모델 번호: 360SIQ01D
- UART to TTY 장치 및 기타 하드웨어 도구 필요
- USB-A 플래시 드라이브 필요

#### 루트 접근 권한 획득

1. J16 헤더에 UART 장치 연결
2. UART 장치에 콘솔 연결 (baud rate: 115200)
3. 허브 전원을 켜고 2초 내에 &lt;SPACE&gt;를 눌러 자동 부팅 시퀀스를 중지
4. 부팅 환경 변수 편집
   - 기본 환경 변수 백업
   - `bootcmd` 변수에서 `run set_bootargs;` 제거
   - `bootargs` 변수에 다음 추가:
     ```
     console=ttymxc0,115200 root=/dev/mmcblk${linux_mmcdev}p1 rootwait rdinit=/bin/bash -- -c "sed -i 's/LMR=`.*`/LMR=let_me_root/' /init; exec /init"
     ```
5. 첫 부팅 시 "let_me_root" 파일이 있는 플래시 드라이브 삽입
6. 루트 파티션을 rw로 다시 마운트하고 `let_me_root` 파일 추가
7. SSH 접근 설정

#### 로컬 네트워크 제어 및 모니터링 서버 생성

- Python 2.7.18을 사용하여 HTTP 서버 설정
- `/bam/scripts` 디렉토리의 스크립트를 실행할 수 있는 HTTP 서버 스크립트 작성
- 스크립트를 허브에 복사하고 실행

##### rc.d 스크립트 추가

- `/real.root` 파티션에 rc.d 스크립트 추가
- 스크립트를 허브에 복사하고 적절한 위치로 이동
- 필요한 심볼릭 링크 추가

##### 유용한 명령어

- `/bio` 스크립트에서 다양한 침대 제어 명령어 사용 가능
- 예시 명령어:
  - `arg=PSNL`: 왼쪽 침대 측면의 마지막 설정된 수면 번호 값 가져오기
  - `arg=PSNS&arg=L100`: 왼쪽 침대 측면의 수면 번호를 100으로 설정

#### 다음 단계

- `/bam` 루트 디렉토리의 침대 제어 기능 탐색
- SSH 터널을 통해 Sleep Number 서버와 통신하는 허브의 보안 문제 고려
- SleepIQ 앱을 대체할 수 있는 간단한 웹 앱 작성

#### 부록: 허브의 원래 U-Boot 환경 변수

- `baudrate=115200`
- `bootcmd=run find_board_name; run set_bootargs;setenv boot_mmcdev 0; run bootcmd_mmc;setenv boot_mmcdev 1; run bootcmd_mmc`
- 기타 변수들...

#### GN⁺의 의견

- 이 가이드는 Sleep Number 침대의 로컬 네트워크 접근을 가능하게 하여 사용자에게 더 많은 제어 권한을 제공함
- 허브의 보안 문제를 고려할 때, 외부 인터넷 연결을 끊는 것이 좋음
- 비슷한 기능을 제공하는 다른 스마트 홈 제품들도 존재함
- 새로운 기술을 도입할 때는 보안과 유지보수 문제를 신중히 고려해야 함

## Comments



### Comment 26840

- Author: neo
- Created: 2024-07-02T08:33:13+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=40838167) 
- 과거에 스마트 기능이 없는 침대를 사용했음
  - 두 개의 유선 컨트롤러가 펌프에 연결되어 있었음
  - 인터넷이나 Linux 마이크로컨트롤러가 필요하지 않았음
  - 해킹 걱정 없이 편안하게 잠을 잤음

- Sleep Number 서버와 SSH 터널을 통해 통신하는 허브에 관심이 있음
  - PubkeyAuth 또는 비밀번호를 사용하는지 궁금함
  - DNS 하이재킹 가능성에 대해 상상해 봄
  - Homer Simpson의 유명한 말처럼 "침대가 올라가고 내려감"을 인용함

- Eight Sleep Pod 3에 접근하는 유사한 방법이 있음
  - 일부 모델은 수정 가능한 MicroSD 카드를 포함함
  - TFA에서 사용된 방법이 카드 없이 루트 접근을 얻는 좋은 방법일 수 있음
  - Eight Sleep이 펌웨어 업데이트를 서명하지만, 서명에 사용된 개인 키도 함께 보냄

- Eight Sleep 침대를 해킹하는 글이라고 생각했음
  - 실제 "Number Sleep Hub" 사진을 보고 놀랐음
  - Eight Sleep과 Sleep Number라는 두 회사가 물 냉각 침대를 만든다는 사실에 충격을 받음

- 다음은 랜섬웨어에 대한 농담
  - "1000달러를 지불하지 않으면 다음 달 동안 침대에서 잘 수 없음"

- 인터넷이 끊겨서 침대 온도를 조절할 수 없는 상황이 불편함

- Sleep Number 침대를 사지 않기로 결심함
  - 중국으로 아웃소싱된 후 내부 바플이 부러진 두 개의 매트리스를 경험함

- 침대가 Linux를 실행해야 하는 이유에 의문을 가짐
  - 1GB RAM과 전체 OS가 필요한 침대가 왜 필요한지 이해할 수 없음
  - WiFi 연결이 없는 세탁기를 찾는 것도 어려웠음
  - 스마트 기기를 피하는 것이 점점 더 어려워지고 있음

- 납땜 도구를 쇼핑 목록에 추가할 것을 권장함
