KVMスイッチを更新しました

自分の部屋はPCとモニタがそれぞれ何台かあるので、ずっとKVMスイッチ(キーボード、マウス、モニタの切替器)を2台使ってきました。

これまで使ってきたのはPS/2のキーボードとマウスに対応したものなのですが、かなり前からPS/2対応のマウスで2.4GHz無線タイプのものを見かけることがなくなっており、1台の切替器はPCごとにUSBマウスをつけていました。そのため、マウスが机の上に散乱する状態になってました。

しかし、最近追加したZ68マザーボードや、E-350マザーボードにはPS/2のコネクタはキーボード/マウス共用で1つしかありません。400円くらいで売っているPS/2-USBコンバータをつけて接続してみたのですが、どうもうまくコントロールできません。このままではさらにマウスが増えてしまう・・・・というのも困るので、USBキーボードタイプのKVMスイッチに今回更新してみました。

選択する上で心配したポイントは以下の通りです。

  1. 価格
    あまりお金をかけたくなかったので、あまり高くないこと。必然的にケーブル一体型になります。 多少配線しにくいですが、設置だけなので我慢します。
  2. 操作性
    これまでの切替器はCTRLを2回連打すると切り替わるタイプだったので、あまり操作性が変化しないこと。また、キーボードが2台ともHHK Lite(PS/2)なので、PS/2-USB変換器を経由してHHK Liteで操作できること。
  3. USBの安定性
    USBの切り替えというと初期の頃のUSB切替器のように実質的にPCから挿抜にみえるようなものはいろいろとトラブルを起こしそうなので避けたい。(これこそがこれまで更新しなかった原因なのですが)
  4. 切り替え台数
    PC4台切り替え対応であること。KVMスイッチ2台中1台は元々PC2台用なので、それでもいいのですけど。

で、調べてみると、ELECOMのKVM-KU4しか実質該当するものがありません。メーカーのWebサイトからマニュアル類がダウンロードできるのでそれを見てみると、ホットキー(切替キー)が「SHIFT+ScrLk 2回+数字+Enter」ということで、HHK Liteでは「SHIFT+Fn+O 2回+数字+Enter」になってかなり面倒くさそうです。しかし、ScrLkはCtrlに変更できるとのことなので、購入してみました。

Amazonさんの当日お急ぎ便で注文したら、(当然ですが)その日のうちに届きました。値段は5500円位でした。

で、早速HHK liteをPS/2-USB変換を経由して接続して設置、キーの設定を切り替えて使ってみました。ちなみに、キーの設定変更は切り替えに必要なNumLockキーもテンキーの「-」キーもないためにHHK liteではできませんので、別の安物USBキーボードをつないで実施しました。

キーボードをHHK liteに戻してみた結果、非常に快適な使い心地でした。入力信号に応じた自動切換がないので、リブート時やディスプレイのOFF時に勝手に切り替わることもありません。入力信号がOFFした際に勝手に切り替わると一見便利なのですが、リブート時にBIOSに行くのが難しくなるのです。

あまりに快適でしたので、すぐにもう1台購入して、2台とも交換してしまいました。

HDD購入

タイが洪水でものすごいことになっています。

そのタイに、WesternDigitalの生産能力の6割を占める主力工場があって、洪水の影響で製造設備が水没していて生産が止まっているそうです。(その他にもホンダやトヨタでも部品の製造が止まっていて、減産や生産停止に追い込まれているとか・・・)

HDDのような精密電子機器では何か部品一つが欠けても本格生産には戻れませんし、容易に代替のできるようなものでもないはずです。となると、どんな設備かはわからないにせよ、設備の水没となると設備の再製造も必要になるものがあるでしょうから、長期(2ヶ月とか3ヶ月とか)に渡って生産が停止する可能性が高いと思います。当然、他のメーカーのものも含めてHDDの入手が難しくなるわけで、価格が上がることになるでしょうし、そもそも入手できないケースだって出てくるでしょう。

で、その前にHDDを確保しておきたいということで、2TBのHDDを昨日2台確保しました。確保したのは、

  • HGST 0S03191 (3.5inch 7200rpm SATA 2.0TB 純正パッケージ)
  • WesternDigital WD20EARX (3.5inch SATA 2.0TB バルク)

の2台です。

しかし、東日本大震災の津波といい、先日の紀伊半島の大雨災害といい、今回のタイの水害といい、今年はことごとく水攻めにされる年だなぁ、と思います。

LinuxMint11をUSBメモリから起動する(失敗編)

最近よく使っているLinuxMint11ですが、これをUSBメモリからブートするようにしてみました・・・・が失敗しました。

作業は Ubuntu10.04LTS上で行いました。以下は作業手順です。

  1. まず、ツールとして UNetbootin をSynapticでインストールします。
  2. 「アプリケーション」→「システムツール」→「UNetbootin」で起動します。
  3. 「Diskimage」を選択し、その場所を指定します。
  4. インストール先を選択します。自分の場合は、USB-HDDからUbuntuを起動しているので、事前にディスクユーティリティでUSBメモリがどのデバイスファイルか確認して、「Show All Drives」にチェックを入れて選択しました。(デフォルトでは起動したUSB-HDDが選択されています)

「OK」を押すと作業が始まりますが、ターゲットとなるデバイスはマウントされていないといけないようで、アンマウント状態ではエラーになりました。

とりあえず以下のようにFATでフォーマットしてマウントしてから、再度「OK」を押すと処理が始まりました。

完了すると、直ちにブートするか確認してきます。

ディスクユーティリティで「安全に取り外す」を選択してから、取り外して他のマシンでブートしてみました。

・・・・・が起動しません。やっぱり4GBのUSBメモリを使ったからでしょうか。CDイメージをそのまま起動する場合、2GBを越えるUSBメモリは失敗続きです。CDイメージをそのまま使う場合はFATフォーマットを要求するからのような気はするんですけどね。

IdeaPad S10-2にUbuntu10.04を導入

これまで、USBメモリ起動でネットブック(IdeaPad S10-2)上でUbuntuを使ってきましたが、

  • 小型のUSBメモリは使っていると壊れる(発熱に耐えられない?)
  • 大型(通常のサイズ)のUSBメモリは邪魔

ということで、HDDにUbuntuをWindowsXPをデュアルブートにしてみました。

まずは、USBメモリ上のUbuntuにGpartedをSynapticでインストールして、WindowsXPのパーティションサイズを縮小します。縮小したところにUbuntuをインストールする作戦としました。ただ、後でわかったことですが、WindowsXPと同居させるのかどうするのかわからないけど、インストールの際にWindowsXPの領域を使うこともできるようです。Gpartedでのパーティションの操作については省略。

本来は、パーティションサイズを変更する前にやるべきことなのですが、パーティションサイズ変更後にSystemRescueCDで起動してリカバリ情報を外付けのUSB-HDD(あらかじめNTFSでフォーマット済み)にバックアップしました。手順はこちらを参考にしました。

  1. MBRをバックアップ
    # dd if=/dev/sda of=mbr.img count=63 bs=512
  2. パーティションテーブルのバックアップ
    # sfdisk -d /dev/sda > sfdisk.out
  3.  PartImageで /dev/sda2(だったかな?) のバックアップ

これで 何かあっても大丈夫なはず・・・。

ちなみに、回復方法は、

  1. MBRを書き戻す
    # dd if=mbr.img of=/dev/sda
  2. パーティションテーブルを書き戻す
    # sfdisk -force /dev/sda < sfdisk.out
  3.  PartImageで /dev/sda2を書き戻す

これで 何かあっても大丈夫なはず・・・。Ubuntuをインストールする準備ができました。

Ubuntu10.04LTSのインストール自体は外付けUSB-CDROMドライブを使うので、何も変わるところはありません。強いていえば、インストール先に空き領域を選択したことくらいだと思います。

