Thursday, September 29, 2011

使用vgaswitcheroo解决笔记本电脑双显卡发热问题

买了笔记本后就安装了Ubuntu 11.04,不过每次进去Ubuntu,电脑都特别热,也没有去找问题的根源。这两天闲下来搜索了以下,发现是因为两个显卡都在工作,发热太厉害,网上也给出了解决办法,就是关闭一个不用的显卡。由于我一开始就安装了AMD的闭源驱动,所以找不到/sys/kernel/debug/vgaswitcheroo文件夹,这是搜索了一阵子才发现是因为闭源驱动造成的。于是卸载了闭源驱动,然后在内核启动的时候加上参数 radeon.modeset=1来开启AMD显卡,这样启动的系统就有了vgaswitcheroo文件夹,然后就可以开关其中一个显卡了。

具体改动:

1. 修改/etc/default/grub,添加radeon.modeset=1参数,然后执行 update-grub

   1: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash radeon.modeset=1"
2. 创建一个可执行的Script,内容如下,这样就可以用用script来控制显卡开关,实际上可以把这个东西作成启动执行的,不过我现在还没有弄。
   1: SWITCH=/sys/kernel/debug/vgaswitcheroo/switch
   2: if [ $# -eq 1 ]; then
   3:     if [ "$1" == "low" ]; then
   4:         echo "Turning on low-power card."
   5:         sudo sh -c "echo DINT > $SWITCH"
   6:     elif [ "$1" == "high" ]; then
   7:         echo "Turning on high-power card."
   8:         sudo sh -c "echo DDIS > $SWITCH"
   9:     elif [ "$1" == "off" ]; then
  10:         echo "Turning off unused card."
  11:         sudo sh -c "echo OFF > $SWITCH"
  12:     elif [ "$1" == "st" ]; then
  13:         cat $SWITCH
  14:     fi
  15: else
  16:     echo "Commands: [low, high, off]"
  17:     echo
  18:     echo "Status:"
  19:     cat $SWITCH
  20: fi

No comments: