Not only is the Internet dead, it's starting to smell really bad.:2012年05月上旬

2012/05/01(Tue)

[NetBSD][Hardware] HP mini 5103

いろいろ *1ストレスが溜まってたので HP mini 5103を今年の1月末くらいに衝動買いしました。

お約束。

 HP mini 5103のATOMのN455載ってる、先月在庫処分で25k前後で投げ売りしてたから見た瞬間に即決した。

カッコイイ、マジで。そして速い。電源を入れると起動する、マジで。ちょっと感動。

しかもx86_32なのにUEFIだから操作も簡単で良い。ATOMは力が無いと言われてるけど個人的には速いと思う。

Corei3と比べればそりゃちょっとは違うかもしれないけど、そんなに大差はないって店員も言ってたし、それは間違いないと思う。

ただbuild.sh releaseとか流すとちょっと怖いね。寝る前に仕掛けても朝になっても終わってないし。

速度にかんしては多分Corei3もATOMも変わらないでしょ、前使ってたのがMobile Pentium3 600MHzだから知らないけど

同じIntelでそんなに変わったらアホ臭くてだれもネットブックなんて買わないでしょ。個人的にはATOMでも十分に速い。

嘘かと思われるかも知れないけど東北新幹線車中で275キロ位でマジで34GTRを抜いた。

つまりはGTRですらATOMのN455には勝てないと言うわけで、それだけでも個人的には大満足です。

ここんとこNetBSDをVMware Workstation上でしか動かしてなかったことを深く反省し、Windows7 Starterを抹殺して-current入れてみました
(dmesgは こちら)

@ドライバサポート状況

LANは有線(Marvell Yukon 88E8059)無線(Broadcom 43224AGN)ともに認識しません。とりあえずそこらに転がってたrum(4)でしのいでます。

前者はOpenBSDではmsk(4)で動いてるみたいなのでなんとかしたいところ、単純にid足せば動くと思ったんだけどなんか足りてないみたい。

XについてはNのbaseのintel driverでは動きません、xorg.confでdriverにvesaを指定しましょう。

Section "Device"
  ...
  Driver "vesa"
EndSection

まぁネットブックなんで動画とかそも無理ゲーだし、これまで NeoMagicとか Silicon Motionみたいな伝説のウンコdriverを使い続けてきた
後遺症により、Xに速度なんてものは求めてないので netbsd-drmgemを試すまでもないかなーと(白目

@不具合など

ひとつ大きな悩みの種が。このクソ寒かった1~2月に暖房器具レスな私の部屋であっても空冷ファンが謎の常時回転状態で
バッテリ寿命も公称の4~5時間駆動とか不可能なレベル。そして何より窓から投げ捨てたくなる程度に騒々しいのですよな。

ということで こうなる前に静音化してみました。

1. acpidump(1)でHP mini 5103のDSDTをASL(ACPI Source Language)ファイルに落とします。

# acpidump -dt >hp_mini_5103.asl

acpidump(1)は今時だとbaseに入ってますので、昔のようにpkgsrc/sysutils/acpidumpは不要です。

2. ASLファイルのファンの温度制御周りをエディタで編集します。

$ cp -p hp_mini_5103.asl hp_mini_5103.asl.orig
$ vi hp_mini_5103.asl

ググると HP mini 5102/5103では

Name (CPFS, Package(0x06)
{
  0x64,
  0x5A,
  0x50,
  0x46,
  0x2D,
  0x00
})

このCPFSの部分がファン制御とのことですので、こいつを適宜編集します。この記事によると

 Name (CPFS, Package(0x06)
 {
   0x64,
   0x5A,
-  0x50,
-  0x46,
-  0x2D,
+  0x36,
+  0x24,
+  0x12,
   0x00
 })

とすることで低温時のファンの回転速度を落とせるようです。具体的には

acpitz0: active cooling level 0: 83.0C
acpitz0: active cooling level 1: 73.0C
acpitz0: active cooling level 2: 63.0C
acpitz0: active cooling level 3: 56.0C
acpitz0: active cooling level 4: 43.0C

のそれぞれの温度に対応するファンの回転数、ということみたい。

2. 編集したASLファイルをAML(ACPI Machine Language)に変換(-tcスイッチでCコード向けのhexデータを出力)します。

$ iasl -tc hp_mini_5103.asl
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20110623-32 [Apr 22 2012]
Copyright (c) 2000 - 2011 Intel Corporation
...
Compilation complete, 2 Errors, 7 Warnings, 3 Remarks, 3895 Optimizations

$ ls *.hex
hp_mini_5103.hex

iasl(1)も今時だとbaseに入ってますので、pkgsrc/sysutils/acpica-utilsは不要。

致命的エラーとか警告なんかがワラワラ出ますが、村上春樹風に「やれやれ」と肩をすくめてやり過ごしましょう。 hexファイルが出力されてれば気にしなーい。

3. 2で生成したDSDTファイルを組み込んだkernelを作成します、手順はacpi(4)に書いてありますが、要はkernel configに

options ACPI_DSDT_OVERRIDE
options ACPI_DSDT_FILE="\"hp_mini_5103.hex\""

の2行を追加するだけです。AML(hp_mini_5103.hex)はsrc/sys/dev/acpi/acpica/OsdMisc.cと同じディレクトリに放り込んでおけばOK。

$ cp hp_mini_5103.hex /usr/src/sys/dev/acpi/acpica/
$ cd /usr/src/sys/arch/i386/conf
$ cat >HP_MINI_5103
include "arch/i386/conf/GENERIC"

options ACPI_DSDT_OVERRIDE
options ACPI_DSDT_FILE="\"hp_mini_5103.hex\""
^D
$ cd /usr/src
$ ./build.sh kernel=HP_MINI_5103
$ cd sys/arch/i386/compile/obj/HP_MINI_5103
$ su
# make install

kernelを入れ替えて再起動すればOKです(くれぐれも自己責任でおながいいたします)。

*1:更新間隔よりお察しください。