반응형

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다) Notion 가입 Link

이번에 광군절에 구매한 Tuya zigbee motor와 QNAP에서 구동중인 HA와 연동하기위해선, Zigbee2mqtt 설치가 필요합니다. zigbee용 usb는 역시 마찬가지로 aliexpress에서 cc2531을 구매하였습니다.

US $10.65 |Smartrf04eb cc1110 cc2530 다운로더 cc2531 무선 지그비 스니퍼 베어 보드 블루투스 4.0 동글 캡처 패킷 모듈|반도체 집적회로| - AliExpress
Smartrf04eb cc1110 cc2530 다운로더 cc2531 무선 지그비 스니퍼 베어 보드 블루투스 4.0 동글 캡처 패킷 모듈,중국을 포함한 전 세계의 판매자들에게서 구매하세요. 무료 배송, 한정 세일 타임, 간편한 반품과 구매자 보호 기능을 누리세요! ✓ 전세계 무료 배송! ✓ 제한된 시간 세일 ✓ 진정한 귀환
https://ko.aliexpress.com/item/4000179393045.html?spm=a2g0s.9042311.0.0.3fb04c4dArzZr6

cc2531의 flashing은 간단하게 다음 링크의 가이드를 따라하시면 진행 할 수있습니다.

Flashing the CC2531 USB stick
The firmware can be flashed with multiple devices. The easiest but most expensive option is with the CC Debugger from Texas Instruments, which is described on this page. However, you can also use a Raspberry Pi or a MCU like the Arduino Uno or the cheap ESP8266 with four dupont cables and optionally a downloader cable.
https://www.zigbee2mqtt.io/information/flashing_the_cc2531.html

이제 이런 USB Stick과 MQTT 브로커를 연결해주는 역할을 하는 zigbee2mqtt를 설치하기위해 QNAP의 container station을 통한 설치를 진행하면 됩니다.

필요사항

  • Container Station
  • Zigbee USB(cc2531)

설치 및 실행

USB 연결

Zigbee USB를 QNAP에 꽂고서 SSH상에서 다음과 같은 명령어를 통해서 제대로 인식이 되었는지 확인 가능합니다

lsusb를 하면 Texas Instruments, Inc가 보이는지 확인해 봅니다.

Docker 설치

Container Station이 설치되어있는 상태에서 다음과 같은 script를 통해 설치하시면 됩니다. 수정해주셔야 하는 포인트는

  • -v <NASPATH>:/app/data : zigbee2mqtt의 설정 파일들을 담는 폴더 경로 지정해주시면됩니다.
  • —name: Docker이름입니다.
  • —network: qnapclub의 mosquitto를 사용하시면 그대로 사용하시면 됩니다.
#!/bin/bash
#source /share/my/env.sh
QPKG_NAME=container-station
QPKG_DIR=$(/bin/sed -nr ":s /^\[$QPKG_NAME\]/ b o; n; b s; :o n; /^\[/ q; /^Install_Path[ ]*=/ {s/.*=[ ]*// p; q;} b o;" "/etc/config/qpkg.conf")
export PATH=$QPKG_DIR/bin:$PATH

if [ "$#" -gt 0 ]; then
  if [ "$1" == "restart" ]; then
    docker stop zigbee2mqtt
    docker start zigbee2mqtt
  fi
else
  docker run \
    -d --name zigbee2mqtt \
    -v /share/my/HA/zigbee2mqtt/data:/app/data \
    --device=/dev/ttyACM0 \
    --privileged=true \
    --network host \
    koenkk/zigbee2mqtt:latest
fi

위와같은 script 파일을 임의의 경로에 만드신 후 실행하시면 설치 가능합니다.

chmod +x zigbee2mqtt.sh
#Docker install
./zigbee2mqtt.sh

#Docker restart
./zigbee2mqtt.sh restart

설정

위에서 설정한 app/data폴더에 가면 configuration.yaml파일을 찾을 수 있습니다. 여기서 설정 변경작업을 하시면 됩니다.

반응형
반응형

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다) Notion 가입 Link

필요사항

  • Container-Station
  • SSH

설치

Container Station에서 Docker형태로 Nginx Proxy Manager를 설치하는 방법입니다. 별도 DB설치가 필요없는 다음 이미지를 이용하여 설치할 예정입니다.

jlesage/docker-nginx-proxy-manager
This is a Docker container for Nginx Proxy Manager. Nginx Proxy Manager enables you to easily forward to your websites running at home or otherwise, including free SSL, without having to know too much about Nginx or Letsencrypt. NOTE: The Docker command provided in this quick start is given as an example and parameters should be adjusted to your need.
https://github.com/jlesage/docker-nginx-proxy-manager

우선 8080, 8181, 4443 포트가 QNAP에서 사용중이면 안됩니다. 저는 Web서비스랑 포트가 겹쳐서 서비스 포트를 변경하였습니다. 아니면 별도로 도커 포트 매핑을 하시면 됩니다.

이후 작업은 SSH로 접속하여 진행할 예정입니다.

SSH로 접속하여 /config 폴더로 사용할 경로를 하나 만들어줍니다. 저의경우 /share/my/nginx-proxy-manager 폴더를 사용 할 예정입니다. 그리고 다음과 같은 스크립트로 수행하시면 설치 작업이 수행됩니다.(경로는 본인에 맞게 변경 바랍니다)

#!/bin/bash

export PATH=/share/CACHEDEV1_DATA/.qpkg/container-station/bin:$PATH
mycmd="docker run -d --name nginx-proxy-manager \
-v /share/my/nginx-proxy-manager:/config \
--restart "on-failure:10" \
-p 8181:8181 \
-p 8080:8080 \
-p 4443:4443 \
jlesage/nginx-proxy-manager"

echo ${mycmd}
${mycmd}

포트포워딩

위와같이 설치를 완료하였으면 다음과 같이 포트 포워딩을 공유기에서 설정해 주면됩니다.

80(외부) <—> 8080(내부)

443(외부) <—> 4443(내부)

8181(외부) <—> 8181(내부)

DuckDNS DNS Set-up

QNAP NAS의 경우 xxx.myqnapcloud.com 이라는 DNS를 기본적으로 제공하고있다. 그런데 이상하게도 해당 DNS로 하위주소를 추가할 경우 접근이... 안되는 증상이 있어서 DuckDNS에 접속 주소를 생성하여 활용하였다. DuckDNS( https://duckdns.org )에 구글아이디 등으로 로그인하고 사용하고자 하는 도메인명과 IP주소를 넣으면 해당 주소로 서버 접근이 가능하다.

Nginx Proxy Manager Set-up

앞의 세팅을 모두 잘 했다면 발급받은 주소로 접근하면 다음과 같은 메세지를 얻을 수 있다.

이제 URL:8181 주소로 접근하면 Proxy Sever 설정 로그인 화면이 나온다. 초기 비밀번호는 다음과 같고 접속해서 원하고자 하는 계정을 생성하면 된다.

  • ID: admin@example.com
  • PW: changeme

이후 Detail탭에서 필요한 정보들을 입력해주고 SSL탭에서 인증서 신청과 메일을 넣어주면 인증서발급과 함께 새로운 주소 사용이 가능하다.

최종적으로 아래와 같이 활성화된 서버가 Online되었다.

반응형
반응형

 

 

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다) Notion 가입 Link

 

필요사항

 

설치

QNAP에서 Home Assistant의 설치는 매우간단하다.

QNAP Club Repo를 추가한 후 설치를 진행하면 됩니다.

주의사항 QNAP Club에서 설치되는 Home assistant core 버전 이므로 Supervisior(Addon 기능은 사용 불가합니다)

 

 

MQTT도 Mosquitto로 검색하면 설치 가능합니다.

 

설정

  1. Port-forwarding: 공유기에서 8123포트를 외부에서 접근가능하도록 Set-up해 주시기 바랍니다.
  1. http://<ip>:8123 페이지에 접근하여 기본 설정을 진행하시면 됩니다.

 

