あーく・りなっくす

プログラミングとかガジェットとかの雑記

Pixel 3 XL あれこれ

購入してから 1 ヶ月も経ってないぐらいだけど雑にまとめる。

Instagram post by @arc680 • Nov 19, 2018 at 5:54am UTC

触ってみた感想

持った時の感じは Xperia XZ とそれほど差がない。 実際に大きさを比べると結構差があるけど。

ほぼ素の Android だけど、Nexus 系と違ってあると便利なものとかはある。

夜景モードは雑に使ってるけど、いい感じ。呼び出すまでのステップがあるので、通常モードで問題ない場合を見極められるようになりたい。

自分の端末固有かもしれない不具合

気がついたら発生していたのだが、ガラスフィルムを貼っている状態だとアース不良のようにタッチパネルの一部が反応しない or 反応が鈍いことがあった。最初に買ったガラスフィルムだけではなく、別のものも買ったのだが、そちらでも同じ箇所で発生していた。
ガラスフィルムが悪いのかもしれないが、同じ箇所ということもあり、一度修理に出してみることにした。

アクセサリ関連

iPhone ほどじゃないけど、他のメーカーのものよりいろいろ出るんじゃね?って思ってたけど、実際はその逆だった。やっぱり Android だと Xperia か Galaxy あたりなんだろうか。

ケース

とりあえずで買った SoftBank Selection のハイブリッドケースを使ってる。
全面覆うタイプのガラスフィルムに干渉しなかったのは割といいかも(実は干渉してる説?)。ただ、背面がガラスなので外すときに気を遣う。あと硬い。

フィルム

GRAMAS Protection 3D Full Cover Glass Anti Glare for Google Pixel 3 XL を使っている。ガラスかつアンチグレアの選択肢がこれしかなかったという理由で使ってる。今使っているケースとは相性がよく、ピッタリである。欠点は、黒縁の部分が若干太く、画面が微妙に隠れてしまうところである。これさえなければ…。

不具合の検証で、Google Pixel 3 XL docomo/SoftBank ガラスフィルム 「GLASS PREMIUM FILM」 スタンダードサイズ 高光沢/0.33mm も試してみた(Xperia XZ でもここのマットタイプを使ってたので Pixel 3 でも出してほしい)。フィルムが入っていたプラスチックのケースが、貼り付ける際のガイドになって楽に貼れる仕様だった。可もなく不可もなくという感じだろうか。全面を覆うタイプではないので、液晶ギリギリのところぐらい(一部 1mm 未満だけど出てたかも)までしかない。

GRAMAS Protection Glass Anti Glare for Google Pixel 3 XL が 1 月下旬辺りに入荷するっぽいので、ヨドバシでポチっておいた。ケースを変えるとしたら、全面を覆わないタイプがあった方が良さそうなので、それまで寝かせておく予定である。

Fitbit ionic を買った

今使ってる Charge HR が限界だったのと Android Wear でなくてもいいなという感じがあったので買った。

f:id:arc680:20171210212908p:plain:w300 f:id:arc680:20171210212929p:plain:w300 f:id:arc680:20171210212956p:plain:w300

日本での発売日は 2018 年 1 月なのだが、Amazonサイバーマンデーで先行販売されていた。
こんなチャンス逃してはいけないと思い、少しだけ考えてからポチった。

一通りセットアップをして触ってみた感じだと、

  • タッチパネルの感度は良い
  • アクティビティトラッカーメインのものが欲しいのならあり
  • Android WearApple Watch みたいに対応アプリがたくさんあるわけでもない
    • まあ向こうでも出てそんなにたってないはず

まだ装着して 1 日過ごしたわけではないので電池の持ちや就寝時の状態とかが分からないが、とりあえずここまで。
あと、ウォッチフェイスとアプリの開発はブラウザベースの環境が提供されているようなので、機会があったら試してみたいと思う。

2017/01/30 時点での録画サーバ構築手順

Raspberry Pi 2 で動かしていたけど安定しなかったので、X220 で作り直したときのメモである(と言っても手順としては同じ)。
参考にした記事をベースに自分の環境だとこうだったという感じにしている。

Ubuntu のセットアップ

USB メモリに iso を書き込む。

$ diskutil list
$ diskutil umountDisk /dev/disk3
$ sudo dd if=ubuntu-16.04.1-desktop-amd64.iso of=/dev/disk3 bs=1m

例のごとく、disk3 の 3 は環境によって変わる。
dd で書き込むのは結構時間がかかる上に、進行状況がわからないので放置して別の作業を。

