Jetson TX2を適当なケースに入れてみる

Jetson TX2を手に入れたが、裸で置いておくのは心配だし、たまにファンに指を突っ込んで痛い目にあう。ちゃんとしたケースに入れたいので試してみた。

 

ケースの選定

Miini-ITXであれば大抵大丈夫そうだが、Jetson TX2は意外と厚みがあったりするので、ネットで大丈夫という評判の、

MITXPC MX500 Industrial Fanless Mini-ITX Case

を買ってみた。

日本Amazonであれば、

https://amzn.to/2GRY3kg 

アメリカAmazonであれば、

https://www.amazon.com/gp/product/B01B575EMA/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1

で買える。日数がかかっても良ければアメリカのほうが安い。

 

取り付け

蓋やらブラケットやらを外して、4本のネジでJetson TX2を留める。

ネジ穴がピッタリ合うので気持ち良い。

取り付けるとこんな感じ。残念ながら、内蔵カメラは役に立たなくなる。

http://f.hatena.ne.jp/linuzau/20180329132804

 

裏側のコネクタ部は広くガバッと開いたままだが、ここを塞ぐには自分で工作するしか無い。自分は開いたままにしている。

http://f.hatena.ne.jp/linuzau/20180329132753

 

配線

買ったケースには電源ボタンと電源ランプが付いていたので、働かせてみる。

 

電源ボタンを働かすには、電源ボタンからのケーブルをJ6という2ピンのコネクタに差し込む。

ピントが甘いけどこんな感じ。

http://f.hatena.ne.jp/linuzau/20180329132742

 

電源が入った時に電源ランプを光らすには、GPIOコネクタの4, 6番ピンに電源ランプからのケーブルを差し込む。2, 4番ピンが+5V、6番ピンがGNDなので、隣り合っているという条件であれば、4, 6番ピンを使うしかない。

写真でも分かりにくいが、一番ピンの多いコネクタを、GPIO EXPANDという文字が見える方向で横に見て、左の上側2, 3番目がそれである。LEDは極性があるので点灯しなかったらたぶん逆である。

http://f.hatena.ne.jp/linuzau/20180329132732

 

以上の配線により、電源ボタンを押せば電源がONになり、LEDが点灯する。

http://f.hatena.ne.jp/linuzau/20180329132842

 

電源ボタンを押せばシャットダウンされ、LEDが消灯する。ただし、Ubuntuの標準状態ではアクションを問われるので、有無を言わさずシャットダウンされるようにするにはUbuntuの設定が必要。

詳しくは書かないが、

  • dconf-editor をインストールする。
  • org.gnome.settings-daemon.plugins.power を探して、button-power を shutdownにする。

という感じ。

 

感想

これで指を巻き込まれずにすむ。

TensorFlowなどを入れて遊んでます。

http://f.hatena.ne.jp/linuzau/20180329135454

 

Ubuntu 14.04 LTSでGoogleドライブを使ってみる


Ubuntu 14.04 LTSでGoogleドライブを動かす必要に迫られた。

どうせだったらWindowsとかMacとかのように、どこかのディレクトリにファイルを置いただけで自動的に同期されるのが良い。

すぐにできると思ったが、ちょっとだけ苦労したのでメモとして残しておく。

 

インストールの仕方

苦労した経緯を書いてもしかたがないので結論だけ書くことにします。

 
インストールするプログラムは、griveとgrive-toolsの2つ。

  • griveはドライブ同期を行うコア部分。
  • grive-toolsはGUIおよび自動同期のツール


grive-toolsはよそのリポジトリからインストールする。

残念ながら、Ubuntu 14.04 LTSのgriveが古いため、grive-toolsのインストールに失敗するので、griveも新しいもののリポジトリを追加する。

# griveの新しいのをリポジトリに追加
$ sudo add-apt-repository ppa:nilarimogard/webupd8

# grive-toolsをリポジトリに追加
$ sudo add-apt-repository ppa:thefanclub/grive-tools

# リポジトリデータベースをアップデートして
$ sudo apt-get update

# インストール
$ sudo apt-get install grive grive-tools

感想

あとはGUI自動起動や同期のON/OFFができます。
分かってしまえば簡単なものだ。

iMacのディスク名でハマったが復旧してみる

誕生祝いにiMacを買いました。xcodeemacsをコンパイルしようとしたらディスク名に空白が入っていてエラーになるので、ディスク名から空白を除いたところ、大いにハマったのでその記録です。

