Author Archives: osakanataro - Page 36

3枚SIM対応スマホ Bluboo Xfire 2


3枚のSIMが搭載可能なAndroidスマホの新製品が出るようです。

Global first 5.0 inch Triple-SIM phone – Bluboo Xfire 2 revealed ,it’s time to change the world!

中国のBluboo社から低スペックスマホ「Xfire 2」が2016年1月リリース予定です。

3Gのみ対応のMediaTek MT6580(Cortex-A7 4コア)採用スマホです。
MediaTekのCortex-A7 4コアSoCはMT6589→MT6582→MT6580と進化しているので、最新ではあります。

SIMはnanoSIM 2枚、通常SIM 1枚
SIMスロットは、「nanoSIM 1枚」と「nano SIM 1枚+通常SIM 1枚+microSD」の2スロット構成

5

CPU: MediaTek MT6580(Cortex-A7 4コア)
RAM: 1GB
GPU:Mali-400MP
ディスプレイ: 5.0インチ 1280×720
カメラ: 前面500万画素、背面800万画素
バッテリー: 2150mAh
価格: $69.99

背面に指紋認証(Touch ID)が付いてるようです。

3SIMの使える周波数帯や、同時に3Gを複数回線利用できるのか、については、現時点では情報がありません。
まぁ・・・3Gが複数回線使える可能性は薄いですけどね・・・

CentOS5などの古い環境でLet’s Encryptを使う(2017/02/21更新)


フリーで90日有効のSSL証明書を取得できる「Let’s Encrypt

90日毎に更新する必要があるため、プログラムを実行して証明書の取得ができるようになっている。
公式のプログラム(クライアント)は「https://github.com/certbot/certbot」にあるが、CentOS6以降やUbuntu向けに作られており、古いPythonの環境であるCentOS5では動作させるのが大変である。

公式以外のクライアントを探すと、「List of Client Implementations」に互換クライアント一覧がある。

いろいろある中で、2016年1月時点では唯一のbash環境用のスクリプトだった「Shell script client: dehydrated (旧名letsencrypt.sh)」を選択。(なお、2017年2月現在では他にも3つ出ている。)

dehydratedは、「opensslコマンド」「curlコマンド」「sedコマンド」「grepコマンド」があれば動作する。

1. 「git clone https://github.com/lukas2511/dehydrated.git」でプログラム取得
2. SSL証明書発行時に使用する一時ディレクトリの設定
 SSL証明書発行時、Let’s Encryptサーバから「http://ドメイン名/.well-known/acme-challenge/~」という
 アクセスが行われる。その際のファイルを置く場所を用意する。
 ここでは/var/www/dehydratedディレクトリに置くことにする。
 (1) /var/www/dehydratedディレクトリ作成
 (2) Aapacheの設定で「/etc/httpd/conf.d/dehydrated.conf」を作成

Alias /.well-known/acme-challenge /var/www/dehydrated
<Directory /var/www/dehydrated/>
</Directory>

 (3) Aapacheの再起動

3. configを作成
 docs/examples/config を元にconfigを作成する。
 基本的には初期状態のままで良いが
 2で/var/www/dehydrated以外を指定した場合に下記の記述を変更する
 

WELLKNOWN="/var/www/dehydrated/"

4. domains.txtを作成
 SSL証明書を発行したいドメインをスペース区切りで列挙する。
 

blog.osakana.net blog2.osakana.net

5. dehydratedを実行して、まずはアカウント登録

# ./dehydrated --config /~/dehydrated/config --register --accept-terms
# INFO: Using main config file ./config
+ Generating account key...
+ Registering account key with ACME server...
+ Done!
#

下記の様にaccountsディレクトリが作成される

# ls -F
CHANGELOG  README.md  config       docs/        test.sh*
LICENSE    accounts/  dehydrated*  domains.txt
# ls -F accounts/
~~~/
#

6. もう一度、dehydratedを実行してSSL証明書を発行

# ./dehydrated --config ./config --cron
# INFO: Using main config file ./config
Processing ~ ~ ~
 + Signing domains...
 + Creating new directory ./certs/niselog.dyndns.ws ...
 + Generating private key...
 + Generating signing request...
 + Requesting challenge for ~...
 + Requesting challenge for ~...
<略>
 + Responding to challenge for ~...
 + Challenge is valid!
 + Responding to challenge for ~...
 + Challenge is valid!
 + Requesting certificate...
 + Checking certificate...
 + Done!
 + Creating fullchain.pem...
 + Done!
#

下記の様にcertsディレクトリ以下にファイルが作成される。

# ls -F
CHANGELOG  README.md  certs/  dehydrated*  domains.txt
LICENSE    accounts/  config  docs/        test.sh*
# ls -F certs/
~/
# ls -F certs/~/
cert-xxxxxxxxxx.csr  chain-xxxxxxxxxx.pem      privkey-xxxxxxxxxx.pem
cert-xxxxxxxxxx.pem  chain.pem@                privkey.pem@
cert.csr@            fullchain-xxxxxxxxxx.pem
cert.pem@            fullchain.pem@
[root@niselog dehydrated]#

7. Apache設定内のSSLファイルの指定では、作成されたファイルのうち、fullchain.pemとprivkey.pem,chain.pemを指定する。

SSLCertificateFile /~/certs/~/fullchain.pem
SSLCertificateKeyFile /~/certs/~/privkey.pem
SSLCertificateChainFile /~/certs/~/chain.pem

なお、最近は問題無いが、バージョンアップしていない古いブラウザでは、「SSLCertificateChainFile /~/certs/~/chain.pem」を抜いた2行で設定するとエラーが発生する場合があるので注意が必要。

8. httpsアクセスをして問題無いことを確認

9. crontabに、dehydratedを定期的に実行する設定を追加

毎月1日と15日に実行する処理

# crontab -l
0 3 1,15 * * /~/dehydrated/dehydrated --config /~/dehydrated/config --cron >> /tmp/ssl-update.log 2>&1
#

以下は旧バージョン


フリーで90日有効のSSL証明書を取得できる「Let’s Encrypt

90日毎に更新する必要があるため、プログラムを実行して証明書の取得ができるようになっている。
公式のプログラム(クライアント)は「https://github.com/letsencrypt/letsencrypt」にあるが、CentOS6以降やUbuntu向けに作られており、古いPythonの環境であるCentOS5では動作させるのが大変である。

公式以外のクライアントを探すと、「List of Client Implementations」に互換クライアント一覧がある。

いろいろある中で、一番制約が薄そうな「Shell script (and a little Perl) client: https://github.com/lukas2511/letsencrypt.sh」を選択。
「opensslコマンド」「curlコマンド」「sedコマンド」があれば動作する。
perlはこの一覧が作られた当初は必要だったようだが、2016/01/04時点では不要。公式のletsencryptコマンドから移行する場合に使用するimport-account.plコマンドを使う時だけ必要なようだ。

1. 「git clone https://github.com/lukas2511/letsencrypt.sh」でプログラム取得
2. SSL証明書発行時に使用する一時ディレクトリの設定
 SSL証明書発行時、Let’s Encryptサーバから「http://ドメイン名/.well-known/acme-challenge/~」という
 アクセスが行われる。その際のファイルを置く場所を用意する。
 ここでは/var/www/letsenryptディレクトリに置くことにする。
 (1) /var/www/letsencryptディレクトリ作成
 (2) Aapacheの設定で「/etc/httpd/conf.d/letsencrypt.conf」を作成

Alias /.well-known/acme-challenge /var/www/letsencrypt
<Directory /var/www/letsencrypt/>
</Directory>

 (3) Aapacheの再起動

3. config.shを作成
 config.sh.exampleを元にconfig.shを作成
 といっても、下記の行を書くだけ
 

WELLKNOWN="/var/www/letsencrypt/"

4. domain.txtを作成
 SSL証明書を発行したいドメインをスペース区切りで列挙する。
 

blog.osakana.net blog2.osakana.net

5. letsencrypt.shを実行

# ./letsencrypt.sh --config /~/letsencrypt.sh/config.sh --cron
Using config file /~/letsencrypt.sh/config.sh
Processing blog.osakana.net with SAN: blog2.osakana.net 
 + Signing domains...
 + make directory /~/letsencrypt.sh/certs/blog.osakana.net ...
 + Generating private key...
 + Generating signing request...
 + Requesting challenge for blog.osakana.net...
 + Responding to challenge for blog.osakana.net...
 + Challenge is valid!
 + Requesting challenge for blog2.osakana.net...
 + Responding to challenge for blog2.osakana.net...
 + Challenge is valid!
 + Requesting certificate...
 + Checking certificate...
 + Creating fullchain.pem...
 + Done!
