>

2013年12月15日日曜日

REGZAのブルーレイドライブに閉じ込められたディスクの救出方法



昨日無性にジャッキーチェンの映画が見たくなったのでブルーレイを借りて見ようとしたら、ディスクを読み込まずその後「ブルーレイディスクプレイヤーを起動しています」のままフリーズした。地デジモードにしてからブルーレイモードに戻しても、電源入れ直しても、イジェクトボタン押しながら電源投入しても、ディスクドライブの穴にピンを突っ込んでも(そもそもBDドライブのこの穴はそのような目的のものではないらしい)反応ない。ディスクももちろん取り出せない。TSUTAYAで借りたものなのに。ネットで調べた限りではスロットイン式のドライブのためか強制取り出しの仕組みもなさそうだ。保証期間は4ヶ月前に切れていて修理しても万単位の費用がかかるみたいなので分解してディスクの救出を試みることにした。

結論から言うと家庭用ドライバーセットがあれば1時間くらい格闘すればディスクの救出は可能です。そのときのメモを書きますが、あくまでこれを見て分解してみる人は各自の自己責任でお願いします。ちなみに僕のレグザの機種は40RB2です。

電源ケーブルをコンセントから抜く

当然ですが作業を始める前に電源ケーブルはコンセントから抜いてください。外装外すと中には高電圧の箇所もあるだろうし、分解作業でミスると二度ともとに戻せなくなる可能性もあるのでくどいようですがこの先は自己責任でお願いします。

外装を取り外す

本来裏のネジ(木ネジ17カ所、背面中部のネジ4カ所、出力端子付近のネジ2カ所)を取り外して外装を取り外します。背面中部のネジ4カ所のうち1カ所は電源ケーブル付近のネジです。ネジを全部外すした後に背面の外装を持ち上げると手で簡単に外せます。



BDスロットの外枠を取り外す

銀色のネジを2カ所外してスロットの外枠を外します。多少、溝みたいなのにはまってるようなので折らないよう気をつけて取り外してください。うまく傾けるようい引き抜くと外せます。


ドライブに接続されているコネクタを三本抜く

3本のコネクタを抜きます。下の写真で左二個は普通に引き抜けます。一番右のは白いツメみたいのと一緒につまんで引き抜けば抜けます。最初ちょっと固く感じるので注意して抜いてください。コネクタを外したらドライブを完全に筐体から取り外します。


ドライブを筐体に固定しているネジを外し、ドライブを筐体から取り外す

ドライブの側面4カ所のネジを外してドライブを筐体から取り外します。

ドライブ前面パネルを外す

ドライブ前面パネルは6カ所くらいのツメパッチンで固定されています。マイナスドライバでこのツメをつついて外してから手でパネルをを取り外します。

さらにドライブの外装を外す

とり外したドライブでさらに4カ所のネジを外してドライブの外装を外します。ここまでくるとあと少しです。ネジを外すと外装は上下にぱかっとはずれBDドライブが露わになります。

BDドライブ本体を分解する

露わになったBDドライブ本体の4カ所のネジを外します。するとBDドライブは完全には分解は出来ない(写真中の基盤で隠れている面にシールみたいなので接着されているためです。このシールははがすと後々面倒そうなのでやめておきます。)のですが手でカバーを持ち上げてやることで少し隙間が開くようになります。この隙間からディスクを指でつまんで救出することが出来ます。

再組み立てと復旧

ディスクを救出したら適当に必要なコネクタをとりつけて電源を投入します。(感電とかしないように気をつけて自己責任で行ってください。)するとブルーレイディスクプレーヤーが無事起動し「ディスクなし」と認識します。そこで取り出しボタンを押すと、スロットの入り口が開きディスク自体は(既に救出しているため)出てこないのですがディスクを出すように動作し、完全に正常な状態のディスクが空の状態になります。この状態で再び問題のジャッキーチェンの映画のディスクを恐る恐る入れてみると今度は正常に認識して再生出来ることが確認出来ました。(要するに今回の問題はディスクの問題とかではなくて単なる不運だったようです。ソフトウェア的なバグの可能性もあるので、ネットに接続してファームウェアをアップデートしておいた方が良さそうです。)
動作確認出来たらちゃんと組み立てて、無事作業完了です。

最後に宣伝

自作でAndroidアプリを作ったので宣伝させてください。お子さんにAndroidのスマホやタブレットを渡している方におススメのアプリです。スマホやタブレットで遊ぶことをご褒美に勉強をさせることができます。子供が勝手に勉強するようになります。






























2013年11月23日土曜日

XcodeでビルドしたOpenCVを参照するC++コードのビルド時のUndefined symbols for architecture x86_64

MacでOpenCVをビルドし、そのビルドしたライブラリを使用した自分のコードをビルドするときにリンカエラーが出て次のように表示される問題について。

Undefined symbols for architecture x86_64:

※ちなみに環境はOS X 10.9, Xcode 5.0, OpenCV 3.0.0-dev, CPU:2.5 GHz Intel Core i5(64bit), 開発言語はC++

実際にはOpenCVのdylibのパスも通っているし、そのdylibにはx86_64用にビルドした使用関数が含まれているにも関わらず、その関数が見つからないというエラーで結構はまったのでメモ。

