RTX1200でNTP(SNTP)サーバを建てる
7月 26, 2016 — 23:56

以下のコマンドで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から繋げない
7月 26, 2016 — 23:37

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
7月 25, 2016 — 15:36

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インチ タッチ液晶を動かす
4月 3, 2016 — 23:20

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 サーバに接続する
3月 20, 2016 — 0:53

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を無料で使う方法
3月 20, 2016 — 0:22

先日、公開された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を購入してみました
2月 21, 2016 — 21:32

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
12月 23, 2015 — 19:49

ものすごく今更ですが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 にゃ

VNC自動起動 Raspberry Pi2 Raspbian8 systemd
10月 25, 2015 — 19:57

諸事情からRaspberry PiでVNCを使いたくなったのですが、VNCの自動起動に躓いたのでメモしておきます。

Raspberry Pi2に入れたRaspbian8なのですがDebian8がベースなのでinit.d方式でなくてsystemd方式で起動プロセスが走ります。

古いRaspberry Piの記事だとRaspbian7のinit.d形式で自動起動のスクリプトが書かれていたりします。。。
しかし本来、systemdでも/etc/init.d内の起動スクリプトも実行されるはずなのですが、うまく実行されませんでした。

取りあえず、”郷に入れば郷に従え”の教えに従い、systemd方式で設定ファイルを作成したら正常に起動しました。

$ sudo su –

# apt-get install tightvncserver

# vncserver :1
※ 初回起動時はパスワードを聞かれると思いますので設定してください

# vi /etc/systemd/system/vncserver@.service

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=pi
PAMName=login
PIDFile=/home/pi/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

# systemctl daemon-reload
# systemctl enable vncserver@1.service

これで自動起動するはずです。。。

参考サイト
Raspberry Pi • View topic – VNC server in Jessie (using a systemd service)

ESXi6.0 + CentOS7.0 に vmware-tools をインストールする
5月 12, 2015 — 21:36

気づいたらESXi6.0が出ていたので現在試しているのですが最小構成でインストールしたCentOS7.0にvmware-toolsをインストールしてみたのでメモしておきます。

必要なパッケージをインストールします
# yum -y install perl net-tools
※ net-tools は vmware-tools で ifconfig が必要なようなのでインストールします。

あとは基本的にCentOS6以前と同じ手順で、vmware-tools をインストールするだけです。
※ インストーラを起動すると open-vm-tools でなく vmare-tools を本当にインストールするか訪ねますが”yes”と答えればインストールできます。