2018年12月21日金曜日

Linuxでfriioを使う(実用編)

Linuxでfriioを使う(構築編)

の続きです。

前の記事では、Xubuntu 18.04でrecfriioをビルドする方法をご紹介しましたが、これを実際に動作させるには、更に以下のパッケージが必要です。
pcscd
pcsc-tools
これらのパッケージをapt installで導入してください。

また、以下のようにして、カードドライバであるpcscdを予め起動させておく必要があります。
systemctl start pcscd
尚、最近のLinuxカーネルには、dvb_usb_friioなるドライバモジュールが予め内包されており、friioを接続するとこのドライバモジュールが自動的にロードされデバイスを専有してしまいます。(recfriioを使おうとしても、デバイスがbusyである旨のエラーが表示されます。)

このため、dvb_usb_friioドライバが自動的にロードされないよう、ブラックリストを作成します。
echo 'blacklist dvb_usb_friio  > /etc/modprobe.d/blacklist-dvb.conf
設定が完了したら、システム再起動します。

これでrecfriioが使えるようになります。
recfriio --b25 27 60 result.ts
とやることにより、27チャンネル(東京スカイツリーからの放送波でNHK総合に該当)を60秒録画したりできます。
放送されているチャンネルの割当は地方によって違いますので、以下のページからお住まいの場所のチャンネルの割当のご確認ください。

地上デジタル放送 チャンネル一覧表
 https://www.maspro.co.jp/contact/bro/bro_ch.html

ハードオフで安く購入した白フリーオですが、上記のコマンドで無事に録画できました。

良い買い物でした。

Linuxでfriioを使う(構築編)

先日、近所のハードオフに行くと、ジャンクコーナーで白Friioが540円で売られていました。

ルータが入った箱の中に、乱雑に詰め込まれていました。
店員さんが何なのか分からず、面倒になって適当に値段をつけてジャンク箱に放り込んだっぽいです。

動けばもうけものなので、早速購入しました。
今回はこれをハックしてみたいと思います。

まず、最初に残念なお知らせから。
フリーオの純正ドライバー類は購入者のメールアドレスがないとダウンロードできないようです。
とは言いつつも、まだネット上には有志の方々が残した互換ドライバなどが存在していて、丹念に探して行けば使えそうです。

普段家ではLinuxを使っているので、Linuxで使うための情報を探してみましたが、recfriioというコマンドラインツールで録画ができるようです。

recfriioについては、以下のサイトにあがっていたのを使わせて頂きました。

Friio関係ファイル置き場
http://www2.wazoku.net/2sen/friioup/

ここから以下のファイルをダウンロードします。
up1206.zip recfriio r5本体
up1210.zip recfriio r5のパッチ
ただし、これらのファイルは、私が使っているXubuntu 18.04ではビルドすることはできませんでした。

色々試行錯誤して、ビルドできるようにソースコードを修正しました。
こちらに上げておきますので、ご利用されたい方はどうぞ。
試していないですが、恐らくUbuntuでも動くと思います。

なお、Xubuntu 18.04でビルドするには、以下のパッケージが必要でした。
それぞれ、apt installでインストールしてください。
make
pkg-config
libboost1.65-all
libpcsclite-dev
ソースコードのtarアーカイブを展開した後、recfriior5のディレクトリに移動してmakeすればOKです。

お使いの環境にもよりますが、2〜3分でビルドが完了し、recfriioの実行ファイルが生成される筈です。

2018年12月20日木曜日

JavaScript実行後のHTMLソースを取得する

とあるブログ(blog.jpドメインのlivedoorブログ)を定期的に確認し、更新があったら保存するような仕組みを作りたくなり、シェルスクリプトとwgetでなんとかしようと試行錯誤したのですが、取得したHTMLから記事のURLを抽出できませんでした。

おかしいなと思って取得したHTMLソースを見たところ、記事の中身や写真はすべてJavaScriptでレンダリングされているようです。
多分クローラー避けなんでしょうが、最近はこういうサイトが多くて嫌になります。

残念ながらwgetはJavaScriptを処理してくれないため、このままでは記事を抜き出すことは不可能です。
ということで、JavaScriptを実行した後のHTMLを取得する方法を調べてみたのですが、PhantomJSを使うのが一番簡単そうなので試してみました。

PhantomJSは、様々なOSのディストリビューションでパッケージとして提供されています。

Xubuntuでは、
sudo apt install phantomjs
FreeBSDでは、
pkg install phantomjs
でインストールすることが可能です。

