안녕하세요. 이번에는 리눅스 펌웨어가 설치된 상태에서 루팅을 간단하게 하는 방법을 알아보겠습니다.


(deb 파일 만들기 별로 어렵지 않네요 ㅎㅎ)


일단 u5pvr 쉘로 접근합니다. 아래의 명령을 실행해 줍니다.


혹시 모를 서버 장애에 대비해서 루팅 파일도 올려 둡니다.


u5pvr-root_1.0.deb



root@u5pvr-debian:~# wget http://u5pvr.djjproject.com/u5pvr-root-android.deb

converted 'http://download.djjproject.com/u5pvr/u5pvr-root-android.deb' (ANSI_X3.4-1968) -> 'http://download.djjproject.com/u5pvr/u5pvr-root-android.deb' (UTF-8)

--2017-05-12 06:53:43--  http://download.djjproject.com/u5pvr/u5pvr-root-android.deb

Resolving download.djjproject.com (download.djjproject.com)... 1.226.113.222

Connecting to download.djjproject.com (download.djjproject.com)|1.226.113.222|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 2450168 (2.3M) [application/x-debian-package]

Saving to: 'u5pvr-root-android.deb'


u5pvr-root-android.deb    100%[======================================>]   2.34M  5.74MB/s   in 0.4s   


2017-05-12 06:53:44 (5.74 MB/s) - 'u5pvr-root-android.deb' saved [2450168/2450168]


root@u5pvr-debian:~# dpkg -i u5pvr-root-android.deb 

Selecting previously unselected package u5pvr-root-android.

(Reading database ... 117271 files and directories currently installed.)

Preparing to unpack u5pvr-root-android.deb ...

Unpacking u5pvr-root-android (1.0-djjproject) ...

Setting up u5pvr-root-android (1.0-djjproject) ...

* daemon not running. starting it now on port 5038 *

* daemon started successfully *

root@u5pvr-debian:~# reboot


다운받고 -> 설치하고 -> 리부팅


끝입니다.


루팅이 잘 되었을까요?


잘 되었습니다.


바이너리 업데이트는 일반으로 해 주시면 됩니다.







감사합니다.


http://cafe.naver.com/mk802/20769








안녕하세요. 이번에는 U5PVR 에 Subsonic Music Streamer 를 설치해 보겠습니다.


http://www.subsonic.org/



음악을 웹 혹은 모바일 장치로 스트리밍할 수 있습니다.



그럼 바로 설치해 보겠습니다.



1. JAVA 설치하기


아래의 JAVA 홈페이지로 이동하여 바이너리를 직접 받거나 아니면 download.djjproject.com 을 통해서 바이너리를 받아주시길 바랍니다.


http://www.oracle.com/technetwork/java/embedded/overview/index.html




그 다음 원하는 위치에 풀어주시길 바랍니다. 저는 /opt/ 에 풀어 보겠습니다.


root@u5pvr-debian:~# wget http://u5pvr.djjproject.com/jdk-8u131-linux-arm32-vfp-hflt.tar.gz

converted 'http://download.djjproject.com/u5pvr/jdk-8u131-linux-arm32-vfp-hflt.tar.gz' (ANSI_X3.4-1968) -> 'http://download.djjproject.com/u5pvr/jdk-8u131-linux-arm32-vfp-hflt.tar.gz' (UTF-8)

--2017-05-18 22:06:03--  http://download.djjproject.com/u5pvr/jdk-8u131-linux-arm32-vfp-hflt.tar.gz

Resolving download.djjproject.com (download.djjproject.com)... 1.226.113.222

Connecting to download.djjproject.com (download.djjproject.com)|1.226.113.222|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 81648626 (78M) [application/x-gzip]

Saving to: 'jdk-8u131-linux-arm32-vfp-hflt.tar.gz'


jdk-8u131-linux-arm32-vfp-hflt.tar.gz           100%[=======================================================================================================>]  77.87M  10.9MB/s   in 7.5s


2017-05-18 22:06:11 (10.4 MB/s) - 'jdk-8u131-linux-arm32-vfp-hflt.tar.gz' saved [81648626/81648626]


# jdk 압축파일을 opt 폴더로 옮김

root@u5pvr-debian:~# mv jdk-8u131-linux-arm32-vfp-hflt.tar.gz /opt


root@u5pvr-debian:~# cd /opt/

root@u5pvr-debian:/opt# ls

jdk-8u131-linux-arm32-vfp-hflt.tar.gz


# jdk 압축파일 압축을 품

root@u5pvr-debian:/opt# tar xf jdk-8u131-linux-arm32-vfp-hflt.tar.gz

root@u5pvr-debian:/opt# ls

jdk-8u131-linux-arm32-vfp-hflt.tar.gz  jdk1.8.0_131


# 폴더이름을 java 로 바꿈

root@u5pvr-debian:/opt# mv jdk1.8.0_131/ java

root@u5pvr-debian:/opt# rm jdk-8u131-linux-arm32-vfp-hflt.tar.gz


결론적으로 파일 구조는 아래와 같이 구성되었습니다.


root@u5pvr-debian:/opt# ls

java




2. 서브소닉 설치하기


게시글 상단 subsonic 공식 홈페이지에서 debian/ubuntu 용 설치파일 .deb 를 받습니다. 그리고 설치합니다.


root@u5pvr-debian:~# wget https://s3-eu-west-1.amazonaws.com/subsonic-public/download/subsonic-6.0.deb

converted 'https://s3-eu-west-1.amazonaws.com/subsonic-public/download/subsonic-6.0.deb' (ANSI_X3.4-1968) -> 'https://s3-eu-west-1.amazonaws.com/subsonic-public/download/subsonic-6.0.deb' (UTF-8)

--2017-05-18 22:19:00--  https://s3-eu-west-1.amazonaws.com/subsonic-public/download/subsonic-6.0.deb

Resolving s3-eu-west-1.amazonaws.com (s3-eu-west-1.amazonaws.com)... 52.218.64.92

Connecting to s3-eu-west-1.amazonaws.com (s3-eu-west-1.amazonaws.com)|52.218.64.92|:443... connected.

HTTP request sent, awaiting response... 200 OK

Length: 58514186 (56M) [application/x-debian-package]

Saving to: 'subsonic-6.0.deb'


subsonic-6.0.deb                                     100%[=======================================================================================================================>]  55.80M  82.1KB/s   in 5m 19s


2017-05-18 22:24:21 (179 KB/s) - 'subsonic-6.0.deb' saved [58514186/58514186]


root@u5pvr-debian:~# dpkg -i subsonic-6.0.deb

Selecting previously unselected package subsonic.

(Reading database ... 22365 files and directories currently installed.)

Preparing to unpack subsonic-6.0.deb ...

Unpacking subsonic (6.0) ...

Setting up subsonic (6.0) ...

Started Subsonic [PID 9816, /var/subsonic/subsonic_sh.log]

Processing triggers for systemd (215-17+deb8u6) ...


JAVA_HOME 을 정의하지 않고 스크립트에 바로 반영을 해 보겠습니다.


root@u5pvr-debian:~# nano /usr/share/subsonic/subsonic.sh



# Use JAVA_HOME if set, otherwise assume java is in the path.

JAVA=java

if [ -e "${JAVA_HOME}" ]

    then

    JAVA=${JAVA_HOME}/bin/java

fi


# 위부분을 아래 부분으로 대체합니다.


# Use JAVA_HOME if set, otherwise assume java is in the path.

JAVA=/opt/java/bin/java


# subsonic 을 재시작합니다.

root@u5pvr-debian:~# service subsonic restart

[....] Restarting Subsonic Daemon: subsonicStarted Subsonic [PID 6298, /var/subsonic/subsonic_sh.log]

. ok

root@u5pvr-debian:~#


대략 15초 정도 기다리면 정상적으로 실행이 되어 있습니다.


root@u5pvr-debian:~# netstat -nlp | grep 4040

tcp6       0      0 :::4040                 :::*                    LISTEN      9816/java

root@u5pvr-debian:~#


설치가 끝났습니다.



3. 기본설정 진행하기


웹 UI 로 접근하여 기본설정을 진행합니다.


http://u5pvr_ipaddress:4040/


처음 로그인은 admin / admin 입니다.



설정으로 이동합니다.



Media Folders 설정에서 음악이 있는 위치를 설정합니다. 여러개 설정이 가능합니다.


그리고 SAVE 버튼을 한번 누른 후, Scan Media Folders Now 를 누릅니다. 그럼 음악들이 검색이 됩니다.



그리고 USERS 탭으로 이동하여 admin 계정에 대해서 비밀번호를 수정합니다.



새 사용자는 아래와 같이 권한을 세부적으로 설정하여 생성할 수 있습니다.



본 카페에 음감 열풍이 올 조짐이 보임에 따라 원음 재생을 지원하는 스마트폰을 대상으로 아래 설정을 변경하여 원음 재생이 되도록 할 수 있습니다.


그러나 FLAC 이나 WAV 파일의 경우 파일을 원본으로 내려 재생을 하기 때문에 데이터 요금이 많이 발생될 것입니다.


아래의 트랜스코딩 옵션을 삭제하고 다운샘플 설정을 삭제하면 원음으로 재생이 가능해 집니다. 


(지원되지 않는 기기가 클라이언트로 연결될 경우 재생이 불가할  수 있습니다.)



기본적인 설정을 끝내고 음악이 스캔된 대시보드 사진입니다.



인덱스를 누르게 되면 폴더명 기준으로 나열해 줍니다.



대략적으로 아래의 방법으로 현 재생목록에 추가가 가능합니다.



한편, 재생중일 때 팝업을 지원하는 브라우저에서는 우측 하단에 지금 재생중인 음악 정보도 같이 뜹니다.



하단 플레이 바에 마우스를 올리면 아래처럼 현재 재생 목록이 서랍처럼 열립니다.



요정도로 웹 UI 를 통해 기초 설정을 하는 것과 간단 사용방법을 마칩니다.



4. Subsonic Music Streamer 공식 안드로이드 앱과 연동하기


아래의 사이트에 가시면 각종 운영체제에 맞게 만들어진 클라이언트 목록이 있습니다.


