T3500:Spinel3 + BonDriver BonDriver_PT3-ST

あとあとEpgDataCap_Bonなどで必要になると思われるランタイムをインストールしておく。

Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ

Spinel3の導入

展開して、配置するだけでOK

Spinel_ver3.6.1.1

DTV関係ファイル置場

BonDriver_PT3- ST(お試し人柱版4)[up0985.zip]

(参考)
http://it.trend-ai.com/?p=6783

https://github.com/epgdatacapbon/BonDriver_PT3-ST

PT3の設定を書き込む

BonDriverMapping.json

    /* BonDriver_PT3-ST */
    {
        "DeviceName": "PT3",
        "Mapping": {
            "ISDB_T": "^BonDriver_PT3-T.*?\\.dll$",
            "ISDB_S": "^BonDriver_PT3-S.*?\\.dll$",
        }
    },

\DeviceDefinitions\EarthSoft.xml (2018/11/7)

  <DeviceDefinition DeviceName="PT3" DisplayName="EarthSoft PT3">
    <TunerDefinitions>
      <TunerDefinition TunerType="ISDB_T" Count="2">
        <ChannelCategories>
          <ChannelCategory>UHF</ChannelCategory>
          <ChannelCategory>CATV</ChannelCategory>
          <ChannelCategory>VHF</ChannelCategory>
        </ChannelCategories>
      </TunerDefinition>
      <TunerDefinition TunerType="ISDB_S" Count="2">
        <ChannelCategories>
          <ChannelCategory>BS</ChannelCategory>
          <ChannelCategory>CS110</ChannelCategory>
        </ChannelCategories>
      </TunerDefinition>
    </TunerDefinitions>
  </DeviceDefinition>

PT3 BonDriver-STの配置

Spinel3\BonDriverに配置する

BonDriver_PT3-S.dllはコピーしBonDriver_PT3-S0.dll、BonDriver_PT3-S1.dll

BonDriver_PT3-T.dllはコピーしBonDriver_PT3-T0.dll、BonDriver_PT3-T1.dll

BonDriver_PT3-S.ChSet.txt
BonDriver_PT3-S0.dll
BonDriver_PT3-S1.dll
BonDriver_PT3-ST.ini
BonDriver_PT3-T.ChSet.txt
BonDriver_PT3-T0.dll
BonDriver_PT3-T1.dll
PT3Ctrl.exe

BonDriver_PT3-ST.ini

新チャンネルに合わせたChSetの変更

間違いがあったので、こちらに変更(BonDriver_PT3-S.ChSet)2018/11/7

;BS/CS用
;チューナー空間(タブ区切り:$名称	BonDriverとしてのチューナ空間)
$BS	0
$CS110	1
;チャンネル(タブ区切り:名称	BonDriverとしてのチューナ空間	BonDriverとしてのチャンネル	PTxとしてのチャンネル	TSID(10進数で衛星波以外は0))
BS01/TS0 BS朝日 	0	0	0	16400
BS01/TS1 BS-TBS	0	1	0	16401
BS01/TS2 BSジャパン	0	2	0	16402
BS03/TS0 WOWOW PRIME	0	3	1	16432
BS03/TS1 NHK BS Premium	0	4	1	16433
BS03/TS2 BSディズニー	0	5	1	17970
BS05/TS0 WOWOW LIVE	0	6	2	17488
BS05/TS1 WOWOW CINEMA	0	7	2	17489
BS09/TS0 BS11   	0	8	4	16528
BS09/TS1 STAR CH1	0	9	4	16529
BS09/TS2 TwellV 	0	10	4	16530
BS11/TS0 FOX bs238	0	11	5	18096
BS11/TS1 スカパーエンタ	0	12	5	18097
BS11/TS2 放送大学	0	13	5	18098
BS13/TS0 BS日テレ	0	14	6	16592
BS13/TS1 BSフジ 	0	15	6	16593
BS13/TS2 BSアニマックス	0	16	6	18130
BS15/TS1 NHK BS1	0	17	7	16625
BS15/TS2 STAR CH2/3	0	18	7	16626
BS19/TS0 GreenChannel	0	19	9	18224
BS19/TS1 J Sports1	0	20	9	18225
BS19/TS2 J Sports2	0	21	9	18226
BS21/TS0 イマジカBS	0	22	10	18256
BS21/TS1 J Sports3	0	23	10	18257
BS21/TS2 J Sports4	0	24	10	18258
BS23/TS0 BS釣りビジョン	0	25	11	18288
BS23/TS1 BS J映画専門ch	0	26	11	18289
BS23/TS2 D-Life 	0	27	11	18290
ND2	1	0	12	24608
ND4	1	1	13	28736
ND6	1	2	14	28768
ND8	1	3	15	24704
ND10	1	4	16	24736
ND12	1	5	17	28864
ND14	1	6	18	28896
ND16	1	7	19	28928
ND18	1	8	20	28960
ND20	1	9	21	28992
ND22	1	10	22	29024
ND24	1	11	23	29056