無事にインストールが終わったところで、アップデートなどのいつもの作業です。

  1. アップデートマネージャでアップデートをかける
  2. Google Chromeの導入
  3. Ubuntu Tweakの導入
    これは今回初めてやってみました。やはりノートPCなので消費電力が気になりますので。しかし、 これといった設定項目はありませんでした。
  4. 以下の物を導入、設定(→参照
    「KlamAV」「GIMP」「jhead」「avrdude/avr-libc」「openjdk-6-jre」「Gufw」「Broadcom用無線LANドライバ」 「DropBox」

以上で完了です。

VirtualBox OSEを試す

以前、QEMUを動かしてみましたが、残念ながら何故かUSB機器が使えませんでした。さらに、共有フォルダも何故か動作せず、外部とのファイル交換ができないため、今度はVirtualBoxにチャレンジしてみたいと思います。

まず、インストールですが、Synapticで「virtualbox-ose」を選択してインストールするだけです。「ose」はOpen Source Editionの略のようです。

起動は、「アプリケーション」→「アクセサリ」→「VirtualBox OSE」です。

起動したら、「新規(N)」でウィザードに沿って仮想マシンと仮想ディスクを作ります。ディスクサイズ、メモリサイズ、ゲストOS等は非常にわかりやすいので、何も悩むところはありません。

仮想マシンを生成したら、詳細の設定をしていきます。

  1. 設定ボタンを押した後、ストレージを選択し、さらにCDROMのアイコンを押して、CD/DVDデバイスを「ホストドライブ」にして、ホストのドライブをそのまま見せる設定にします。初回起動はシステムのインストールのため、システムの設定で起動順序を「CD/DVD」にします。
  2. ホストとのデータ交換のため、フォルダ追加のアイコンを押してどこをゲストマシンに見せるか設定することで共有フォルダを追加します。
  3. 仮想マシンからホストマシンに戻るにはデフォルトでは右CTRLキーを押す必要があるのですが、自分が使用しているHHKには右CTRLキーがありません。「ファイル」→「環境設定」→「入力」でホストキーを押して、ホストキーに設定するキーを押下します。自分は「右ALTキー」をホストキーに設定しました。

この状態で 起動ボタンを押すと起動するはず・・・ですが、「VERR_VMX_IN_VMX_ROOT_MODE」というコードを含むエラーが起きて、起動できませんでした。Googleさんに聞いてみると、コマンドラインで

$ sudo modprobe -r kvm-intel

とするとよいとのことでしたので、試してみたら起動できました。

で、インストールを進めていくと、なぜかネットワークコンポーネントのインストール途中でエラーを起こしてリブートしてしまいました。

ネットワークコンポーネントのインストール中のリブートでしたので、仮想デバイスを変更すると、やはり途中で何か所かエラーは出たものの、インストールが完了しました。

その後、IE6、Guest Additions、Firefox、Avira AntiVir Personalなどを無事にインストールできました。

AMD E-350 + LinuxMint導入(続編)

静かで通常のWebアクセスやYouTube鑑賞に十分な性能をもったMini-ITXマシンにLinuxMint11.04をインストールしたわけですが、LinuxMint11.04に1点不満な点がありました。それは、

「ウインドウを画面最上部に持っていくと、勝手に最大化する」

というものです。これは以下の方法で禁止できることがわかったのでメモっておきます。

  1. 設定画面を開く
    「Menu」→「System管理」→「Compiz Fusion Icon」とすると、右下の通知領域に箱のようなアイコンが出現します。そこで、そのアイコンを右クリックして「Setting Manager」を選択すると、CompizConfig設定マネージャが開きます。
  2. ウインドウが画面上端に達した場合の挙動を設定する
    「ウインドウ・マネジメント」→「Grid」を選択し、「割り当て」→「Edgesタブ」→「Resize Actions」で「Top Edge」を「なし」にします。
これでLinuxMintで十分快適な環境を作ることができるようになりました。

AMD E-350 + LinuxMint導入

GA-GC230を組み込んだ後、電源コネクタ抜き差しで復活したAtomマシンですが、さすがに古い12GBのHDDは遅いので3.5インチのHDDを組み込んでみました。電源投入して30分くらいは快調に動くのですが、しばらく経つとフリーズしてしまいます。で、ふとACアダプタを触ると、結構熱くなっていて、電源容量がオーバーしているのだと思われました。元の2.5インチ12GBのHDDに戻してもACアダプタはかなり暖まっています。

そういえばこのケースは初期のMiniITXマザーボード(VIAのEden搭載)を載せていたもので、当時は今日のように普通のCPUをMini-ITXに載せるなんて考えられませんでしたので電源容量が十分とは言えません。(実際、ACアダプタの出力自体が60Wしかない)

そこで、Atom230の遅さにも閉口していたところなので、「省電力PCはこう作る!省電力PC作例集(AMD CPU編)」のFusion E-350編にでてくるAMDのE-350のマザーを買ってきました。AMDのCPUはAm486DX4-100Duron 600MHz以来となります。

今回購入したマザーはMSIのE350IA-E45で1万円程度だったと思います。これにDDR3-1333のメモリ4GB×2枚が3500円くらいで、合計13500円程度です。これに手持ちの2.5inch SATA 120GB を組み合わせて組み込みました。

OSはいつものようにUbuntu10.04LTS・・・と思ったのですが、オンボードVGAのRadeon HD6310 がうまく動きませんでしたので、LinuxMint11.04にしました。(Ubuntu11.04のUnityにはどうしても馴染めないので・・・)

で、最初はFANの速度全開でかなりうるさく、失敗したかに思いました。しかし、BIOSで温度に応じてFANの速度を変える設定で目標温度65℃、その温度以下では12.5%駆動としたところ、12.5%のFAN駆動にもかかわらず、ほとんど温度も上がることもなく、安定して静かな状態になりました。また、ACアダプタの発熱もずっと小さくなりました。パフォーマンスについても全画面で動画再生などをしない限り問題は感じないレベルで、(12GBのHDDで比較しても)Atom230に比べて極めて快適になりました。これであれば、通常のWebアクセスやYouTubeの動画鑑賞にも十分使っていける感じです。

MSP430F2013のADコンバータを試す

Lチカデバッグ環境ができたところで、次に内蔵ペリフェラルを試します。

MSP430LaunchPadには、MSP430G2231が搭載されています。しかし、今回試すのはMSP430G2311ではなく、秋月で300円で売っているMSP430F2013です。なぜこのチップを選ぶかというと、他のワンチップマイコンでは10bitとか12bitがせいぜいなのですが、このチップは他のワンチップマイコンでは類を見ない16bitのシグマデルタ方式のA/Dコンバータを内蔵しています。さらに、入力は差動入力になっていて、1~32倍のプログラマブルゲインアンプ(PGA)を持っています。ですので、センサをつないだときの分解能が大幅にアップするはずです。

しかし、普通のワンチップマイコンでは10~12bitの分解能のA/Dコンバータしか搭載していないのは、CPUというデジタル回路がノイズ源になるため、高分解能のA/Dコンバータを搭載しても実力としてそれだけの分解能が得られないというところにあります。したがって、MSP430F2013のA/Dコンバータを使いこなすためには、CPUを初めとしたデジタル回路の影響を抑えることを考えなければなりません。

そういう視点で、MSP430F20xxのコードサンプル(msp430x20x3_sd16A_02.c)を眺めてみると、WDTとLPMを使ってデジタル系の動作をなるべく抑えた状態でA/D変換を行っています。

まず、WDTは32msのインターバルタイマとして使っていて、A/D変換の設定後にWDTを起動したら、LPM0に状態遷移してCPUの動作を停止させてしまいます。そして、停止中にその割り込み処理ルーチンの中でA/D変換のスタートをかけています。そうすることにより、チップ内のざわざわとした動作がA/D変換に与える影響や、A/D入力インタフェースのレベルが落ち着く前にA/D変換してしまうのを抑制しているようです。その結果として、(LaunchPad基板では)チップ内蔵温度センサやオフセット電圧の測定ではPGAのゲイン=1の状態で測定値のばらつきが1~2LSB程度に抑えることができています。(実験では、他の動作を行いながらA/D変換をさせると最大で8LSB程度暴れていました)

外部回路をつけるとその作りなどに影響されるので結果がまた変わってきますが、今度はセンサをつないでみたいと思いますが、面倒なのは外部入力インタフェースのインピーダンスがかなり低い(1kΩ程度)ようなので、バッファをつけてやらなければならないのが面倒くさいです。

 

Lチカ通信でMSP430デバッグ

MSP430の開発環境が整ったところで、デバッグ手法を考えているのですが、今回使うMSP430F2013は、ROMの容量が2KBと小さく大した手法は使えませんので、ChaNさん提案のLチカ通信にすることにしました。

今回作ったターゲットのPCとの接続部分は秋月のAE-UM232R(FT232RL USBシリアル変換モジュール)を使いました。

ターゲットとの結合部分はChaNさんの回路そのままですが、PCのRS-232Cとは論理が異なるので、インバータ(7S04)は削除しています。

センサには、秋月で150円で売っているPiNフォトダイオードS2506-02を使いました。

ターゲットボードとは以下のような感じで結合します。

この状態で、安定して38400bpsでの通信が可能です。115.2kbpsもセンサの距離を調整すれば通信できるのですが、ややシビアです。オシロで波形をみると波形の立ち上がりが鈍っているので、抵抗値をもう少し小さくすれば安定するような気がします。(面倒なのでそのままにしていますが)

また、緑のLEDが隣にありますが、PiNフォトダイオードの感度特性が波長の長い方に偏っているせいか、あまり影響は受けないようです。

Ubuntu11.10でMSP430開発環境を構築

昨日のブログに書いたのですが、Ubuntu11.10(Oneiric)ではMSP430の開発環境がサポートされていそうな雰囲気だったので、ちょっと確認してみました。

Ubuntu11.10(Oneiric)は現時点ではβ2です。ダウンロードしてきて、HDDにインストールしてみました。

まず、UIがUnityに変わっているので面食らいます。これに関しては11.04(natty)が対象ですが、こちらのサイトで(インストールの方法と)インストール直後の扱いについて確認できます。Unityで一番面食らうのが、アプリケーションの起動方法と起動した後、ツールバー(メニュー)がないことでした。アプリケーションの起動は「Dashホーム」でアプリケーションの名称を入力する(!)ことで、候補が表示されます。いったん起動した後は、「ランチャーに常に表示」を設定することで、左側のランチャーから起動できるようです。ツールバーについては、各ウインドウの上についているのではなく、アクティブになっているウインドウのツールバーが画面全体の一番上の部分に表示されています。これで最近のワイド画面液晶でも少しでも広く縦のエリアを確保しよう、ということなのでしょう。

で、こちらの検索結果からたどっていくと、universeパッケージになっているようなので、/etc/apt/source.listの中で、universeが指定されている行を見たのですが、特にコメントアウトされているところはありませんでした。すなわち、apt-get でパッケージを指定すればインストールされそうなものなのですが、実際にはインストールできません。

しかし、各ページにはdebianのパッケージ(.debファイル)がありましたので、依存関係を考えて、

  1. msp430mcu
  2. binutils-msp430
  3. mspdebug
  4. gcc-msp430
  5. msp430-libc
  6. gdb-msp430

の順で、インストールしたところ、すべてインストール自体はできました。

まず、mspdebugはroot権限では動作しました。/etc/udev/rules.d の下にスクリプトを置いて、ユーザー権限でアクセスしようとしても、パーミッションで怒られますので、何か追加の設定が必要なのでしょう。

それ以外はサンプルプログラムのコンパイル、動作確認も昨日と同様にうまくいきました。mspdebugがroot権限を要求するところだけが違いですね。