2015/12/13

Intel Edisonでタイムラプス撮影 その3

撮影しながら画像変換もできるようなったので、次は撮影と画像変換しながら、動画に変換できるか試してみた。と思ったけれども、1枚撮るごとに動画変換してもあまり意味がないし、とりあえず撮影が終った大量の写真を変換してみた。
可能か不可能かということなら、6秒毎に2時間撮影した1200枚の画像を24fpsで変換して50秒の動画にすると、できることはできた。ただし、予想はしていたけれども数十分とかの単位で時間がかかる。素直にデスクトップかノートで変換したほうが良さそう。

注文していたバッテリーOLEDモジュールも届いたので、一つにまとめて使えるようにしてみた。目標としては、カメラとEdisonだけを持っていって、ノートパソコンなしでできるようにしたい。想定している現地での手順は、
  • カメラのセッティングと設定。 (構図、撮影パラメータ: 露出、ホワイトバランス等)
  • Edisonをカメラに接続して起動。
  • 撮影開始。
  • (自動でクロップとサイズ変換。)
  • 撮影終了。
  • Edisonをシャットダウン。
そして、帰ってきたらmicroSDカードに撮影画像があるのでそれを変換するだけ、という感じにしたい。ということで追加で必要なものは、
  • UIのためのプログラム (撮影開始、終了、シャットダウン)
  • pkTriggercordを起動/停止するためのシェルスクリプトとサービス
  • 画像変換のためのシェルスクリプトとサービス
SparkfunのOLEDモジュールにはボタンが2個とジョイスティックが付いているので、AボタンにpkTriggercordの起動/停止、Bボタンをシャットダウンに割り当てた。

ということで、全部繋げるとこんな感じ。Intel Edisonは完全に隠れて見えないけど、下から順番にIntel Edison、Console、microSD card、バッテリー、OLEDとスタックされている。

OLEDには撮影枚数も表示するようにしてみた。







上の写真の400mAhのバッテリーだと2時間ちょっと,1300枚くらいで撮影できた。撮影して場所を変えてまた撮影してを繰り返すことを考えると、余裕を持ってもうちょっと大きいバッテリーが欲しいし、容量が大きくて困ることはないだろうと2500mAhのバッテリーを注文した。購入時には気が付かなかったけど、届いてみたらEdisonよりもサイズが大きかった。

ついでに、直付けされていたバッテリーをソケットにしてみた。が、スペーサーの高さが3mmに対して、ソケットは5mm近くあるので、そのままでは付かない。ということで、右の写真のように基板から突き出る形になってしまって、ちょっとかっこ悪い。
おまけに充電用のUSBと微妙に干渉する。とりあえず使えるので問題はないけど、何かいい方法はないか模索中。

2015/12/01

CyclesmithのFoothill

自転車に乗る時は、ロードの時もオフロードの時もヒップバッグに工具やスペアチューブを入れて使っている。CyclesmithのFoothillというヒップバッグで、かれこれ20年以上使い続けている。先日、いつものように自転車に乗りに行こうとしたらバックルの爪が折れてしまった。
爪の折れたバックル

恐らく一番力のかかる部分のプラスチック部品が20年以上ももったんだから十分だと思うけど、すごく気に入って使い続けてきたバッグだし、実際本体はまだまだ使える状態なので、バックルだけ取り替えることにした。でも、クラフトショップ/手芸店で探してみてもサイズの小さいものしか見つからない。ベルトの幅は50mmくらいだけど、見つかったのは15mmとか30mm。

ネットで探してみるかとブラウザを開いた時にふと思いついて、同じ製品はもう作ってないかもしれないけど、同じような部品はまだ使われているんじゃないか? と、製造元に連絡してみることにした。製造メーカーのMountainsmithに送料も払うから補修部品として売ってくれないかとメールで連絡してみたところ、考えることは同じで、USAからNZの送料の方が高くなるだろうから、地元の店を探してみたらと返信がきた。
探してみたけど見つからなかった旨と、20年以上使ってきたバッグだから送料くらい払うよと再度伝えると、送ってくれることになった。しかも、支払いのためにカードの番号まで伝えたのに、送ってくれる段階になって「思ってたより送料が高くなかったから」と、無料で送ってくれることになった。さらに頼んでもいないのに、2個送ってくれるらしい。(やっぱり壊れやすい部品なのかも? )
メールの返事も早いし、フレンドリーなカスタマーサービスだったから、もしアウトドア系のバッグが今度必要になった時はMountainsmithにしようかな。

CyclesmithのFoothill

2015/11/24

Intel Edison; Clone/Copy by 'reboot ota' command

In previous post, I used flashall.sh/bat command to clone a reference image (or restore a backup image) to other Edison board.  If you want to use 'reboot ota' command, it requires some more tweaks.

# reboot ota

If reboot command is given a parameter ("ota"), the parameter is saved in U-Boot environment variable bootargs_mode. And U-Boot runs ota-update.scr at boot up. If you just replace edison-image-edison.ext4 file with a backup image, ota_update.scr fails because it has a hash value of the original ext4 file.

mkimage

If you modify ext4 file's hash value in ota_update.scr (you can edit it with a text editor), then U-Boot fails to load the scr because scr file's CRC check fails. Therefore ota_update.scr file needs to be regenerated with a backup ext4's hash value.

To generate ota_update.scr, it needs mkimage command that is included in U-Boot.
# git clone git://git.denx.de/u-boot.git
It needs not build everything, just needs tools.
make efi-x86_defconfig tools
mkimage tools will be in tools directory.

ota_update.scr

ota_update.scr is basically a script file. It just contains some binary codes at beginning. Strip that binary part off and save a script part into a file, say ota_update.cmd.
Then replace hash value with a reference image's one.
# Start update of edison-image-edison.ext4 on rootfs
setenv ota_image_name edison-image-edison.ext4
setenv u_part_lbl rootfs
setenv sha1_sum_ref cd19f77a22801b21129950a3d5506b55ceeb1888

The following commands generates ota_update.scr from ota_update.cmd.
# mkimage -a 0x10000 -T script -C none -n 'your description' -d ota_update.cmd ota_update.scr

Keep a reference ext4 file and ota_update.scr in pairs. In my case, I create a zip file, for example edison-20150101.zip, and it contains edison-image-edison.ext4 and ota_update.scr. Then I just need unzip a zip file into Edison removable drive and run reboot ota command to restore.

2015/11/21

Windows 10 Nov update; stuck at black screen.

In summary;

I have installed Windows 10 Nov update (Buld 10586 / Threshold 2) to Dell Inspiron 11 3147 a few days ago. It was working fine except Cygwin. And then it stuck at black screen after Dell logo before login screen at start up. To make it work again, I had to disable "Windows Driver Foundation - User-mode driver Framework" service.
The service sounds like important/necessary service, and so hopefully Microsoft fix it soon...

[Edit 22/Nov]
I was wondering why it was working fine a few days after update. And I found Windows Update "Cumulative Update for Windows 10 Version 1511 for x64-based Systems (KB3118754)" caused the problem. If KB3118754 is uninstalled, it works fine with the service enabled.
[/Edit]

[Edit 23/Nov]
It happened again. Disable the service seems to be better workaround.
[/Edit]

[Edit 25/Nov]
As in a comment, it needs just touch a screen, then Windows continues booting.
[/Edit]

Long story;

Soon after installed Windows 10 Nov update, I noticed that Cygwin stopped working on my Dell Inspiron 11 3147. But Windows was working fine other than that for a few days. When I got a time to investigate Cygwin problem, I rebooted the pc and it stuck at black screen before login screen. It won't go any further.

Get into safe mode

When it stuck at black screen, there was no mouse cursor. I pressed Windows+p to see external display settings, but nothing happened. I actually connected an external display but it only showed black screen too. And so I had to force shutdown it by pressing power button until LED turned on and then off again.
Because it won't boot into Windows, it needs an install media to boot into Safe mode. But I accidentally found the following way.

  • Press F12 to get into Boot options and launch Diagnostics.
  • Let it run a while just in case, but you can cancel it memory test.
  • Exit Diagnostics. (Then it automatically reboots.)
  • Somehow Windows detects a boot problem and you can get into advanced start-up screen.

