샤오미의 다른 IP 카메라를 쓰고 있는데, 이게 Mi Home 을 이용하는 형식이고, 그 얘기는 서버가 중국에 있단 뜻이 된다. 뭐.. 중국에 있건 달나라에 있건, 그 ‘위치’가 중요한게 아니고, 어딘가를 ‘경유’해야한다는 사실 자체가 그다지 맘에 들진 않는다.
대체품이 없을까 고민하던 중에, rtsp 서버를 지원하거나, Onvif 를 지원하는 카메라가 있으면 된다는 사실까진 알아냈는데..
이게 생각보다 비싸고, 확실한 안내서를 찾질 못했다. SBC 를 이용하고, 카메라만 따로 설치할 수 있는 방법이 있다면 좋을텐데.. 광활한 구글 바다에서 이런 내용을 찾질 못했다. 물론 방법은 있을 텐데, 검색하는 내 접근 방법이 잘못됐기 때문이겠지.
그러다가, 눈에 확 들어온 샤오미의 DaFang 카메라. 이건 국내에선 판매하지 않고 있고, Aliexpress 에서도 물량이 많진 않은 듯 했다.
지난 막바지 여름 할인기간을 놓치지 않고 조금이나마 싸게 구매를 했고, 그간 이런 저런 다른 고민에 휩싸여 설정을 하지 못하다가 최근 며칠동안 이것과 씨름을 했다.
그 내용을 간단히 정리한다.
Custom Firmware 를 설치하면, 샤오미 서버를 거치지 않고 직접 카메라에 접근 할 수 있다. 이게 대단한 건 아니고, IP 카메라라는게 결국 작은 PC(SBC 라고나 할까)이기 때문에, 리눅스로 부팅하여 그 안에서 rtsp 서버를 직접 돌릴 수 있게 해주는 역할을 한다.
그 모든 것을, 독일 뮌헨에 살고 있는 Elias Kotlyar 라는 분이 이뤄내줬다. 이 자리를 빌어 감사인사를 올린다.
설치
먼저, SD 카드를 준비해야 하는데, 여기서 꼭 확인해야할 게 있다.
바로, 파티션테이블을 gpt 가 아닌 ms-dos 로 해야만한다. gpt 로 하면 리눅스에서나 MS 윈도우에서나 읽고 쓰는데 아무런 문제가 없지만, DaFang 에선 인식하지 못한다.
따라서! 반드시! ms-dos 로 새롭게 파티션테이블을 만들어야만 한다. 또, ms-dos 로 파티션테이블을 만들라는 건, fat32 를 선택하라는 뜻이다. 다른 것을 선택하면 작동하지 않는다. 리눅스지만, ext 계열도 안된다.
다음 사항은 문서에 다 나와있지만, 중요한 내용이라 다시 언급한다.
microSD 에 부트로더를 넣을 때는 500MB 정도 파티션을 만들고 작업하라고 한다.
부트로더가 설치된 후, CFW 를 설치할 때는 실험해본 결과 32GB 로 파티션을 잡아도 문제없이 작동했다.
여기까지는 일반 설정이고, 다음은 Wifi 와 Swap 파일에 관한 아주 중요한 설정을 해야 한다.
설치 시 중요 설정
WIFI:
config/wpa_supplicant.conf.dist 를 config/wpa_supplicant.conf 로 이름을 바꾸거나 복사한다.
이 파일을 열고, ssid / psk 에 해당 정보를 넣는다. psk 는 그냥 Passphrase 를 넣어도 되고, wpa_passphrase 를 이용해서 생성한 정보를 넣어도 된다.
timezone.conf:
웹페이지에서도 가능하지만, timezone.conf 파일에서 직접 바꿔줄 수도 있다.
Asia/Seoul
로 설정한다.
SWAP:
스왑을 설정하지 않으면, rtsp 서버가 원활하게 작동하지 않는다. 거의 사용 불가능한 수준. 다시 말하자면, 이 글 내용 중 여기가 가장 중요하다.
- config/swap.conf.dist 를 config/swap.conf 로 이름을 바꾸거나 복사한다.
- 파일을 열고, SWAP=false 를 SWAP=true 로 바꾼다.
틀림없이, 스왑을 켜지 않고 실행하면 rtsp 서버가 제대로 작동하지 않았었다. 스왑을 켜니 rtsp 가 잘 돌아갔다. 그런데? free
명령을 사용해서 메모리 상황을 확인해봤는데, 스왑을 사용하질 않고 있었다. 뭔 일인지..???? 단순히 내 착각일까?
ssh 공개키(Authorized Keys)
openssh 덕에, ed25519 키도 쓸 수 있다.
역시 웹페이지(System – ssh)에서 넣거나, 아니면 /root/.ssh/authorized_keys
파일에 공개키를 넣어주면 된다.
Hostname:
웹페이지에서도 바꿀 수 있고, 직접 바꿀 수도 있다.
config/hostname.conf.dist 를 config/hostname.conf 로 바꾸거나 복사한다.
파일을 열고, 원하는 이름을 넣는다. (/etc/hostname, /etc/hosts 는 무의미)
디렉토리 위치?
일단 부팅이 되고나면, config 디렉토리는 /system/sdcard
산하가 된다.
open source U-Boot bootloader 설치
이걸 해서 뭐가 좋은지에 대해선 제작자가 쓴 글을 참고하고..
2021년에 산 Dafang, DF3(CMIIT ID: 2017DP3894), 128MB 제품에서 문제없이 설치 가능하다.
1080P 스트리밍이 가능하다고 해서 해봤는데, 그다지 만족스러운 성능을 보여주진 않는다. 화질도 720과 차이가 있는 듯, 없는 듯.
꼭 오픈소스를 쓰고 싶다면 모를까, 720P 에 만족한다면 굳이 할 필요는 없을 듯.
Dafang 과 관련하여, 설치법에 나와있는 boot loader 는 두가지다. v1 과 v2. 내 기종에 어떤게 맞을까 고민했는데, 이슈페이지 어딘가에서, 그냥 판본차이라고 하는 내용을 읽었다. 즉, v2 가 최신판, v1 이 예전판.
당연히 v2로 설치해서 성공했다. 128MB 를 보유한 Dafang 이라면 다 되는 모양이다.
** 재부팅 후, 작동하지 않는다?
잘 작동하던 카메라에 오픈소스 부트로더로 바꾼 뒤 작동이 불가능해진 경우가 있었다. 파란불이 들어오면 부트로더는 제대로 작동한 거라고 했는데..
이유는 확실하지 않지만, SD카드를 살펴보니, wpa_supplicant.conf 에 손상이 가해져있었다. 이 부분을 바로잡아주니 제대로 작동했다.
또, 뺐다꼈다 하는 통인지, ssh 로 접속해서 확인해보니 sd 카드가 read-only 로 마운트 되어있었다.
이건, 파일을 모두 PC 로 복사한 뒤 재포맷을 해주고, 원 파일을 다시 SD 카드로 복사함으로 해결했다.
기본 설정은 여기서 끝. 이제 SD 카드를 기기에 넣고 부팅한 뒤, http://DAFANG
으로 접속한다. 접속이 되지 않으면, IP 를 알아낸 뒤 접속한다.
최신 웹브라우저에서는 보안 오류가 뜨는데, 그냥 무시하고 접속하면 된다.
ssh 로도 접속 가능하다.
기본 ID/PW 는 root:ismart12
아래 ‘보안’ 항목에서 이 비밀번호(들)을 바꿔줄 수 있다.
기본 설정
System – Services
일반, 불필요한 서비스는 모두 끈다. 다시 말해, Autorun 을 불가능하게 설정한다. (회색, 오른쪽으로 네모가 이동한 상태가 Off 다.)
현재 꼭 필요한 서비스는 rtsp-h264 뿐이다. 사운드는 불필요하고, 나머지들은 정확히 어떤 서비스인지 아직 잘 모르겠다.
Configuration – Video
Video Settings:
- Size : 1280×720 또는 1920×1080
- bitrate : 1000/1500/2000 등.
- Video Format : SMART
- Frame Rate : 24
- Port : 기본값 또는 적절히 변경
위 값들은 적절히 변경하여 최적 품질을 찾아낸다. 일단 1080 에서 bitrate 1500 정도로 성공했고, 지연현상(Delay)도 거의 없으며, 화질도 그런대로 괜찮은 수준이다.
tinyCam 에서 확인한 결과 Frame Drop 도 없고, 원활히 작동하는 듯 하다.
Auto Night Mode:
On / HW 로 설정. (좀 애매하긴 한데.. 작동은 하는 듯.)
RTSP Night Vision :
On 으로 하면 적외선 영상이 된다. Auto Night Mode 와 연동이 되어 밤에는 자동으로 적외선으로 바뀌는게 아닌 듯도 하고.. 여기는 잘 모르겠다.
그리고 Start H264 RTSP 에서 Start 를 선택해준다. 그러면 거기에 주소가 나오는데, 이 주소로 영상을 볼 수 있다. rtsp 와 http 가 있는데, rtsp 로만 성공했다.
Camera Controls:
IR 관련 설정은 HW/SW 두 종류가 있고, 정확히 어떻게 하는 건지 잘 모르겠다.
Auto Night Detection 도 마찬가지.
확실한 하나는 RTSP 서버는 켜져있어야 한다는 점.
Configuration – Audio
Audio Settings:
tinyCam 을 위해서는 다음 설정이 필요하다.
- Audio Format : PCMU
- Sample rate (IN/OUT 모두) : 8000
- 필터 : 모두 선택하지 않음
SMPlayer 나 VLC 등을 사용한다면 다른 포맷을 사용해도 되는데, tinyCam 에선 저 형식만 지원하는 듯. 또, 8000 을 초과해서 설정해도 지원이 안되는 듯 하다.
보안
비밀번호는 두가지. Web 접근 비밀번호와 계정(root) 비밀번호가 있다. 이 둘을 모두 바꿔줘야 한다.
- Web 접근 비밀 번호 : Configuration – Administration 에서 바꿀 수 있다.
- 계정 비밀번호 : ssh 접속 후
passwd
명령으로 바꿔준다.
저렇게 비밀번호를 바꾼 뒤, 웹에서 설정을 바꿔도, 시스템 전체로 적용이 되는데.. 이는 아마도 파일시스템이 FAT32 이기 때문에 권한이 아예 없어서 가능한 듯 하다.
나머지 설정은 아직 잘 모르겠고..
Client 설정
rtsp 프로토콜을 제대로 보려면, 전용 재생기가 필요하다. 우분투에선 VLC, SMPlayer 모두 잘 작동한다.
Android 에선 tinyCam Monitor(Free) 라는 것을 사용해봤는데, 이게 이 동네의 왕인가 보다. (대신 광고가 뜬다. 광고 없애려면 5000원이면 된다. 또, TinyCam이라는 다른 앱도 있는데, 그건 아니니 헷갈리지 말 것.)
설정법도 잘 정리돼 있다. 이대로 해도 되지만, 그냥 일반 방법을 택해도 된다.
- 카메라 제조사 : Generic
- 카메라 모델 : Generic
- JPEG/MJPEG/RTSP 요청 : rtsp://IP:port/unicast
- 프로토콜 : RTSP over TCP
다만, 샤오미 Dafang 을 선택하고 로그인 정보를 넣으면, tinyCam 에서 바로 설정이 가능하다. NightVision 을 켜고 끈다거나 하는 등, 편리하게 직접 적용할 수 있다.
그러나 ID/PW 는 넣지 않아도 화면을 보는데는 문제가 없다.
카메라 이동등, 몇가지 편의사항 및 설정을 하고 싶다면 ID/PW 를 넣어야 한다. 이때 ID/PW 는 웹페이지 접속용 ID/PW 이다. (ssh 가 아니다.)
설정 및 주의할 점은 다음과 같다.
- Web 포트 번호 : 443 (아래에서 HTTPS 사용을 선택하면 자동으로 바뀐다.)
- HTTPS 사용 : 선택
- 사용자이름 : root (웹페이지 접속용)
- 패스워드 : xxxx (웹페이지 접속용)
iOS 에선 tinyCam 정도의 성능을 보여주는 프로그램은 없는 듯 하다. vxg 라는게 있긴 한데, 기능 차이는 있다.
양쪽 모두를 사용하는 입장에서 보면, iOS 가 이런 면이 많이 약하다. 자유가 많이 속박당하는 느낌이랄까.
외부에서 접속?
현재 상황에선 LAN 환경에서만 작동하므로, 바깥에서 접속하려면 포트포워드를 해주거나 VPN 을 사용해야한다. WireGuard 로 실험해본 결과, 무리없이 잘 작동했다.
포트포워드를 해줄 경우, 영상만 볼 예정이라면 rtsp 포트만 넘겨주면 되지만, 조작까지 한다면 웹포트도 넘겨줘야 한다.
위에서 설명했듯, Dafang CFW 는 https 통신을 하므로 내부 포트는 80이 아닌 443 을 사용해야한다.
이 정도면 가격대비(약 3만원?) 훌륭한 선택이라고 본다. HA 연동도 가능하다는데.. HA 는 아직 ‘관심’만 있는 정도라서.. 언젠간 해볼 수도 있겠지.
근데, HA 와 연동을 뭘 어떻게 한다는 걸까??? HA 에 대한 지식이 전혀 없으니 감을 못잡겠군.