2015年09月29日

recpt1ドライバ憤死?→解決。 archlinux(bang)

カーネルが4.2.1-1-ARCHになって、
recpt1ドライバ(モジュールインストール)の
makeが通らなくなった。
下記は、pt1のドライバだけど、
pt3でも同じ内容のエラーが出る。

$ make
revh=`hg parents --template '#define DRV_VERSION "r{rev}:{node|short}"\n#define DRV_RELDATE "{date|shortdate}"\n' 2>/dev/null`; \
if [ -n "$revh" ] ; then \
echo "$revh" > version.h; \
else \
printf "#define DRV_VERSION \""1.1.0"\"\n#define DRV_RELDATE \""2010-01-27"\"\n" > version.h; \
fi
make -C /lib/modules/`uname -r`/build M=`pwd` V=0 modules
make[1]: ディレクトリ '/usr/lib/modules/4.2.1-1-ARCH/build' に入ります
CC [M] /home/izm/pt1-c8688d7d6382/driver/pt1_pci.o
/home/izm/pt1-c8688d7d6382/driver/pt1_pci.c: 関数 ‘pt1_pci_init_one’ 内:
/home/izm/pt1-c8688d7d6382/driver/pt1_pci.c:857:20: エラー: 関数 ‘vmalloc’ の暗黙的な宣言です [-Werror=implicit-function-declaration]
channel->buf = vmalloc(CHANNEL_DMA_SIZE);
^
/home/izm/pt1-c8688d7d6382/driver/pt1_pci.c:857:18: 警告: 代入で整数からキャスト無しにポインタを作成しています [-Wint-conversion]
channel->buf = vmalloc(CHANNEL_DMA_SIZE);
^
/home/izm/pt1-c8688d7d6382/driver/pt1_pci.c:862:18: 警告: 代入で整数からキャスト無しにポインタを作成しています [-Wint-conversion]
channel->buf = vmalloc(BS_CHANNEL_DMA_SIZE);
^
/home/izm/pt1-c8688d7d6382/driver/pt1_pci.c:911:5: エラー: 関数 ‘vfree’ の暗黙的な宣言です [-Werror=implicit-function-declaration]
vfree(dev_conf->channel[lp]->buf);
^
cc1: some warnings being treated as errors
scripts/Makefile.build:258: ターゲット '/home/izm/pt1-c8688d7d6382/driver/pt1_pci.o' のレシピで失敗しました
make[2]: *** [/home/izm/pt1-c8688d7d6382/driver/pt1_pci.o] エラー 1
Makefile:1386: ターゲット '_module_/home/izm/pt1-c8688d7d6382/driver' のレシピで失敗しました
make[1]: *** [_module_/home/izm/pt1-c8688d7d6382/driver] エラー 2
make[1]: ディレクトリ '/usr/lib/modules/4.2.1-1-ARCH/build' から出ます
Makefile:10: ターゲット 'pt1_drv.ko' のレシピで失敗しました
make: *** [pt1_drv.ko] エラー 2


これ見て、判る人がいるんだろうね。
たぶん、何かが足らないとかって問題じゃないね。
ドライバ作家が動いてくださって、半年ぐらい待つのかな。
当座の解決策として、カーネルをダウングレード。
ドライバのmakeが通った。

最近、recpt1がよく映っていて、よかったのに。
recpt1のときのvlcは、いまだに2.0.8.a-1がいい。
もうdowngrade候補にもないけれど、よく映る。

↓  ↓  ↓  ↓
解決策:
pt1の場合は、pt1_pci.c に
pt3の場合は、pt3_pci.c に

2015-10-01--1443700956_268x22_scrot.png

の宣言行を追記、だそうです。


posted by ブログ開設者 at 23:51| Comment(6) | linux | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
こんばんはkumaです。私のメインOSはCentOS6なのでrecpt1との相性問題はあまり出ませんがカードリーダー関連のパッケージのリビルド等で問題が出ます。最近はあまりに古いkernelが気になりだしてdebian,archに手をだしています。dvbデバイスとvlcの組み合わせで地上波とBSは問題なく見ることが出来る事が分かってこっちの環境に移行出来ないか?検討しています。CSをvlcで視聴出来れば完璧なんですがtransportidTSIDが個別に指定出来ないため悩んでいます。
Posted by kuma at 2015年09月30日 21:26
centosは、linuxを始めたころ、fodoraの次にやっていました。カードリーダー関係はパッケージでぜんぶそろっていたように思います。centos5.6だったかな。csの視聴は、貧乏人なものでしていず、よくわかりません。tune.cの場合、

static struct channel isdbs_channels[] = {

{ 23, "ヒストリーチャンネル" 1653000, 0x7042 },

};

とかじゃだめなんですか。

Posted by ゆったりとlinux at 2015年10月01日 00:56
ヒストリーチャンネルだと同じ周波数とidでスカパー!プロモ100 チャンネルNECO ザ・シネマ sky・Aスポーツ+囲碁・将棋チャンネル があってtuneでやるとどれを写すか選べません。
Posted by kuma at 2015年10月01日 09:15
ちょっと調べて、やってみました。
映るみたいな感じですけど。
投稿しますので、そちらをご覧ください。
Posted by ゆったりとlinux at 2015年10月01日 11:41
pt1_pci.c に
#include <linux/vmalloc.h>
を追記してあげるといいですよ
Posted by anth at 2015年10月01日 18:40
ありがとうございまーす。完璧なご教示。
pt3もpt1もドライバが通るようになりました。
通りすがりに、さりげなく無償の愛。
そういうカッコいい存在に、
じぶんもなりたかったです。
まただいぶ待つのかな、思っていました。
いや、ほんとにうれしいです。
宣言のたった一行を追記するだけで
いいんですねっ!
心より御礼を申し上げます。
Posted by ゆったりとlinux at 2015年10月01日 20:51
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: