今時で高速なWordPressを楽に構築する(CentOS7 + HTTP/2 + Let’s Encrypt + HSTS + PHP7)

速度的に欲を言えばNginxの方が良さそう?なのですが
利便性(やっぱりhtaccessは使いたい)を考えてApacheにしています。

下手にソースコードをビルドするとその後に脆弱性が見つかったなどでアップデートするのが面倒になったりするのですが、既にそんなことせずとも何とかなりそうだったのでメモしておきます。

リポジトリ(epel + IUS)を追加

$ sudo yum -y install epel-release
$ sudo rpm -ivh https://centos7.iuscommunity.org/ius-release.rpm 

Apache2.4(HTTP/2対応)のインストール

$ sudo yum -y install httpd24u httpd24u-devel httpd24u-mod_ssl

設定方法は Webサーバー構築(Apache) (CentOSで自宅サーバー構築様) を参照

マルチプロセッシングモジュール (MPM)の確認

ApacheでHTTP/2を実現するためにはMPMがEVENTになっている必要がある。
以下の設定ファイルを開きMPMがEVENTになっているのを確認する。

$ sudo vi /etc/httpd/conf.modules.d/00-mpm.conf
# Select the MPM module which should be used by uncommenting exactly
# one of the following LoadModule lines:

# prefork MPM: Implements a non-threaded, pre-forking web server
# See: http://httpd.apache.org/docs/2.4/mod/prefork.html
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

# worker MPM: Multi-Processing Module implementing a hybrid
# multi-threaded multi-process web server
# See: http://httpd.apache.org/docs/2.4/mod/worker.html
#
#LoadModule mpm_worker_module modules/mod_mpm_worker.so

# event MPM: A variant of the worker MPM with the goal of consuming
# threads only for connections with active processing
# See: http://httpd.apache.org/docs/2.4/mod/event.html
#
LoadModule mpm_event_module modules/mod_mpm_event.so

HTTP/2用の設定ファイルを作成

設定ファイルを新規追加する。

パラメータ

  • h2(TLS接続)
  • h2c(非暗号接続)
  • H2Direct(HTTP/2でのダイレクト接続の許容の可否)
$ sudo vi /etc/httpd/conf.d/http2.conf
<IfModule http2_module>
    Protocols h2 h2c http/1.1
    H2Direct on
</IfModule>

MariaDBのインストール

$ sudo yum -y install mariadb-server

設定方法は データベースサーバー構築(MariaDB) (CentOSで自宅サーバー構築様) を参照

PHP7.1のインストール(PHP-FPM)

$ sudo yum -y install php71u-mysqlnd php71u-fpm-httpd \
  php71u-cli php71u-mcrypt php71u-gd php71u-xml \
  php71u-mbstring php71u-json php71u-devel php71u-pdo \
  php71u-process

PHP-FPMの設定

実行ユーザ、グループを適切なものに変更します。

実行ユーザをユーザ毎に変えたい(suPHPの様な事をしたい)場合は、その度に設定ファイルを追加してPHP-FPMを再起動してやる必要がありそうです(未確認)。

$ sudo vi /etc/php-fpm.d/www.conf
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = apache
group = apache
$ sudo systemctl start php-fpm.service
$ sudo systemctl enable php-fpm.service

Apache24への設定反映

基本はデフォルトで特に問題ないはずです。

$ sudo cat /etc/httpd/conf.d/php-fpm.conf
# This configuration requires httpd 2.4 with support for UDS (Unix domain
# sockets).  This was added upstream in version 2.4.10, and was also backported
# to 2.4.6 in EL7.

# The following lines prevent .user.ini files from being viewed by Web clients.
<Files ".user.ini">
    Require all denied
</Files>

# Allow php to handle Multiviews.
AddType text/html .php

# Add index.php to the list of files that will be served as directory indexes.
DirectoryIndex index.php

# Enable http authorization headers.
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1

<FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
    #SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>

Let’s Encryptで証明証を発行するためのコマンドをインストール

$ sudo yum -y install certbot python-certbot-apache

証明書発行時に利用する公開ディレクトリの作成と設定

Let’s Encryptがドメイン保有者からの発行依頼であることを確認するためにアクセスしにくるファイルを設置する公開ディレクトリを、サーバ内で共通の場所を使用するようにする(バラバラでも良いが、何かと面倒なので共通化)。

$ sudo mkdir -p /var/www/letsencrypt/.well-known
$ sudo vi /etc/httpd/conf.d/letsencrypt.conf
Alias /.well-known /var/www/letsencrypt/.well-known

証明書の発行と自動更新

証明書を発行する
途中、色々聞かれるが特に難しい事は無い

$ sudo certbot certonly --webroot -w /var/www/letsencrypt/ -d example.net -d www.example.net

証明書を自動で更新するためにcronに以下のように設定を追加する

$ sudo vi /etc/cron.d/certbot
0 5 * * * root certbot renew --quiet

WordPressのインストール
インストール方法は ブログサイト構築(WordPress) (CentOSで自宅サーバー構築様) を参照

※ php-mysqlインストールとApacheの設定は不要

WordPressを公開するVirtual Hostの設定
HTTPで接続してきた場合はHTTPSになるようにリダイレクトします。

HSTSを指定しているので、ブラウザが覚えて常にHTTPSで接続するようになります。

$ sudo vi /etc/httpd/conf.d/virtualhost-01.www.conf
<VirtualHost *:80>
    ServerName example.net
    ServerAlias www.example.net

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    </IfModule>
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.net/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.net/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/example.net/chain.pem

    ServerName example.net
    ServerAlias www.example.net
    DocumentRoot "/var/www/html"

    Header set Strict-Transport-Security "max-age=31536000"
</VirtualHost>

Apache24を再起動します。

$ sudo systemctl restart httpd.service

参考サイト

CentOS7 MongoDB3.2 インストール

調べると、まとまったサイトを見つけ出すことが出来なかったのでメモを残しておきます。

リポジトリ追加
$ sudo vi /etc/yum.repos.d/mongodb-org-3.2.repo