마음에 드는 것으로 사용을 하시면 됩니다.


http://www.subsonic.org/pages/apps.jsp


안드로이드에서 추천드리는 클라이언트는 아래의 두가지 입니다.


1. 공식 Subsonic Music Streamer

https://play.google.com/store/apps/details?id=net.sourceforge.subsonic.androidapp


2. 서드파티 Dsub for Subsonic

https://play.google.com/store/apps/details?id=github.daneren2005.dsub

(깃허브 릴리즈 버전 다운로드 - https://github.com/daneren2005/Subsonic/releases)


이번 글에서는 Subsonic 공식 앱과 연동을 해 보도록 하겠습니다. 


추가적으로 외부에서 사용하실 예정이시라면 포트포워딩은 아래와 같이 하시면 됩니다.



처음 키면 아래와 같이 되어 있습니다. 우측 메뉴모양을 누르고 설정으로 진입합니다.




아래에 SERVERS 탭에 있는 서버 목록을 수정하거나 새로 추가합니다.



아래처럼 사용환경에 맞게 설정을 합니다.



정상적으로 연결이 되었습니다 ㅎㅎ..





5. 한글 태그 깨짐 문제 일괄 해결하기.


U5PVR 리눅스 펌웨어에는 python-mutagen 패키지를 통한 태그 변환 명령어가 들어 있습니다.


작업 폴더에서 하위 폴더 모조리 mp3 / flac / ogg 파일에 대해서 태그를 cp949 로 바꿔 줍니다. 그 후 Subsonic 에서 다시 미디어 스캔을 돌리시면 태그가 깨지지 않습니다.




root@u5pvr-debian:/mnt/sda/sda1/music/# mp3conv

('Updating', './001 TWICE (\xed\x8a\xb8\xec\x99\x80\xec\x9d\xb4\xec\x8a\xa4)-01-KNOCK KNOCK.mp3')

('Updating', './001 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-\xed\x8c\x94\xeb\xa0\x88\xed\x8a\xb8 (Feat. G-DRAGON)_Naver81.mp3')

('Updating', './002 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-\xec\x9d\xb4 \xec\xa7\x80\xea\xb8\x88_Naver81.mp3')

('Updating', './002 \xec\xa0\x95\xed\x82\xa4-01-\xeb\xb6\x80\xeb\x8b\xb4\xec\x9d\xb4 \xeb\x8f\xbc (Feat. \xed\x9c\x98\xec\x9d\xb8 Of \xeb\xa7\x88\xeb\xa7\x88\xeb\xac\xb4).mp3')

('Updating', './003 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-\xec\x9d\xb4\xeb\x9f\xb0 \xec\x97\x94\xeb\x94\xa9_Naver81.mp3')

('Updating', './003 \xec\x97\x90\xec\x9d\xbc\xeb\xa6\xac-01-\xec\xb2\xab\xeb\x88\x88\xec\xb2\x98\xeb\x9f\xbc \xeb\x84\x88\xec\x97\x90\xea\xb2\x8c \xea\xb0\x80\xea\xb2\xa0\xeb\x8b\xa4.mp3')

('Updating', './004 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-\xec\x9e\xbc\xec\x9e\xbc_Naver81.mp3')

('Updating', './004 \xed\x83\x9c\xec\x97\xb0 (TAEYEON)-01-Fine.mp3')

('Updating', './005 Red Velvet (\xeb\xa0\x88\xeb\x93\x9c\xeb\xb2\xa8\xeb\xb2\xb3)-01-Rookie.mp3')

('Updating', './005 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-\xec\x9d\xb4\xeb\xa6\x84\xec\x97\x90\xea\xb2\x8c_Naver81.mp3')

('Updating', './006 \xeb\xb3\xbc\xeb\xb9\xa8\xea\xb0\x84\xec\x82\xac\xec\xb6\x98\xea\xb8\xb0-01-\xec\xa2\x8b\xeb\x8b\xa4\xea\xb3\xa0 \xeb\xa7\x90\xed\x95\xb4.mp3')

('Updating', './006 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-Black Out_Naver81.mp3')

('Updating', './007 \xeb\xa7\x88\xed\x81\xac\xed\x88\xbd (MAKTUB)-01-Marry Me.mp3')

('Updating', './007 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-\xec\x82\xac\xeb\x9e\x91\xec\x9d\xb4 \xec\x9e\x98 (With \xec\x98\xa4\xed\x98\x81)_Naver81.mp3')

('Updating', './008 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-\xeb\xa7\x88\xec\xb9\xa8\xed\x91\x9c_Naver81.mp3')

('Updating', './008 \xec\x95\x85\xeb\x8f\x99\xeb\xae\xa4\xec\xa7\x80\xec\x85\x98-03-\xec\x98\xa4\xeb\x9e\x9c \xeb\x82\xa0 \xec\x98\xa4\xeb\x9e\x9c \xeb\xb0\xa4.mp3')

('Updating', './009 \xeb\xb0\xa9\xed\x83\x84\xec\x86\x8c\xeb\x85\x84\xeb\x8b\xa8-15-\xeb\xb4\x84\xeb\x82\xa0.mp3')

('Updating', './009 \xec\x95\x84\xec\x9d\xb4\xec\x9c\xa0-01-\xea\xb7\xb8\xeb\xa0\x87\xea\xb2\x8c \xec\x82\xac\xeb\x9e\x91\xec\x9d\x80_Naver81.mp3')

('Updating', './010 \xeb\xb8\x94\xeb\x9d\xbd\xeb\xb9\x84 (Block B)-01-YESTERDAY.mp3')

root@u5pvr-debian:/mnt/sda/sda1/music/#




이로써 Subsonic 게시글을 마치도록 하겠습니다 ㅎㅎ..


http://cafe.naver.com/mk802/20959





U5PVR Supporter Team






cio

글: Swapnil Bhartiya | CIO | 2017.03.03



최근에는 많은 사람이 라즈베리 파이 3에 관심을 보이고 있다. 그런데 이 기기에 라즈비안(Raspbian)을 설치하려면 먼저 마이크로SD 카드를 fat32 파티션으로 포맷해야 한다. 여기서는 이 포맷 방법에 대해 살펴본다.

데스크톱 환경에 따라 포맷 작업을 하는 다양한 툴이 있으므로, 여기서는 데스크톱 환경과 무관하게 쓸 수 있는 방법, 즉 커맨드 라인을 이용한 방법을 살펴보자. 리눅스 커맨드 라인에서 SD 카드나 USB 드라이버, 마이크로SD 등을 fat32 파일 시스템으로 포맷하려면 다음과 같이 하면 된다.

1. 플래시 드라이브를 데스크톱에 삽입하고 이를 인식하기 위해 'lsblk' 명령을 실행한다. 다음과 같은 결과가 나타날 것이다. 여기서 'sdb'가 플래시 스토리지이다.

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 1 3.8G 0 disk
├─sdb2 8:18 1 2.4M 0 part
└─sdb1 8:17 1 1.5G 0 part /media/sandisk

2. 커맨드 라인을 이용한 포맷 툴은 여러 가지가 있지만 여기서는 필자가 최근 자주 사용하는 'parted' 유틸리티를 이용한다. 포맷하고자 하는 블록 기기 이름과 함께 'parted' 명령을 실행한다. 여기서는 'sdb'이다. 블록 이름을 잘못 사용하면 다른 드라이브가 포맷될 수도 있으므로 특히 주의해야 한다.

3. 기본 명령 형식은 다음과 같다. 포맷하려는 블록 기기 이름이 다르다면 'sdb' 부분을 바꾸면 된다.

sudo parted /dev/sdb

4. 이제 사용자 암호를 입력하라는 표시가 나오고 parted가 사용자 이름과 $ 기호를 대체한다는 알림이 등장할 것이다. parted 유틸리티가 실행됐다는 의미이다. 이제 파티션 테이블을 만들자. 여기서는 MBR(Master Boot Record)을 이용한다.

(parted) mklabel msdos

5. 일단 파티션 테이블이 만들어지면, 드라이브에 파티션을 만들 수 있다. 여기서는 파티션을 1개만 만든다.

(parted) mkpart primary fat32 1MiB 100%

6. 이제 여기에 부트 플래그를 설정하자.

(parted) set 1 boot on

7. 이제 parted 툴에서 빠져나온다.

(parted) quit

8. 이제 만든 파티션을 fat32로 포맷해야 한다. 먼저 이 파티션이 잘 만들어졌는지 확인하기 위해 'lsblk' 명령을 실행한다. 정상적으로 진행됐다면 'sdb'의 새 파티션이 볼 수 있을 것이다.

9. 이제 이를 fat32로 포맷하자.

sudo mkfs.vfat /dev/sdb1

'sdb1' 부분을 사용하는 드라이브의 파티션으로 바꾸면 된다. 다시한번 강조하지만 'sdb' 자체가 아니라 'sdb'의 파티션을 포맷해야 한다는 것을 주의하자. 지금까지 리눅스에서 외장 스토리지 기기를 포맷하는 방법을 살펴봤다. 이제 이 이동식 드라이브를 잘 사용하기만 하면 된다.



※ 본 내용은 한국IDG(주)(http://www.ciokorea.com)의 저작권 동의에 의해 공유되고 있습니다.
Copyright ⓒ CIO Korea. 무단전재 및 재배포 금지


[원문출처 : http://www.ciokorea.com/news/33296]






안녕하세요. 이번에는 U5PVR 에 MPD 를 설치해 보겠습니다.


MPD 운용시 ALSAMIXER 를 통해 USB DAC 과 연동이 가능합니다.


저도 실은 정확하게 MPD 에 대해서 모르기 때문에 USB DAC 을 통해서 원음 재생이 가능하게 설정하는 방법을 정확하게 모릅니다. 차후 보충하도록 하겠습니다.


시작합니다.



1. MPD 및 의존성 패키지 설치하기


아래의 명령으로 MPD 를 설치합니다.


root@u5pvr-debian:~# apt-get install mpd alsa-base alsa-oss alsa-utils


다음으로 MPD 가 정상적으로 동작하게 하기 위해서 설정파일을 살짝 수정합니다.


root@u5pvr-debian:~# nano /etc/mpd.conf



# Files and directories #######################################################
#
# This setting controls the top directory which MPD will search to discover the
# available audio files and add them to the daemon's online database. This
# setting defaults to the XDG directory, otherwise the music directory will be
# be disabled and audio files will only be accepted over ipc socket (using
# file:// protocol) or streaming files over an accepted protocol.
#
music_directory         "/mnt/sda/sda1/music"        <-- 음악이 들어있는 위치를 지정합니다.
#


# General music daemon options ################################################
#
# This setting specifies the user that MPD will run as. MPD should never run as
# root and you may use this setting to make MPD change its user ID after
# initialization. This setting is disabled by default and MPD is run as the
# current user.
#
user                            "root"        <-- 실행 계정을 root 계정으로 설정합니다.
#
# This setting specifies the group that MPD will run as. If not specified
# primary group of user specified with "user" setting will be used (if set).
# This is useful if MPD needs to be a member of group such as "audio" to
# have permission to use sound card.
#
group                          "root"        <-- 실행 그룹을 root 그룹으로 설정합니다.
#
# This setting sets the address for the daemon to listen on. Careful attention
# should be paid if this is assigned to anything other then the default, any.
# This setting can deny access to control of the daemon. Choose any if you want
# to have mpd listen on every address
#
# For network
bind_to_address         "0.0.0.0"        <--스마트폰이나 다른 클라이언트와 연동하기 위해서 바인드를 0.0.0.0 으로 설정합니다.


대략적으로 수정이 끝났습니다. 정상적으로 동작하는지 체크를 해 봅니다.


root@u5pvr-debian:~# netstat -nlp | grep mpd

tcp        0      0 0.0.0.0:6600            0.0.0.0:*               LISTEN      23392/mpd

root@u5pvr-debian:~#


정상적으로 동작이 되고 있네요 ㅎㅎ



2. 출력 장치 설정하기


기본적으로 MPD 를 통해서 HTTP 출력을 하게 하여 음악 스트리밍 서버로 사용할 수 있습니다.


그런데 이번에는 물리 장치로 출력을 내보내는 설정을 해 보겠습니다.


다음 명령어로 재생할 장치 이름을 확인합니다.


root@u5pvr-debian:~# aplay -l

**** List of PLAYBACK Hardware Devices ****

card 0: HISIAIAO [HISI-AIAO], device 0: Playback aiao-hifi-0 []    <- 찐하게 된 부분이 장치 이름입니다.

  Subdevices: 1/1

  Subdevice #0: subdevice #0

root@u5pvr-debian:~#


위에 뜨는 장치는 U5PVR 에 장착된 기본 장치입니다. USB 로 DAC 을 연결하면 다른 장치가 추가적으로 뜰 것입니다.


다시 MPD 설정을 수정하여 장치에 대한 설정을 추가합니다.

root@u5pvr-debian:~# nano /etc/mpd.conf


#
#audio_output {                                    <-- 기본적으로 세팅이 들어가 있는데 # 으로 코멘트 시킵니다.
#       type            "alsa"
#       name            "HISIAIAO"
#       device          "default"       # optional
#       mixer_type      "hardware"      # optional
#       mixer_device    "default"       # optional
#       mixer_control   "PCM"           # optional
#       mixer_index     "0"             # optional
#}
#

# 아래의 구문을 추가합니다.
audio_output {
        type "alsa"
        device "default"
        # The name of the card
        name "HISIAIAO"            <-- 앞서 보았던 장치 이름을 넣어줍니다.
        use_mmap "yes"
        auto_resample "no"
        auto_channels "no"
        auto_format "no"
        mixer_type "software"        <-- DAC 이 자체적으로 볼륨 조절을 할 수 있다면 disabled 로 입력합니다.
        period_time "50000"
        buffer_time "2500000"
        # dsd_usb "yes"                <-- DSD 를 지원하면 코멘트 아웃해 줍니다.
}


저장 후, 다시 mpd 서비스를 재시작 합니다.


root@u5pvr-debian:~# service mpd restart

[ ok ] Stopping Music Player Daemon: mpd.

[ ok ] Starting Music Player Daemon: mpd.

root@u5pvr-debian:~#




3. MPD 클라이언트 - MPDroid


일단 스마트폰에서 U5PVR 의 재생을 원격 컨트롤 하기 위해서 아래의 앱을 설치합니다.


https://play.google.com/store/apps/details?id=com.namelessdev.mpdroid&hl=ko



설치를 하고 나서 아래의 설정을 진행합니다.


기본 연결 설정으로 이동합니다.



호스트를 U5PVR IP 입력합니다.


(나머지는 설정하신 대로 입력하시면 됩니다.)



U5PVR 기본 오디오가 잘 물려 있음을 알 수 있습니다.




스마트폰에서 재생을 누르게 되면 U5PVR HDMI 나 혹은 AV 단자로 소리가 나갑니다.




동영상으로 보시면 아래와 같습니다. (U5PVR 이 물린 HDMI 모니터에서 음악이 나오는 중입니다.)



추가적으로 MPD 가 음악 재생중일때는 U5PVR 안드로이드에서 DAC 우선순위가 밀리기 때문에 영상 재생이 원활이 되지 않고 유튜브의 경우에는 재생이 시작되지 않습니다.


MPD 재생을 정지하면 U5PVR 안드로이드 앱 이용이 정상화 됩니다.


AV 짹에 이어폰 꼽아 보시면 음악이 나오는 것을 확인하실 수 있습니다. 고음질 플레이가 필요없으시면 그냥 내장 DAC 을 쓰셔도 무방합니다. 


기본 구성품에 AV 단자도 포함되어 있으니 잘 활용해 보시면 될듯 합니다.





[위 두 사진은 블루님께서 찍어서 보정을 한 것으로 블루님 허락 외에는 무단 사용하실 수 없습니다. 이 게시글은 허락을 받았습니다.]


S/PDIF 단자로 음악이 나가는지는 잘 모르겠네요.




4. MPD 웹 클라이언트 - ympd


실제로 Volumio 웹 UI 를 따고 싶었지만 이게 Volumio 는 하나의 운영체제로 배포되는 것이라 따로 설치가 어렵네요. 그래서 대체 웹 UI 를 설치해 봅니다.


의존성 패키지를 설치합니다.


(build-essential 안에 의존성의로 cmake 가 포함되어 있을 수 있습니다. 빌드 중에 에러가 나서 가이드를 약간 수정했습니다.)


(SSL 연결을 사용하시려면 openssl 도 같이 설치하시길 바랍니다.)


root@u5pvr-debian:~# apt-get install cmake git build-essential libmpdclient-dev libssl-dev pkg-config


소스를 받고 빌드합니다.


root@u5pvr-debian:~# git clone https://github.com/notandy/ympd.git

Cloning into 'ympd'...

remote: Counting objects: 861, done.

remote: Total 861 (delta 0), reused 0 (delta 0), pack-reused 861

Receiving objects: 100% (861/861), 629.50 KiB | 335.00 KiB/s, done.

Resolving deltas: 100% (544/544), done.

Checking connectivity... done.

root@u5pvr-debian:~#


받은 위치로 이동하여 빌드합니다.


root@u5pvr-debian:~# cd ympd/

root@u5pvr-debian:~/ympd# ls

CMakeLists.txt  LICENSE  README.md  cmake  contrib  htdocs  src  tools  ympd.1

root@u5pvr-debian:~/ympd# mkdir build

root@u5pvr-debian:~/ympd# cd build

root@u5pvr-debian:~/ympd/build# cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/usr

-- Found PkgConfig: /usr/bin/pkg-config (found version "0.28")

-- Configuring done

-- Generating done

-- Build files have been written to: /root/ympd/build

root@u5pvr-debian:~/ympd/build# make && make install

Scanning dependencies of target mkdata

[ 12%] Building C object CMakeFiles/mkdata.dir/tools/mkdata.c.o

Linking C executable mkdata

[ 12%] Built target mkdata

[ 25%] Generating assets.c

Scanning dependencies of target ympd

[ 37%] Building C object CMakeFiles/ympd.dir/src/ympd.c.o

[ 50%] Building C object CMakeFiles/ympd.dir/src/mpd_client.c.o

[ 62%] Building C object CMakeFiles/ympd.dir/src/mongoose.c.o

[ 75%] Building C object CMakeFiles/ympd.dir/src/json_encode.c.o

[ 87%] Building C object CMakeFiles/ympd.dir/src/http_server.c.o

[100%] Building C object CMakeFiles/ympd.dir/assets.c.o

Linking C executable ympd

[100%] Built target ympd

[ 12%] Built target mkdata

[100%] Built target ympd

Install the project...

-- Install configuration: ""

-- Installing: /usr/bin/ympd

-- Installing: /usr/share/man/man1/ympd.1

root@u5pvr-debian:~/ympd/build#


설치가 정상적으로 되었습니다. 실행은 아래와 같이 합니다.


root@u5pvr-debian:~# ympd -h 127.0.0.1 -p 6600 -w 0.0.0.0:7700

MPD Connecting to 127.0.0.1:6600

MPD connected.


ympd -h mpd주소 -p mpd포트 -w 웹UI주소:포트


따라서 http://u5pvr_ip_address:7700/ 으로 이동해 보시면 아래의 Web UI 가 열립니다.





간단히 웹 리모콘이 생겼습니다.



그런데 프로그램 실행을 매번 저렇게 할 수 없음으로 init.d 스크립트를 추가합니다. 

(귀찮으시면 nohup & 을 사용하셔도 됩니다.)


root@u5pvr-debian:~# nano /etc/init.d/ympd



#!/bin/sh
### BEGIN INIT INFO
# Provides:          ympd
# Required-Start:    $remote_fs mpd
# Required-Stop:     $remote_fs mpd
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Daemonized version of ympd.
# Description:       Enable service provided by ympd.
### END INIT INFO
#Author: Andrew Karpow <andy@ndyk.de>

. /lib/lsb/init-functions

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="ympd Daemon"
NAME=ympd
DAEMON=/usr/bin/$NAME
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
LOG_OUT=/var/log/$NAME.out
LOG_ERR=/var/log/$NAME.err
YMPD_USER=root
MPD_HOST=localhost    <-- MPD 호스트 설정
MPD_PORT=6600        <-- MPD 포트 설정
WEB_PORT=7700        <-- webui 포트 설정


# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS

DAEMON_OPT="--user $YMPD_USER --webport $WEB_PORT --host $MPD_HOST --port $MPD_PORT"

do_start()
{
    start-stop-daemon --start --background --quiet --pidfile $PIDFILE --make-pidfile \
        --exec $DAEMON --test > /dev/null || return 1
    start-stop-daemon --start --background --quiet --pidfile $PIDFILE --make-pidfile \
        --exec $DAEMON -- $DAEMON_OPT || return 2
}

do_stop()
{
    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
    RETVAL="$?"

    [ "$RETVAL" = 2 ] && return 2
    rm -f $PIDFILE
    return "$RETVAL"
}

case "$1" in
  start)
    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
    do_start
    case "$?" in
        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  stop)
    [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
    do_stop
    case "$?" in
        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  status)
    status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
    ;;
  restart|force-reload)
    #
    # If the "reload" option is implemented then remove the
    # 'force-reload' alias
    #
    log_daemon_msg "Restarting $DESC" "$NAME"
    do_stop
    case "$?" in
      0|1)
        do_start
        case "$?" in
            0) log_end_msg 0 ;;
            1) log_end_msg 1 ;; # Old process is still running
            *) log_end_msg 1 ;; # Failed to start
        esac
        ;;
      *)
        # Failed to stop
        log_end_msg 1
        ;;
    esac
    ;;
  *)
    echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
    exit 3
    ;;
