【訃報】佐藤敏通君(8組)

岩手日報のお知らせを下記に再録します
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
父 佐藤敏通儀(61歳)病気療養中のところ、7月5日永眠いたしました
ここに生前のご厚誼を深謝し謹んでお知らせ申し上げます
          記
 一、葬儀 7月18日(土)午前11時
           盛岡市青山3丁目 曹洞宗青山寺
 なお火葬は近親者にて相済ませました
平成27年7月14日
     栃木県那須塩原市小結88の197
     喪主 佐藤 慧(さとう けい)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ご子息の慧さんは、お葬式に栃木県から直接おいでになるそうです。
盛岡市内の以前のお住まいや斎場に祭壇を置くことはないようです。
#=#=#=#=#=#=#=#=#=#=#=#=#=#=#
       松本 静毅
#=#=#=#=#=#=#=#=#=#=#=#=#=#=#

カテゴリー: つれづれ | コメントする

年次別掲示板を追加しました

次の年次を追加しました。
S39
S41
S47

New!のカウントをできるだけ表示するようにもしています。

カテゴリー: つれづれ | コメントする

柴又リベンジ、やりました!

天候も幸いして、今年リベンジできました。
90Kからは、「二度目に内腿の攣りが出たらリタイヤをお勧めします」と脅され、
リタイヤは本望に反するので、速足で10kを過ごしました。
前半で貯金を作っておいたのが幸いしたと思います。
記録
感謝

カテゴリー: つれづれ, マラソン | コメントする

今年も「柴又100K」走りますよ

今度の土曜日です。月間300K走りこんで備えたので、リベンジ万全です!
柴又100K ~東京⇔埼玉⇔茨城の道~
ゼッケンは、D2426 、出発は2000人中、真ん中あたりですね。
こんな応援走りも実行してみました。
ココ

カテゴリー: つれづれ, マラソン | コメントする

伝統の猛者踊り、生徒堂々 盛岡一高が運動会PR

本日本番ですね。応援歌練習も猛者踊りも、有志参加になったようですが・・・

岩手日報WEBnewsから

カテゴリー: つれづれ | コメントする

岩手日報NewsWEBが連休中にリニューアル

突然、右フレームに表示されなくなったので、急遽調査して対処!
あまり頻繁には変えないでください、お願いします。

<?php
/**
 * Template Name: Get IWATE nippo
 *
 * A custom page template .
 *
 * The "Template Name:" bit above allows this to be selectable
 * from a dropdown menu on the edit page screen.
 *
 * @package WordPress
 * @subpackage Twenty_Ten
 * @since Twenty Ten 1.0
 */

$data = $_GET['data'];
$site = "岩手日報";
	$base = "http://www.iwate-np.co.jp/";
	$time = "";
	$table = put_dict($base."cgi-bin/../",'<!--岩手のニュース見出し一覧-->','<!-- 被災地/スポーツ/経済 -->','-0');

	if (mb_substr($table,6,3)=="YPE") {
		echo ("<script type='text/javascript'>location.reload(true);</script>");
		exit (0);
	}
	echo ("<head><base href='".$base."'>\n");
?>
<style type="text/css">
<!--
a { text-decoration: none; }
a:hover { text-decoration: underline; }
.st1 { font-size:xx-small; }
.rightMenu{
        width:100%;
}
.rightMenu p.title{
        FONT-SIZE: 12px;
        font-weight: bold;
        color:#330000;
        margin:0;
        padding:3px 5px 3px 10px;
        border:solid 1px #cccccc;
        background-image : url(/s/title.gif);
        background-repeat:no-repeat;
        background-position:3px 5px;
        background-color:#EAEAEA;
        line-height:100%;
}
.news-title{
        font-size: 10px;
       line-height: 130%;
        margin-bottom:15px;
        padding:0px;
        border:solid 1px #CCCCCC;
        border-top:none;
        background-color:#FCFCCC;
}
.news-title:hover{
       FONT-SIZE: 16px;
}
.news-title div{
         padding:0 0 0 15px;
}
.news-title a{
        color:#3f72ff;
/*        color:#364979;
        color:#045271;*/
        margin-bottom: 5px;
	text-decoration:none;
}
.news-title a:visited{
	color:navy;
	text-decoration:none;
}
.news-title a:hover{
	text-decoration: underline;
}
--></style>
	</head>
	<body style="margin-left:-10px; position:relative;"><font color=#b22222><b>
<?php
    echo("&nbsp;&nbsp;".$site.' <a href="/" target="_NEW">'."WebNews</a></font>&nbsp;<font size=-1>&nbsp;&nbsp;".$time."\n<div style='line-height:5px'></div>".$table."</body></html>");