[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc

インストール
$ sudo yum install -y mongodb-org

起動と自動起動の有効化
$ sudo systemctl start mongod
$ sudo systemctl enable mongod

管理者アカウントの作成
$ mongo

db.createUser(
  {
    user: "admin",
    pwd: "パスワードを指定してください",
    roles:
    [
      {
        role: "userAdminAnyDatabase",
        db: "admin"
      }
    ]
  }
)

mongoコマンドを実行すると警告が複数出るためそれの対策を行います
警告の内容についてはメモを残し忘れてしまいました・・・
$ sudo vi /etc/rc.local

# 以下追記
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
   echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
   echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

$ sudo chmod +x /etc/rc.d/rc.local

$ sudo vi /etc/security/limits.d/99-mongodb-nproc.conf

# ファイルを新規作成して以下を記述
*          soft    nproc     1024
root       soft    nproc     unlimited
mongod       soft    nproc     unlimited

*          soft    nofile    64000
*          hard    nofile    64000

認証の有効化 2.4系の設定が散乱しているようですが2.6系以降は以下の設定を行うようです。
$ sudo vi /etc/mongod.conf

security:
  authorization: "enabled"

未ログイン時
$ mongo

> db.system.users.find()
Error: error: {
        "ok" : 0,
        "errmsg" : "not authorized on test to execute command { find: \"system.users\", filter: {} }",
        "code" : 13
}

ログイン成功時
$ mongo admin -u admin -p

MongoDB shell version: 3.2.10
Enter password:
connecting to: admin
> db.system.users.find()
{ "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "****************", "storedKey" : "****************", "serverKey" : "****************" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }

RTX1200でNTP(SNTP)サーバを建てる

以下のコマンドでSNTPサーバを立てられるようです。

schedule at 1 */* *:00 * ntpdate ntp.nict.jp
sntpd service on
sntpd host lan

毎日0時にNICTのNTPサーバと同期して、LAN内のNTPクライアントからリクエストがあった場合は時刻を返します。

参考サイト
うつくしくいきたい:ヤマハルータ(RTX810)で時刻合わせ – livedoor Blog(ブログ)
38.1 スケジュールの設定
SNTPサーバー機能

RTX1200 L2TP IPsec Windows10から繋げない

RTX1200でL2TPなVPNを繋げるようにしているのですがiPhone, Android, MAC OSXからは繋げるのにWindows10からは繋げない事があったので対策方法をメモしておきます。
現象としてはWindows7では正常に繋げたがWindows10アップグレード後に繋げなくなった感じです。

以下、対応手順です。

  1. 左下Windowsボタンを右クリック
  2. ネットワーク接続(W)を押下
  3. 繋ぎたいネットワークアダプタを右クリック
  4. 以下の画像にある赤枠のチェックボックスにチェックを入れOKを押下

WS000008

これで通常通りタスクトレイ内にあるネットワークインターネットアクセスよりVPNを選択して接続します。
多分、繋げると思います・・・

参考サイト
Windows10のL2TP接続 ■セカイVPN■

SMTP-AUTH設定中にSASL認証をデバッグしてみた CentOS7

SMTP-AUTHに失敗する原因が分からず調べていると、SASL認証のテストを行うコマンド(testsaslauthd)が失敗する事に気づいたので、ちょっと色々とデバッグしてみました。
※ 原因は以下の内容とは無関係でした(一応、最後にちょこっと原因を書いてます)

※ 公開できない情報は以下の伏字にしております

+++ ユーザ名
*** パスワード
ドメイン

失敗時
# testsaslauthd -u +++ -p ***
# tail -f /var/log/audit/audit.log

type=USER_AUTH msg=audit(1469416320.791:907): pid=3559 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication grantors=? acct="+++" exe="/usr/sbin/saslauthd" hostname=? addr=? terminal=? res=failed'

成功時
# testsaslauthd -u +++ -p *** -s smtp
# tail -f /var/log/audit/audit.log

type=USER_AUTH msg=audit(1469416322.210:908): pid=3563 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication grantors=pam_unix acct="+++" exe="/usr/sbin/saslauthd" hostname=? addr=? terminal=? res=success'
type=USER_ACCT msg=audit(1469416322.210:909): pid=3563 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:accounting grantors=pam_unix,pam_localuser acct="+++" exe="/usr/sbin/saslauthd" hostname=? addr=? terminal=? res=success'

saslauthdをデバッグモードで起動してtestsaslauthdで失敗したコマンド、成功したコマンドをそれぞれ実行します
# saslauthd -d -a pam

saslauthd[3827] :do_auth         : auth failure: [user=+++] [service=imap] [realm=] [mech=pam] [reason=PAM auth error]

なぜか”/etc/pam.d/imap”を見ているらしいが、そんなものは無い・・・

とりあえず、smtpをimapにコピーします
# cp vi /etc/pam.d/smtp /etc/pam.d/imap
# saslauthd -d -a pam

saslauthd[3883] :do_auth         : auth success: [user=+++] [service=imap] [realm=] [mech=pam]

すると認証に通るようになりました
でも自分の環境ではtelnetして直接認証するとError: authentication failed: authentication failureが返ります

・・・以下、後日談・・・

SMTP-AUTHの認証をデバッグ

saslauthd[3611] :do_auth         : auth success: [user=+++] [service=smtp] [realm=...........] [mech=pam]

結論としてはSASL認証自体はしっかりimapではなくsmtpを使用しているので問題ではありませんでした

原因はテストに使用していたクライアントのhostsファイルに全然別のサーバのIPが定義されており
無関係なサーバにつないでいることが原因でした。。。

参考サイト
繰り返し的な処理を自動化する – いますぐ実践! Linuxシステム管理 / Vol.212

Raspberry Pi 3 Raspbian Jessie で Waveshare 3.5インチ タッチ液晶を動かす

Raspberry Pi3のついでにWaveshare 3.5インチ タッチパネル付き液晶を購入したのですが動作させるのに結構苦戦したので手順を残すためにメモしておきます。

このタッチパネル付き液晶モデル(3.2インチ版も含む)の使用方法を紹介しているサイトの多くは
メーカー?が提供しているISOを使ったりLCD-show.tar.gzを使っていたりしますがPi3では起動しなくなるようです・・・

Raspbian JessieのインストールはNOOBSを使いました。
インストール後はLANへの接続と日本語フォントの追加とSSHが有効であるかの確認を行っています。

SPIの有効化とBOOT時のGUIの無効化(CUI+自動ログイン)に変更します。

$ raspi-config

必要なパッケージ群をインストール。

$ sudo apt-get install xinput evtest libts-bin
$ sudo apt-get install fbi

タッチパネル付き液晶への出力設定

何も設定していない場合はfb0しか無いはずです。

$ ls -al /dev/fb*
crw-rw---- 1 root video 29, 0  4月  2 12:41 /dev/fb0

FBTFT関連のカーネルモジュールをロードさせます。
以前は自力で導入する必要があったようですが、現在は標準で含まれているようです。

$ sudo modprobe flexfb width=320 height=480 regwidth=16 init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3
$ sudo modprobe fbtft_device debug=3 rotate=90 name=flexfb speed=16000000 gpios=reset:25,dc:24

カーネルモジュールをロードするとデバイスファイルが増えるはずです。

$ ls -al /dev/fb*
crw-rw---- 1 root video 29, 0  4月  2 12:41 /dev/fb0
crw-rw---- 1 root video 29, 1  4月  2 12:41 /dev/fb1

後から追加されたfb1がタッチパネル付き液晶なので試しに画像を表示してみます。

$ wget https://kernel.org/theme/images/logos/tux.png
$ sudo fbi -d /dev/fb1 -T 1 -a tux.png

image3

起動時に自動でモジュールを読み込むように指定します。

$ sudo vi /etc/modules-load.d/waveshare.conf
spi-bcm2835
flexfb
fbtft_device

$ sudo vi /etc/modprobe.d/waveshare.conf
options flexfb width=320 height=480 regwidth=16 init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3
options fbtft_device debug=3 rotate=90 name=flexfb speed=16000000 gpios=reset:25,dc:24

起動時からフォントを指定してfb1に出力させるように行末へ以下を追記します。
何だろうと少し調べてみましたが、このfbcon=map:1の役割はcon2fbmapコマンドと同じようですね。

$ sudo vi /boot/cmdline.txt
fbcon=map:1 fbcon=font:ProFont6x11 # 行末に追記します

image1

デスクトップをfb1に出力させながら起動するとタッチパネル付き液晶に表示されるはずです。

$ sudo FRAMEBUFFER=/dev/fb1 startx

image2

デスクトップの出力先をfb1に変更すると再起動後もタッチパネル付き液晶に表示されるようになるのですが
この方法だと、画面が小さすぎて色々と辛いのとHDMIが表示されなくなるので変更しない方法を探しました。

$ sudo vi /usr/share/X11/xorg.conf.d/99-fbturbo.conf
# This is a minimal sample config file, which can be copied to
# /etc/X11/xorg.conf in order to make the Xorg server pick up
# and load xf86-video-fbturbo driver installed in the system.
#
# When troubleshooting, check /var/log/Xorg.0.log for the debugging
# output and error messages.
#
# Run "man fbturbo" to get additional information about the extra
# configuration options for tuning the driver.

Section "Device"
        Identifier      "Allwinner A10/A13 FBDEV"
        Driver          "fbturbo"
        Option          "fbdev" "/dev/fb0" # <- fb0からfb1に変更する方法もあるけど今回はそのまま

        Option          "SwapbuffersWait" "true"
EndSection

色々と調べてみたんですが
フレームバッファをコピーするfbcpコマンドをインストールすることにより
fb0(HDMI)をfb1(タッチパネル付き液晶)に映せる事が分かったので利用することにしました。

これにより、HDMIに接続して起動しても画面が真っ暗って事もなく
ウインドウ幅が小さすぎて操作が困難という問題を解消できます。

$ sudo apt-get install cmake
$ git clone https://github.com/tasanakorn/rpi-fbcp
$ cd rpi-fbcp/
$ mkdir build
$ cd build/
$ cmake ..
$ make
$ sudo install fbcp /usr/local/bin/fbcp

起動時に実行させる方法で少し悩んだのですが
とりあえず安直にrc.localへ追記しておきます・・・

$ sudo vi /etc/rc.local
su -l pi -c fbcp &

最初で設定したのと逆にraspi-configでデスクトップに自動でログインするように設定を直すと
起動が完了するとタッチパネル付き液晶にデスクトップが映るようなります。

image2(1)

タッチパネルの有効化

このままだとタッチパネルが使えないので設定します。

マウスとキーボードをRaspberry Piに接続している場合は以下のようになっているはずです。

$ ls -al /dev/input/event*
crw-rw---- 1 root input 13, 64  4月  2 14:13 /dev/input/event0
crw-rw---- 1 root input 13, 65  4月  2 14:13 /dev/input/event1

以前はads7846_deviceだったらしいですがads7846に変わったようなので以下のように追記します。

$ sudo vi /boot/config.txt
# 末尾に追加
dtoverlay=ads7846,cs=1,penirq=17,penirq_pull=2,speed=1000000,keep_vref_on=1,swapxy=1,pmax=255,xohms=60,xmin=200,xmax=3900,ymin=200,ymax=3900

キャリブレーションの設定を行うついでに、画面長押しで右クリックになるように追記しておきます。

$ sudo vi /usr/share/X11/xorg.conf.d/99-calibration.conf
Section "InputClass"
    Identifier "calibration"
    MatchProduct "ADS7846 Touchscreen"
    Option "Calibration" "3873 272 236 3868"
    Option "SwapAxes"    "1"
    # Enable press and hold for right-clicking
    Option "EmulateThirdButton" "1"
    Option "EmulateThirdButtonTimeout" "750"
    Option "EmulateThirdButtonMoveThreshold" "30"
EndSection

ちなみに、waveshare35a-overlay.dtbというデバイスツリーを設置する方法も紹介されていたりいますが
特に設置せずとも動いているようなので私の環境では設置しておりません。

再起動するとタッチパネルを認識してデバイスファイルが増えており、タッチ操作が可能になっていると思います。

$ ls -al /dev/input/event*
crw-rw---- 1 root input 13, 64  4月  2 14:13 /dev/input/event0
crw-rw---- 1 root input 13, 65  4月  2 14:13 /dev/input/event1
crw-rw---- 1 root input 13, 66  4月  2 14:13 /dev/input/event2

image1(2)

その他、スクリーンキーボードのインストール等ありますが、そこら辺は割愛します。。。。

以下、参考サイト
raspberry pi LCDシールド(3.5) [RPiLCD035TP] [3.5inch RPi LCD (A)] 導入 waveshare – Qiita
3.5inch RPi LCD (A) – Waveshare Wiki
Home · notro/fbtft Wiki · GitHub
Raspberry Pi2 3.5inchタッチスクリーンディスプレイの設定 | 猫から星まで
Waveshare3.2インチLCDのセットアップ
Raspberry Piの小さな液晶のPiTFTを仮想画面スクロールで広く使いたかったけど挫折 | matoken’s meme
Raspberry Pi 2にディスプレイをつないでみた! | TONGARISM.COM
千石の4inchタッチディスプレイをRaspberryPi 2 につなぐ – yuki-sato.com
I am getting "FATAL: Module ads7846_device not found." · Issue #260 · notro/fbtft · GitHub
Adafruit customer service forums • View topic – [SOLVED ! ] 3.5" PiTFT resistive Touchscreen – Right-click a

Fedora 23 SELinux が有効な状態で OpenVPN サーバに接続する

setenforceコマンドでPermissiveモードにして実際にOpenVPNに繋に行かせた時のログを元に
SELinux ポリシーの許可ルールを生成します

journalctl | grep openvpn | audit2allow -M openvpn_user_home

生成された.teファイルを開くと、どのようなルールが生成されたか確認できます

cat openvpn_user_home.te
module openvpn_user_home 1.0;

require {
	type openvpn_t;
	type user_home_t;
	class file open;
}

#============= openvpn_t ==============
allow openvpn_t user_home_t:file open;

生成されたルールに問題がなければ適用します

sudo semodule -i openvpn_user_home.pp

ESXi 6.0 u2 で vSphere Web Client と似た Web UIを無料で使う方法

先日、公開されたESXi6.0 update2にESXi Embedded Host Clientが含まれているようです。

ESXi Embedded Host Client – VMware Labsで公開されていた時は無償ライセンスだと
ISOのマウントどころかVMの電源管理すらライセンスエラーとのメッセージが出て使いない状態でした。

この機能が無償ライセンスでも利用できることがわかりましたのでアップグレード方法を載せておきます。
今回は、ESXi6.0 u1b から ESXi6.0 u2にアップデートしました。

VMWareのサイトからupdate-from-esxi6.0-6.0_update02.zipという名前のパッチをダウンロードします。
② ダウンロードしたパッチをESXi上のデータストアにアップロードします。
③ ESXi上にいるVMを全てシャットダウンします。
④ SSH、ESXiシェルを起動します。
⑤ メンテナンスモードにします。
⑥ SSHで接続して以下のコマンドを実行します。

# パッチまでのパスは必ず絶対パスである必要があります。
esxcli software profile update -d /vmfs/volumes/datastore1/update-from-esxi6.0-6.0_update02.zip -p ESXi-6.0.0-20160302001-standard

⑦ パッチの適用が終わったらメンテナンスモードを解除して再起動します。

https://ESXi6.0u2のホスト名/ui/ にアクセスすると以下のような画面が表示されます。
vSphere Client で使用するアカウントでログインします。
Screenshot from 2016-03-19 23-40-47

まだ、vSphere Clientで出来る事、全てができるわけではなさそうですが一通りの機能は利用できそうです。
Screenshot from 2016-03-20 00-08-21

ESP-WROOM-02を購入してみました

Raspberry Pi Zeroが結構話題になっておりますが使い道が思いつかず手が出せていなかったところ
Wi-Fiに接続でき、Arduino IDEで手軽に開発できて500円くらいで買える凄いモジュールを教えていただいたので購入してきました。

STEINS○GATEに出てくる”未来ガジェット研究所”の近くに行けばaitendoさんの店舗だったよな・・・
と記憶を辿って行ってみるとシャッターが閉まっており、調べたら移転されていたようでした。

新店舗なのですが、いっそう店内の商品が充実しており思わず財布の紐が緩みそうでした。

いくつかピッチ変換基板が発売されていますが今回はIFB1518J-Aを購入しました。
肝心のESP-WROOM-02なのですが、店舗販売価格だと特価で500円で売られておりました。
IFB1518J-Aが120円なので10kΩのチップ抵抗ふくめると、ひとセットあたり620円とチョットで買えました。
image

半田付けするために3Dプリンター用に買っていた耐熱マスキングテープで固定しました。
半田のノリを良くするために無水エタノールで接着面を磨いてフラックスも足に塗っておきます。
image

小手先に多めに半田を盛って十分加熱しながらゆっくりスライドさせて半田を乗せれば完成です。
image

裏面にENとRSTピン用のプルアップ抵抗を取り付けるためのパターンがあるのでチップ抵抗(10kΩ)を載せます。
もちろん無水エタノールで磨いてフラックスを塗っておきます。
image

片方を適当に半田で接着したあとに、小手先で加熱しながらピンセットでズラして正しい位置に合わせます。
正しい位置で固定できたら反対側も手早く半田を盛れば完成です。

ついでに、GPIO2は常にHigh、GPIO15は常にLowで良いようなのでショートさせておきます。
というのもESP-WROOM-02にはスケッチを書き込むモードと書き込んだスケッチを実行するモードがあり以下のような操作が必要なようです。

UART Download Mode(スケッチを書き込むモード)
GPIO0(Low) GPIO2(High) GPIO15(Low)

Flash Boot Mode(書き込んだスケッチを実行するモード)
GPIO0(High) GPIO2(High) GPIO15(Low)

※ よってGPIO0とRSTにはHigh/Lowを切り替えられるようにスイッチをつなぐ必要があるようです。

image

最後に、基板に付いたフラックスを無水エタノールで拭いておくと綺麗に仕上がります。

Venue 8 Pro LTE化 DOCOMO MVNO

ものすごく今更ですがDellのVenue 8 Proが安く手に入ったので早速モジュールを交換してLTEに対応させてみました

※ モジュール交換には分解を伴い保証の対象外になります
※ モジュール交換に伴いGPSが使用できなくなります
※ 実践する際はくれぐれも自己責任でお願い致します

調べてみるといくつか動作実績のあるモジュールがあるようです

HUAWEI製 ME906J
au系 MVNOで動作報告あり
docomo系 MVNOだと動作しないという報告あり

技適マークあり

Amazon(日本)で取り扱いあり

Dell製 DW5810E
EveryPad Pro(ヤマダ電機版 Venu )などで採用
docomo系 MVNOで動作報告あり

動作に難ありと報告もあるようですがファーム更新後は比較的安定している模様

日本の通販サイトで取り扱いは無く、海外のebayなどで入手する必要あり
モジュールの代金+送料などで1万円ほどを見込む必要あり

富士通製 ANT30MO
au系 MVNOだと動作しないという報告あり
docomo系 MVNOで動作報告あり

技適マークあり

旧ネットワークアクセステクノロジ社の製品

公式ドライバが32bit版しか提供されていない上に
GNSSのMHF4コネクタが独立しており衛星を補足できないようです

Amazon(日本)で3千円ほどで取り扱いされています

今回は安く入手した端末にGPSを使いたいがために高価なモノを選ぶのもアレなのでANT30MOを選択してみました
ちなみにVenue 8 Proは32bit版OSが乗っているので公式ドライバに関しては大丈夫かもしれません

分解・取り付け

本体とモジュールの他にギターピックを一枚用意しておくと良いです

人によっては男らしくマイナスドライバーなどで、こじ開ける方もおられるようですが
ギターピックは身近で手に入りやすく、丈夫な樹脂製で筐体に傷を付けにくいのでオススメです

SDカード、SIMカードは分解前に邪魔にならないように本体から取り除きます
当然ですが本体の電源は確実にOFFにします

どこからでも良いので縁にギターピックを滑りこませて
慎重にスライドすることでパキパキパキ…と本体からバックパネルを浮かせます

接着剤などは使われていないようで、わりとすんなり外せます
image

モジュールの配線を確認してプラグとモジュールを固定しているネジを外します
ネジで固定されていた箇所から少し持ち上げるようにしてモジュールを引き抜きます
image

新しいモジュールを差し込みネジ止めします
ケーブルの配線は位置が変わっているため注意が必要です
image

起動・動作確認

いつもの通りに起動させます
デバイスマネージャを開いてドライバが当たっていない箇所がないか確認します

APNを選択して接続することを確認します
LTEに対応したプランであればしばらく待つとLTEで接続されるはずです
スクリーンショット (1)

モジュールの製造元がアクセスネットワークテクノロジになっています
スクリーンショット (2)

GPSに関してはやはり衛星を補足できていないようです

自分はタブレットでマップを見るシチュエーションが思い浮かばないですが
筐体内にアンテナを追加できそうなスペースがあったので、そのうちアンテナを追加してみるかもしれません

参考サイト
ひまつぶしBlog 2nd Stage: Dell Venue 11 Pro 7140 LTEモデム ANT30MO へ交換で楽々800MHz捕捉
よくわかってないBlog その2 : Huawei ME906J を購入しました(venue 8 pro LTE化) 手持ちのSimカード検証
【Venue 8 Pro】 LTE化に挑戦(中): silent voice にゃ