HA의 초기 설정에 대해서는 저보다 자세히 많은 정보를 담고있는 카페 블로그 포스팅이 존재합니다. 해당 내용을 참조하시기 바랍니다. 본 브로그에서는 QNAP관련 세팅 내용 만 추가할 예정입니다.

Smartthings & IoT home Community
https://cafe.naver.com/stsmarthome
HomeAssistant
https://cafe.naver.com/koreassistant
홈어시스턴트
Open source home automation that puts local control and privacy first.
https://hakorea.github.io/

 

HACS 설치

QNAP의 HA는 .qpkg폴더(/share/CACHEDEV1_DATA/.qpkg) 내에 존재합니다. CONFIG폴더에 HACS와 같은 component를 설치하기위한 폴더를 만들고 설치해 주면 됩니다.

HACS설치(https://hacs.xyz/ 참고)

cd /share/CACHEDEV1_DATA/.qpkg/Home-Assistant/CONFIG_DIR
wget -q -O - https://install.hacs.xyz | bash -
##이후 HA서버 재시작(설정->서버 제어->서버 관리->재시작)

 

 

 

반응형
반응형

[Python] Transmission 완료 자동삭제 스크립트

Last Edited: Jun 03, 2020 8:45 AM
Tags: PYTHON, QNAP

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다)
Notion 가입 Link

필요사항

  • QPython3 ( Qnap Club )

본문

Transmission의 시딩완료 항목들이나 특정 Status의 항목들을 삭제해 주는 Script이다.
transmission-remote를 Control 하는 Wrapper로 개인에 맞게 다음 항목들을 수정하여 사용가능하다

  • BASEDIR: Transmission-remote경로
  • TR_PORT: Transmission UI사용 Port
  • TR_ID/TR_PW: Transmission ID/PW
  • 현재 Status=="Finished"만 제거하게 되어있는데 필요시 if 조건 추가
#!/opt/QPython3/bin/python3 
import re 
import subprocess 
from subprocess import Popen 

BASEDIR="/share/CACHEDEV1_DATA/.qpkg/QTransmission/bin/transmission-remote" 

TR_PORT = "49091" #Transmission Port
TR_ID = "Your ID" 
TR_PW = "Your PW" 


# Make Paused List 
p = Popen([BASEDIR, TR_PORT, "--auth", "%s:%s"%(TR_ID,TR_PW), "-l"], stdout=subprocess.PIPE, \ 
         stderr=subprocess.PIPE, universal_newlines=True) 

outputs, errors = p.communicate() 
output = outputs.splitlines(); 

#Remove Header and Tail 
output.pop(0); 
output.pop(-1); 

IDs = []; 

#Example Output 
#1 100% 17.56 GB  Unknown 0.0 0.0 0.0 Idle GAME_OF_THRONES_S7.1080p.BluRay.x264.KORsub-ADC2060 
reg = re.compile('^\s*(\d*)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+\S+\s+\S+\s+\S+\s+(\S+)\s+(.+)$') 
for line in output: 
    m = reg.match(line); 
    #print(m.group(0)); 
    ID = m.group(1); 
    STATUS = m.group(6); 

    if STATUS == 'Finished': 
        IDs.append(ID); 

#Remove Torrent 
if IDs: 
    IDs = ','.join(IDs); 
    subprocess.run([BASEDIR, TR_PORT, "--auth", "%s:%s"%(TR_ID,TR_PW), "-t", IDs, "--remove-and-delete"])
반응형
반응형

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다)
Notion 가입 Link

Plex Library Auto Scan은 GDRIVE Access 혹은 HDD Wake Up을 자주 유발하기 때문에 저는 Manual Scan으로 세팅하여 사용 중입니다.
그렇다고 매번 Plex Page에서 Scan버튼을 누르는것 또한 너무 번거로운 일입니다.

Plex는 URL을 통해 간단하게 Library를 Scan할 수 있는 방법을 제공하고 있습니다.