一通り設定が終わったので、Spinelを起動する。

キチンと動作している。

次は、Spinelの動作確認のため、TvTestを入れてみよう。

T3500:PT3インストール

Windowsのインストール環境設定が完了したので、鯖構築を始める。
マシンにPT3を導入し、SDKとドライバをインストールする。

https://earthsoft.jp/PT3/download_SHA-2.html

アースソフトからドライバをDLし、インストールする。

ドライバ
https://earthsoft.jp/PT3/bin/PT3-Driver-400+.exe

その後に、FPGA回路バージョンを確認する。
FPGA回路更新ツール
https://earthsoft.jp/PT3/bin/PT3-Update-400+.exe

FPGA回路バージョンは0x04の最新版です。
cmd.exeでUpdate.exeを起動すると、認識しているPT3が表示される。

--+---+---+---+---
#  Bus Dev Fun PTn
--+---+---+---+---
0: (終了)
1:   1   0   0   3

1: が認識しているPT3です。
1: の更新が必要か確認するため、
>1を入力する。

C:\PT3-Update-400+\Update.exe
Update.exe for PT3 バージョン 4.0 2015/09/25
[デバイス選択メニュー]
   Bus:バス番号 / Dev:デバイス番号 / Fun:ファンクション番号 / PTn:品番
--+---+---+---+---
#  Bus Dev Fun PTn
--+---+---+---+---
0: (終了)
1:   1   0   0   3
>1
★FPGA 回路バージョンは 0x04 です。このツールの更新対象は 0x01~0x03 です。
[デバイス選択メニュー]
   Bus:バス番号 / Dev:デバイス番号 / Fun:ファンクション番号 / PTn:品番
--+---+---+---+---
#  Bus Dev Fun PTn
--+---+---+---+---
0: (終了)
1:   1   0   0   3
>0
続行するには何かキーを押してください . . .

「1」を入力すると、

★FPGA 回路バージョンは 0x04 です。このツールの更新対象は 0x01~0x03 です。

と表示されるので、この場合「FPGA 回路バージョンは 0x04」とあるので、最新版になっていることが確認出来ます。

確認完了後、「0」でプログラムが終了します。

続いて、SDKをインストールする。

https://earthsoft.jp/PT3/bin/PT3-SDK-400+.exe

raspi:NUTd(network ups tools) netsever

先日QNAPのNUTを利用してクライアントに商用電源の状態を共有していたのですが、QNAPで送信出来るクライアントの数が6個までしか設定できません。

直接/etc/config/ups/upsd.confを編集してもWEB GUIから制御できなかったりしたので、raspiをnutdにしてQNAPをクライアントに変更します。

qanpの設定を見比べながら設定していきます。

まず、UPSをraspiに接続してlogを見てみます。

[103417.777158] usb 1-1.5: new full-speed USB device number 4 using dwc_otg
[103417.910716] usb 1-1.5: New USB device found, idVendor=051d, idProduct=0003
[103417.910735] usb 1-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[103417.910746] usb 1-1.5: Product: Smart-UPS 750 FW:UPS 08.3 / ID=18
[103417.910758] usb 1-1.5: Manufacturer: American Power Conversion 
[103417.910769] usb 1-1.5: SerialNumber: AS1317214978  
[103417.941831] hid-generic 0003:051D:0003.0001: hiddev96,hidraw0: USB HID v1.00 Device [American Power Conversion  Smart-UPS 750 FW:UPS 08.3 / ID=18] on usb-3f980000.usb-1.5/input0

