PCIe(PCI Express)しかない環境でPT2を無理矢理使ってChinachu Gamma+Mirakurun

2018年7月8日デジタルガジェット,DTV・ffmpegLinux,DTV,Chinachu

 

imgres

PCのリフレッシュに伴ってPCIのないマザーボードを購入してしまったので、PT2が使えなくなってしまった。なんとかUbuntuでも使い、PT2を認識させ、Chinachu Gamma + Mirakurunが出来ないかと探ったら、出来たのでご紹介。

なぜにPT2?

PT3があるのになぜにPT2かって?PT3とPT2の中古価格が全然違うからです。

PT3 Rev.A

PT3 Rev.A

58,410円(03/12 13:13時点)
Amazonの情報を掲載しています
アースソフト PT2

アースソフト PT2

14,480円(03/12 13:13時点)
Amazonの情報を掲載しています

PT3もPT2も生産終了。PT3なんかは2-3万円にまで値上がりしている一方で、PT2はソフマップなどでも5,000円程度で販売されている。予備としてストックしておく分には、恒久的にPT2が使えるのであればPT2でも良いかなと思ったのがきっかけ。

PCIe-> PCI変換アダプタを使ってPT2を無理矢理使う

結論から言うと、下記の製品でPCIe(PCI Express)をPCIに無理矢理変換し、PT2をUbuntuで認識させることが出来た。

PCIe->PCI変換ボードを取り付けてみる

ただしこいつは外付けが前提である。
PCIeのスロットにUSB3.0と3ピンの電源アダプタがくっついており、付属のUSBケーブルと3ピン電源ケーブルで外付けのユニットに接続、外付けのユニットにはPCIが2スロットついている、という構成。

少し見づらいが、こんな感じになった。

Ubuntu 16.04では特に何もしなくても認識した。

02:00.0PCIbridge:PericomSemiconductorDevicee113(prog-if00[Normaldecode])Flags:busmaster,fastdevsel,latency0,IRQ16Bus:primary=02,secondary=03,subordinate=03,sec-latency=64Memorybehindbridge:df100000-df1fffffCapabilities:[80]PCI-XbridgedeviceCapabilities:[90]PowerManagementversion3Capabilities:[a8]Subsystem:Device0000:0000Capabilities:[b0]ExpressPCI-ExpresstoPCI/PCI-XBridge,MSI00Capabilities:[f0]MSI:Enable-Count=1/1Maskable-64bit+Capabilities:[100]AdvancedErrorReportingCapabilities:[150]VirtualChannelKernelmodules:shpchp

PT2のドライバを作る

こちらも普通の手順で実施することが出来た。
下記の通りの手順でChinachuに対応するPT2ドライバを作ることが出来る。

$ hg clone http://hg.honeyplanet.jp/pt1.oyama/ PT2$cd ./PT2/driver$ vim pt1_pci.c

で、修正。

--- pt1_pci.c 2017-01-1201:04:19.813447674 +0900
+++ ../../driver/pt1_pci.c 2017-01-1121:48:02.844485030 +0900
@@ -9,8 +9,11 @@
#include <linux/pci.h> #include <linux/init.h> #include <linux/interrupt.h> -
+#include <linux/version.h> #include <asm/io.h>
+#if LINUX_VERSION_CODE >=KERNEL_VERSION(4,2,0)
+#include <linux/vmalloc.h> +#endif#include <asm/irq.h>#include <asm/uaccess.h>#include <linux/version.h> 

@@ -400,13 +403,12 @@
channel->req_dma = FALSE ;
wake_up(&channel->ptr->dma_wait_q);
}
- mutex_unlock(&channel->ptr->lock);

/* send tuner to sleep */
set_sleepmode(channel->ptr->regs, &channel->lock,
channel->address, channel->type, TYPE_SLEEP);
schedule_timeout_interruptible(msecs_to_jiffies(50));
+ mutex_unlock(&channel->ptr->lock);
return0;
}

これでmake clean && make && sudo make installで終わり。
無事、Chinachu Gamma + MirakurunでもPT2が使用出来るようになります。

Posted by webnetforce