Disable service

It seemed to be working okay in safe mode. So I guessed the problem was caused by a software. To find a cause, run msconfig.exe, open Services tab and enable services little by little. And finally I found that "Windows Driver Foundation - User-mode driver Framework" service caused the problem.

Clean install

It could be a problem of software combination/conflict and so I clean installed Windows 10 Nov update to confirm it. It installed without a problem, and worked fine for a while but the same problem happened after a few reboot. I did not install any additional software but applied Windows Updates.

So far so good

With the service disabled, I installed my everyday software (anti-virus, Cygwin, Chrome, VLC, Xkeymacs, etc.) and all work fine so far.

2015/11/15

Dell XPS L502Xのディスプレイ アップグレード

Dell XPS L502Xのスクリーンの調子が悪くなり、輝度にムラが出てきて、下部2cmくらいが常に白く表示されるようになってしまった。調べてみると、交換用のスクリーンを販売しているLaptop Screenというショップを見つけた。しかも、L502Xは15インチなのに1366x768という残念な解像度なのだけど、フルHDのスクリーンも売っている。
どうやらフルHDのモデルも販売されていたようで、物理的なサイズは全く同じで換装できるらしい。Dellのサポートページによると実際に換装した人もいて成功している。ただしスクリーンとマザーボードを繋ぐフラットケーブルも取り替える必要があるらしい。
必要なフラットケーブルの型番はV73D3といって、残念ながら上記のショップではこのケーブルを販売してなかった。でも、eBayで検索してみると簡単に見つかった。

ということで、注文して物が届いたので、さっそく換装してみた。手順はDellのサポートページからサービス マニュアルをダウンロードできるので、それを参照しながら進めた。

まずは、バッテリーを外して、モジュールカバーを外す。念の為、メモリも外しておいて、あとは無線LANのアンテナ ケーブルをカードから外しておく。











バッテリーを外すとネジと爪が見えるようになるので、そのネジ1本と二つの爪を外すと、パームレストカバー(トップカバー)が外れるようになる。電源ボタンのあたりからぐるっと全周外してから、手前に倒して、2本のフラットケーブルを外す。
そうすると、完全にパームレストを外すことができるようになる。







次はキーボード。まずは上辺にある2つの爪を外して、奥の方へ水平に少しだけスライドさせる。
すると、手前側が持ち上がるようになるので、ちょっと持ち上げて、小さいフラットケーブルを外す。
次に、大きなフラットケーブルを外す。








キーボードを外すと、ディスプレイケーブルが見える。
黒いタブが付いているので、それを引っぱってディスプレイ ケーブルを外す。
ネジも一本外す。












無線カードから外しておいたアンテナ線を引っぱって取り出して、ガイドからも順番に外していく。













スクリーンを本体に固定しているネジを4本外す。ネジを全部外しても、左の写真のように長い足が付いているので、突然倒れて外れたりはしないようになっている。











ベゼルを外す。上方向に無理矢理引っぱって外すのではなくて、ベゼルを水平方向の外側に引っぱりながら上に持ち上げると外れる。
左の写真は外した後の写真で、黒いベゼル側(下)と、灰色のカバー側(上)。










カメラモジュールのケーブルを外す。水平方向に引っぱると抜ける。













ネジを8本外すと (上部2本、下部6本)、パネルがカバーから外れる。1から8まで写真のように番号が振ってある。
パネルを外すだけなら、グリーンのネジは外す必要はない。(ちなみに、このネジを外すとヒンジが外れる。)









パネルからケーブルを外す。テープを剥して、水平方向に引っぱると抜ける。
他にも両面テープで貼り付けてあるので、ゆっくりと剥す。











 ケーブルの見た目は全く同じだけど、一方はV73D3。












別のラベルには、元の方は"HD"、新しい方は"FHD"と書いてあった。













ネジを4本外して、左右のフレームを外す。














後は、新しいパネルと取り替えて、逆の順序で取り付けていくだけ。

ちなみに元のパネルはSamsungのLTN156AT02。(恐らくDellのパーツナンバーは08MN61?)









今までは外部モニターをメインにして使っていて、ほぼデスクノート状態だったけれども、これで外部モニター無しでも色々と使える状態になった。

2015/11/11

Intel Edisonでタイムラプス撮影 その2

大体の下準備は済んだので、実際に撮影しながら色々と試してみた。

pkTriggerCord

--resolutionで解像度を変更しても、ダウンロードされるjpegファイルには反映されないバグがあると書かれているけれども、実際に試してみると保存されるjpegは指定した解像度になっている。
ただし、不思議なことにカメラからの転送にかかる時間は解像度に関わらず4秒ちょっとかかる。RAWで撮影するとサイズが大きくなるのでもっと時間がかかるけれども、jpegだと解像度/サイズに関わらず4秒ちょっとかかる。
ダウンロードした後にリサイズでもしているんだろうか? 最大解像度でも最低解像度でも同じ時間がかかるなら、最大解像度で残しておくに越したことはない。それに10秒毎に撮影するなら余裕だし、6秒毎に1時間くらい撮影してみたけれども常に4秒以上5秒未満だった。

ImageMagick (GraphicsMagick)

撮影画像を16:9のアスペクト比にクロップして、さらに1920x1080にリサイズすると、1枚処理するのに20秒くらいかかる。これでは撮影間隔に比べて時間がかかり過ぎる。ImageMagickから派生したGraphicsMagickは処理が早いということなので、試してみると少し短かくなって15秒くらいだった。できれば撮影間隔と同じか短かい時間に抑えたいので、15秒でも遅い。試しにリサイズをやめてクロップだけにしてみると、10秒くらいかかることが分った。
単純に先頭と後尾の部分を読み飛ばして16:9にクロップするプログラムを、libjpegを使ってCで書いてみたけど、IM/GMと同様に10秒くらいかかった。(同じライブラリを使用しているのだから、当然の結果か?) 何とかならないかなぁとlibjpegのマニュアルを読んでいたら、デコードの段階でスケール(scale_numとscale_denom)を変更すると非常に早くなると書いてあった。K20Dの最高解像度は4672x3104なので、1/2にしても1920x1080よりは大きい。そこで1/2のスケールでデコードしてみた。すると3秒まで縮んだ。

OpenCV

自作のクロップ プログラムが出力したファイルをImageMagickでリサイズしてもいいけれども、ファイルI/Oが増えることになるし、クロップと同時にリサイズもやってしまうことにした。OpenCVライブラリが既にパッケージになっていたので、opkgでインストールして利用した。リサイズにかかる時間は実行時間にほとんど影響がないくらい速く、リサイズのコードを追加した後でも3秒くらいのままだった。これなら撮影間隔未満なので十分と言える。
余談になるけれど、libjpegとOpenCVではメモリに展開したイメージデータの構造が同じなので、そのまま受け渡しができた。ただしRGBデータの順序が違っている。本来ならば、データを受け渡しする際に順序を揃えなければならないし、順序を変更するためのメソッドも用意されていた。けれども、リサイズだけなら色情報は関係ないんじゃないかと思い、順序の変更なしにリサイズ処理をしてみたら、予想通り問題無くリサイズできた。

inotify-tools

pkTriggerCordが撮影して保存が完了するのに合わせて、クロップ/リサイズ プログラムを走らせる必要がある。inotifywaitというコマンドがちょうどその用途に合っているのだけれども、Intel Edisonにはインストールされておらず、opkgにもなかった。
inotifyの仕組み自体はカーネルの機能らしいので、inotify-toolsをgitからcloneしてインストールしてみた。インストールは、
# ./autogen.sh
を実行するとconfigureが生成されるので、
# ./configure
を実行して、あとはmakemake installするだけ。
テストしてみたところ問題無く動いている。