Plex Media Server URL Commands | Plex Support

X-Plex-Token 얻어오기

Finding an authentication token / X-Plex-Token | Plex Support

먼저 자신의 X-Plex-Token이 필요합니다.

  1. 자신의 Plex서버에 로그인
  2. 아무 미디어를 클릭하고 메뉴정보 가져오기xml 보기

  1. 주소표시줄에 자신의 X-Plex-token을 확인할 수있습니다

Library ID 확인

Libraray별로 Refresh를 진행하는것으로 보여 각 Library별로 ID를 확인해야합니다.
다음주소를 브라우저에 넣어봅니다.

http://localhost:32400/library/sections?X-Plex-Token={YOURTOKENVALUEHERE}

아래와 같은 Result를 확인할 수 있을 텐데 각 라이브러리별로 key라는 애트리뷰트를 확인하면 됩니다.

<MediaContainer size="3" allowSync="0" identifier="com.plexapp.plugins.library" mediaTagPrefix="/system/bundle/media/flags/"
mediaTagVersion="1390169701" title1="Plex Library">
   <Directory allowSync="0" art="/:/resources/movie-fanart.jpg" filters="1" refreshing="0" thumb="/:/resources/movie.png"
   key="29" type="movie" title="Movies" agent="com.plexapp.agents.imdb" scanner="Plex Movie Scanner"
   language="en" uuid="07a4b132-a67b-477e-a245-585935d08c0b" updatedAt="1394559305" createdAt="1390438950">
      <Location id="4" path="/Users/plexuser/Movies/Media/Movies"/>
   </Directory>
   <Directory allowSync="0" art="/:/resources/artist-fanart.jpg" filters="1" refreshing="0" thumb="/:/resources/artist.png"
   key="31" type="artist" title="Music" agent="com.plexapp.agents.lastfm" scanner="Plex Music Scanner"
   language="en" uuid="10254ef0-a0a4-481b-ad9c-46ab3db39d0b" updatedAt="1394039950"
   createdAt="1390440566">
      <Location id="7" path="/Users/plexuser/Movies/Media/Music"/>
   </Directory>
   <Directory allowSync="0" art="/:/resources/show-fanart.jpg" filters="1" refreshing="0" thumb="/:/resources/show.png"
   key="30" type="show" title="Television" agent="com.plexapp.agents.thetvdb" scanner="Plex Series Scanner"
   language="en" uuid="540e7c98-5a92-4e8f-b255-9cca2870060c" updatedAt="1394482680"
   createdAt="1390438925">
      <Location id="3" path="/Users/plexuser/Movies/Media/TV Shows"/>
   </Directory>
</MediaContainer>

여기서 확인한 key값을 통해 다음과 같은 url로 접근하면 해당 라이브러리의 refresh를 수행할 수있습니다.

http://localhost:32400/library/sections/{KEY}/refresh?X-Plex-Token={YOURTOKENVALUEHERE}

이외 다른 명령들은 위의 링크를 통해 확인해 보시기 바랍니다.

모든 Library Refresh Python Script

Transmission after-download 스크립트 와 같이 활용할 수 있도록 위의 과정들을 파이썬 스크립트로 작성하였습니다. Plex 서버에 존재하는 모든 라이브러리 스캔을 진행합니다.

GDRIVE(Plexdrive)사용자분들은 업로드 완료 후 Wait 시간이 있어야 정상동작 합니다.

#!/opt/QPython3/bin/python3

import requests
import xml.etree.ElementTree as ET


class plex_control:
    def __init__(self):
        self.response = list()
        self.x_token = 'X-Plex-Token=<USE_YOUR_TOKEN>'
        self.base_url = 'http://<Server Address>:32400/library/sections'

    def refresh(self, id):
        url = '%s/%s/refresh?%s' % (self.base_url, id, self.x_token)
        r = requests.get(url=url)
        self.response.append(r)

    def refresh_all(self):
        url = "{:s}?{:s}".format(self.base_url, self.x_token)
        r = requests.get(url=url)
        tree = ET.fromstring(r.text)

        ids = []
        for child in tree:
            ids.append(child.attrib['key'])

        for id in ids:
            self.refresh(id)

        return self.check_response();

    def check_response(self):
        result = ""
        for r in self.response:
            if r.status_code != requests.codes.ok:
                result += "Error in '{:s}' \n".format(r.url)
        return result


if __name__ == "__main__":
    plex = plex_control()
    out = plex.refresh_all()
    print(out)
    print("Plex Scan Finish!")
반응형
반응형

Requirement

Contents

QNAP에 기본으로 되어있는 vi의 경우 빌드과정에서 많이 줄여놓아 많은 기능들이 빠져있다.
심지어 한글 Editing 및 Viewing도 지원하지 않는다.
그래서 Ubuntu 18.04에서 Static Compile을 해서 VIM을 복사하여 사용 할 수있다
다음 링크를 참고하여 빌드 진행하였다.

참고: https://raymii.org/s/blog/Statically_cross_compiled_vim_for_x86_x86-64_and_mips.html

아래와 같은 Script수행 후 bin폴더내의 vim을 원하는 위치에 복사하여 사용하면 된다.


#!/bin/bash



apt install libncurses5-dev build-essential git



git clone https://github.com/vim/vim.git





pushd vim/src

export LDFLAGS="-static"

export MAKEFLAGS="-j4"

export CFLAGS=""

./configure --with-features=small  --with-compiledby='Remy <relst@relst.nl>'  --with-x=no  --disable-gui  --disable-netbeans  --disable-pythoninterp  --disable-python3interp  --disable-rubyinterp  --disable-luainterp

make



strip vim

popd

mkdir bin

cp vim/src/vim bin/.
반응형
반응형

[Python] 카카오 배경화면 확인 스크립트

Requirement

  • Python3
  • requests
  • sqlite3
  • python-telegram-bot

Article

카카오에서 매달 발행하는 배경화면을 업데이트 하여 사용 중에 있습니다.

카카오 배경화면 페이지 링크

이 배경화면이 사람이 하는 일이다보니 매번 같은시점에 업로드 되지 않아서
매번 들어가서 올라왔나 확인해아하는 번거로움이 있어 코딩연습겸 매일 자동으로 검사하여 텔레그램
메세지를 보내주는 스크립트를 작성하여 공유합니다

https://github.com/seongmock/check_kakao_bg

위의 Git Hub Link에서 확인가능합니다.
로컬에 있는 DB에 이번달에 해당하는 날짜의 파일을 받았는지 확인하는 기록을 하게되고
기록이 없으면 페이지에 접근하여 접근가능한지 확인 후 메세지를 전달합니다.

저는 NAS Crontab에 스케쥴 등록하여 사용중 입니다.

#!/opt/QPython3/bin/python3

from datetime import date
import sqlite3
import requests
import os

# Connect DB
con = sqlite3.connect('/share/my/Kakao/kakao.db')
cur = con.cursor();

#Create Table
try:
  cur.execute("CREATE TABLE Check_hist(Date text, Status text);")
except:
  pass;

today = date.today()
target = today.strftime('%Y%m');


#Check Already checked or not
cur.execute("SELECT * FROM Check_hist WHERE Date = %s;"%target);
for row in cur:
  exit();


#Check Web Respose
url='https://store.kakaofriends.com/kr/brand/wallpaper%s'%target;
r = requests.get(url);

#if Page Exist Save and Send
if (r.status_code==200):
  os.system("/share/my/Telegram/tele.py \"%s\n%s\" "%("Download Kakao BG", url));
  cur.execute("INSERT INTO Check_hist Values(\'%s\',\'%s\');"%(target, "O"));
  con.commit();
  con.close();
  exit();


###### tele.py Contents ######
#import telegram
#import sys
#text = ""
#for item in sys.argv[1:]:
#    text = text + " " + item;
#gram_token = 'Use own TOKEN'
#chat_id = 'Use own chat_id'
#mybot = telegram.Bot(token= gram_token)
#mybot.sendMessage(chat_id = chat_id, text=text);
#print("[Telegram] Send "+text);
####################################
반응형