#

下記の様にcertsディレクトリ以下にファイルが作成される。

# ls -F
certs/             domains.txt          import-certs.sh*  private_key.pem
config.sh          domains.txt.example  letsencrypt.sh*   README.md
config.sh.example  import-account.pl*   LICENSE           test.sh*
# ls -F certs/
blog.osakana.net/
# ls -F certs/blog.osakana.net/
cert-xxxxxxxxxx.csr  chain-xxxxxxxxxx.pem      privkey-xxxxxxxxxx.pem
cert-xxxxxxxxxx.pem  chain.pem@                privkey.pem@
cert.csr@            fullchain-xxxxxxxxxx.pem
cert.pem@            fullchain.pem@
#

Apache設定内のSSLファイルの指定では、作成されたファイルのうち、fullchain.pemとprivkey.pem,chain.pemを指定する。

SSLCertificateFile /~/certs/~/fullchain.pem
SSLCertificateKeyFile /~/certs/~/privkey.pem
SSLCertificateChainFile /~/certs/~/chain.pem

ちなみに、「SSLCertificateChainFile /~/certs/~/chain.pem」を抜いた2行で設定するとChromeやIEでは問題無いが、Firefoxでのみ「sec_error_unknown_issuer」のエラーがでる。
(なお、fullchain.pemとprivkey.pemを指定しているのは、標準のletsencryptを使った場合に生成されるapache用cocnfigファイルで使われていたから)


おまけ:CentOS4で使用する場合に必要になること

・curlの証明書問題
 → /usr/share/ssl/certs/ca-bundle.crt を更新する
  → OpenSSLが古いためにエラーが発生
   「curl: (35) error:0D0890A1:asn1 encoding routines:ASN1_verify:unknown message digest algorithm」
・OpenSSLが古い
 → /usr/local/openssl1とかに新しいバージョンをインストールして回避
  letsencrypt.shの冒頭に、PATHとLD_LIBRARY_PATHを定義して、こちらを優先するように設定
 → こっちのOpenSSLを使うcurlをコンパイル
・trコマンドが古い
 letsencrypt.shを実行すると「tr: オプションが違います — _」というエラー
 → 新しいバージョンのtrが含まれるcoreutilsを/usr/localにインストール
・bashコマンドが古い
 環境変数操作で「SAN+=~」ということをやってるがCentOS4のBASHでは非対応
 letsencrypt.shを修正して、CentOS4でも使える操作に変更
 「SAN+=”DNS:${altname}, “」→「SAN=”${SAN}DNS:${altname}, “」

・下記のエラーでうまく行かない

# ./letsencrypt.sh --cron --config /~/letsencrypt.sh/config.sh
Using config file /~/letsencrypt.sh/config.sh
Processing xxxxxx with SAN: xxxxx 
 + Signing domains...
 + Generating private key...
 + Generating signing request...
 + Requesting challenge for xxxxxx...
  + ERROR: An error occurred while sending post-request to https://acme-v01.api.letsencrypt.org/acme/new-authz (Status 403)

Details:
{"type":"urn:acme:error:unauthorized","detail":"No registration exists matching provided key","status":403}  + Error: Can't retrieve challenges ()
#

 → 失敗した時のcertが悪さをしていた
  certsディレクトリの中身とprivate_key.pemを削除して再実行したところ成功

Orange Pi ONEの詳細が出た!


$10以下のOrange pi Oneが近日登場!?(未確定情報」でお伝えしたものの詳細情報が出てきました。
2016/01/26 まだ販売は開始されていないもの製品ページが公開されたので、スペック表を更新しました。

Orange Piの公式フォーラムの「Cheaper than OPI-PC: 9 bucks OPI-ONE is coming! 」にてサンプル写真と共に公開されました。

基本的には、Orange Pi PCから、さらにUSBポートとメモリを削減したような感じです。
赤外線受信機能も削除してしまったようです。

削り方には2つのバージョンがあります。(冒頭ではVersion A/Bとありますが、下の方にあるzhao_stevenさんのコメントでLiteとOneだと書かれています)
Orange Pi Lite:RAM 512MB、USB*2ポート、WiFi有り (Orange Pi ONE Version A)
Orange Pi ONE:RAM 512MB、USB*1ポート、LANコネクタ、WiFi無し (Orange Pi ONE Version B)

Liteが$12、ONEが$9.99、とのこと。
で、ONEの方は2016年1月25日発送開始予定。

orangepipc_info

OPi-PLUS OPi-PLUS2 OPi2 OPi mini2 OPi-PC OPi Lite OPi ONE
CPU Allwinner H3(Cortex-A7 4コア 1.6GHz)
RAM 1GB 2GB 1GB 512MB
内蔵ストレージ eMMC 8GB なし
microSDスロット あり
SATAコネクタ あり なし
LAN 10/100/1000 10/100 なし 10/100
無線LAN あり(RTL8189ETV) なし あり なし
USB 4+OTG 3+OTG 2+OTG 1+OTG
カメラ コネクタ あり
ラズパイ互換 40ピン あり
HDMI あり
RCAビデオ出力 オーディオ出力兼用 なし
ボタン Power,Recovery,Uboot PWR
赤外線受信 あり なし
マイク あり なし
大きさ(mm) 108×60 108×67 93×60 85×55 ? 69×48
重さ(g) 50g 83g 46g 45g 38g ?
価格 (送料込)
2016/01/20
$42.41 $52.00 $31.96 $26.96 $18.15 $12 +送料 $9.99 +送料

apt-get実行中にディスクがフルになったせいでapt-getができなくなった


apt-get upgrade中にディスクフルになってしまったために、
それ以後、apt-get upgradeが失敗するようになってしまった。

root@orangepiplus:~# apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
5 not fully installed or removed.
Need to get 0 B/91.1 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n]; y
dpkg: error processing package gvfs-libs:armhf (--configure):
 package is in a very bad inconsistent state; you should
 reinstall it before attempting configuration
dpkg: dependency problems prevent configuration of gvfs-daemons:
 gvfs-daemons depends on gvfs-libs (= 1.24.2-0ubuntu0.1); however:
  Package gvfs-libs:armhf is not configured yet.