使い方はこんな感じです。
phantomjs script.js ${url_target} ${user_agent}
「script.js」は、以下のような感じで記述します。
var system=require('system');
var webpage=require('webpage');
var url=system.args[1];
var user_agent=system.args[2];
var delay=3000;
var page=webpage.create();
page.settings.userAgent=user_agent;
page.open(url,function(status){
    setTimeout(function(){var html=page.evaluate(function()
    {return document.documentElement.outerHTML;});
    system.stdout.write(html);phantom.exit(0);},delay);})
PhantomJSが第一引数で指定した上記JavaScriptを実行してコンテンツを取得、保存します。

保存したHTMLから、無事に記事のURLを抽出できるようになりました。

尚、PhantomJSを使う以外にも、「Selenium+WebDriver+ブラウザ(ヘッドレスモード)」っていう選択肢もあるようです。
(ブラウザを実行させるためにXなどのGPU環境が必要になるなど、若干重た目かも…)

このように便利はPhantomJSですが、既に開発が終了しているようで、ちょっと残念です。

以下のページを参考にしました、ありがとうございました。
https://teratail.com/questions/19039

2018年11月16日金曜日

メインのデスクトップPCの不調

ここのところ、メインで使っているデスクトップPCの調子が良くないです。
暫く使っていると、突然リセットがかかり、リブートしてしまいます。
ここ数日で3〜4回も発生しています。

まず初めにCPUの熱暴走を疑ったのですが、リブート後のBIOS画面で確認しても温度はせいぜい40度弱で、これが原因とは考えづらいです。
だいたい熱暴走なら、もっと暑い時期に起こっていないとおかしいですし。

以前似たようなトラブルに遭遇した際は、マザーボードや電源の電解コンデンサの液漏れが原因でした。
液漏れしたコンデンサを交換すると治ったので、今回もそれかなと思いケースを空けてみましたが、マザーボード上には液漏れしたり膨らんだりしたコンデンサは見つかりませんでした。
続いて電源も分解してみたのですが、こちらも同じく何も見つからず。

う〜ん、原因はなんだろう。

問題の切り分けするために、原因になってそうな箇所を列挙してみます。

・電源
・グラフィックカード
・マザーボード
・CPU(可能性小)
・メモリ(可能性小)

※ CPU、メモリについては、リセットする前にフリーズするケースが多いので、可能性小として後回しにします。

とりあえず、以下の順番で切り分けしていこうと思います。

(1) 電源を交換してみる。
(2) グラフィックカードを交換してみる。
(3) マザボードを交換してみる。

上記のどれかの手順で問題が再現しなくなれば、交換したものに問題があるとういうことになります。

2018年9月13日木曜日

古めのノートPCで使えるLTE対応の内蔵モデムカード

手持ちの古いノートPC(ThinkPad X61sとX201)にWWAN機能を追加しようと色々調べたので、備忘にまとめてみました。

LTE通信対応のノートPCのほとんどは、SierraWirelessのAirPrimeというデバイスを使ってLTE通信を実現しているようです。
このモデムカード、チップセットはQualcommのMDM9xxxシリーズが使われているそうな。

AirPrimeには、M.2接続のEMシリーズと、miniPCIe接続のMCシリーズがありますが、古めのノートに接続することを念頭に調べたので、MCシリーズに絞っています。

尚、MCシリーズは、miniPCIe形状ですが、実際にはminiPCIeソケットのUSB信号のみを利用します。
ですので、miniPCIeソケットにUSB信号が来ていないデバイスでは利用できません。

また、お約束ですが、USB信号が来ているminiPCIeソケットがあっても、ノートPC本体にSIMスロットがないと、せっかくモデムカードをセットしても、SIM情報を読み込めない為にLTE通信ができません。

モデムカードを購入する前に、お手元の環境がこれらの前提を満たしているのを事前に確認するようにして下さい。


MCシリーズのうち、LTEに対応しているものは以下の通りです。

AirPrime MC7304
AirPrime MC7305
AirPrime MC7330
AirPrime MC7350
AirPrime MC7354
AirPrime MC7355
AirPrime MC7430
AirPrime MC7455
AirPrime MC7700
AirPrime MC7710
AirPrime MC7750

このうち、日本国内のキャリアをサポートしているのは以下の3つのみでした。
この3つについては、技適マークが付いたものが存在すると思われます。

AirPrime MC7430

    LTE : 1,3,5,7,8,18,19,21,28,38,39,40,41
    3G  : 1,5,6,8,9,19

最もバンドのカバレッジが高く、3キャリアの主要周波数帯を全て網羅しています。
3キャリアの公式ページにもこのデバイスについての記載があるので、各キャリア向け、及びSIMフリー版のSKUが存在すると思われます。
利用可能な3つの中で最も自由度が高いですが、価格も高いです。

AirPrime MC7330

    LTE : 1,19,21
    3G  : 1,5,6,19

docomoおよびそのMVNO向け。
東名阪エリアで展開されているLTE Band 3はサポートしていないですが、カバレッジの広い1500MHz帯(Band 21)に対応しています。
加えて、800MHz帯(Band 6,9)に対応しているため、800MHz帯のみで展開している山間部エリアでもLTE/3Gともに通信可能です。
但し、幻のデバイスで、利用可能な3つの中で、最も入手性が低いです。
(私は、実物はもちろん、ネット上で売られているのも見たことありません。)

■AirPrime MC7700

    LTE : 1,4,17
    3G  : 1,2,5,6

こちらもdocomoおよびそのMVNO向けです。
docomoの対応バンドのうち、サポートしているのはLTEではBand 1のみ、3GではBand 1,6のみと貧弱で、800MHz帯のみで展開している山間部エリアでは、3Gにハンドダウンします。
但し、3つの中では、最も入手性が高く、廉価です。

それ以外のデバイスの中にも、技術的には使えるものもありますが、日本国内に在住している人が使うと電波法違反になりますので、ご注意下さい。


私が調べた限りは以上なのですが、万が一上記以外に技適マークがついているものを見かけたら教えて下さい。

2018年7月30日月曜日

Nexus7(2013)のバッテリー交換

うちにあるNexus7(2013)ですが、だいぶバッテリーがヘタってきました。

このデバイスは文字通り2013年に発売されていて、かなり年式が古いものなのですが、Google製で非常に人気のあるデバイスだったこともあり、Android 6.0.1までアップデートできたり、Lineage OSを導入してAndroid 7.1相当にできたりと、今でも使い手があるデバイスです。

バッテリーさえ持てばまだ使えそうなので、部品だけ入手して自分でやってみることにしました。

さすがに人気のあったデバイスだけあって、やり方がYouTubeに上がってます。



まずは、ホームセンターで100円弱で売られているプラスチック製の薄いヘラを使って裏蓋を開けていきます。
過度な力がかからないよう、慎重にはずしていきます。

無事裏蓋が外れたら、作業は7割完了です。

動画にある通り、2本のフレキケーブルの保護シールを剥がした上で外し、続いてバッテリーのコネクターを外します。
バッテリーのコネクターは横ではなく、上方向に引っ張ると簡単に外れます。

バッテリーは4箇所でネジ止めされていますので、精密ドライバーで金属のパネルごと外します。

バッテリーと金属のパネルは、両面テープで止められているので、先ほどのヘラを隙間に入れて剥がしていきます。
この時、金属パネルで手を切らないように気をつけて下さい。(私は指をざっくりやってしまいました。)

両面テープはかなりの粘着力で、剥がした後も新しいバッテリーを固定するくらいの粘着力がありましたが、精神衛生上よくないので、シール剥がしを使ってすべて除去し、再度別の両面テープを貼って新しいバッテリーを固定しました。

あとは逆の手順でバッテリーをネジ止めし、フレキケーブルを再度固定した上で裏蓋をはめれば完了です。

これであと2〜3年は使えそうです。

2018年7月19日木曜日

FUJITSU FMV-TC8270

先日、秋葉原のパレットタウンで1,980円(税抜)で売られているのをゲットしました。



詳しいスペックは以下の通り。
http://www.fmworld.net/biz/thinclient/0810/8270/spec.html

見た目はノートPCですが、シンクライアントとして売られていたようです。
筐体はパッと見かっこいいのですが、シンクライアントなせいか、塗装が剥がれやすかったりと、ややチープ目です。

CPUはCeleron 723で、ネットブックが廃れたあとに登場したCULVノートによく採用されていたCore 2世代の最廉価CPUです。

メモリの交換は、裏面のネジを2箇所外すだけで可能で、DDR3 SO-DIMMモジュールを2枚まで搭載できます。
スペック上は最大2GBとなってますが、2GBのDDR3モジュールを2枚の合計4GB取り付けてみたところ、4GB丸々問題なく認識されました。




HDDの交換はメモリの交換と違い、本体をバラしてやる必要があります。
裏面のネジ、及び側面のRGBコネクタの六角スペーサネジを外すと、裏面が外せます。








内部ストレージはCompact Flashで、2.5インチHDD形状の変換基板の上にマウントされており、変換基板はSATAコネクタに接続されています。

変換基板は特にネジ止めはされておらず、クッションで四角く区切られた領域に収められていました。
試しに、2.5インチのHDDを代わりに収めてみましたが、隙間が空き、確実に固定出来ません。

内部ストレージを2.5インチHDDに置き換えるには、別途固定用にビニールテープやクッションを用意する必要がありそうです。

ということで、FMV-TC8270をざっと見てきましたが、32GB程度のCompact Flashを用意してストレージを強化したり、メモリを2GB程度まで増設すれば、そこそこの用途に使えそうです。