'Software > Scripts' 카테고리의 다른 글

[Python] 복사로 구글 번역 (영어 논문 번역)  (0) 2019.08.28
반응형

[SSH] 윈도우에서 X11 포워딩 접속하기

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다)
Notion 가입 Link

요즘 VSCode의 Remote SSH를 통해 원격 개발환경 꾸미기를 진행 중이다. 이런 과정에서 X11 디스플레이 포워딩을 진행하다 고생하여 관련 내용을 정리하여 본다.

필요사항

윈도우에서 X server를 설치해줘야 한다. Xming 도 있지만 요즘 vcXsrv를 많이 사용한다하여 설치해 보았다.

Linux 환경 설정

Sudo 권한을 통해 /etc/ssh/sshd_config 파일에 다음과 같은 라인을 추가하여 준다

    sudo gvim /etc/ssh/sshd_config

    ## ADD
    X11Forwarding yes

    #Save & Exit


    sudo service sshd restart

환경변수 추가

SSH -X를 통해 접속을해봐도 자동으로 DISPLAY번호가 발생하지 않아서 왜그런가 찾아봤더니 윈도우 환경변수에 DISPLAY가 추가되어있어야 한다고 한다. 다음과 같이 추가한다

이후 vcXsrv가 실행되어있는 상황에서 X를 띄우면 잘 뜨는것을 볼 수있다.

반응형
반응형

[Python] 복사로 구글 번역 (영어 논문 번역)

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다)
Notion 가입 Link

영어 논문을 읽기 너무 힘들어 다음 꼬마사전과 같은 기능을 하는 윈도우 사전을 찾아 해매다가
링고스... 등등 모든 것들을 적용해 봤지만 제가 사용하는 방법에 적용하기는 너무 어려웠습니다.
그러다 클리앙 stargen님의 프로그램을 보게 되었고, 그와 비슷한 컨셉으로 google 번역을 할 수 있는 script를 작성하였습니다.

아래는 GITHUB에 작성한 MD입니다. 다음 주소에서 받으시면 됩니다
https://github.com/seongmock/copytrans

copytrans

CopyTrans는 간단한 파이썬 스크립트로 수행되고 있는 도중에 클립보드의 텍스트 변화를
감지하여 구글 번역기로 변역해 표시해 주는 역할을 합니다.
클리앙의 stargen님 프로그램을 사용하다가 사용가능한 단어길이가 짧아 만들어 보았습니다.
https://www.clien.net/service/board/pds/9071993

Requirement

Windows

  • Output 폴더내의 exe파일을 그대로 수행하시면 됩니다.

Others

  • python3
  • pip module: pyperclip, googletrans, beautifulsoup4, requests
  • MAC: pbcopy, pbpaste 명령어 사용
  • LINUX: xclip or xel, qtk or pyqt4

사용방법

  1. 스크립트 or exe를 실행한다.
  2. 번역하고자 하는 Text를 복사한다.
  3. 복사한 Text가 문장일 경우 Google 번역을 진행
  4. 복사한 Text가 단어일 경우 Daum Dict 검색을 진행

반응형

'Software > Scripts' 카테고리의 다른 글

[Python] 카카오 배경화면 확인 스크립트  (0) 2020.01.15
반응형

[QNAP] TS-251 TVHeadend VAAPI (HW가속) 사용

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다)
Notion 가입 Link

필요사항

  • Codex Pack ( App Center )
  • QPython2 ( Qnap Club )
  • TVHeadend (Qnap Forum )
  • Ubunutu 18.04 Docker with Container Station ( App Center )

설치 및 실행

TVHeadend의 기본 QPKG파일들은 QNAP Forum에서 배포하고 있어 쉽게 사용이 가능하지만
VAAPI가속을 지원하지 않아 CPU Transcoding만 사용가능하여 x86_64기반의 NAS에서도 하드웨어
가속 기능을 사용하지 못하게 되어있다.