まず前提として次のことは確認済みとする。
1)OpenCVのビルドをちゃんとx86_64で行っていることを再確認。(下図参照)
2)ビルドしたいOpenCVを使用しているプロジェクトのライブラリ参照パスOpenCVのdylibのディレクトリ(通常は/usr/local/lib)にOpenCVのdylibが通っていることを再確認。


以上がちゃんと出来ているのも関わらず冒頭のリンクエラーが出る場合はライブラリの設定を疑う。

・解決方法(コンパイラの設定)
XcodeのOpenCVプロジェクトのBuild SettingsのApple LLVM 5.0 - Language - C++のC++ Standard Libraryの設定をlibstdc++ (GNU C++ standard library)に変更して、OpenCVをリビルドして再インストール。OpenCVを参照しているコードを管理しているプロジェクトの設定も同様に変更して、ビルドする。すると、ちゃんとdylibの関数を見つけられるようになり、ビルドできるようになる。


補足
・XcodeでのOpenCVのビルドはhttp://blog.ra-labo.com/2011/01/opencv-macos-3c.htmlが参考になった。
・この記事ではアーキテクチャはx86_64に設定されていることを前提としているがUniversal(32/64-bit Intel(i386, x86_64))とかでもOpenCVのビルド設定と、OpenCV参照プログラムのビルド設定が一致していれば問題ないとは思う。
・なんでLLVMの設定でうまく行くようになったのかはネットの断片的な情報で関係ありそうなのをひたすら試してみただけなので詳しくは分からない。とりあえず、今は続きの実装したいのでスルーする。知ってる人いたら教えて。

最後に宣伝

自作でAndroidアプリを作ったので宣伝させてください。お子さんにAndroidのスマホやタブレットを渡している方におススメのアプリです。スマホやタブレットで遊ぶことをご褒美に勉強をさせることができるアプリです。子供が勝手に勉強するようになります。

2013年11月19日火曜日

ためになった記事のリンク集

gitからダウンロードしたopencv(3.0)の最新版をmac(Mac OS X)でビルド
http://blog.ra-labo.com/2011/01/opencv-macos-3c.html


2013年11月14日木曜日

VMWareの仮想Windowsで開発していてMSVCR90D.dllが見つからないと言われる件

VMWareの仮想Windows上でVisualStudioのプロジェクトを実行すると

「MSVCR90D.dllが見つからなかったため、このアプリケーションを開始できませんでした。
アプリケーションをインストールし直すとこの問題は解決される場合があります。」

のようなことを言われることがある。

プロジェクトファイルがVMWareの(Macとの)共有フォルダにあることが原因と考えられる。※その場合はプロジェクトファイルをフォルダごとごっそり共有フォルダではないフォルダに移動してからプロジェクトを再度開き、リビルドしてから実行すると解決する。

※VMWareをインストールするとデフォルトでドキュメントやピクチャ、デスクトップなど主要なフォルダが親Macと仮想Windowsで共有される設定になっていることがある。

お困りの方は試してみてください。

2013年10月6日日曜日

mac os moutain lion (10.8.5) にてmacportsでgettextがインストールできない件

macportsでvtkをインストールしようとしたら依存しているgettextのインストールで失敗したために結果的に失敗してしまった。詳細なエラーコードが残ってなくて申し訳ないのだが次のようなメッセージで失敗している。

 
Error: org.macports.build for port gettext returned: command execution failed
Please see the log file for port gettext for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_gettext/gettext/main.log
To report a bug, follow the instructions in the guide:
    http://guide.macports.org/#project.tickets
Error: Processing of port gettext failed
一度macportsでインストールしたプログラムを全てアンインストールする
 
$sudo port -f uninstall installed
gettextのインストールを再度試みる。
 
$sudo port install gettext
これでも失敗するのでもう一度gettextを削除する。
 
sudo port clean gettext
gettextのインストールを再度試みる。
 
$sudo port install gettext
するとなんだかよく分からないけどインストールに成功した。

2013年5月15日水曜日

Mountain LionでのMacOSX10.x.sdkの場所

macでネット上で公開されているソースコードをコンパイルするときによく /Developer/SDKs/MacOSX10.5.sdk といったパスを設定しなさい、という記述を見かけるがMountain Lionではこのパスが存在しなくてコンパイルできない。 Mountain LionではMacOSX10.x.sdkは /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk に移動したようなので記述するパスをこのようなパスに置き換えると多分うまく行く。

2013年4月19日金曜日

三次元点群データをgnuplotで表示

たまに三次元点群データ(point cloud)を可視化したいときがある。いろんな選択肢があるがgnuplotでもできるみたいなのでその方法をメモ。
 FILE* gp;
 gp = _popen("pgnuplot -persist","w");
 fprintf(gp, "splot '-' with points pointtype 1\n");
 for (int i = 0; i < objectPoints.rows; i++) 
 {
  fprintf(gp, "%lf %lf %lf\n", objectPoints.at<float>(i,0), objectPoints.at<float>(i,1), objectPoints.at<float>(i,2));
 }
 fprintf(gp, "e\n");
 fflush(gp);
 _pclose(gp);
ちなみにC++, Windows環境での例です。前提としてgnuplot windows版をインストールしていて、インストール時に環境変数PATHにgnuplotのフォルダパスを追加しておく(インストーラのチェックボックスで設定)必要があります。 http://www.gnuplot.info/