function put_dict($url,$from ,$to, $ton)
{
// print $url."<br>";
    $table = "";
    $pos = 8000;

    $response = wp_remote_get($url, array( 'timeout' => 8, 'user-agent' => "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36", 'sslverify' => false));
    if(is_wp_error($response)) {
    // wp_dieで、エラーメッセージを表示し、WordPressの処理を中断する
	    wp_die(esc_html($response->get_error_message()));
    }
    $html_header = 'text/html';
    if(!isset($response['headers']['content-type']) || substr($response['headers']['content-type'],0,9) != $html_header) {
	echo($response['headers']['content-type']);
	wp_die('ヘッダー情報がHTMLではありません。');
    }
    $body = mb_convert_encoding ($response['body'],"utf-8","auto");
	$pos = mb_strpos($body,$from,$pos);
	 if ($pos === false) { return($table.$body); }
	$pos2 = mb_strpos($body,$to,$pos+30);
	 if ($pos2 === false) print "<br>strpos2がfalseを返しました。<br>";
	if (substr($ton,0,1)=="+") {
		$pos2 += mb_strlen($to);
		if (strlen($ton)>1) $pos2 += substr($ton,1);
	}
	else $pos2 += $ton;
    $body = str_replace("<a href","<a target='_NEW' href",
		 mb_substr($body,$pos,$pos2-$pos));
//    $time = mb_substr($body,mb_strpos($body,'<TD align="right">',0)+36,24);
    return (div_cut($body));
}
function div_cut($str) {
    global $time;
	if ($str=="") return "";
	$pos = strpos($str,'<div class="title-right">');
	if ($pos === false) return $str;
	$pos2 = strpos($str,'</div>',$pos);
	if ($pos2 === false) return $str;
	if ($time=="") $time = substr($str,$pos+25,$pos2-$pos-25);
	return substr($str,0,$pos).div_cut(substr($str,$pos2+6));
}
?>
カテゴリー: テスト | コメントする

RasPi2によるデジタルTV音声の処理について

二か国語や多重音声、マルチアングルなど、多様な放送に対応できるように、
次のようにスクリプトを構成しました。
結構な試行錯誤の日々が続いたので、成果を忘れぬよう記録しておきます。

5.TV起動のShellスクリプト(TV.sh)
 動画再生支援機構を使って、完璧に表示(CPU負荷率:12~13%)。
 さらに、二か国語の時、主音声・副音声を選択出来るようにする。
 NHKの多重音声にも対応しました。

#!/bin/bash
source ~/.aout
if [ "$AOUT" = "hdmi" ]; then
        vol=2000
else
        vol=200
fi
TARGET="recfriio\|mplayer"
CH=$1
export DISPLAY=:0.0  # LCDパネルの時はコメントアウトする
pids=(`ps x | \
      grep ${TARGET} | \
      grep -v grep | \
      awk '{ print $1; }'`)

for pid in ${pids[*]}
do
  kill -9 ${pid}
  sleep 1
done
source ~/.biling
[ -p /tmp/mpegpipe ] || mkfifo /tmp/mpegpipe # 名前付きパイプを作る
if [ "$BILING" = "yes" ]; then
 recfriio --b25 --strip --sync --hdus ${CH} - /tmp/mpegpipe &
 xterm -fullscreen -xrm \
        'XTerm*VT100.translations:     #override \n\
        <Key>0xFF51:        string(j) \n\
        <Key>0xFF53:        string(k) \n\
        <Key>0x1008FF11:        string(-) \n\
        <Key>0x1008FF13:        string(+) \n\
        <Key>0x1008FF14:        string(p)'\
  -e "omxplayer --live --vol -${vol} -o ${AOUT} /tmp/mpegpipe"
elif [ "$BILING" = "sel" ]; then
 recfriio --b25 --strip --sync --hdus --http 8080 &
  (echo switch_audio -2\n >/tmp/mpegpipe) &
 sleep 1;mplayer -vo x11 -ao alsa -forceidx -mc 0 -framedrop -nocache -input conf=TVinput.conf\
   -fs -x 1440 -y 1080 -delay 0.5 -af volume=18 -input file=/tmp/mpegpipe http://localhost:8080/${CH}/
fi
pids=(`ps x | \
      grep ${TARGET} | \
      grep -v grep | \
      awk '{ print $1; }'`)

for pid in ${pids[*]}
do
  kill -9 ${pid}
done
xrefresh        # 画面を戻す

 【追記】omxplayer動作中はopenboxがキー入力をネグレクトするため、
     xtermをインストールし、ついでに、KBのV+,V-も有効にして、
     配下でomxplayerを動作させている。
     AOUTはデスクトップ・アイコンで選択した値
    ~/.mplayer/TVinput.conf の4行を次のように変更した。

RIGHT balance +2
LEFT balance -2
DOWN switch_angle
UP switch_audio

  ↑で音声トラック、↓で映像トラックを選択、多重音声の時←で日本語、→で外国語

カテゴリー: RaspberryPi | コメントする

Raspberry Pi2による地デジ・リアル視聴

アナログTVのSmartTV化からの続きの投稿です。

1.MPEGライセンス設定(/boot/config.txt)

※RasPi4からは、MPEGハードエンコーダが不要になり、別建てで記事をポストします。
http://www.raspberrypi.com/mpeg-2-license-key/
/boot/config.txtの編集
decode_MPG2は、一度本体のotp45番地に書き込まれれば、不要になります。

 追加:
  decode_MPG2=0xxxxxxxxx
 変更:
  framebuffer_width=1440
  framebuffer_height=1080

2.HDUSチューナーの登録
PX-S1UDチューナーの場合は、コメント投稿を参照)

sudo apt-get install git make g++ libusb-dev libboost-dev \
    pkg-config  libglib2.0-dev libpcsclite-dev \
    libboost-filesystem-dev libboost-thread-dev