QNAP Fourm에 Codex Pack를 사용하도록 컴파일하여 사용 가능한 방법이 포스팅 되어있어 참고하여 정리해본다.

우선 설치되어있는 TVHeadend는 App Center에서 정지시켜 준다. 그 후
Ubuntu 18.04 Docker에서 다음 과 같은 Script를 수행하여 Compile한다
여기서 QPKG_DIR는 각자 TVHeadend qpkg 설치 되어있는 경로로 변경한다

#!/bin/bash
QPKG_DIR=/share/CACHEDEV2_DATA/.qpkg/TVHeadend

apt update
apt install -y pkg-config gettext libssl-dev zlib1g-dev \
wget git-core liburiparser-dev python-requests cmake libpcre3-dev libdvbcsa-dev \
libva-dev

git clone https://github.com/tvheadend/tvheadend.git
cd tvheadend

echo './configure --disable-avahi --enable-bundle --disable-dbus_1 --enable-hdhomerun_client --enable-libfdkaac --enable-vaapi' >> myconf.sh
/bin/bash myconf.sh

make -j

mkdir -p ../qpkg/bin/libc

cp build.linux/tvheadend ../qpkg/bin/

ldd build.linux/tvheadend | grep "=> /" | awk '{print $3}'| xargs -I '{}' cp -v '{}' ../qpkg/bin/libc

rm ../qpkg/bin/libc/libva.so.2 ../qpkg/bin/libc/libva-drm.so.2
#2020-01 추가 Libva버전이 안맞아서 기존 폴더에있던것도 삭제
rm $QPKG_DIR/bin/libc/libva.so.2 $QPKG_DIR/bin/libc/libva-drm.so.2

cp /lib/x86_64-linux-gnu/ld-2.27.so ../qpkg/bin/libc/tvh-loader

cp -rf ../qpkg/* $QPKG_DIR/.

그리고 QPKG_DIR 내의 TVHeadend.sh 에서 Start TVHeadend로 주석되어 있는 위치를 찾아 다음과 같이 수정해 준다.

# Start TVHeadend
        CODEX_QPKG_NAME="CodexPack"
        CODEX_INSTALL_PATH=$(/sbin/getcfg -f $CONF $CODEX_QPKG_NAME Install_Path)
        /usr/bin/env ${TVH_CMDLINE_PREFIX} \
                LIBVA_DRIVERS_PATH=${CODEX_INSTALL_PATH}/opt/cdx/lib/dri \
                ${QPKG_DIR}/bin/libc/tvh-loader \
                --library-path ${QPKG_DIR}/bin/libc:${CODEX_INSTALL_PATH}/opt/cdx/lib:${CODEX_INSTALL_PATH}/usr/lib/x86_64-linux-gnu \
                ${QPKG_DIR}/bin/tvheadend --config ${QPKG_DIR}/config \
                --user admin --group administrators \
                ${CMDLINE_OPTS} ${TVH_CMDLINE_POSTFIX}

이후 TVHeadend를 다시 수행하면 VAAPI 드라이버를 사용 가능하게 됩니다.
혹시 문제가 있을경우 다음 명령어를 통하여 디버그 메세지를 확인해 보시기 바랍니다

$QPKG_DIR/TVHeadend.sh debug start

TVHeadend Setting 및 VAAPI 코덱 설정들은 검색을 해보시면 잘 정리되어있는 블로그들이 많으니 참고하시기 바랍니다

반응형

'Software > QNAP TS-251' 카테고리의 다른 글

[Plex] URL을 통해 라이브러리 Scan  (4) 2020.02.10
[QNAP] VIM Static Build  (0) 2020.01.16
[QNAP] TS-251 Ubuntu VNC Docker 설치  (0) 2019.06.07
[QNAP] TS-251 Showdown 설치  (0) 2019.05.18
[QNAP] TS-251 Flexget Setup  (0) 2019.04.25

+ Recent posts