dpkg: error processing package gvfs-daemons (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of gvfs:armhf:
 gvfs:armhf depends on gvfs-daemons (&gt;= 1.24.2-0ubuntu0.1); however:
  Package gvfs-daemons is not configured yet.
 gvfs:armhf depends on gvfs-daemons (&lt;&lt; 1.24.2-0ubuntu0.1.1~); however:
  Package gvfs-daemons is not configured yet.
 gvfs:armhf depends on gvfs-libs (= 1.24.2-0ubuntu0.1); however:
  Package gvfs-libs:armhf is not configured yet.

dpkg: error processing package gvfs:armhf (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of gvfs-backends:
 gvfs-backends depends on gvfs (= 1.24.2-0ubuntu0.1); however:
  Package gvfs:armhf is not configured yet.
 gvfs-backends depends on gvfs-daemons (= 1.24.2-0ubuntu0.1); however:
  Package gvfs-daemons is not configured yet.
 gvfs-backends depends on gvfs-libs (= 1.24.2-0ubuntu0.1); however:
  Package gvfs-libs:armhf is not configured yet.

dpkg: error processing package gvfs-backends (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of gvfs-fuse:
 gvfs-fuse depends on gvfs (= 1.24.2-0ubuntu0.1); however:
  Package gvfs:armhf is not configured yet.

dpkg: error processing package gvfs-fuse (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 gvfs-libs:armhf
 gvfs-daemons
 gvfs:armhf
 gvfs-backends
 gvfs-fuse
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@orangepiplus:~# 

解決方法
「apt-get –reinstall install 問題となってるパッケージ名」を実行する。

今回の場合、エラーとなったパッケージを全部指定すればいいのかな、と「apt-get –reinstall install gvfs-libs:armhf gvfs-backends gvfs-daemons gvfs:armhf gvfs-fuse」を実行してみたもののエラー

root@orangepiplus:~# apt-get --reinstall install gvfs-libs:armhf gvfs-backends gvfs-daemons gvfs:armhf gvfs-fuse
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 5 reinstalled, 0 to remove and 0 not upgraded.
5 not fully installed or removed.
Need to get 0 B/91.1 kB of archives.
After this operation, 0 B of additional disk space will be used.
E: Internal Error, No file name for gvfs-daemons:armhf
root@orangepiplus:~#

では、と「apt-get –reinstall install gvfs-libs:armhf」と実行してみると、今度は成功。

root@orangepiplus:~# apt-get --reinstall install gvfs-libs:armhf
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
5 not fully installed or removed.
Need to get 0 B/91.1 kB of archives.
After this operation, 0 B of additional disk space will be used.
(Reading database ... 111013 files and directories currently installed.)
Preparing to unpack .../gvfs-libs_1.24.2-0ubuntu0.1_armhf.deb ...
Unpacking gvfs-libs:armhf (1.24.2-0ubuntu0.1) over (1.24.2-0ubuntu0.1) ...
Setting up gvfs-libs:armhf (1.24.2-0ubuntu0.1) ...
Setting up gvfs-daemons (1.24.2-0ubuntu0.1) ...
Setting up gvfs:armhf (1.24.2-0ubuntu0.1) ...
Setting up gvfs-backends (1.24.2-0ubuntu0.1) ...
Setting up gvfs-fuse (1.24.2-0ubuntu0.1) ...
root@orangepiplus:~#

で、これ以降は、エラー無く、「apt-get upgrade」が実行できるようになりました。

Orange Pi PCをメディアプレイヤー(OpenELEC)にする


これまで、Allwinner H3搭載のOrange Pi系列(Orange Pi PC, Orange Pi 2, Orange Pi Plusなど)のLinux Distributionでは、メディアプレイヤーソフトのKodi(旧名:XBMC)を動かすことができませんでした。

理由は、Allwinner H3のVideoデコーダ機能をLinux環境から使用するためのドライバが、ちゃんと用意されていないためです。
(Android用は存在している)

Orange Piのフォーラムで、このハードウェアVideoデコード機能を使用するドライバをどう用意するか、いろいろと試行錯誤されてきていました。

で・・・先日、Kodiを起動するためのLinux DIstribuionの1つ、OpenELECを、Orange Pi PCで使える様にしたものが公開されました。

Orange Piフォーラム「Openelec Build for OPI PC and 2 now with HW decoding
Github:「https://github.com/jernejsk/OpenELEC-OPi2

フォーラムにあるNew Imageのリンクを飛ぶと、「OPi2(Orange Pi 2/Orange Pi Mini 2用)」「OPiPC(Orange Pi PC用」「OPiPlus(Orange Pi Plus/Plus2用)」「HYH-TBH3(Allwinner H3搭載のSTB用)」の各ディレクトリがあるので、その中にあるimg.gzファイルをダウンロードします。

ダウンロード後は、gzipを展開したあとに、普通にmicroSDにイメージ書き込みをします。

で・・・Orange Pi PCに入れて使ってみました。

・ヒートシンクは必須。ファン付けるの推奨
 フォーラムに「heatsink strongly recomended」と書かれていますが
 ヒートシンクを付けていてもめちゃくちゃ発熱しています。
 ちゃんと冷やさないと熱で死にそうです。

・起動直後の設定だと、音声出力がアナログオーディオとなっているため
 HDMI接続していても音声が出てこない。
 Kodiの「設定」-「システム」-「オーディオハードウェア」にて
 「オーディオ出力デバイス」を「HDMI」に変更すると、HDMI経由で音声出力される。

・動画再生の一部が変?
 DVDサイズの動画を出力したところ、本来の画質から落ちた状態のものを引き延ばした感じで表示された
 「no HW deinterlacing」というあたりの問題かな?

・HDMI経由のリモコン操作非対応
 HDMI経由で繋いだ場合、TVのリモコンを使って操作する、というHDMI CECの機能を使うことが、本来はできるが
 hdmi cecドライバが動作していないようで、マウスで操作するしかない。
 もしくは、赤外線リモコンを登録して使う。

いまのところは、Raspberry Pi2に入れているものを置き換えるには、ちょっと荷が重い感じなので、様子見です。