2007/10/18(木)openSUSE 10.3設定メモ

マシン:Panasonic Let's note CF-R6

DHCPの動作がイマイチ安定しない

たまたまNECの某ルータが悪いのだと思いますが、

DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 2
DHCPOFFER from 192.168.1.1: no domain-name-servers-option

となってまったく動作しません。/etc/dhcpclient.conf を編集しました。

変更前
require subnet-mask, domain-name-servers;
変更後
require subnet-mask;

このように変更しても、ふつうに resolve.conf は更新されました。

openoffice で日本語入力できない

SCIM利用時に、OpenOfficeで日本語入力出来ない(全角半角やControl+Spaceが反応しない)不具合があります。scim-bridgeを使用しているのが原因のようです

ホームディレクトリにある .xim.template を .xim としてコピーして、5つあるexport行をすべて有効にすれば解決します(要Xの再起動)。

ホットキードライバのインストール

というページ(ほか)を参考に行いました。カーネルが新しい(2.6.22)ので pcc-acpi-0.9.tar.bz2 を使用。画面の明るさ調整は設定はできるものの実際には動作しませんでした。(カーネルバージョンとの兼ね合い?)*1

*1 : 現状では、暗がりでは明るすぎて使用に耐えません(;;

suspend to RAMを有効にする

サスペンドを実行しようとすると、"Machine is unknown."と怒られてしまいます。s2ram に -f オプションを付けて実行すれば手動でサスペンドできますが、KDEの電源マネージャー(kpowersaved)からの設定方法がどこにも書かれておりません。*2

/usr/lib/pm-utils/default

S2RAM_OPTS="-f"

powersaved の場合は /etc/powersave/sleep に SUSPEND2RAM_FORCE="yes" とかけば ok です。

*2 : manにもないってどうかと思うんだけど……

2007/10/17(水)openSUSE入れてみた

使いもしないのに興味本位でノートPCにopenSUSEを入れてみました。なぜopenSUSEなのかってのはいろいろありますが、

  • debian は硬派すぎてちょっと馴染まない。サーバにするにはいいけど。
  • Ubuntuはとても使いやすくて好きだけど、ファイラーはKDE(Konqueror)の方が使いやすいのでKDEにしたかった。
  • SUSE系は使ったことがなかったので使ってみたかった。
  • BSD系でもよかったんだけども。
  • Fedora? なにそれおいしいの? 

ということで、使ったことのないopenSUSEにしました。しかし、染みついたものはなかなか抜けないようで、ついつい OpenSUSE と書きたくなります(汗)*1

*1 : どうりで、aDiary表記が減らないはずだ(ぉ

マシン構成

  • Inten Core 2 Duo(1.06GHz)
  • i945GM
  • メモリ 512MB

感想とか

CDからインストールしてたんですが、インストール中に download.opensuse.org にアクセスに行って遅くてしょうがないから*2途中で止めたら、どうやらリポジトリが壊れたらしく、第1言語が日本語になっているにも関わらず、日本語パッケージ追加も機能せず、英語のXが立ち上がりどうにも修正できずまいりました。

数時間格闘の上、リポジトリのアップデート(リポジトリメディアの選択しなおし)でなんとか解決。とりあえず一通り使えるようになったんですが。

  • リポジトリ管理(YaST)が妙に重たい。*3
  • 電源管理がWindowsほど充実してない。ディスプレイの明るさ調整が効かないのと、CPU/Chipsetの可変FSB(Enhanced SpeedStep for Centrino)も標準では動作していない模様。
  • よってバッテリの持ちがあまりよろしくなさそう。

全体的に使いやすいんですけど、それにしては動作重たくないですか? という感じです。同じマシンではないので単純比較できませんが、Ubuntuとかの方が軽かった印象かあります。KDEの動作が重たいというよりはもっぱらYaST2のパッケージ管理の動作が遅いような気もしますが。

*2 : 他のインストーラーは普通ミラーサーバとか選べるんですけどね……

*3 : 300MBとかメモリを食い、swapが発生しているせいもありますが。

NetworkManager + Intel PRO/Wireless 3945ABG の罠

ifup などに代わって今時になっている NetworkManager ですが、公式とかみるとぜんぜんメンテされてないみたいです。[ga:uint32 int32 networkmanager:謎のエラーメッセージ]が大昔に指摘されているのに修正されてませんし。

「NetworkManager + PRO/Wireless 3945ABG(ipw3945)」でSSIDブロードキャスト(ネットワークの一覧にSSIDが表示されない)しない無線LANルータにつなぐとき、接続に失敗するというバグがありまして、バグと知らずずっと格闘、無駄に疲れました。

2007/10/13(土)CF-R6 で Vista を XP に入れ替えた

はてブ数 PC

ノートPCのCF-R6を使うことになったのですが、Vista Businessがプリインストールされていて、メモリが512MBのせいか普通に動くんだけどいまいち使いにくいんですよね。メモリを増設すれば快適に使えそうではあるんですが、メモリ増設するとバッテリー駆動時間がかなり低下するらしく(1.5Ahぐらい食うようです*1)ノートPCとして致命的な気がして躊躇してました。

いろいろ調べているとWindows XPにアップグレードすると、パフォーマンスが向上してバッテリー駆動時間も長くなるという話をキャッチし、早速入れ替えてみました。

*1 : バッテリ7.2V*5.8A=42W, メモリ:1.8V*1.5A=2.7W。もし標準で5時間駆動とすれば42/5=8.5W/hなので、8.5/(8.5+2.7)=75%。駆動時間が25%減る計算となります。

用意したもの

  • Windows XP SP2(OEM版)
  • USB FDD
  • IDE CD-ROMドライブとIDE-USB変換
upgrade_xp1.jpg
upgrade_xp2.jpg
upgrade_xp3.jpg

検索するとOEM版でも問題なくダウングレード&電話アクティべーションできるとのことでしたので、こんな構成です。USB CD-ROMを買うのはバカらしかったので、USB HDDを分解してUSB-IDE変換だけ取り出しました。USB FDDはチップセットが Intel 945GMS なので、ドライバディスクを入れてHDDを認識させるために必要でした。

インストール作業は難なく終了。XPのプロダクトIDを入れて「いざ電話アクティべーション」と思ったのも束の間、オンラインアクティべーションが通ってしまいました(苦笑)

入れ替えたあと

Vistaが一応普通に動作していたのですが、XPに入れ替えたらXPがすごい快適にサクサク動作しています。ドライバや標準アプリも1つずつ選んで入れたので、余計なものが入らず良い感じ。要らないサービスも止めて、起動時のメモリ消費が200MBぐらいになりました。Vistaは400MBでしたから、この差は大きいですね。

それとやや不安定だった無線LANなぜか安定しました(^^

Intel PROSet/Wirelessを外す 2007/10/13

Intel PROSet/Wireless がやたらメモリを食っていたうえ、ユーザーを切り替えるたびに無線LANの接続が切れる使えなさ素敵仕様だったので(おまけに無線LANの設定がユーザー個別になってるし)、レジストリから消えてもらいました。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
C:\Program Files\Intel\Wireless\Bin\ZcfgSvc.exe
C:\Program Files\Intel\Wireless\Bin\ifrmewrk.exe

を削除。これでWindowsが無線LANを管理しますが、やや不安定です。そこで「コントロールパネル」→「管理ツール」→「サービス」からPROSet/Wirelessアプリケーション用のサービス3つに消えてもらいました(自動起動→手動起動への設定変更)。

  • Intel(R) PROSet/Wireless Event Log
  • Intel(R) PROSet/Wireless Registry Service
  • Intel(R) PROSet/Wireless Service

これらのサービスと止めるとWindows管理のもと快適に無線LANが使えます。Windowsの無線LAN管理デーモンが20MBほど食ってますが、それでもIntelツールを使うよりも50MBほど空きメモリが増えました。

初めからIntelの無線LAN管理ツールはインストールせずに、ドライバだけ適用した方が幸せになれると思います。

単3電池式 ヘッドホンバイポーラバッファアンプ

はてブ数 2007/10/09電子::HPA

このヘッドホンアンプは当ブログの中で、初代に当たります。こんなんでもヘッドホンアンプになるんだという感じであって音も別段悪くはないのですが、成熟度の面から以下の新しいものを推奨します。

このアンプはいわゆるダイアモンドバッファのみのアンプで、どこにでもある部品(2SC1815/2SA1015)で作ることができます。出力電圧範囲が狭い問題などもありますが(高能率ヘッドホンならば十分な音量が出せる)、ちょっと試すには面白いと思います。こんな回路なのに、音も決して悪くありません。

概要

  • 単3電池2本で動く、とてもシンプルなヘッドホンアンプです。
  • トランジスタ式ですが、オペアンプ式+少々の手間で製作できます。
  • 解像度が非常に高く、立ち上がり立ち下がりの大変良い音です。
  • 低音から超高域まで綺麗に再生するNO-NFB型DCアンプです。
  • LM4880よりいい音がします
  • 大音量は出せません。出力レベルが低い再生機器とは接続できません。また低能率ヘッドホンでは駆動力不足になります。
  • 歪み率が(音量によりますが)最大1%程度あります。

回路と解説

回路図は片チャンネル分です。電源以外はもう1つ製作してください。

headphone_buf_amp.gif

  • 単3電池2個、特にニッケル水素電池でも動作できるように回路定数を決めています。
  • R1は発振防止用です。当然無い方が歪み率がよいのですが、外したり(短絡したり)これ以上小さくすると入力ボリュームの位置によって発振することがあります(特にGNDに落としたとき)。*1
  • コンデンサはOSコンだと音質か良いと思いますが、動かすだけなら何でも構いません。音響用コンデンサ(Muse,UTSJ等)でも構いませんが、コンデンサは音質に直結します。
  • ボリュームは専用の記事を参照
  • 回路の抵抗値や電源電圧は安易に変更しないでください。無闇に電圧をあげるとトランジスタが熱暴走する(壊れる)可能性があります。
  • 部品点数が少ないので好みに応じて音響用抵抗を使うと良いと思います。特にNO-NFBなので抵抗が与える音質への影響は大きめです。1Ωの抵抗がない場合は少し大きく(~4.7Ω)しても構いません。適当な1Ω抵抗は今のところMPC78 1Ωです。無誘導巻線抵抗の方が音がいいのですが(OHMITEとかDALEとか)。
  • R2/R3の100Ωは1mA程度のCRD(定電流ダイオード)でも構いません(こちらを参考に)。

再生について

  • このアンプはAB級動作ですが無音時の消費電流は大きめです。電源電圧やトランジスタにもよりますが、片チャンネルで常時10~15mA、両チャンネルで20~30mA消費します。
  • OSコンを使用した場合、エージング(電池をつないで放置する)は100時間程度必要なことがあります。
  • 電池の電圧が下がってくると音が歪みます。音が歪んだら電池を交換してください。ニッケル水素に比べ非経済的ですが、オキシライド乾電池やアルカリ電池を使う方が歪みは少なくなります。
  • 2500mAhのニッケル水素2本で(音量によりますが)連続24時間以上再生できます。

*1 : そんなに小さいボリュームには合わせないということならば、外してください

詳しい解説

詳しい方はすぐわかると思いますが、ただのダイアモンドバッファ回路です。

ヘッドホンで音楽を再生しているとき、その信号(電圧レベル)は通常入力電圧よりも小さくなります。オペアンプの利得は少なくとも80dB程度あり、オペアンプ入力端子ではピーク0.1mV程度の信号(電圧差)を扱っています(小さい音ならば1uV以下)。回路中に小さな信号が存在するということは、それだけ電源や外来ノイズに弱くなることを意味しています。

最近の再生装置(ラインアウト)は+4dBuと言われ、ヘッドホン直結時には(電流不足は別として)音割れして聴けないぐらいの信号が出ています。ほとんどのケースで、再生装置出力側の最終段にオペアンプが付いていてバッファしています。

mosikizu1.gif

あまり意味のない*2再生装置側のオペアンプを排除してしまうという割り切った考えでこの回路は作られています。

  • デメリット
    • 負帰還回路が存在せず最大1%程度の歪み率が代償となっている。
    • 出力インピーダンスがオペアンプ帰還使用時ほど下がらない(0.1Ω未満か、0.5Ωかの差)。
  • メリット
    • (負帰還回路がないので)超高域まで優れた立ち上がり特性を得られる。

メリットについて解説します。オペアンプではその高い利得から周波数追従性を優先すれば回路が不安定になります。発振しないように収めこまれていても、位相特性の変化は避けて通れません。オーバーシュートもその1つで(これは顕著な例であるだけで他にもある)波形の乱れによる音質劣化が避けて通れません。

NO-NFBといわれるオーバーオール帰還のない回路では、波形くずれのない優れた高周波特性を得ることができます。

また、一般に両電源を作るため006P(9V乾電池)から生成する回路がよく使われますが、この回路は両電源回路です。中点からGNDを生成する回路では、電流を流したときに(大きな音が鳴ったときに)GNDの電位がゆらいでしまい音がぼやけます。*3

*2 : その後実験した結果、現在は負帰還による恩恵を除いたとしても実際には意味があることが分かってきています。たとえばこの回路でボリュームとダイアモンドバッファの間に1倍のオペアンプバッファを入れると音質が改善されることがあります。

*3 : 気になる方は製作後に乾電池の中点とコンデンサとの接続を切り離して試してみると良いでしょう。

音質評価

以下の部品は当時のもので、今もって推奨しているわけではありません(特に上2つ)。

  • ボリューム アルプス製ミニデテント10kΩ
  • 抵抗 タイヨーム音響用抵抗(30円/本)
  • トランジスタ 2SA1015/2SC1815
  • 電源 SANYOニッケル水素 2500mAh

大変にクリアな音です。ノイズは皆無。再生装置の音が如実にヘッドホンから出てきます。音の立ち上がり、立ち下がりが非常によく超高域まで綺麗に再生され、それでいて刺々しさは微塵もなく非常になめらかな音がなります。DCアンプだけあり、超低音まできちんと再生され、またその低音がきちんと止まります。ビートを打つような曲で変にもわもわすることはありません。

LM4880と比べると、LM4880の再生音が雑に感じます。そしてLM4880の高域がまるい(スライドガラス越しに聞いている)印象です。(LM4880は決して悪い音ではないのですが……)

(音量によって)歪み率が最大1%程度ありますが、通常再生時に歪みを感じることはありません。ただし、電池の電圧が下がると歪みます(このときは電池を交換します)。電源を入れて1時間ぐらいで鳴り方が変わり、より良くなります。

NO-NFBですので、NO-NFBアンプの製作について(マイナーオーディオの部屋さん)の解説はそのまま当てはまります。

PIC16F88 による シリアル接続型PIC-ADC

はてブ数 2007/10/08デバイス

PIC16F88を用いたシリアル接続型のAD変換プログラムと回路図です。PCに接続出来ますので、そのままPCでデータ処理が行えます。(写真は動作確認時のもの)

pic_adc.jpg

仕様

AD変換回数1000sps(1msに1回)
AD変換解像度10bit
AD変換誤差1bit
シリアル通信速度RS-232C 38400bps
シリアル通信オプションパリティなし、フロー制御なし
電源電圧3.3~5V程度

PIC16F88用ですが、USARTとADコンバータの乗っているPICならば簡単に移植できます。きちんとレベルコンバータIC(MAX232C)を通してますので、いわゆるUSBシリアルでも動作します。

変換レートの1000spsは内部タイマで割り込みをかけているので、(クロックと同じ程度)正確な間隔で計測されます。外部に8MHz水晶発振器などをつければ、正確に1kHzの間隔でサンプリングできます。

回路図とファームウェア

pic_adc.gif

シンプルな回路構成です。電源は3.3~5Vで動作すると思います。もっと違う電圧でも動くでしょう。簡便のためPICの内部発振を使っていますが、より正確な計測が必要な場合は外部に水晶をつけてください。

PICの電源に大容量低インピーダンスコンデンサをつけていますが、たまたま手元にあっただけでここまで大きい必要はありません。100uF程度で十分でしょう。AD変換の精度のことを考えると、低インピーダンス品は使いたいところですが。

使い方

RS-232C経由でコマンドを送信することで制御を行います。コマンドは文字 1byte です。

送信文字機能
Rデバイスをリセットします。AD変換を停止させます。
SAD変換を開始します。
VPICファームウェアのバージョン情報を表示します。

AD変換中に送られるデータは2byteで1つのデータとなっています。並びはビッグエンディアンです。例えば、受信データ配列をchar buf[size]、電源電圧を5Vとすれば、次のようにAD変換電圧を取得できます。

for(int i=0; i<size; i+=2) {
    float volt = ((buf[i]<<8) + buf[i+1])*5/(float)1024;
         :
         :(データ処理)
}

ライセンス

修正BSDライセンスとします。質問とか相談とか、開発とかありましたらコメント欄にどうぞ。