USB メモリをブートし、適当にセットアップしていく。
GUI も使いたかったので今回は普通の Ubuntu を使った。

録画に最低限必要なものをインストール

セットアップした Ubuntu にいろいろ接続したり、必要なソフトウェアをインストールしていく。

必要なパッケージをまとめてインストール

ビルドや IC カードリーダを扱うのに必要なパッケージをまとめていれておく。

sudo apt -y install unzip \
    build-essential automake pkg-config \
    pcscd libpcsclite-dev pcsc-tools

各デバイスの接続

B-CAS カードを挿した IC カードリーダと USB タイプのチューナーをマシンに接続する。

$ lsusb | grep VidzMedia
Bus 002 Device 003: ID 3275:0080 VidzMedia Pte Ltd
$ ls /dev/dvb
adapter0

細かい数字は環境によって変わると思うが、だいたいこんな感じの出力があれば問題ないはず。

チューナーに PX-S1UD V2.0 を選んだ。 Windowsインストーラ経由でなんとかするしかないが、無印版のものをそのまま使えるので、

wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip
unzip PX-S1UD_driver_Ver.1.0.1.zip
sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware

上で設置した inp ファイルは 64 bit OS の場合なので、 32 bit OS だとパスが変わる。
無印版のものがそのまま使えているが、V2.0 のもので検証してみるのもありかもしれない。
設置が完了したら、チューナーを挿し直す(reboot が確実か?)。

IC カードリーダの確認は

$ pcsc_scan

を実行し、

Japanese Chijou Digital B-CAS Card (pay TV)

が途中で出ていればよい。 pcscd が動いていない場合は、

$ sudo systemctl start pcscd

でスタートさせる。

arib25 のビルドとインストール

デコードするのに必要なライブラリである arib25 をビルドしてインストールする。

$ cd <適当な作業ディレクトリ>
$ curl -sL https://github.com/stz2012/libarib25/archive/09770e3.tar.gz | sudo tar zxv
$ cd libarib25-09770e334837f6c67268c41c1c15784373d35e5b
$ sudo chown -R $(whoami) .
$ make
$ sudo make install

recdvb のビルドとインストール

チューナーの操作を行うソフトウェアである recdvb をビルドしてインストールする。

$ cd <適当な作業ディレクトリ>
$ curl -sL http://www13.plala.or.jp/sat/recdvb/recdvb-1.3.1.tgz | sudo tar zxv
$ cd recdvb-1.3.1
$ sudo chown -R $(whoami) .
$ ./autogen.sh
$ ./configure --enable-b25
$ make
$ sudo make install

ここまでで録画自体は可能となっているのでテストする。

$ recdvb --b25 --strip --sid hd <チャンネル> <秒数> <ファイル名>

※ チャンネルはマスプロなどの表を参考に。

ログがいろいろ出るが、エラー(failed などそれっぽいもの)が無く、生成された m2ts が VLC などで再生できれば成功している。

cannot open frontend device

というものが出た場合は、

$ sudo adduser <実行ユーザ> video

何度かセットアップした限りでは、adduser は必須と言っても良いかもしれない。

録画を楽にするものをセットアップ

コマンドラインでチャンネルを指定して、録画したいタイミングで実行するのは現実的でない。そのため、UI で録画予約するための必要なものをインストールしていく。
今回は Chinachu を採用することとした(参考にしたやつがそうだったのと、TL で使っている人がいたので安定してるのかなーという判断)。

下準備

これからインストールする 3 つのソフトウェアはすべて Node.js で動作するので、先にその環境を構築する。
Mirakurun は Node.js 6.x が必要で、Ubuntu でそのままインストールできない(2017/01/30 時点)ので、

$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
$ sudo apt-get install -y nodejs

また、プロセスマネージャが必要なので、pm2 をインストールする。

$ sudo npm install pm2 -g

Mirakurun のインストールと設定

雑な説明をすると、録画をするための RESTful API でいろいろといい感じにやってくれるようだ。LAN 内でチューナーを共有するということも可能である。

$ sudo npm install mirakurun -g --unsafe --production

設定を変更するのは下記コマンドを実行する(実装を調べてないがラッパになってるっぽい)。

$ sudo mirakurun config tuners

下記を追記する。
type や command さえあっていれば name は適当で良さそう。

- name: PX-S1UD-1
  types:
    - GR
  command: recdvb --b25 --strip <channel> - -

チャンネルの設定は、

$ sudo mirakurun config channels

で行う。チャンネル表を見ながらもともとある設定を参考にすればよい。スカイツリーの地域であればそのまま、23 区の西の方であれば MX をいじれば大丈夫そう(他は知らん)。