git clone git://github.com/stz2012/recfriio.git
cd recfriio/recfriior5
PLEX PX-S1UDV2.0

PLEX PX-S1UDV2.0

・Makefileを変更する
TSSL = -DTSSL ⇒ コメント化
gccコンパイルオプション追加
-march=armv7-a -mtune=cortex-a9 -mfpu=neon
LIBSに-lboost_systemを追加。0924版では、-lboost-thread-mtの-mtを削除
・Udp.cpp 変更
以下の行が無ければ追加

  #include <unistd.h>

・コンパイル作業

 make -j 4
 cd ../as11loader
 make -j 4
 cd ..
 sudo cp recfriior5/recfriio arib25/b25 as11loader/as11loader /usr/local/bin

・HDUS関係ファイル置き場から
SKNET_AS11Loader.sysを入手して/usr/local/binに複写

 sudo gpasswd -a www-data video
 sudo touch /var/lock/friiodetect
 sudo chmod 664 /var/lock/friiodetect
 sudo chown www-data:video /var/lock/friiodetect

・/etc/udev/rules.d/10-local.rulesに以下の記述を追加

# HDUS
SUBSYSTEM=="usb", ACTION=="add", \
ATTRS{idVendor}=="1738", ATTRS{idProduct}=="5211", \
RUN+="/bin/sh -c 'cd /usr/local/bin;./as11loader'"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", \
ATTRS{idVendor}=="3275", ATTRS{idProduct}=="6051", \
MODE="0664", GROUP="video"

sudo /etc/init.d/udev restart

3.ICカードのドライバをインストール
DNI SCR80の場合は、ミニBCASカードも可。

 sudo apt-get update
 sudo apt-get upgrade
 sudo apt-get install pcscd pcsc-tools libpcsclite-dev
DNI SCR80