これで、撮影しながら同時に画像変換もできるようになった。

2015/10/28

Intel Edisonでタイムラプス撮影 その1

以前、ストップモーション ムービーを作って遊んだ時は、ノートPCを使ってテザー撮影したけれども、タイムラプスの撮影をする時は撮影画像をその場でチェックするわけじゃないから、Intel Edisonでも十分可能だろうということで試してみた。

pkTriggerCord

カメラはこういう時の遊び用に使っているPentax K20Dなので、リモートコントロールのソフトにはpkTriggerCord (ver. 0.82.04)を使用した。
ソースをダウンロードして、GUIはいらないので、
# make cli
# make install
で、あっさりと完了。
OTGケーブルを経由してK20Dを繋いだら、とりあえず1枚撮影してみる。
# pktriggercord-cli --green -o test.jpg
画面のないEdison上では画像を確認できないので、PCに転送して撮影できていることを確認。

簡単にタイムラプスのテストもしてみた。
# pktriggercord-cli --frames 10 --delay 10 --green -o test
上記のコマンドで10秒毎に10枚撮影してくれる。画像の転送時間を考慮して待ち時間を調整してくれるので、例えば転送に4秒かかったら6秒待機して、正確に10秒毎に撮影をしてくれる。

ImageMagick

ちょうどpkTriggerCordのサイトにタイムラプス撮影の解説もあったので、それに従ってクロップとリサイズもEdison上でやってしまうことにした。
ImageMagick (ver. 6.9.2-4)のソースをダウンロードして、
# ./configure
# make
いくつか警告が出たけれども、エラーはなく終了。
先程撮影した画像でテストしてみると、
# identify test.jpg
identify: no decode delegate for this image format 'test.jpg'
と言われてしまった。
# identify -list configure | grep DELEGATES
で確認してみると、確かにjpegがない。
jpegのライブラリがないのが原因らしいので、インストールする。opkgで探してみると、
# opkg list | grep jpeg
libjpeg8とlibjpeg-devというのが見つかったので、インストールしてみた。
# opkg install libjpeg8
# opkg install libjpeg-dev
そうしたら、再度
# ./configure
してから、
# make
する。そうすると、
# identify -list configure | grep DELEGATES
DELEGATES bzlib mpeg jpeg xml zlib
となって、identify コマンドもきちんとjpeg画像の情報を表示してくれるようになった。

FFmpeg

最後はFFmpeg。静止画から動画の変換はEdisonでしなくてもいいかなと思ったけれども、せっかくなので挑戦してみた。