必要な設定を一通りやったあとは反映させるためにリスタートする。

$ sudo mirakurun restart

Rivarun

Mirakurun クライアントで、同じサーバにインストールしなくてもいいが、検証用に入れておく。

$ sudo npm install rivarun -g

Mirakurun が正しく設定できたかを Rivarun 経由で確認する。

$ rivarun --ch <放送種別>/<チャンネル> <秒数> <ファイル名>

status コードが 200 で返ってきていれば問題なく動いている。

Chinachu

γ 版(2017/01/31 時点)を入れる。

$ git clone -b gamma git://github.com/kanreisa/Chinachu.git ~/chinachu
$ cd ~/chinachu
$ ./chinachu installer

インストーラを実行したら、 1) Auto (full) を選択する。
次に、録画予約用の設定ファイルを設置する。

$ echo "[]" > rules.json

Chinachu の設定ファイルを作成する。サンプルが同じディレクトリにあるので、これをベースにする。

$ cp config.sample.json config.json
$ vim config.json

基本的にデフォルトのままで良いが、wuiPort は何かを入れておかないとうまくいかなかった(要検証)。
録画データは外付け HDD に設置したいので、recordedDir も変更した。
外付け HDD のマウントに関しては前に書いた記事を参考にする。

動作確認のために下記 2 つコマンドを実行する。1 つ目のコマンドは、出力が止まったら Ctrl-C で抜ける。

$ ./chinachu service operator execute
$ ./chinachu update

/etc/init.d から起動できるようにし、コマンドを叩いてそのままログインしっぱなしで放置、ということをしなくていいようにする。

$ ./chinachu service operator initscript > /tmp/chinachu-operator
$ ./chinachu service wui initscript > /tmp/chinachu-wui
$ cd /tmp
$ sudo chown root:root chinachu-*
$ sudo chmod 755 chinachu-*
$ sudo mv chinachu-* /etc/init.d/
$ sudo update-rc.d chinachu-operator defaults
$ sudo update-rc.d chinachu-wui defaults
$ sudo service chinachu-operator start
$ sudo service chinachu-wui start

最後に、ブラウザからアクセスして番組表の確認や録画予約をしておわり。
このWeb UI はリアルタイム視聴や録画データの再生なども可能である。

参考

Swap 領域を追加

Raspberry Pi に Swap 領域がなかったので追加したときの雑なメモ。 (メモリが足りなくていろいろちゃんと動いてないんじゃね?ってなったときの検証の名残)

前は専用のパーティションを作って〜っていうのをやった気がするが、今回は多分別の方法でやった。

Swap 領域の作成

適当な場所に適当なサイズで作成する。

$ mkdir /var/swap
$ dd if=/dev/zero of=/var/swap/swap0 bs=1M count=2048
$ chmod 600 /var/swap/swap0

$ mkswap /var/swap/swap0
$ swapon /var/swap/swap0

例のごとく起動時に使えるように

/etc/fstab に下記を追記する。

/var/swap/swap0 swap swap defaults 0 0

Swap 領域の確認

$ cat /proc/swaps
Filename                Type        Size    Used    Priority
/var/swap/swap0                         file        2097148 32968   -1

Raspberry Pi に外付け HDD を追加

とりあえずのマウント

今回改めて調べて知ったのだが、

$ sudo parted -l

で接続したストレージが確認できる。
結果はこんな感じになった。

$ sudo parted -l
Model: WD My Passport 25E1 (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name         Flags
 1      1049kB  1000GB  1000GB  ntfs         My Passport  msftdata


Model: SD USDU1 (sd/mmc)
Disk /dev/mmcblk0: 64.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      4194kB  138MB   134MB   primary  fat16        boot, lba
 2      138MB   64.5GB  64.4GB  primary  ext4

接続した外付け HDD を特定できたので、マウントする。

$ sudo mount -t ntfs /dev/sda1 <マウントしたいところ>

起動時に自動でマウントするように

/etc/fstab に設定を追記する。 diff 的にはこんな感じで、

$ diff before.txt after.txt
2a3
> UUID="FE6EB6976EB64863" /mnt/data   ntfs    defaults    0   0
LABEL=cloudimg-rootfs    /       ext4    defaults    0   0
LABEL=system-boot       /boot/firmware  vfat    defaults    0       1
UUID="FE6EB6976EB64863" /mnt/data   ntfs    defaults    0   0

という感じになる。

UUID は

$ blkid

で接続した HDD の UUID を取得する。 fstab に追記する時にあったほうがいいという感じの記事がいくつかあったので、今回は使ってみることにする。