DNI SCR80
NTT-com CLOUD2700 NTT-com CLOUD2700

  次の問い合わせが出たならば、
  Configuration file `/etc/libccid_Info.plist’
  The default action is to keep your current version.
  *** libccid_Info.plist (Y/I/N/O/D/Z) [default=N] ?
  ここでNにしておいて、後で次のファイルを追加する。
 NTTのカードリーダーの認識追加
 /etc/libccid_Info.plistの編集
  ifVendorID以下から最終まで、次のソースで置換する。

         <key>ifdVendorID</key>
        <array>
                <string>0x04E6</string>
                <string>0x04E6</string>
                <string>0x0BDA</string>
        </array>
        <key>ifdProductID</key>
        <array>
                <string>0x511A</string>
                <string>0x5810</string>
                <string>0x0169</string>
        </array>
        <key>ifdFriendlyName</key>
        <array>
                <string>SCM Microsystems Inc. SCR 3310 NTTcom</string>
                <string>NTTcom CLOUD2700</string>
                <string>DNI ele SCR80</string>
        </array>
        <key>Copyright</key>
        <string>This driver is protected by terms of the GNU Lesser General Public License version 2.1, or (at your option) any later version.</string>

ここで再起動し、ログインする。
pcsc_scanの実行
Japanese Chijou Digital B-CAS Card (pay TV)が表示されればOK
Ctrl+Cで終了。

4.Mplayerのインストール
最終的にomxplayerの動画再生支援機構を使ったのですが・・
主音声選択の時は、Mplayerを使っています。

 sudo apt-get install mplayer alsa-base alsa-utils  \
 pulseaudio mpg123

・マルチスレッド化で加速
mkdir ~/.mplayer
vi ~/.mplayer/config

# Write your default config options here!
lavdopts=threads=4

・audio moduleのカーネルへの追加(su -後)jessieでは不要
modprobe snd_bcm2835
echo ‘snd_bcm2835’ >> /etc/modules
・asound.conf の書き込み
vi /etc/asound.conf

   pcm.!default {
   type hw
   card 0
   }
   ctl.!default {
   type hw
   card 0
   }

・audio without ALSA の設定方法
amixer cset numid=3 1 #Analog
amixer cset numid=3 2 #HDMI

5.TV起動のShellスクリプト(TV.sh)
動画再生支援機構を使って、完璧に表示(CPU負荷率:12~13%)。
さらに、二か国語の時、主音声・副音声を選択出来るようにする。
NHKの多重音声にも対応しました。
なお、初期設定として次の二つが存在することを前提としています。

echo export AOUT=local &gt;.aout
echo export BILING=yes &gt;.biling

TV.sh

#!/bin/bash
source ~/.aout
if [ "$AOUT" != "local" ]; then
        vol=200
        geo="318x72+0+0"
        DOUT="both --display 5 --win 0,0,1920,1058"
else
        vol=200
        geo="132x29+0+0"
        DOUT="local --display 4 --win 0,0,800,458"
fi
CH=$1
CHN=$2
export DISPLAY=:0.0
TARGET="recdvb|mplayer"
  pkill -9 "${TARGET}"
source ~/.biling
[ -p /tmp/mpegpipe ] || mkfifo /tmp/mpegpipe # 名前付きパイプを作る
xset -display :0.0 dpms 0 0 0 -dpms s off
while :;do
 if [ "$BILING" = "yes" ]; then
   sleep 1;recdvb --b25 --strip ${CH} - /tmp/mpegpipe &amp;
   xterm -title $CHN -geometry ${geo} -xrm \
        'XTerm*VT100.translations:     #override \
        <key>0xFF51:        string(j) \
        <key>0xFF53:        string(k) \
        <key>0x1008FF11:        string(-) \
        <key>0x1008FF13:        string(+) \
        <key>0x1008FF14:        string(p)'\
   -e "omxplayer --live --vol -${vol} -o ${DOUT} /tmp/mpegpipe"
elif [ "$BILING" = "sel" ]; then
 sleep 1;recdvb --b25 --strip --http 8080 ${CH} &amp;
  (echo switch_audio -2\n &gt;/tmp/mpegpipe) &amp;
 mplayer -vo x11 -ao alsa -forceidx -mc 0 -framedrop -nocache -input conf=TVinput.conf\
   -fs -x 1440 -y 1080 -delay 0.5 -af volume=18 -input file=/tmp/mpegpipe http://localhost:8080/${CH}/
fi
if [ ! -p /tmp/mpegpipe ]; then
  break
fi
NCH=`cat tmp_file`
if [ "$NCH" != "" ];then
  CH=`echo $NCH | cut -c 1-2`
  CHN=`echo $NCH | cut -c 3-`
fi
done
xset -display :0.0 dpms 600 600 600 s on
pkill -9 "${TARGET}"
xrefresh        # 画面を戻す

【追記】omxplayer動作中はopenboxがキー入力をネグレクトするため、xtermをインストールし、ついでに、KBのV+,V-も有効にして、配下でomxplayerを動作させている。
AOUTはデスクトップ・アイコンで選択した値。タッチパネルディスプレイとRasPi
-geometry 132×29+0+0及び –win 0,0,800,458
の指定は、専用7’LCDのときのみ。
専用LCDのとき、KBをやめ全てタッチパネル
操作にする方法は、コメント投稿を参照する。

~/.mplayer/TVinput.conf の4行を次のように変更した。

RIGHT balance +1
LEFT balance -1
DOWN switch_angle
UP switch_audio

↑で音声トラック、↓で映像トラックを選択、多重音声の時←で日本語、→で外国語

・地デジ・チャンネル表
http://www.maspro.co.jp/contact/channel.pdf#page=4

・Shellスクリプトの呼び出し
sh -c ‘TV.sh nn 放送局名’ ← nn:チャンネル番号

6.ホーム画面の作り方
http://www.mztn.org/rpi/rpi35.html#i7

SmartTVのホーム画面

SmartTVのホーム画面

 sudo apt-get install lxshortcut xterm
lxshortcut –display=:0.0 -o myapp.desktop
 【例】

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=TV視聴(NHK)
Name[ja_JP]=TV視聴(NHK)
Icon=screensaver
Exec=sh -c '~/TV.sh 27 NHK総合'
Comment[ja_JP]=NHK
StartupNotify=true

 

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=RCA音声
Name[ja_JP]=RCA音声
Icon=qjackctl
Exec=sh -c 'amixer cset numid=3 2;echo export AOUT=hdmi &gt; ~/.aout;cp ~/sout2.* ~/De*/sout1.desktop'
Comment[ja_JP]=
StartupNotify=true

【番外編】
・YouTube閲覧のPiTVの操作をTVと共通にする。
RaspberryPiTV/node_modules/omxcontrol/index.js を編集

        exec('omxplayer -o hdmi "'+fn+'"' &lt; '+pipe,function(error, stdout, stderr) {^M
         console.log(stdout);^M
        });^M
         exec('echo . &gt; '+pipe);^M
    }^M
};^M
 を次のように変更する。
        exec('source ~/.aout;vol=2000;if [ \"$AOUT\" = local ]; then vol=200;fi;xterm -fullscreen -xrm '+
        '\"XTerm*VT100.translations: #override\\n<key>0x1008FF11:string(-)\\n<key>0x1008FF13:string(+)\\n<key>0x1008FF14:string(p)\"'+
        ' -e omxplayer --win 0,0,800,458 -o ${AOUT} --vol -${vol} "'+fn+'"',function(error, stdout, stderr) {
         console.log(stdout);
        });
//       exec('echo . &gt; '+pipe);
    }
};

・PiTVの起動シェル

#!/bin/bash
source ~/.aout
node /home/pi/RaspberryPiTV/app.js
sleep 1
chromium-browser --kiosk http://localhost:8080/remote

・インターネットラジオRazikoの音声ボリューム操作をTVと共通にする。
raziko.shを編集

rtmpdump -v \
         -r ${url_parts[0]} \
         --app ${url_parts[1]} \
         --playpath ${url_parts[2]} \
         -W $playerurl \
         -C S:"" -C S:"" -C S:"" -C S:$authtoken \
         --live\
         | mplayer -
 を次のように変更する。
[ -p /tmp/mpegpipe ] || mkfifo /tmp/mpegpipe # 名前付きパイプを作る
rtmpdump -v \
         -r ${url_parts[0]} \
         --app ${url_parts[1]} \
         --playpath ${url_parts[2]} \
         -W $playerurl \
         -C S:"" -C S:"" -C S:"" -C S:$authtoken \
         --live -o /tmp/mpegpipe  &amp; \
xterm -bg skyblue -xrm \
        'XTerm*VT100.translations:     #override \
        <key>0x1008FF11:        string(-) \
        <key>0x1008FF13:        string(+) \
        <key>0x1008FF14:        string(p)'\
 -e "omxplayer --live --vol -1400 --audio_queue 2 -o ${AOUT} /tmp/mpegpipe"

・録画用USBメモリやSDカードのマウント自動化
/etc/udev/rules.d/11-media-by-label-auto-mount.rulesに以下を書く

KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end"
# Import FS infos
IMPORT{program}="/sbin/blkid -o udev -p %N"
# Get a label if present, otherwise specify one
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"
# Global mount options
ACTION=="add", ENV{mount_options}="relatime"
# Filesystem-specific mount options
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"
# Mount the device
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o         $env{mount_options} /dev/%k /media/%E{dir_name}"
# Clean up after removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}",     RUN+="/bin/rmdir /media/%E{dir_name}"
# Exit
LABEL="media_by_label_auto_mount_end"

カテゴリー: RaspberryPi | 14件のコメント

Raspberry Pi2による、アナログTVのSmartTV化

退役寸前のブラウン管TVのリサイクル回収料金*2で、捨てずに先進ネット
TV化し、URL入力・ネットサーフィンは無線KB/Mouseで快適という環境を
実現しました。
もちろん、Youtube、インターネットラジオも視聴できます。
【追記】USB-TVチューナーの接続もOKになりました。
【追記】4月20日で、Youtube Data API V2が停止になったため、V3対応の変更を掲載しました。

ブラウン管SmartTV

ブラウン管SmartTV


部品手配
1)RaspberryPi2本体 (Pi3も動作確認済です)
  RSコンポーネンツ 4410円(税抜)
2)ヒートシンク(推奨)
  ビクトリーセブン  432円
3)MicroSDカード 8GB
  あきばお~     400円
4)4極RCA 435-RF3
  Amazon    311円
5)ワイヤレスKB/Mouse
  Amazon EW-AM-009  2980円
  漢字入力は、Ctrl+Space、2回押すと英字入力。
6)ケース
  Can★Doカードケース108円
計)         8641円
※ラズパイと共にケースに777円かけられるなら、これですね。
※下記インストールと6番までの設定を施したMicroSDカードもいくつか
 手元にあり、希望者にお分けしています。(2000円)

1.OSのSDカード作成
 Downloads | Raspberry Pi(http://www.raspberrypi.org/downloads
 上記のサイトで最新のRaspbianをダウンロード
 2015-02-16-raspbian-wheezy.img(974MB)
 2015-05-05-raspbian-wheezy.img(990MB) ※代表で説明文を作成している
 2015-09-24-raspbian-jessie.zip(1.24 GB)
    参考 http://blog.livedoor.jp/noanoa07/archives/2061432.html
 2016-03-18-raspbian-jessie.zip(1.32 GB)
 解凍したファイルに2015-05-05-raspbian-wheezy.imgがあるので、
 それをSDカードに焼く。
 そのため、Win32DiskImager(http://sourceforge.net/projects/win32diskimager/
 をダウンロードして解凍する。
 解凍したファイルの中のWin32DiskImager.exeをクリックする。
 Image Fileに2015-05-05-raspbian-wheezy.imgを指定し、
 DeviceにはSDカードのドライブを指定する。
 その後、Writeをクリックすると、ドライブ上書きが確認され、YESクリック後
 しばらくして、書込みがWrite Successfulを表示し、完了する。
 これで、Raspberry Pi2のOSがSDカードにインストールされました。

2.TVへの接続と環境設定
 HDMI接続の液晶TVがあれば、それに接続する。
 アナログTVであれば、3.5φの4極コネクタにRCA変換ケーブルを接続し、
 TVに繋げる。映像信号は、Jack口から1番目であることに注意する。
 (即ち、標準RCAケーブルの赤色と黄色を交差させて接続する)
 さらに、USBキーボードを接続しておく。
 OSを焼いたSDカードをセットし、LANケーブルを接続後マイクロUSB
 ケーブルから5Vを供給する。USBケーブルは、線抵抗が低いものを選ぶこと。
 ログインが促されるので、デフォルトの pi、raspberry、を入力する。
  NOTICE: Please run ‘sudo raspi-config’
 と出力されるので、次のように進める。
 コマンド:sudo raspi-config を入力し、構成ツールの画面にする。
 画面が表示され停止するので、次のように設定していく(↑↓Enter)。
 Jessie以降は、次も参照:https://tool-lab.com/make/raspberrypi-startup-7/
1.Expand Filesystem
 Enterキーを押し、OKで再度Enter。
 TABキーでFinishへ移動し、Enter, YesでEnter。
 The system is going down for reboot NOW!と表示され、再起動される。
 ログインが促されるので、デフォルトの pi、raspberry、を入力する。
2.Change User Password
 適宜、変更しておく(2回同じ入力をし、OKでEnter)。
8.Advanced Options
 A0 Update
  頻繁に更新が発行されているので、まず、最新にする。
 TABキーでFinishへ移動し、Enter, YesでEnter。
 次のコマンドで、アップグレードし、再起動する。
 sudo apt-get upgrade;reboot
 ログインが促されるので、pi、新パスワードを入力してログインする。
 コマンド:sudo raspi-config を入力し、構成ツールの画面にする。
3.Enable Boot to Desktop
  Desktop Log in as user ‘pi’ at the graphical desktop
  を選択し、OKを選択する。
4.Internationalisation Options
 I1 Change Locale
  en_GBをスペースキーで消しen_US.UTF-8、ja_JP.UTF-8を
  スペースキーでマークする
  ok、en_USを選択する。
 I2 Change Timezone
  Asia、Tokyoを選択する。
 I3 Change Keyboard Layout
  Generic 101-key PC、English(US)、右Alt(AltGr)、コンポーズキーなし、
   yes、を選択する(自動で選択される場合もある)。
7.OverClocking
 Pi2を選択する。
8.Advanced Options
 A2 Hostname 適宜
 A3 Memory Split 64でもOK
 Finish、yesで、The system is going down for reboot NOW!と
 表示され、再起動。
 ログインが促されるので、pi、新パスワードを入力してログインする。

3.日本語環境のインストール(PC or MACからが容易)
 OSを焼いたSDカードをセットし、LANケーブルを接続後マイクロUSB
 ケーブルから5Vを供給する。
 グリーンのLEDの点滅を確認後、落ち着いたら、ルーターの管理画面
 などから最新のDHCP払い出しのアドレスを調べる。

 Mac-OSXではターミナル、PCではダウンロードしたPuTTYを起動し、
 上で調べたアドレスをホスト名に入れ、「開く」をクリックする。
 ログインが促されるので、pi、新パスワードを入力してログインする。

 ・日本語フォントをインストールする。

sudo apt-get install ttf-kochi-gothic ttf-kochi-mincho fonts-takao fonts-vlgothic fonts-ipafont xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname

・日本語入力をインストールする。(ー05-05,-09-24ではインストール済なのでibusのみ)

sudo apt-get install ibus-anthy

・日本語フロントプロセッサを有効にする。
デスクトップの「設定」「iBUSの設定」を選択し、インプットメソッドの選択で
日本語にAnthyまたはJapaneseを選び追加する。
・ショートカットキーをControl+spaceにする。
・デフォルトを日本語モード・USキーボードにする

 echo "export LANG=ja_JP.UTF-8" >> ~/.profile
 echo "setxkbmap us" >> ~/.profile

4.環境の拡張
スワップ領域を拡張する(10倍)
sudo vi /etc/dphys-swapfile

  CONF_SWAPSIZE=1000

ユーザーを追加する

 sudo adduser xxxxx
  sudo vigr		piの後ろに:xxxxx
  sudo vigr -s 	piの後ろに:xxxxx
 ルートパスワードを設定する
 sudo passwd
 ルート・ログイン確認
 su -

ここで再起動
sudo reboot
新しいユーザーでログインする
デフォルトを日本語モード・USキーボードにする
echo “export LANG=ja_JP.UTF-8” >> ~/.profile
echo ”setxkbmap us” >> ~/.profile

5.VNC接続で、PCでのX-Window

(VNCではなく、リモートデスクトップを使う時は、コメント投稿を参照)

 sudo apt-get install tightvncserver
 tightvncserver

(初回はパスワード設定あり・・8桁)
WindowsにUltraVNCViewerをインストールする。
VNCViewerを起動する(最初はパスワード入力)
毎回、自動起動にする
sudo vi /etc/init.d/vncboot

### BEGIN INIT INFO
# Provides: vncboot
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start VNC Server at boot time
# Description: Start VNC Server at boot time.
### END INIT INFO

#! /bin/sh
# /etc/init.d/vncboot
USER=pi
HOME=/home/pi

export USER HOME

case "$1" in
    start)
        echo "Starting VNC Server"
        #Insert your favoured settings for a VNC session
        su $USER -c '/usr/bin/vncserver :1 -geometry 1600x900 -depth 24'
        ;;

    stop)
        echo "Stopping VNC Server"
        su $USER -c '/usr/bin/vncserver -kill :1'
        ;;

    *)
        echo "Usage: /etc/init.d/vncboot {start|stop}"
        exit 1
        ;;
esac

exit 0

sudo chmod 755 /etc/init.d/vncboot
sudo update-rc.d vncboot defaults

6.サウンド・映像環境の設定
Google Chromeブラウザ、Youtubeのインストール
http://netbuffalo.doorblog.jp/archives/4592632.htmlを参考に。
Jessie以降のChromiumのインストールについては、コメント投稿を参照。

 amixer cset numid=3 1
 sudo apt-get install mpg321 vorbis-tools youtube-dl chromium-browser

curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install -y build-essential python-dev python-rpi.gpio nodejs

npm install express
npm install socket.io
npm install omxcontrol
git clone git://github.com/DonaldDerek/RaspberryPiTV.git
cd RaspberryPiTV/ (cd *TV でも可)
npm install

フォルダ権限を毎回与える
sudo vi /etc/rc.local

chmod a+rw /dev/vchiq

再起動する
cd RaspberryPiTV/ (cd *TV でも可)
node app.js (RaspberryPiTVの起動)

Youtube Data API V3への対応(2015.4.21以降)
RaspberryPiTV/public/js/remote.js を次のソースで置き換える。

var host = document.location.origin;
var Youtube;
var google="AIzaSyC3VBRnfUU9_qO1Gr1ARBO8BZLT-Sp6vFc";
var socket = io.connect(host);
socket.on('connect', function(data){
        socket.emit('remote');

    $("#filter").focus();
        //Youtube
  Youtube = {
        getVideo: function(query, socket){
                var max_videos = 25;
                var url = "https://www.googleapis.com/youtube/v3/search?part=snippet&q=" + escape(query) + "&maxResults=" + max_videos + "&key=" + google;
                $.getJSON(url, function(data){
                        $("ul.video").html('');
                        var idx,id="",cnm="";
                        for (idx=0;idx<data.items.length;idx++) {
                            var a = data.items[idx],
                                id = id + cnm + a.id.videoId ;
                                cnm = ",";
                        }
                        var url2 = "https://www.googleapis.com/youtube/v3/videos?part=id,snippet,contentDetails&id=" + id +  "&key=" + google;
                        $.getJSON(url2, function(data1) {
                                var n = 0;
                                var videoId = new Array(3);
                                var duration = new Array(3);
                                var title = new Array(3);
                                var thumbnail = new Array(3);
                                var htmlBlk =  $('#videoTpl0').html();
                           $(data1.items).each(function(key,item) {
                                videoId[0] = item.id;
                                var totalSec = item.contentDetails.duration;
                                var three = totalSec.replace(/[THMS]/g, ':').split(':');
                                if (three.length==4) three[0] = "0";
                                else if (three.length==3) {three[0]="0";three.unshift("0");}
                                duration[0] = (parseInt(three[0]) < 10 ? "0":"") + three[0] + ":" + (parseInt(three[1]) < 10 ? "0":"") + three[1] + ":" + (parseInt(three[2]) < 10 ? "0":"") + three[2];
                                    title[0] = item.snippet.title;
                                    thumbnail[0] = item.snippet.thumbnails.default.url;
                                var jsonObj = {
                                        id:videoId[0],
                                        title:title[0],
                                        thumbnail:thumbnail[0],
                                        duration:duration[0]};
                                var template = $('#videoTpl1').html();
                                var html = Mustache.to_html(template, jsonObj);
                                if (++n==1) {
                                        htmlBlk += "<tr>"+html;
                                }
                                if (n==2) {
                                        htmlBlk += html;
                                }
                                if (n==3) {
                                        htmlBlk += html+"</tr>";
                                        n = 0;
                                }
                            });
                            $('ul.video').html( htmlBlk+"</tr></table>");
                            Youtube.watchOn(socket);
                        });
                });
        },
        watchOn: function(socket) {
            $(".watch").on("click",function(){
                var video_id = $(this).data('id');
                socket.emit('video',{action:"play", video_id:video_id});
            });
        }
  }

$$(".r-container").swipeLeft(function(){
        socket.emit('controll',{action:"swipeLeft"});
});
$$(".r-container").swipeRight(function(){
        socket.emit('controll',{action:"swipeRight"});
});
$$(".r-header").tap(function(){
        socket.emit('controll',{action:"tap"});
        $(".app-body").fadeToggle("fast", function () {});
        $.get(host+'/omx/quit',function(data){
                console.log(data);
        });
});
$$(".app-body").tap(function(){
        $.get(host+'/omx/pause',function(data){
                console.log(data);
        });
});
$(".search input").change(function() {
        Youtube.getVideo($(this).val(), socket);
 });
 socket.on("loading", function(data){
        console.log(data);
 })
});

同様、remote.html 内の template 部分を3段組みに拡張する。

        <script id="videoTpl0" type="text/template">
                <table style="width: 700px" cols=3><tr>
        </script>
        <script id="videoTpl1" type="text/template">
                <td width="200px">
                <li class="block">
                        <div  class="tile">
                                <img class="tile-image big-illustration" src="{{thumbnail}}"/>
                                <h3 class="tile-title">{{title}}</h3>
                                <p>Duration: {{duration}}</p>
                                <a class="btn button btn-primary btn-large btn-block watch" data-id={{id}}>Watch</a>
                        </div >
                </li></td>
        </script>
        <script id="videoTpl2" type="text/template">
                </tr></table>
        </script>

Chromiumの日本語モード設定
1.「Chromium」を実行。
2.画面右上の「三本線」ボタンをクリックし、「Settings」を選択。
3.一番下までスクロールさせて「Advanced Settings」ボタンをクリック。
4.詳細設定画面が表示されるので、画面を少し下にスクロールさせ、
「Languages and spell-checker settings」ボタンをクリック。
5.「Language」という画面で、左下にある「Add」ボタンをクリック。
6.「Add Language」という画面で中央のプルダウンメニューをクリックし、
「Japanese – 日本語」を選択 →「OK」ボタンをクリック。
7.「Language」画面の左側に、「Japanese」という項目が追加されており、
この「Japanese」をドラッグしてリストの一番上に移動することで、
最優先に使用する設定に変更する。
8.「Chromium」を終了させ、再起動すると、表示が日本語になっている。

TVに合わせた文字拡大
フォントサイズを大に変更
デスクトップのアイコンサイズを変更するには、ファイルマネージャーで、
「編集->設定、ディスプレイ、大きなアイコン」のサイズを変更すれば良い。
また一般タブのデフォルトのビューでビューのモードをコンパクトにしておくと
使いやすい。

アイコンの文字サイズはデスクトップ設定のラベルのテキストのフォントを変更する。
Chromeブラウザで http://localhost:8080/remote へアクセスする。
画面のWatchボタンをクリックする。

インターネットラジオ
http://www.raspberrypi.org/forums/viewtopic.php?f=82&t=45424
動画・ラジオの再生
DEVICE PLUS hobby raspberrypi
http://wp.developapp.net/?p=3206

mplayerの起動に、-cache 64 を追加する。

最終的なconfig.txt(抜粋:下記に合わせて該当箇所を修正する)
参考: Config


# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=1
hdmi_mode=16

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
hdmi_drive=2
# uncomment for composite PAL
sdtv_mode=1
sdtv_aspect=3
#uncomment to overclock the arm. 700 MHz is the default.
arm_freq=1000

start_x=0
core_freq=540
sdram_freq=540
over_voltage=2

7.無線LANを有効にする(任意拡張)
アダプタは、消費電力の小さなコレがお勧めですね。
wpa_passphrase Your_SSID Your_Passphrase
得られた4行を元に、構成ファイルに追記する。
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
        ssid="Your_SSID"
        #psk="Your_Passphrase"
        psk=hogehogehogehogehogehogehogehogehoge
        key_mgmt=WPA-PSK #←追加
        proto=WPA2 #←追加
        pairwise=CCMP #←追加
        group=CCMP #←追加
        priority=2 #←追加
}

無線LANのインタフェース設定をする。
・sudo vi /etc/network/interfaces (Raspbian-02-16までの設定)

iface lo inet loopback
iface eth0 inet dhcp

auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

固定IPアドレスに出来る場合は、次のように変え、追記する。
dhcp ⇒ static
address 192.168.x.xx
netmask 255.255.255.0
gateway 192.168.x.1
・sudo vi /etc/dhcpcd.conf (Raspbian-05-05からの固定アドレス設定)
interface wlan0
static ip_address=192.168.x.xx/24
static routers=192.168.x.1
static domain_name_servers=192.168.x.1

無線LANのスリープをやめる
sudo vi /etc/modprobe.d/8192cu.conf

# Disable power management
options 8192cu rtw_power_mgnt=0

8.Bluetoothへの挑戦(任意拡張)
Jessie版でのBluetooth接続は、コメント投稿を参照のこと。

 sudo apt-get update
 sudo apt-get -y install --no-install-recommends bluetooth
 sudo apt-get -y install bluez-utils blueman
 キーボードをペアリングモードにし、
 hcitool scan

MAC-addressが得られるので、次のコマンド群で指定する。
sudo bluez-simple-agent hci0 MAC-address
PINコードを0000Enterと入力する
同時に、キーボードからも同じ入力を実施する。
Release
New device (/org/bluez/2808/hci0/dev_MAC-address)
これでペアリングは成功している。
Creating device failed: org.bluez.Error.AlreadyExists: Already Exists
というエラーメッセージがでたら、次のコマンドで戻し、再試行する。
sudo bluez-test-device remove MAC-address
正式登録をする。
sudo bluez-test-device trusted MAC-address
次のコマンドで再接続できる。
sudo bluez-test-input connect MAC-address
接続確認は、次のコマンド。
hcitool con

Bluetooth強制接続(.profileに書くと超強力)
sudo hidd –connect (My KeyboardのMacAddress)
sudo hidd –connect (My MouseのMacAddress)

カテゴリー: RaspberryPi | 9件のコメント

男子マラソンの世界記録の推移

最近よく話題になるので、世界記録を把握しておく。
年次 記録 選手 大会
1965年 2時間12分0秒 重松森雄(福岡大) チスウィック
1967年 2時間9分36秒 クレイトン(豪州) 福岡
1969年 2時間8分33秒 クレイトン(豪州) アントワープ
1981年 2時間8分18秒 ドキャステラ(豪州) 福岡
1984年 2時間8分5秒 ジョーンズ(英国) シカゴ
1985年 2時間7分12秒 ロペス(ポルトガル) ロッテルダム
1988年 2時間6分50秒 デンシモ(エチオピア) ロッテルダム
1998年 2時間6分5秒 ダコスタ(ブラジル) ベルリン
1999年 2時間5分42秒 ハヌーシ(モロッコ) シカゴ
2002年 2時間5分38秒 ハヌーシ(米国) ロンドン
2003年 2時間4分55秒 テルガト(ケニア) ベルリン
2007年 2時間4分26秒 ゲブレシラシエ(エチオピア) ベルリン
2008年 2時間3分59秒 ゲブレシラシエ(エチオピア) ベルリン
2011年 2時間3分38秒 マカウ(ケニア) ベルリン
2013年 2時間3分23秒 キプサング(ケニア) ベルリン
2014年 2時間2分57秒 デニス・キメット(ケニア) ベルリン

http://www2.ttcn.ne.jp/honkawa/3989e.html

カテゴリー: つれづれ, マラソン | コメントする