ソースはgitからクローンする。
# git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
(git クライアントは# opkg install gitでインストールできる。)
# ./configure
を実行すると、prコマンドがなくてエラーになる。prコマンドはcoreutilsに含まれているので、
# opkg install coreutils
でインストール。
すると今度はyasm/nasmがないとエラーがでる。
yasm/nasm not found or too old. Use --disable-yasm for a crippled build.
メッセージの通り、--disable-yasmをつけてやり直し。
# ./configure --disable-yasm
# make
すると、makeの途中でエラーが出た。
libavcodec/x86/cabac.h:192:5 error: 'asm' operand has impossible constraints
gccのインライン アセンブラのエラーらしい。Edisonにインストールされているgccはver. 4.9.1。 NASM (ver. 2.11.08)をインストールしたら何か変るかと試してみたけれども、同様のエラーがでる。
該当のヘッダを使用しているソースを見てみると、H264のデコード関連らしい。今回の目的(静止画から動画への変換)には必要のない機能なので、その機能を除外してmakeしてみた。
# ./configure --disable-decoder=h264
そうすると、エラーになる箇所はスキップしてビルドできた。

ついでなので、色々と試してみたところ、--disable-asmまたは--disable-optimizationsを指定するとH264のデコード機能を生かしたままビルドできた。でも、実際に計測はしていないけれども、恐らく他のコーデックのエンコード/デコード性能も落ちると予想できるので、今回はH264のデコードを諦めることにした。

さらについでに、H264のエンコードをサポートしたい場合は、x264のライブラリをopkgでインスールして、--enable-libx264を指定すれば良いみたい。(このスレッドを参考にした。)
# opkg install libx264-133
# opkg install libx264-bin
# opkg install libx264-dev
# opkg install libx264-staticdev
最終的にconfigureのオプションは以下のようになった。
# ./configure --disable-decoder=h264 --enable-libx264 --enable-gpl
あとはmakeして完了。(ちなみに、ビルドに2時間くらいかかる。)
# ffmpeg -codecs | grep 264
.EV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (encoders: libx264 libx264rgb)
H264のエンコードをサポートしたffmpegのできあがり。

2015/10/10

Intel Edison; clone

I wanted to clone/copy a reference Edison board to multiple Edison boards. Maybe, the proper way of doing this is to build from source code with a customised configuration. But I also wanted to find out an easy way of backup/restore. And I came up with the following steps.
  1. Preparation 1: Bootable SD card.
  2. Preparation 2: Make a reference Edison
  3. Enable resize-rootfs.service.
  4. Boot from SD card.
  5. Mount rootfs and check how much used.
  6. Create a disk image and mount it.
  7. Copy files from rootfs@emmc to the mounted disk image.
  8. Unmount the disk image and copy it to a PC.
  9. Rename the disk image file to edison-image-edison.ext4 and replace the same name file in unzipped firmware directory.
  10. Run flashall against a target Edison board.

Preparation 1

It needs bootable SD card to safely copy rootfs partition. See this post for detail.

Preparation 2

Install required software, enable/disable services, add user account, etc.

Enable resize-rootfs.service

When create a disk image file, it need not copy empty blocks. So a disk image file is smaller than rootfs partition's size. After a target's rootfs partition is overwritten with a disk image, it needs to extend to an actual size. It happens when flashing by flashall/ota method too, so that there is already a service that runs only once at the first boot. Enable this service before boot from SD card. But even if you forget this, you can just run resize2fs command to extend rootfs partition. It can be done on live file system.
# systemctl enable resize-rootfs
Then reboot from SD card.
# reboot from_sdcard

Mount rootfs partition in eMMC and check size

After boot from SD card, mount rootfs partition in emmc and check its size.
# mkdir /mnt/emmc
# mount /dev/mmcblk0p8 /mnt/emmc

Run df and see how much used. In my case, 500MB is enough.
# df -h | grep /mnt/emmc
Filesystm      Size   Used Available Use% Mounted on
/dev/mmcblk0p8 1.4G 471.0M    889.0M  35% /mnt/emmc

Create a disk image and mount

The following command creates 512MB (512KB * 1024) disk image file (edison-rootfs.ext4). If you need bigger space, modify count=1024.
# dd if=/dev/zero of=edison-rootfs.ext4 bs=512K count=1024
# mkfs.ext4 -F -L rootfs edison-rootfs.ext4
# mkdir /mnt/image
# mount -o loop edison-rootfs.ext4 /mnt/image

Copy from eMMC to disk image

It is optional, but you can delete journal files before coping.
# cd /mnt/emmc/var/log/journal
# rm -rf *

It is also optional. But if a copied Edison is used somewhere else, it would be better to delete your Wifi information.
# cd /mnt/emmc/etc/wpa_supplicant
# cp wpa_supplicant.conf.original wpa_supplicant.conf

Now, copy all files.
# cp -a /mnt/emmc/* /mnt/image/
It seems to be better to use rsync because cp copies hard linked files as individual file. But then it needs to install rsync from opkg.
# opkg install rsync
# rsync -rlH /mnt/emmc/ /mnt/image/

Unmount and copy

# umount /mnt/image
# umount /mnt/emmc

Copy edison-rootfs.ext4 to a PC.

Clone

To make a clone, rename edison-rootfs.ext4 to edison-image-edison.ext4 and replace the same name file in a unzipped firmware directory. Then run flashall script and connect a target Edison.

(Strictly speaking, it is not a complete clone. It only copies rootfs. You might want to copy home and u-boot-env0 partitions too. To make more perfect clone, it needs to copy factory partition too. (That partition contains serial number and Bluetooth MAC address.))

2015/10/08

Intel Edison; boot from SD card.

There is very detailed post in Intel's forum. Basically I just follow the instruction in that post.
https://communities.intel.com/thread/61048

Prepare SD card

In my case, out-of-box Edison (edison-weekly_build_56_2014-08-20_15-54-05) did not have mkfs.ext4 command. But in the latest firmware (weekly-159), the command exists. And so you do not need a Linux PC to format SD card with ext4.

Copy edison-image-edison.ext4 in a zipped firmware file to Edison using scp command.
$ scp edison-image-edison.ext4 root@192.168.2.15:edison-image-edison.ext4
Or copy the file to a SD card.

Insert SD card to Edison. If you copied the file to SD card, then copy the ext4 image file to somewhere else as SD card will be formatted.
# cp /media/sdcard/edison-image-edison.ext4 /home/root/

Find SD card's device name
# mount | grep sdcard
In my case, it is /dev/mmcblk1.

Format it with ext4.
# umount /media/sdcard
# mkfs.ext4 /dev/mmcblk1p1

Mount ext4 image file and SD card.
# mount -o loop /home/root/edison-image-edison.ext4 /mnt
# mount /dev/mmcblk1p1 /media/sdcard

Copy files.
# cp -a /mnt/* /media/sdcard/

Configure U-Boot variables

I wrote a shell script based on the forum post.

#!/bin/sh
fw_setenv mmc-bootargs 'setenv bootargs root=${myrootfs} rootdelay=3 rootfstype=ext4 ${bootargs_console} ${bootargs_debug} systemd.unit=${bootargs_target}.target hardware_id=${hardware_id} g_multi.iSerialNumber=${serial#} g_multi.dev_addr=${usb0addr}'

# SD card
sdcard=`mount | grep sdcard | awk '{print $1;}'`
if [ "$sdcard" == "" ] ; then
  echo Insert SD card and try again.
  exit
fi
fw_setenv myrootfs_sdcard $sdcard

# eMMC
emmc=`/usr/sbin/fw_printenv uuid_rootfs | sed 's/uuid_rootfs=\(.*\)/\1/'`
fw_setenv myrootfs_emmc PARTUUID=$emmc

# Can use those at boot> prompt too.
fw_setenv do_boot_emmc 'setenv myrootfs ${myrootfs_emmc}; run do_boot'
fw_setenv do_boot_sdcard 'setenv myrootfs ${myrootfs_sdcard}; run do_boot'

# reboot from_sdcard or from_emmc
fw_setenv do_handle_bootargs_mode 'run do_preprocess_bootargs_mode; if itest.s $bootargs_mode == "ota" ; then run do_ota; fi; if itest.s $bootargs_mode == "boot" ; then run do_boot; fi; if itest.s $bootargs_mode == "flash"; then run do_flash; fi; if itest.s $bootargs_mode == "from_sdcard"; then run do_boot_sdcard; fi; if itest.s $bootargs_mode == "from_emmc"; then run do_boot_emmc; fi; run do_fallback; exit;'

The script modifies do_handle_bootargs_mode variable too. With this modification, you can boot from SD card by "reboot from_sdcard", or from eMMC by "reboot from_emmc".


2015/10/07

Intel Edison; flashing out-of-box Edison

There are two (or more?) ways to flash Edison.

  1. Phone Flash Tool (GUI) or flashall.bat/flashall.sh (CUI)
  2. reboot ota command or run do_ota at Boot prompt.
But it cannot use "reboot ota" method on out-of-box Edison. In my case, oob Edison's version is
root@edison:~# cat /etc/version 
edison-weekly_build_56_2014-08-20_15-54-05

And if you run reboot ota, it fails. The reason is in ota_abort_reason U-boot environment variable.
root@edison:~# fw_printenv ota_abort_reason
ota_abort_reason=Partition rootfs too small for edison-image-edison.ext4 

Oob Edison's partition layout looks like this.
Number Start End Size File system Name Flags 
 1 1049kB 3146kB 2097kB       u-boot0 
 2 3146kB 4194kB 1049kB       u-boot-env0 
 3 4194kB 6291kB 2097kB       u-boot1 
 4 6291kB 7340kB 1049kB       u-boot-env1 
 5 7340kB 8389kB 1049kB ext2  factory 
 6 8389kB 33.6MB 25.2MB       panic 
 7 33.6MB 67.1MB 33.6MB fat16 boot 
 8 67.1MB 604MB   537MB ext4  rootfs 
 9  604MB 1409MB  805MB       update 
10 1409MB 3909MB 2500MB ext4  home 

To compare, this is a partition layout after flashing to the latest firmware (weekly-159).
Number Start End Size File system Name Flags 
 1 1049kB 3146kB 2097kB       u-boot0 
 2 3146kB 4194kB 1049kB       u-boot-env0 
 3 4194kB 6291kB 2097kB       u-boot1 
 4 6291kB 7340kB 1049kB       u-boot-env1 
 5 7340kB 8389kB 1049kB ext2  factory 
 6 8389kB 33.6MB 25.2MB       panic 
 7 33.6MB 67.1MB 33.6MB fat16 boot 
 8 67.1MB 1678MB 1611MB ext4  rootfs 
 9 1678MB 2483MB  805MB       update 
10 2483MB 3909MB 1426MB ext4  home 

reboot ota command cannot change a partition layout, because the command refers files in update partition and rootfs partition is followed by update partition. If extend rootfs partition size, it destroys update partition.

On the other hand, flashall command does the following steps.
  1. Flash u-boot0/1 and u-boot-env0/1 partitions.
  2. Reboot.
  3. Flash rootfs partition.
At the second reboot step, U-boot overwrites a partition table using updated partitions variable at the first step.
root@edison:~# fw_printenv partition
partitions=uuid_disk=${uuid_disk};name=u-boot0,start=1MiB,size=2MiB,uuid=${uuid_uboot0};name=u-boot-env0,size=1MiB,uuid=${uuid_uboot_env0};name=u-boot1,size=2MiB,uuid=${uuid_uboot1};name=u-boot-env1,size=1MiB,uuid=${uuid_uboot_env1};name=factory,size=1MiB,uuid=${uuid_factory};name=panic,size=24MiB,uuid=${uuid_panic};name=boot,size=32MiB,uuid=${uuid_boot};name=rootfs,size=1536MiB,uuid=${uuid_rootfs};name=update,size=768MiB,uuid=${uuid_update};name=home,size=-,uuid=${uuid_home}; 

Just for reference, oob Edison's partition variable:
partitions=uuid_disk=${uuid_disk};name=u-boot0,start=1MiB,size=2MiB,uuid=${uuid_uboot0};name=u-boot-env0,size=1MiB,uuid=${uuid_uboot_env0};name=u-boot1,size=2MiB,uuid=${uuid_uboot1};name=u-boot-env1,size=1MiB,uuid=${uuid_uboot_env1};name=factory,size=1MiB,uuid=${uuid_factory};name=panic,size=24MiB,uuid=${uuid_panic};name=boot,size=32MiB,uuid=${uuid_boot};name=rootfs,size=512MiB,uuid=${uuid_rootfs};name=update,size=768MiB,uuid=${uuid_update};name=home,size=-,uuid=${uuid_home}; 


2015/09/21

シクロクロスのタイヤ (Schwalbe Marathon)

ほとんど通勤でしか乗らないので、セミスリックのタイヤ(Continental Cyclocross Speed 700x35C)を付けていたけれども、週末サイクリングを再開したら連続して3回もパンクしたので、タイヤを変えてみることにした。

ちなみにパンクの原因は木の枝についていたと思われるトゲ。未舗装のちょっと荒れた道も問題なく走ることができるので油断していた。長さ5-6mmで細いけれどもかなり固いとげが刺さって、きれいな丸い穴がチューブに開いていた。
枝にトゲが付いているのは季節的な問題かもしれないし、しばらくコースを変えてもいいんだけど、連続パンクの気分を変えるためにもタイヤを新調することにした。

左からシクロクロス、セミスリック、ツーリング。
買ってきたのは、Schwalbe Marathon Original Wire Bead Tyre 700x32C。(オンラインショップではそういう名前になっていたけど、Schwalbeのサイトを見ているとMarathon HS 420というみたい。)
 カテゴリ的には、シクロクロスのタイヤではなくてツーリング用のタイヤになる。そういえば、昔乗っていたブリヂストンのロードマンに付けていたタイヤがこんな感じだったような。

左の写真には写っていないけれど両サイドには白いラインで反射材が塗られている。ナイトライドはしないし、あと数週間でdaylight saving timeになるので、路上での効果のほどは半年先まで分らないけれども。

指でつまんでみると、Continentalのセミスリックは明らかに薄いペラペラな感じで、Schwalbeは商品説明にあった通り、何かつまっているというか、多層になっているのが感じられる。

最初に乗った時の感想は、軽い! 硬い! ブロックタイヤをセミスリックに変えた時も速くなったけれども、それよりももっと軽い感じで走れる。Continentalのは5-6気圧の高めの空気圧にしてもやわらかい感じの乗り心地だったけど、このSchwalbeのは4気圧強くらいでも路面のゴツゴツ感が伝わってくるような硬い感じになった。

タイヤを替えてから2週間ほど乗っているけれども、とりあえず通勤時にパンクはしていないし、週末サイクリングでも同じをコースを走って木の枝をパキパキ折りながら走ってもパンクはしていない。ということで、とりあえず満足。

でも、まったり走るにはContinentalのタイヤはちょうどよい感じだったので、Schwalbeの同じMarathonの35Cがちょっと気になる。

2015/09/03

Intel Edison as a Bluetooth low energy (BLE) peripheral

I have had the chance to play with Intel Edison recently. The goal is to make Intel Edison act as a BLE peripheral. There are nice articles about it and I followed instructions in those pages. But there were some small problems to achieve my goal.


First of all, I flash Edison with the latest firmware; Intel Edison® Board Firmware Software Release 2.1 (edison-image-ww25.5-15.zip). Or uname -a shows
Linux Edison3 3.10.17-poky-edison+ #1 SMP PREEMPT Fri Jun 19 12:06:40 CEST 2015 i686 GNU/Linux
Or /etc/version says
weekly-159
Your Edison might behave differently if different version is running.

To make long story short,


Basic settings including wifi network

# configure-edison --setup


Install software using opkg

Edit /etc/opkg/base-feeds.conf file.
# vi /etc/opkg/base-feeds.conf

Add following lines.
src/gz all http://repo.opkg.net/edison/repo/all
src/gz edison http://repo.opkg.net/edison/repo/edison
src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32

Install systemd-dev and bluez5-dev.
# opkg install systemd-dev
# opkg install bluez5-dev

Install software using npm

# npm -g install async
# npm install noble
# npm install bleno

Enable Bluetooth device

Disable bluetooth daemon (bluetoothd). You need run it only once.
# systemctl disable bluetooth

You have to run these commands every time after boot.
# rfkill unblock bluetooth
# hciconfig hci0 up

Run sample program (echo)

Start node process.
# cd node_moduels/bleno/examples/echo
# node main.js

While a node process is running, open other terminal and down/up hci0 device.
# hciconfig hci0 down
# hciconfig hci0 up

Now, try to connect from other BLE supported device, such as a smartphone. There should be a BLE peripheral named 'echo'. I use an Android application, "BLE scanner". With this app, you can read and write data to/from BLE device, that is quite handy.

Problems


Network interface, usb0

After running configure-edison command, there are two network interfaces; usb0 and wlan0. But I could not connect to Edison using ssh via wifi because the routing table is looks like below.
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.2.253   0.0.0.0         UG        0 0          0 usb0
192.168.2.0     0.0.0.0         255.255.255.0   U         0 0          0 usb0
192.168.2.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0

I do not need usb0. So disable it.
# ifconfig usb0 down

It deletes default gateway too, so add it again.
# route add default gw default-gateway-IP-address
In my case,
# route add default gw 192.168.2.253

Or you can permanently change usb0's IP address by editing the following file.
# vi /etc/systemd/network/usb0.network


Installing Bleno

When installing Bleno, it installs bluetooth-hci-socket module too. But it requires libudev.h and there is no such file in Edison as default. Thus it failed to install Bleno.
The header file is included in systemd-dev package. And so you need to install it before installing Bleno.

Running Bleno

Before disable bluetoothd, it advertises a name using a host name. If you name your Edison board "my_edison", you will see "my_edison" bluetooth device from other device. After disable bluetoothd (or kill bluetoothd process), the board still advertises using a bluetooth chip name? In my case, "BCM43340B0 37.4 MHz WLBGA_iTR Intel Edison-0122-N".
I am not an expert of Bluetooth and so I do not know a proper solution. But I found the workaround of it. To let Bleno process advertise correctly, hci0 interface needs to be down and up again while Bleno process is running. And so Bleno process can advertise its own name.

2015/08/10

Windows 10へのアップグレード おまけ

Dell Inspiron 11 3147 2-in-1をWindows 10にアップグレード後、タッチパッドのドライバがうまくあたらない問題を調べていたら、意外な解決方法だったので記録として残しておく。

まずはDellのサイトからダウンロードできる、
  • Dell TouchPad driver (Input_Driver_W9HP3_WN32_19.0.9.4_A00.exe)
をインストールしても、最後の表示は成功となるのに実際にはドライバは適用されていない。デバイスマネージャーを見てもPS/2 Compatible Mouseのままになっている。

インストーラーの中身を展開すると、
  • Synaptics_v19_0_9_4__C__x64__Win7_Win8_Win81_Win10__Signed__DellWPF_RMIHID.exe
というファイルが見つかるので、ファイル名を見る限りは最新のWindows 10に対応したサイン済みのドライバーに見える。

念の為、ブートオプションでDisable driver signature enforcementを選択してから起動してインストールしてみたけれども、やはりうまくいかない。

さらに調べていたら以下の情報を見つけた。
http://en.community.dell.com/support-forums/laptop/f/3518/t/19632025

どうやら、I2C Controllerの新しいドライバが悪さをしているらしい。なので、再度Dellのサイトから今度はWindows 8.1用の
  • Intel Celeron & Pentium Processor I2C Controller Driver
をダウンロードしてインストールしてみた。すると、デバイスマネージャーのマウスのセクションにPS/2 Mouseだけじゃなくてunknown deviceがもう一つ表示された。そこで、最初のDell TouchPad driverをインストールすると、今度は正常にインストールされてunknown deviceがDell Touchpadとして認識された。

これでようやく掌検出とかジェスチャーが使えるようになった。

Windows 10へのアップグレード その2

Windows 10をDell Inspiron 11 3147 2-in-1へクリーンインストールした後の作業。

不明なデバイス

クリーンインストール直後は不明なデバイスが6個あった。

とりあえず、Windows Updateを走らせてみた。

4個まで減った。上から順番に、
  • Intel Trusted Execution Engine (8086:0f18)
  • ValleyView SMBus Controller (8086:0f12)
  • ValleyView LPIO2 I2C Controller (8086:0f41)
  • Intel Virtual Buttons (ACPI/VEN_INT DEV_33D6)
らしい。
ドライバをダウンロードするためにDellのサポートページにいくと、親切にもOSの選択にWindows 10が追加されていた。

さっそく、そのものずばりのIntel Trusted Execution Engine driverがあったのでダウンロードしてインストール。次は、Intel Virtual Buttons。
残りの2個は、恐らくIntel Chipset driverだろうと予測してダウンロードしてインストール。全部なくなった。

アプリケーションのインストール

タブレットモードにした時に、自動でキーボード/トラックパッドが無効にならなかったので、
  • Dell Quickset Application
もDellのサイトからダウンロードしてインストールした。
タイピング時の掌検出もデフォルトのドライバにはない機能のようなので、
  • Dell Touchpad Driver
もダウンロードしてインストールしたけれども、設定画面に辿り着けない。インストールに失敗しているわけではなさそうなんだけど、後で調べることにする。
[追記: 08/10/2015] 解決した。

次は環境を整えるためのアプリケーションをインストールする。
  • (アプリじゃないけど)レジストリを書き換えてCaps LockをControlにする
  • CorvusSKK
  • Xkeymacs
あとは、個人的な定番アプリ、Google ChromeとかVLCとか、をインストールするだけ。

2015/08/09

Windows 10へアップグレード その1

サブ マシンのDell Inspiron 11 3147 2-in-1をWindows 10にアップグレードした。

おおまかな手順は以下の通り。
  1. リカバリ用のUSBメディアを作成。
  2. 現状のWindows 8.1をUSB HDDにバックアップ。
  3. ハードウェア(SSDとRAM)のアップグレード。
  4. USBのリカバリ メディアでブートしてSSDにWindows 8.1をインストール。
  5. Windows 8がアクティベーションされていることを確認。
  6. Windows 10のクリーン インストール用のメディアを作成。
  7. Windows 8.1をWindows 10にアップグレード。
  8. Windows 10がアクティベーションされていることを確認。
  9. USBのインストール メディアでブートして、クリーンインストール。
  10. Windows 10がアクティベーションされていることを再確認。

リカバリ用のUSBメディアを作成

プリインストールされていた専用のツール、Dell Backup and Recoveryを使って作成するのだけれども、購入直後に作成しておいたので、それを利用した。

Windows 8.1をUSB HDDにバックアップ

これはWindows付属の機能、System Image Backupを使ってUSB HDDにバックアップした。

ハードウェアのアップグレード

万一に備えてWindows 8.1のディスクを残しつつWindows 10にアップグレードしたかったので、ついでにHDDをSSDに換装した。相性問題で苦労したけれども、それについてはこちらを参照

Windows 8.1をリカバリ

作成しておいたリカバリ用のUSBでブートしてリカバリをする。リカバリ先のディスク サイズが違うとリカバリできないという話を聞いていたけれども、エラーも警告もなくそのままリカバリできた。
出荷時の状態まで戻るので、適当にセットアップしてアクティベーションされていることを確認する。

Windows 10のメディアを作成

Download Windows 10のページからDownload Toolをダウンロードして、クリーンインストール用のメディアを用意しておく。4GBのUSBメモリが必要。

Windows 10にアップグレード

再度ツールを起動して、今度はWindows 10にアップグレードする。以下のページの説明を読むと、一度Windows 8からWindows 10にアップグレードしておかないと、クリーンインストール時に(通常のインストールのように)プロダクトキーが必要になると書いてある。
ということで、Windows 8がインストールされている状態からWindows 10にアップグレードした。
特にエラー等は起きず無事に完了。どうせ消去するので詳しく見てないけれども、unknown deviceが2個あった。

Windows 10のクリーンインストール

作成しておいたUSBで起動して、最初の言語やキーボードを選択するダイアログが表示されたらShift+F10を押してコマンドプロンプトを表示させる。Diskpartコマンドを使ってドライブをパーティション情報ごと完全に消去する。

インストールの途中でプロダクトキーの入力をする画面になったけれども、スキップできる。インストールが終って最初のセットアップ画面でも、プロダクトキーを入力するように促されるが、そこもスキップできた。

アクティベーションの確認

プロダクトキーの入力を2回スキップしたけれども、コントロールパネルを開いて確認すると、アクティベーション済みと表示されていた。

ということで、とりあえずのWindows 10へのアップグレードは完了。

Dell Inspiron 11 3147 2-in1 ハードウェアアップグレード

Windows 10にアップグレードするついでに、以前からやりたかったハードウェアのアップグレードをした。HDDをSSDに換装して、メモリも(無駄に)8GBにアップグレードした。
同様のアップグレードは何度もしてきたので、余程の間違いをしない限り問題はないだろうと思っていたけど、甘かった。今まで会社のマシンを何台もSSDにアップグレードしたけれども一度も相性問題に遭遇したことはなかったので、下調べもせずにSSDを購入したら見事に相性問題にぶちあたってしまった。

HDDとメモリのアクセス

DellのサイトにPDFの取説があるので、それを参照しながら作業する。ネジを9本外すと底面カバーが外れるので、バッテリーも外す。HDDをSSDに換装して、4GBのメモリ モジュールも8GBと取り替える。
バッテリ、HDD、メモリを外したところ
メモリはシルクプリントの通り、DDR3L/1.35Vの低電圧に対応したモジュールにしか対応していないので注意。SSDは高さが7mmまで大丈夫。

SSDの認識

相性問題に気が付いたのは、リカバリを始めた時。リカバリらしき画面が出る前にエラーメッセージが表示された。メッセージの中にディスクサイズが表示されている部分があるけれども、それが0GBでもなく、間違った容量でもなく、空欄になっていた。

おかしいなと思って、試しにWindows 8.1のインストールメディアを用意してインストールしようとすると、、、SSDが見つからない。SATAコネクタを再確認したけれどもやっぱり見つからない。BIOSが何か変なのかと思って覗いてみると、BIOSの段階で既に見えていない。
Fixed HDDが[Not Detected]になっている
初期不良の可能性もあるので、他のPCで試したところ、特に問題なく使用できたので、初期不良というわけでもなさそう。

購入したのはCrucialのBX100というモデルで、検索してみるとSSDが認識されなくなるという症状の例はたくさん見つかって、Crusialのフォーラムでも数年前から話題になっているみたい。対処法は、power cycleと呼んでいるみたいだけど、20分ほど通電して(ただし通電のみでデータ通信はさせない)、30秒ほど電源OFFを2回繰り返しするらしい。


他にも似た方法がフォーラムにあるけれども、基本は通電だけしばらくして放っておく必要があるようだ。ただし、これで確実に直るわけでもなさそう。

しかも自分の場合は、どうやら完全に認識されないわけじゃなくて、認識されている時とされない時がある。くわえて認識されているかどうかBIOSに入って確認すると、認識されていたとしてもBIOSを抜けた後に認識が解除されてしまっているらしい。セーブして抜けても、セーブせずに抜けても、いきなりCtrl+Alt+Delで再起動してもだめ。
運がいいと認識される。でもBIOSを抜けると×。
BX100用のファームウェアをMU01からMU02にアップデートしたけれど改善しない。InspironのBIOSにもA06というアップデートがあったので、アップデートしてみたけれども、やっぱりだめ。

完全にお手上げ状態なので、あきらめて他のSSDを購入することにした。選んだのは、OCZのARC 100。こちらは何も問題なくスムーズにアップグレードできた。

2015/06/04

ガスチェアーの修理

折れたアームレスト
左の写真のタイプのガスチェアーはアームレストが壊れると、座面と背もたれが固定されなくなって椅子として使い物にならなくなる。

何十万円もするような高級品じゃないし (そんな高級品ならそもそもこんな壊れ方はしない?)、買い替えればいいんだけど、まだまだ使えそうなのでちょっともったいない。











試作

適当に木の板でも付ければ直るんじゃないか? ということで、家で使っている椅子が壊れたのでやってみた。

切れ端を適当な大きさにして、ネジ穴を開けただけの板を取り付ければ、とりあえず椅子は使用できる状態になった。

修理できることが分ったので、今度は会社にある壊れて放置してあった椅子をもうちょっと格好良く直してみた。1枚目の写真がその壊れた椅子で、アームレストが折れている。







まずはアームレストの大きさに合わせた板を2枚切り出す。

元のアームレストを参考に、適当にそれっぽい曲線を引く。板の厚さは18mmなので、実際に腕を置くと痛いかな? と思い、でも腕を置くために幅の広い板を作って付けるのも面倒なので、アームレストは省略した。

ジクソーで切る。

ちなみに、これを切ろうとした時に確か$30くらいで買ったジクソーが壊れたので、今度は$70くらいのRYOBIの新しいジクソーを買ってきた。いい感じによく切れるし、精度も日曜大工には十分みたい。

次は、ルーターで縁取りして見た目をちょっと良くする。

ルーターは$100くらいのを買ってきて、今回初めて使ってみた。本格的?なやつは両手で持つようになっていて、大きさもでかいけど、これはシンプルな円筒形の片手でも使えるやつ。
とりあえず、サンディングより簡単に、しかもサンディングじゃできないような形に削ることができて、満足。

あとはネジのための穴を空けて加工は終り。

仕上げにサンドペーパーをかけて、最後のネジ止めはお手伝いしたいという子供にやってもらった。

できあがり。
作業自体は、途中で壊れたジクソーを買いに行ったりしたのを除けば、2時間くらいだったはず。材料費も安いMDFを使ったので$20くらい。

2015/03/20

Adobe CS5 Master Collection と OS X 10.10 Yotemite

デザイナーさんがWindowsからMac OSに移行したいというので、先日無償修理から戻ってきたMacBook Proの設定をした。

まずは通常通りに、ドメインに参加させて、antivirusとかOfficeとかインストール。次に、デザイナーにとって一番大事なAdobe CS5をインストールと思ったら、WindowsのライセンスとMac OSのライセンスは別らしい。個人的にLightroomを使っていて、というかLightroomしか使ったことがないから知らなかった。

このページ (https://helpx.adobe.com/x-productkb/policy-pricing/order-product-platform-language-swap.html) によると、交換を申し込めばできるようなので、手順に従って申し込んだ。

返事が戻ってくるまでに、インストールと動作確認を済ませておこうと思い、インストールしてトライアルで起動してみたら、Photoshop CS5が動作しない。検索してみると、原因はすぐに判明して、古いJAVAが必要らしい。このページ (https://support.apple.com/kb/DL1572) からダウンロードしてインストールすれば、無事に動くようになった。

アップデートも済ませておくかということで、Adobe Application Managerもダウンロードしてインストール。が、いつくかアップデートに失敗してしまう。これも検索すると、すぐに対処方法が見つかって、ログファイル (~/Library/Logs/AdobeDownload/DLM.log) を見れば、失敗したアプデータのダウンロードURLが分るので、1個づつ手動でダウンロードして実行した。


厳密には、CS5はYosemiteに対応していないので、デザイナーさんが使い出したらもっと不具合が出てくるんだろうか?まぁ、そうしたらCreative Cloudに移行するしかないのかな。そっちのほうがライセンス管理とか楽そうだし、大歓迎なんだけど…

2015/03/12

Nexus 7 (2012) と 5.1 Lollipop

Lollipopにアップデートしてからというもの、遅くて使うとイライラさせられていたNexus 7 (2012)に5.1のOTAが来た。サイズは101.6MB。改善されていると嬉しいなぁと思いつつ、さっそくアップデートしてみた。

………変化なし? と思ったけれども、キャッシュ パーティションのクリアをしたら、ちょっとマシになった。でも、やっぱり4.4 Kitkatのころのような動作の軽さにはほど遠い。

ファクトリー リセットはまだ試してないんだけど、やってみるべきだろうか…

[追記]
ふと思いついて、antivirus (avast)をアンインストールしたら、あれ? サクサク動く。もしかして、Lollipopだけのせいじゃなかったのか?

[追記の追記]
検証のため、antivirusを再インストールしてみた。そうすると、やっぱりちょっと遅くなるというか、何か操作した時の動作に引っ掛かりがある。以前は投げ捨てたくなるほどのイライラさとすると、今はたまにイラっとさせられるくらい?
アプリの再インストールが動作の改善に効果があるとすると、ファクトリーリセットして全アプリを再インストールすれば、もっと良くなるんだろうか?

2015/03/10

MacBook Proの無償修理

MacBook Proの無償修理プログラム (http://www.apple.com/nz/support/macbookpro-videoissues/)が始まったので、会社にある2台のMacBook Proを近所のディーラーに2月27日の午前中に持っていった。これを書いている今日は3月10日なので、土日を除くと7日目で戻ってきたことになる。
早速、Yosemiteをインストールしたり、Boot CampでWindows 8.1をインストールしてみたけれども、特に症状は出ていない。当然といば当然か。

2015/03/04

Dell Inspiron 11 3147 2-in-1 その2

パームレストの部分は熱くならないけど、排気口があるところ、中央の奥の部分 (ファンクションキーの上あたり) はけっこう熱くなる。ちゃんとここから排熱しているということだろうか。

普段は無音に近いけど、この間何かの拍子に数十秒くらいファンが(恐らく)全力で回ったことがあって、初めてファンの音を聞いた。とりあえず、甲高い気に障るような音ではなかった。まぁ、普通のファンの音。

セキュアブート: Ubuntu

Ubuntuがセキュアブートに対応していると聞いていたので、14.04.1をインストールしてみた。
最初のブートでは、GRUBのメニューが出て、インストールを選んだ後、なぜか画面表示が一切なくブラックアウトしたような状態になったけれども、再起動して再挑戦したらすんなりとインストールできた。

セキュアブート: FreeBSD

FreeBSDはどうかなと思って調べてみると、10.1からセキュアブートに対応しているらしいのでインストールしてみた。が、セキュアブートに引っかかってブートしなかった。
エラー メッセージ
セキュアブートを無効にするとブートローダまでは動いたけれども、その後カーネルパニックになってしまう。
カーネル パニック
セキュアブート関連の設定項目を見ると、"Add Boot Option" というのがあってファイルのパスを指定できるようになっている。でも、何のファイルのパスかは知らない。UEFIをもっと勉強しなくては…

UEFI/BIOSの設定画面

BIOS ブート: FreeBSD

ついでなので、BIOS/Legacy Bootに切り替えてFreeBSDをインストールしてみた。今度は特に問題もなく完了した。でも、無線ネットワークが使えないみたい。ドライバがまだないのかな。

2015/02/17

Dell Inspiron 11 3147 2-in-1

Dell Inspiron 11 3147 2-in-1 (Mid 2014)を購入した。マイナーチェンジや国によって細かい仕様が違うみたいなので、違いそうなところのスペックは大体以下の通り。
  • Intel Celeron N2830
  • DDR3L-1600 PC3-12800 4GB (動作はCPUの制約でDDR3-1333)
  • Seagate 500GB 5400rpm
  • Intel AC-7260
現在の最新機種はN2840を積んでるみたいなので、マイナーチェンジ前のモデルだと思う。

とりあえず、一週間ほど使ってみた感想。

サイズと重さ

15インチのXPSに比べると、当たり前だけど、圧倒的に軽くて小さくて薄い。でも、自転車通勤しているので、バックパックに入れてみたら+1.4kgは重く感じた。完全に個人用途で購入したので会社に持っていくのは稀だろうから問題ないけど、毎日は遠慮したい感じ。(反対に毎日運べば慣れるのかな。)

キーボード

キーボードはちょっとやわというか、ちょっと強くたたくとへこむ感じ。XPS 15はその辺も丈夫で、たわんだりはしない。普段はFilcoのメカニカルを使っているので、それとは違いすぎて比較はできないけれど、少なくとも嫌いな感触のキーボードではない。

タッチパッド

タッチパッドも、普段はAppleのMagic Trackpadを使っているので、それと比較するとすごくいいというわけじゃないけど、悪くない感じ。でも、タイピングしている時はそれを自動で検知してタッチパッドが無効になるはずなんだけど、たまにうまく検知してくれなくて、予期しない場所がクリックされてしまう。Fnキーにタッチパッド無効を割り当てて欲しかった。
設定で変更可能だけど、デフォルトで二本指のスクロールとか二本指タップで右クリックになっていて、Magic Trackpadと同じ操作なのはすぐに慣れている操作で使えてすごく良かった。

ストレージ

まだHDDのままなので、アプリの起動時なんかにちょっともたつく感じ。SSDに換装したら、たぶん改善されると期待。

ディスプレイ

IPSだから視野角は良好。額縁部分は2cmくらいあって、しかも反射するからちょっと気になる時がある。
子供と一緒に画面を見るときとか、テント置きが意外と便利。キーボードは自動で無効になるから、"間違って"押されることもないし、タブレットみたいに平置きして"全体重"でタッチされる心配もない。
ヒンジの作りは、カッチリしていて粘りもあって、調整したい角度にきちんと合わせられていい感じ。

ネットワーク

Wifiはせっかく11acに対応しているのに、家のアクセスポイントは5GHzにも対応していないb/g/nなので、11nの130Mbpsで接続中。11ac時の安定性はまだ不明だけど、Plexサーバに繋いで、ストリーミングで動画観るくらいなら無問題。

バッテリ

購入時の条件だった4時間は余裕で、もっと長時間でも大丈夫みたい。

動作音

ファンは1個ついているけど、XPSやMac miniに比べると動作音は非常に静か、というかほとんど無音に近い? そもそもCPUを酷使するような用途で使っていないし、足元にHP ML110 G6を置いているからたいして気にならないというのもあるかも。

ソフトウェア

プリインストールされているアプリはDell製のユーティリティが8個と、McAfeeだけ。McAfeeを初めて使ったけど、たまに動画再生がもたつく時があって、それは裏でMcAfeeが動いているからと判明したので入れ替え予定。

リカバリディスクをUSBスティックメモリに作成したら、6.8GBくらいだった。(どのくらいの容量が必要なのかわからなかったので32GBのを使ったけど、たぶん8GBでもいけそう。)

HDDはGPTでフォーマットされていて、5個のパーティションがあって、最後の7.35GBのリカバリ パーティションが恐らくリカバリイメージが入っているパーティション。C:ドライブには457GB割り当てられていた。

BIOSのヴァージョンがA02だったので、最新版のA03にアップデート。デフォルトはEFIブートでSecure bootがオンになっている。ほかのOSを入れるときは、オフにする必要がありそう。


2015/02/12

ノートPCの構造

なんとなく、今まで分解してきたノートPCの構造を分類してみた。

ウィンドウ アクセス型

メモリやHDDにアクセスするために、底面に窓が開いているタイプ。丁寧に、メモリやHDDのアイコンがマークされている時もある。アップグレードが簡単。蓋にメッシュがついている場合が多く、空気が流れる反面、定期的に掃除する必要がある。

底面一体型

底面が全部外れるタイプ。代表的なのはMacBook Proとか。ウルトラブックの頃から増えてきている気がする。

お碗型 1

底面と側面が一体になっていて、内部にアクセスするには、キーボードとトップカバーを外すタイプ。アップグレードは不可能じゃないけど、ちょっと面倒。トップカバーを外す時に、爪を壊さないよう緊張する時がある。

お碗型 2

内部にアクセスするにはお碗型 1と同じようにキーボードとトップカバーを外さないといけないけど、メモリにアクセスするにはさらにマザーボード/システムボードを外さないといけないタイプ。アップグレードが一番面倒くさい。

スロットイン HDD

ウィンドウ アクセス型に分類してもいいけど、光学ドライブのように、HDDも横からスロットインできるタイプ。あまり見かけないけど、Dell XPS L401Xがそうなっていた。


最近は、メモリもストレージもオンボードのが増えてきて、自分でアップグレードできなくなってきているのが悲しい。まぁ、アップグレードっていってもメモリとストレージとLCDパネルくらいしか交換できないし、そういうアップグレードを楽しんだりするのはデストップでしろってことか。

どこかのメーカーで、Project AraをノートPCでやってくれないかな? 自分でコンポーネントを組み合わせて、自分の用途にあったノートPCを組み立てられると楽しそう。

2015/02/08

ネットブック

画面が11インチくらいの、いわゆるサブノート/ネットブックが欲しくなって探してみた。
主な用途は、
  • 居間のプロジェクターに繋いでホームシアターPC
  • デジカメを繋いで、テザー撮影
  • 室内の移動端末
Dell XPS L502Xはバッテリーが2時間くらいしかもたなくて、映画を1本観てるとスリープしそうになるし、Nexus 7を移動端末として使っていたけれども、Lollipopにしたら遅くてイライラさせられるようになってしまった。野外でタイムラプス撮影した時も、XPSだと重すぎるというか大袈裟すぎるというか、もっと小さいノートPCが欲しくなった。

ということで条件としては、
  • 画面は10インチか11インチ以下の小さいPC。
  • バッテリーは最低でも2時間以上。できれば4時間以上。
  • メモリはオンボードの場合は4GB。SO-DIMMで8GBに増設可能だと尚良し。
  • ストレージはSSDならオンボードでもいいけど、eMMCは不可。
  • 外部ディスプレイ
  • USB type A
  • 予算は$500くらい
探してみると、あまり選択肢がなくて、見つかったのはこれくらい。

Acer E3-111SO-DIMM$360
Asus X200onboard$500
Dell Inspiron 11 3000 2-in-1SO-DIMM$700
HP Pavilion Touchsmart 10SO-DIMM$370
HP Pavilion Touchsmart 11SO-DIMM$660
HP Pavilion X360SO-DIMM$600
Toshiba Satellite NB10SO-DIMM$490
Toshiba Satellite L10Wonboard$660

用途的にはメモリ2GBでも大丈夫だろうから、メモリはオンボード4GBの条件を緩和するとすれば、選択肢はもうちょっと増えるけれども、メモリは多ければ多いほどいいのでそこは妥協しないことにした。
一番安いAcerにしようかと思っていたけれども、過去の経験から品質にちょっと不安があったのでちょっと躊躇していたら、Toshiba NB10が20% offで$390のチラシがきた。この値段差ならToshibaの方がいいので、週末になったら買いに行こうと考えていたら、別の店からセールスのメールが来て、こちらはDellが15% off。$700のInspiron 11 3000が$600くらいになる。

実際に店頭で見てみると、IPSのディスプレイはきれいだし、2-in-1の仕組みも悪くなさそうなので(使い勝手も耐久性も)、Dell Inspiron 11 3147 2-in-1を買ってきた。しばらく使ってみて、初期不良のようなことがなければ、HDDをSSDに交換することにしよう。

2015/01/09

Pentax Remote Assistant

正月休みの間に、子供と一緒にLEGOを使ってストップモーション ムービーも作成して遊ぼうと思って、確かK20DがPentax Remote Assistantを使ってパソコンから操作したり、写真を直接転送できたはずだなぁと思ってやってみた。

付属CDを探すのが面倒だったので、リコーイメージングのページからダウンロードしてインストールしようとしたら、、、インストーラーがCDを要求してくる。しょうがないので、CDを発掘してインストールを完了。早速、USBケーブルでK20Dとパソコンを繋いで試みるも、Remote Assistantが異常終了してしまう。

アプリの動作条件を見るとWindows 7とかVistaになっているので、互換モードを色々と試して、それから管理者権限を与えると、起動はするようになったけれどまともに動かない。しょうがないから、まとめて撮って単純にコピーしようかと思ったけれども、一応解決策がないか検索してみると、PK_Tether (http://www.pktether.com) というソフトを見つけた。

K20DをUSBで繋いで、電源入れて、外付けドライブとして認識されたら、PK_Tetherを起動。まずは適当に使ってみたけれども、動作にも問題なさそう。

ということで、撮影中。



あとは、撮影した写真を動画に変換すれば完成。変換用のアプリは、検索すると色々とあるけれど、VirtualDub (http://www.virtualdub.org/http://sourceforge.net/projects/virtualdub/files/) が簡単そうなので使ってみた。基本的には、1つのフォルダーに写真を全部入れたら、最初の一枚を開いて、動画として保存するだけ。

すぐに飽きるかと思ったら、完成した動画を観ると刺激されるのか、短かいなりにも何本も作って、けっこう楽しかったみたい。