esac



root@u5pvr-debian:~# chmod a+x /etc/init.d/ympd
root@u5pvr-debian:~# update-rc.d ympd defaults            <-- 부팅시 자동실행
root@u5pvr-debian:~# 

# service 명령이 잘 먹는지 확인 -> 잘 됩니다.
root@u5pvr-debian:~# service ympd restart
[ ok ] Restarting ympd Daemon: ympd.
root@u5pvr-debian:~# service ympd stop
[ ok ] Stopping ympd Daemon: ympd.
root@u5pvr-debian:~# service ympd start
[ ok ] Starting ympd Daemon: ympd.
root@u5pvr-debian:~#


++ 번외편


기본적으로 리눅스 펌웨어에는 음악 태그 깨짐을 해결할 수 있는 명령이 들어가 있습니다.


음악이 들어있는 폴더로 이동하여 mp3conv 라고 입력하면 태그를 cp949 바꾸어 태그가 깨지지 않게 해줍니다.


하위 폴더까지 모조리 싹 다 바꿔줍니다. (ogg mp3 flac 파일들)


root@u5pvr-debian:/# cd /mnt/sda/sda1/music

root@u5pvr-debian:/mnt/sda/sda1/music# mp3conv

('Updating', 'WINNER - REALLY REALLY.mp3')