USBの状態も確認しておく

$ lsusb
Bus 001 Device 004: ID 051d:0003 American Power Conversion UPS

$ sudo apt-get updatesudo apt-get install nut nut-client nut-server
Reading package lists… Done
Building dependency tree
Reading state information… Done
nut is already the newest version (2.7.4-5).
nut-client is already the newest version (2.7.4-5).
nut-server is already the newest version (2.7.4-5).
nut-server set to manually installed.
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]
[/code]
クライアントとしてインストールしていたので、なにもインストールされないです。

Driver Setting

設定ファイルを書き換えていく。
ups.confに書くのは、UPSのドライバと接続方法を記載する。

/etc/ups/ups.conf

# cp ups.conf ups.conf.org
/etc/ups/ups.conf
[qnapups]
driver = usbhid-ups
        port = auto
        desc = "APC ES-750"
        pollinterval=1

ドライバサービスを再起動する。

# systemctl restart nut-driver
# systemctl status nut-driver
Oct 16 16:10:39 ras systemd[1]: Starting Network UPS Tools - power device driver controller...
Oct 16 16:10:39 ras upsdrvctl[9680]: interrupt pipe disabled (add 'pollonly' flag to 'ups.conf' to g
Oct 16 16:10:39 ras upsdrvctl[9680]: Using subdriver: APC HID 0.96
Oct 16 16:10:39 ras upsdrvctl[9680]: Network UPS Tools - Generic HID driver 0.41 (2.7.4)
Oct 16 16:10:39 ras upsdrvctl[9680]: USB communication driver 0.33
Oct 16 16:10:39 ras upsdrvctl[9680]: Network UPS Tools - UPS driver controller 2.7.4
Oct 16 16:10:39 ras systemd[1]: Started Network UPS Tools - power device driver controller.
Oct 16 16:10:39 ras usbhid-ups[9685]: Startup successful

サーバーの設定

upsd.confに書くのは、主にアクセス権に関するもので、今回はアクセス制限をしたいので、追記する。最後に、LISTENを記載するのを忘れずに。

/etc/ups/upsd.conf

ACL all 0.0.0.0/0
ACL localhost 127.0.0.1/32
ACL localnet 192.168.0.0/24
ACL client_1 192.168.10.1/32
ACL client_2 192.168.0.232/32
ACL client_3 192.168.0.235/32
ACL client_4 192.168.0.236/32
ACL client_5 192.168.0.237/32

ACCEPT localhost
ACCEPT localnet
ACCEPT client_1
ACCEPT client_2
ACCEPT client_3
ACCEPT client_4
ACCEPT client_5
REJECT all

MAXAGE          20

LISTEN 0.0.0.0

UPSdに接続するユーザーの登録

本来なら、権限ごとにIDとパスワードを設定すべきだが、一括管理するので、IDは全てadminを利用することにする。

/etc/ups/upsd.users

[admin]
                password = [passwd]
                allowfrom = localhost
                actions = SET
                instcmds = ALL
                upsmon master           # or upsmon slave

サーバーモードの設定

サーバーモードは、standalone , netserver , netclientとある。

/etc/nut/nut.conf

MODE=netserver

nut-serverの再起動を行い、upscでUPSの状況を確認してみる。

# service nut-server restart
# upsc es750
Init SSL without certificate database
battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 50
battery.runtime: 1620
battery.runtime.low: 120
battery.type: PbAc
battery.voltage: 27.1
battery.voltage.nominal: 24.0
device.mfr: American Power Conversion 
device.model: Smart-UPS 750
device.serial: AS1317214978  
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 1
driver.parameter.port: auto
driver.parameter.synchronous: no
driver.version: 2.7.4
driver.version.data: APC HID 0.96
driver.version.internal: 0.41
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.firmware: UPS 08.3 / ID=18
ups.mfr: American Power Conversion 
ups.mfr.date: 2013/04/27
ups.model: Smart-UPS 750
ups.productid: 0003
ups.serial: AS1317214978  
ups.status: OL
ups.timer.reboot: -1
ups.timer.shutdown: -1
ups.vendorid: 051d

nut-serverの設定が終わったので、nut-server自体が電源状態を受け取れるようnut-clientの設定も行う。
設定は、/etc/nut/upsmon.confに記述する。

$ sudo vi /etc/nut/upsmon.conf
MONITOR qnapups@localhost 1 admin 123456 master

一通りの設定と接続確認が終わったので、nutを再起動する。

# service nut-server restart
# service nut-client restart
# service nut-monitor restart

別host(別hostのnut-client)の設定

$ sudo vi /etc/nut/upsmon.conf
MONITOR qnapups@localhost 1 admin 123456 master

QNAPの設定は、このような感じになる。

raspi:proftpd SSL/TLS

ちょっとしたことで、ftpd欲しいと思ったりしたので、サービスを立てた。

インストールはいつもの通り、aptでいれちゃいます。

$ sudo apt-install proftpd

/etc/proftpd/ssl.conf

TLSRSACertificateFile           /etc/letsencrypt/live/[domain name]/cert.pem
TLSRSACertificateKeyFile        /etc/letsencrypt/live/[domain name]/privkey.pem
TLSCACertificateFile            /etc/letsencrypt/live/[domain name]/chain.pem

/etc/proftpd/modules.conf

LoadModule mod_tls.c #コメントを外す
[code]

お好みで、virtualhostの設定
[code]
VRootAlias upload /hpme/ftp/[domain_name]/upload
#
<VirtualHost ftp.[domain_name]>
VRootEngine on
VRootServerRoot /hpme/ftp/[domain_name]/
VRootOptions allowSymlinks
#DefaultRoot ~
</VirtualHost>

raspi:Value-Domain DDNS

そのまま使えたので、有り難く頂戴しました。
(参考)
https://qiita.com/kouichirou/items/b89beaf27942aadd9307

/usr/local/sbin/update_ddns.sh

#!/bin/bash

CONFIG_FILE='/etc/update_ddns.conf'
IP_CACHE_FILE='/tmp/update_ddns_ip'
DDNS_CACHE_FILE='/tmp/update_ddns_result'

# sources DOMAIN= , PASSWORD= and HOST=
source $CONFIG_FILE

old_ip=`[ -e $IP_CACHE_FILE ] &amp;&amp; cat $IP_CACHE_FILE || echo ''`
new_ip=`wget --quiet -O - 'http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip'`
if [ "$old_ip" = "$new_ip" ]; then
    echo "NO CHANGE ($new_ip)"
    logger -t UPDATE_DDNS "INFO: NO CHANGE ($new_ip)"
    exit 0
fi

url="http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=$DOMAIN&amp;p=$PASSWORD&amp;h=$HOST"
result=0
wget --quiet -O - "$url" 2&gt;/dev/null | tee $DDNS_CACHE_FILE | grep 'status=0' &gt;/dev/null &amp;&amp; result=1

if (( !$result )); then
    echo `date` 'FAILED'
    logger -t UPDATE_DDNS "ERROR: FAILED result:" `cat $DDNS_CACHE_FILE`
    exit 1
fi

echo $new_ip &gt; $IP_CACHE_FILE

echo "UPDATED ($new_ip)"
logger -t UPDATE_DDNS "INFO: UPDATED with new IP:$new_ip"
exit 0

設定ファイル
HOSTについて、更新するドメインのホスト名を指定します。DNSレコード編集画面のホスト名と全く同じ仕様です。
例: *(全ホスト)、www、指定なしはホスト名なし
/etc/update_ddns.conf

DOMAIN=[Domain name]
PASSWORD=[Domain Password] 
HOST=*

Scriptと設定ファイルの設置が出来れば、起動してみます。

# /usr/local/sbin/update_ddns.sh
UPDATED (xxx.xxx.xxx.xxx)

アップデート出来たようです。
このあたりの処理で、同一IP ADDRESSの場合は、wgetの処理は行わないようです。

if [ "$old_ip" = "$new_ip" ]; then
    echo "NO CHANGE ($new_ip)"
    logger -t UPDATE_DDNS "INFO: NO CHANGE ($new_ip)"
    exit 0

updateの確認が出来たので、cronでまわすように設定します。

# crontab -e
*/10 * * * *    /usr/local/sbin/update_ddns.sh &gt; /dev/null 2&gt;&amp;1

念のため、cronを再起動しておこう。

# service cron restart