ご存知とは思いますが

Macでは、伝統的に、ハードディスクに"Macintosh HD", "Macintosh HD 2"の様な名前がデフォルトで付けられます。空白が問題を起こしそうな香りがプンプンします。インストール時に変えてやれば良かったのでしょうが、面倒でそのまま使ってました。

xcodeでのエラー

xcodeというかビルド時のスクリプトの問題ですが、ファイルのパスに空白があるとエラーになってしまいます。
例えば、emacs-23.3をソースからビルドしようとして、
"/Volumes/Macintosh HD 2/Users/tetsu/work/emacs-23.3"
にソースをおいてconfigureすると、

$ ./configure --with-ns --without-x
...
grep: /Volumes/Macintosh: No such file or directory


のように、Macintoshの後ろの空白のせいでスクリプトが勘違いを起こします。

やっちゃったこと

"Macintosh HD 2"の空白が悪いので、"MacintoshData"のような空白の含まれない名前にすればいいじゃないかという発想。"Macintosh HD 2"には自分のホームディレクトリが置いてあるので、下手をするとマズイことになるかと思い、下調べした。

  • ディスク名はファインダーから普通に変えて良い
  • ホームディレクトリを見失っても後で復旧できる

というような情報があったので、トライして見ることにした。

ファインダーでディスク名を変更。するとすぐにDropBoxが同期対象のディレクトリが見つからないとエラーを出すが、あとで直せばいいと、無視して再起動する。

起動したのでログインしようとしたら、できない。

試したこと

  • シングルユーザモードでディスク名を"MacintoshData"から"Macintosh HD 2"に変更 → 変わらず
  • Time Machineでシステムディスクを復元 → 変わらず

結局こうやって復旧

  • command-Rでリカバリモードで起動
  • resetpasswordでパスワードをリセット
  • rootユーザにパスワードを設定

こうすると、自分のアカウントではログインできないのは相変わらずだが、rootでログインできた。
rootでログインして、ディスクの名前を"MacintoshData"から"Macintosh HD 2"に変更してログアウトしたら、自分のアカウントでログインできるようになった。
セキュリティ的にまずいかもしれないが、rootアカウントは有効にしておいたほうが良いかも。あるいはrootアカウントの有効化手段を覚えておくか。

まだわからないこと

ホームディレクトリが置いてあるディスクの名前を安全に変えるにはどうしたら良いのでしょうか。

ベンチマークデータを公開してみる

ベンチマークデータの更新が辛くなってきたので、過去のデータを公開することにしました。csv形式なのでDBに綺麗に入れ直せばいろいろいじれると思います。

データ形式

ファイルは、http://tetsu.homelinux.org/android/benchmark/data/ に置きました。

ファイル名は、概ね、
Benchmark__<バージョン>[+<オプション>][-<通番>].csv
のように付けています。

権利

利用、配布、再配布などはご自由にどうぞ。
出来れば山田のデータを使った旨のクレジットタイトルがあるとうれしいけど、マナーの範囲なので無くても文句は言いません。

CyanogenMod-5.0.7-DS-test2のcompcacheを有効にしてみる

CyanogenMod-5.0.7-DSは、なかなか軽快で、HT-03AでEclairが常用できるぐらいの出来だと思う。
しかし、test1では有効にできたcompcacheがtest2では有効にならないようなので何とかしてみることにした。

解析

CyanogenMod-5.0.7-DS-test2をインストールする。

compcacheが有効になっているか確認する。

C:\> adb shell free
              total         used         free       shared      buffers
  Mem:        97764        88740         9024            0         1636
 Swap:            0            0            0
Total:        97764        88740         9024

あー、ダメだねー。

原因を探す。

# adb shell
# cd /system/lib/modules/2.6.33.3-cyanogenmod
# ls
kernel               modules.dep          modules.order
modules.alias        modules.dep.bin      modules.pcimap
modules.alias.bin    modules.ieee1394map  modules.seriomap
modules.builtin      modules.inputmap     modules.symbols
modules.builtin.bin  modules.isapnpmap    modules.symbols.bin
modules.ccwmap       modules.ofmap        modules.usbmap

compcacheモジュールが無い。

対策

update-cm-5.0.7-DS-test1-signed.zipを解凍する。
system/lib/modules/2.6.33.3-cyanogenmodの下にあるcompcacheフォルダを見つけ出す。

compcacheフォルダごと書き込む。

C:\> adb remount
C:\> adb push compcache /system/lib/modules/2.6.33.3-cyanogenmod/compcache
C:\> adb reboot

SparePartsでcompcacheをONにして、有効になっているか確認。

C:\> adb shell free
              total         used         free       shared      buffers
  Mem:        97764        92884         4880            0          324
 Swap:        24432         9740        14692
Total:       122196       102624        19572

うまくいった。

感想

Cyanogenはcompcacheが嫌いなのかしら。

Androidの時計をNTPで合わせてみる

Android端末をWifiで運用していると時計が自動的に合わないのでいろいろいじってみた。

(追記) 2010/5/15にNTPクライアントアプリ (http://amip.tools-for.net/android/ClockSync) が出てたので、今ならこれを使うのが良いと思う。

背景

Nexus One(Android携帯)の時刻同期のしくみ http://blog.takuo.jp/2010/03/nexus-oneandroid-phones-time-sync.html にある通り、Android端末は適切なSIM(日本ではドコモのみ)を使っている場合は自動で時刻同期をするが、他のSIMやSIM無しで運用している場合には時刻同期がなされない。

SIMを挿しているメイン機はともかく、ヒトバシラーの人たちはたくさんのAndroid端末を持っているものなので、何とかしてみたいと思った。

SNTPクライアント

まずはNTPクライアントを探してみた。

AndroLib.comにSNTP CLIENT http://jp.androlib.com/android.application.net-larko-android-sntpclient-xxwj.aspx があったので入れてみた。

SNTP CLIENTはNTPサーバからの時刻情報を表示するものの、機器の時計を合わせる機能がまだ実装されていない。

adjust_clock

SNTP CLIENTの作者のページにて、adjust_clock http://www.larko.net/adjust_clock を用いた時刻設定の仕方が紹介されている。

$ adb push adjust_clock /data/local/
$ adb shell chmod 755 /data/local/adjust_clock

ここでSNTP CLIENTの画面を見て、Local Offsetの値を1000倍した数値を覚えておく。

$ adb shell "/data/local/adjust_clock -67990 ; echo $?"
0

0が表示されたら成功。SNTP CLIENTの画面でも時刻が正しくなる。

なお、数m〜数十msecぐらいの誤差は残るので、あまり神経質にならない方が良いと思う。

感想

adjust_clockの処理が自動で行われなければあまり意味が無いと思う。
SNTP CLIENTがLocal Offsetをテキストで返してくれれば連動できそうなのだけれど。

ntpdateとかを動かした方が早いかもしれない。

SuperD v1.9.3とJITを組み合わせてみる

Android 1.6 (Donuts)でそこそこJITを安定的に動かせるようになったので、ベンチマークを測定してみる。

(追記)FastTest v2.8 Lite with WG-Kernel + JITも試したのでベンチマーク結果を載せました。

Donuts用JIT

JIT enabled Dalvik VM on Android 1.6 (Dusted Donuts)がxda(http://forum.xda-developers.com/showthread.php?t=637419)で公開されていたので試してみた。

対応するカスタムROM

作者によると、

  • Android 1.6 ROMS with a bit Eclair stuff in the Kernel and framework such as Cyanogen ROM 4.2.x, Super D 1.8 - 1.92, WG Y2.6, FastTest, KingKlick Eclair and more..
  • This libdvm.so works on Android 2.1 as well as it seems it should..
  • 1 st bootup is slow and I recommend you let it sit even when desktops are up for a couple of minutes and then reboot it, 2nd and 3rd bootups are faster and smoother response overall even for long durations, days.

とのことで、EclairっぽいDonutsで動くらしい。CSDIとSuperDで試したが、SuperDが安定して動いているようなのでベンチマークを測定してみた。
(追記)FastTest v2.8 Lite with WG-Kernelでも動きました。

インストール方法

上記のページで注意事項がいろいろ書いてあるので確認のこと。

やっていることといえば、/system/lib/libdvm.soを入れ替えるだけ。
スクリプトが付いているので、/system領域のリマウントやコピー、パーミッションの変更は一発で終わる。

注意事項

backupスクリプトで./bakにlibdvm.soのバックアップを取るようになっているが、bakディレクトリは自動では作られないので予め作っておく必要がある。あるいはbackupスクリプトを修正するか。

CSDIの場合は立ち上がらなくなった。なお、立ち上がらなくてもadb shellは効くので復旧は簡単。


感想

JITが当たり前になって欲しいと思う。