('Updating', Marry Me.mp3')

..................


이렇게 DAC 과 연동을 하게 되면 나만의 오디오 시스템이 구축 가능합니다.


물론 SPI 통신을 통해 DAC 과 연동을 해 보고 싶지만 잘 모르겠네요 ㅎㅎ..


감사합니다.


http://cafe.naver.com/mk802/20765


U5PVR Supporter Team





안녕하세요. 이번에는 NFS / CIFS (Samba) 를 마운트 하는 방법을 알아보겠습니다.




1. 삼바 마운트 하기 (CIFS)


아래의 명령어로 마운트할 폴더를 mnt 아래에 하나 만들고 mount 명령어를 통해서 마운트를 진행합니다.


root@u5pvr-debian:~# mkdir /mnt/samba

root@u5pvr-debian:~# mount -t cifs -o username=djj9405,password=djj9405 //192.168.100.41/volume /mnt/samba

root@u5pvr-debian:~# cd /mnt/samba

root@u5pvr-debian:/mnt/samba# ls

1.mp4  Girls.Generation.Genie.4in1.200907.HDTV.x264.2160p.60fps.DTSES.6.1ch.mkv  htdocs  lost+found

root@u5pvr-debian:/mnt/samba#


mount -t cifs -o username=아이디,password=비번 //호스트이름 or 아이피/공유이름 /마운트위치


입니다.


참 쉽죠?



(사진이 넣을께 없어서 임시로 넣어둡니다. 게시글 옆에 사진 표시 없으면 조회수가 낮은 감이 있어서요 ㅎㅎ)




2. NFS 마운트 하기


(차후에 다른 해결방안이 적용되면 아래의 글은 무통보 수정이 됩니다.)


글을 시작하기 전에 먼저 말씀드립니다. NFS 커널 모듈이나 혹은 다른 문제가 있어서 statd 는 실행이 불가능한 상황입니다. 즉 NFS 서버는 구동이 어렵습니다.


그러나 클라이언트로의 활용은 잘 됩니다.


nfs-common 패키지를 설치합니다. 중간에 statd 가 실행되지 않았다고 에러가 뜹니다.


root@u5pvr-debian:~# apt-get install nfs-common

Reading package lists... Done

Building dependency tree

Reading state information... Done

Suggested packages:

  open-iscsi watchdog

The following NEW packages will be installed:

  nfs-common

0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.

Need to get 0 B/189 kB of archives.

After this operation, 554 kB of additional disk space will be used.

Selecting previously unselected package nfs-common.

(Reading database ... 33729 files and directories currently installed.)

Preparing to unpack .../nfs-common_1%3a1.2.8-9_armhf.deb ...

Unpacking nfs-common (1:1.2.8-9) ...

Processing triggers for systemd (215-17+deb8u6) ...

Processing triggers for man-db (2.7.0.2-5) ...

Setting up nfs-common (1:1.2.8-9) ...


Creating config file /etc/idmapd.conf with new version

[FAIL] Starting NFS common utilities: statd failed!

invoke-rc.d: initscript nfs-common, action "start" failed.

dpkg: error processing package nfs-common (--configure):

 subprocess installed post-installation script returned error exit status 1

Processing triggers for systemd (215-17+deb8u6) ...

Errors were encountered while processing:

 nfs-common

E: Sub-process /usr/bin/dpkg returned an error code (1)

root@u5pvr-debian:~#


실제로는 위 에러가 발생해도 클라이언트로 사용하는데에는 문제가 없습니다만 한번 저렇게 에러가 걸려버리면 차후에 다른 패키지를 설치할 때에도 위 에러 메시지가 반복이 됩니다. 


그래서 해당 문제를 해결하기 위해서는 아래의 수정이 필요합니다.


root@u5pvr-debian:~# nano /etc/default/nfs-common


# If you do not set values for the NEED_ options, they will be attempted

# autodetected; this should be sufficient for most people. Valid alternatives

# for the NEED_ options are "yes" and "no".


# Do you want to start the statd daemon? It is not needed for NFSv4.

NEED_STATD=no        <-- NO로 입력합니다.


# Options for rpc.statd.

#   Should rpc.statd listen on a specific port? This is especially useful

#   when you have a port-based firewall. To use a fixed port, set this

#   this variable to a statd argument like: "--port 4000 --outgoing-port 4001".

#   For more information, see rpc.statd(8) or http://wiki.debian.org/SecuringNFS

STATDOPTS=


# Do you want to start the idmapd daemon? It is only needed for NFSv4.

NEED_IDMAPD=no        <-- NO 로 입력합니다.


# Do you want to start the gssd daemon? It is required for Kerberos mounts.

NEED_GSSD=


다시 nfs-common 패키지를 설치하는 명령어를 입력합니다.


root@u5pvr-debian:~# apt-get install nfs-common

Reading package lists... Done

Building dependency tree

Reading state information... Done

nfs-common is already the newest version.

0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

1 not fully installed or removed.

After this operation, 0 B of additional disk space will be used.

Do you want to continue? [Y/n]

Setting up nfs-common (1:1.2.8-9) ...

[ ok ] Starting NFS common utilities:.

root@u5pvr-debian:~#


문제 에러 없이 설치가 되었습니다.


다음으로 nfs 공유를 마운트 해 보겠습니다.


root@u5pvr-debian:~# mkdir /mnt/nfs

root@u5pvr-debian:~# mount -t nfs -o nolock 192.168.100.30:/media/volume/tvheadend /mnt/nfs

root@u5pvr-debian:~# cd /mnt/nfs

root@u5pvr-debian:/mnt/nfs# ls

LIVE-4-U-SBS-MTV2016-11-21.ts                        ????????????-(874???)-CUBE-TV2017-02-27.ts

........................................................................................


마운트가 잘 됩니다. (실제로 lock 옵션을 사용하려면 statd 가 실행중이여야 되는데 아직 문제를 해결하지 못해서 nolock 옵션을 붙입니다.)


mount -t nfs -o nolock 아이피주소:/경로 /마운트위치



3. FTP 혹은 SAMBA 로 접근해보기


먼저 FTP 로 접근을 해 보겠습니다.




다음은 SAMBA 로 접근한 화면 입니다.





정상적으로 잘 됩니다.




4. 재부팅 시 자동마운트 하기


실제로 마운트 관리는 android 에서 관리하기 때문에 /etc/fstab 이 작동하지 않습니다.


따라서 rc.local 에 스크립트를 배치하는 것으로 해결을 봅니다.


root@u5pvr-debian:~# nano /etc/rc.local



# 아래의 내용을 추가합니다.

# cifs mount

mkdir /mnt/samba

mount -t cifs -o username=djj9405,password=djj9405 //192.168.100.41/volume /mnt/samba


# nfs mount

mkdir /mnt/nfs

mount -t nfs -o nolock 192.168.100.30:/media/volume/tvheadend /mnt/nfs


다만, 와이파이를 이용하시는 분들께서는 이 방법을 이용하실 때 주의하시길 바랍니다.


리눅스 부팅 과정 때, 와이파이가 붙어있지 않으면 연결 에러가 발생하기 때문입니다.


따라서 이 문제를 해결하기 위해서는 마운트 하기 전에 sleep 옵션을 주는 등의 방법이 있습니다.



유선으로 U5PVR 에 인터넷이 물려 있는 경우는 문제가 없습니다.


감사합니다.

http://cafe.naver.com/mk802/20660









+ Recent posts