Perlとかmemoとか日記とか。 このページをアンテナに追加 RSSフィード

2007-07-30

2007-07-16

ALSAとか。

あんまり音無くても困らないんだけど、YouTubeで音でないのもちょっと寂しいので設定。

あたらしめのドライバを入れるためにKernelじゃなくalsa-driverのほうで入れる。

まずはKernel設定。ALSA関係を入れないようにする。

Device Drivers  --->
   Sound  --->
   
<*> Sound card support
Open Sound System   --->
   < > Open Sound System (DEPRECATED)
Advanced Linux Sound Architecture  --->
   < > Advanced Linux Sound Architecture

これをしておかないと、alsa-driverをemergeするときに怒られる。で、

/etc/portage/package.keywords

media-sound/alsa-driver     ~x86
media-sound/alsa-headers    ~x86

としておく。現時点でこれで入るのは1.0.14だが、これにはX61上ではちょっと問題があるので、パッチをいくつか当てる必要があるらしい。

このへんを参照しつつ、パッチを当てる。そのうち修正されるだろうからそれまでの間は手動でやってみる。

# cd /usr/portage/media-sound/alsa-driver
# ebuild alsa-driver-1.0.14.ebuild fetch
# ebuild alsa-driver-1.0.14.ebuild unpack
# nano /var/tmp/portage/media-sound/alsa-driver-1.0.14/work/alsa-driver-1.0.14/alsa-kernel/pci/hda/patch_analog.c
# ebuild alsa-driver-1.0.14.ebuild compile
# ebuild alsa-driver-1.0.14.ebuild install
# ebuild alsa-driver-1.0.14.ebuild qmerge
diff -au a/patch_analog.c b/patch_analog.c
--- a/patch_analog.c    2007-07-16 17:20:46.000000000 +0900
+++ b/patch_analog.c    2007-07-16 17:21:03.000000000 +0900
@@ -2872,9 +2872,9 @@
        HDA_CODEC_VOLUME("Digital Mic Capture Volume", 0x05, 0x0, HDA_INPUT),
        HDA_CODEC_MUTE("Digital Mic Capture Switch", 0x05, 0x0, HDA_INPUT),
        HDA_CODEC_VOLUME_IDX("Digital Mic Capture Volume", 1, 0x06, 0x0,
-                            HDA_OUTPUT),
+                            HDA_INPUT),
        HDA_CODEC_MUTE_IDX("Digital Mic Capture Switch", 1, 0x06, 0x0,
-                          HDA_OUTPUT),
+                          HDA_INPUT),
        { } /* end */
 };

@@ -2883,8 +2883,8 @@
  */
 static struct hda_verb ad1884_init_verbs[] = {
        /* DACs; mute as default */
-       {0x03, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
-       {0x04, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
+       {0x03, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO},
+       {0x04, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO},
        /* Port-A (HP) mixer */
        {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
        {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
@@ -2960,7 +2960,7 @@
  * Lenovo Thinkpad T61/X61
  */
 static struct hda_input_mux ad1984_thinkpad_capture_source = {
-       .num_items = 4,
+       .num_items = 3,
        .items = {
                { "Mic", 0x0 },
                { "Internal Mic", 0x1 },
@@ -2982,6 +2982,8 @@
        HDA_CODEC_VOLUME("Mic Boost", 0x14, 0x0, HDA_INPUT),
        HDA_CODEC_VOLUME("Internal Mic Boost", 0x15, 0x0, HDA_INPUT),
        HDA_CODEC_VOLUME("Docking Mic Boost", 0x25, 0x0, HDA_OUTPUT),
+       HDA_CODEC_VOLUME("Beep Playback Volume", 0x20, 0x03, HDA_INPUT),
+       HDA_CODEC_MUTE("Beep Playback Switch", 0x20, 0x03, HDA_INPUT),
        HDA_CODEC_VOLUME("Capture Volume", 0x0c, 0x0, HDA_OUTPUT),
        HDA_CODEC_MUTE("Capture Switch", 0x0c, 0x0, HDA_OUTPUT),
        HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x0d, 0x0, HDA_OUTPUT),
@@ -3011,6 +3013,8 @@
        {0x25, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
        /* Analog mixer - docking mic; mute as default */
        {0x20, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(4)},
+       /* enable EAPD bit */
+       {0x12, AC_VERB_SET_EAPD_BTLENABLE, 0x02},
        { } /* end */
 };

ドライバのパラメータを指定しておく(不要かも)

echo "options snd-hda-intel model=thinkpad" >> /etc/modprobe.conf

あとは、ALSAのユーティリティ等を入れる。

# emerge alsa-utils gnome-alsamixer
# alsaconf
# alsamixer
  音量設定
  <Headphon> <Speaker> がMMになってる場合は選択してMでミュート解除しておく。
  スピーカーとヘッドホン別々にミュートできるので、いきなり職場で鳴り出して焦らなくてもいいように
  スピーカーはミュートのままにしておいた。
# rc-update add alsasound default

で音が鳴った!とりあえずFlashPluginでYoutube見るときとmpg123でmp3再生して音が鳴ることを確認。

X61でWiFi

案外簡単に入った。

Kernelはgentoo-sources-2.6.22-r1

Networking -> Wireless
  <M> Generic IEEE 802.11 Networking Stack (mac80211) 

で、iwlwifiを入れる。

/etc/portage/package.keywords
  net-wireless/iwlwifi          ~x86
  net-wireless/iwl4965-ucode   ~x86

/etc/portage/package.unmask
  net-wireless/iwlwifi
  net-wireless/iwl4965-ucode

/etc/portage/package.use
  net-wireless/iwlwifi          ipw4965

emerge iwlwifi wireless-tools
modprobe iwl4965

/etc/conf.d/net
  config_YOURESSID=("dhcp")
  key_YOURESSID="s:weppassword enc open"
  preferred_aps=("YOURESSID")

ln -s /etc/init.d/net.lo /etc/init.d/net.wlan0
/etc/init.d/net.wlan0 start

でとりあえず動いた。WPAならwireless-toolsじゃなくwpa_supplicantで。

965GM続き

sys-kernel/gentoo-sources-2.6.22-r1
x11-drivers/xf86-video-i810-2.1.0

を入れるだけでいけた。楽になった。xorg.confに

Section "Device"
        Option      "Monitor-TV" "TV-Out-disable"
EndSection

Section "Monitor"
        Identifier   "TV-Out-disable"
        Option       "Disable" "true"
EndSection

でTV-Outを無効化できた。

[hideden@hideden-x61]$ xrandr
xrandr: Output TV is not disconnected but has no modes

ってなるけど。まぁ困らんからいいか。

xorg.conf

.config

2007-07-12

965GMでDRI続編(kernel-2.6.22)

10日にリリースされた2.6.22。落として解凍して放置ってたが、ちらっとさっき中身をのぞいてみたら、DRM関係のソースが新しくなってる。Kernelソースはgentoo-sourcesで。Gentooチームのパッチだったらごめん。とりあえずGentooな人は~x86キーワードで落とせばいいはず。

i915_dma.c:                    dev->pci_device == 0x2A02 || \
drm_pciids.h:   {0x8086, 0x2a02, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \

965GMのIDも入ってる!これで変な事しなくてもKernel側はOKかも。

xf86-video-intelも2.1.0が出たからそれも含めて週末にでもチェックしてみよう。

これでxf86-video-i810のebuildが出たらめんどくさい事無しでX61が使えるのになー。ま、そのうち出るだろう。