пʼятниця, 20 листопада 2009 р.

Двохвидеокартная система на vaio

Как я уже писал, в моём vaio (как и во всех z серии) стоит две видеокарты: NVIDIA GeForce 9300M и Mobile Intel Graphics Media Accelerator 4500MHD. Windows Vista умеет динамически (без перезагрузки) переключаться между ними: работать на intel когда нужна длительная работа от аккумулятора или на nvidia когда нужна высокая производительность графики и/или hdmi выход. Переключение делается специальным переключателем stamina<->speed на ноутбуке. Текущий режим работы отображается светодиодом возле переключателя.
Так вот работает это дело в тесном сотрудничестве с драйверами висты. Точнее даже не так: переключатель просто сообщает висте "надо бы переключиться", после чего виста правильно пинает всё на предмет переключения. Естественно под другими операционками это не работает, даже под Windows XP оно работает частично: необходимо перезагружаться чтобы переключение вступило в силу.
Под FreeBSD же в pciconf отображаются обе видеокарточки, но реально работает только intel. На переключатель реакции никакой, оба индикатора режима не светятся, и судя по всему электричество жрут обе видеокарты.
Но после гугления по всяким другим поводам была найдена тема на ixbt, а в ней ссылка на разлочку Intel VT и advanced menu в EFI bios. Собственно Intel VT пока что интересен только потенциально на будущее, а вот advanced menu оказалось очень полезным: в нём была найдена опция "Video swtiching" со значением по умолчанию "dynamic" и возможностью переключиться в "static" и "automatic". И вот после переключения в "static" видеокарты стал переключать bios в процессе загрузки в зависимости от положения переключателя. При этом включается нужная видеокарта, светодиод режима, во FreeBSD видно только одна выбранная видеокарта, и при этом работает и Intel, и Nvidia. Переключателем можно щёлкать и после загрузки, но это ничего не меняет - переключение видеокарт выполняется только при перезагрузке (что меня вполне устраивает).
При работе на nvidia xrandr кроме lvds и vga (видимых и на intel) так же показывает dvi1 и dvi2. Очевидно один из них это hdmi выход, второй не известно (возможно просто не разведен). Но сходу подключенный к hdmi порту монитор не определился: по xrandr оба dvi продолжают писаться как "not connected". Вероятно нужно еще что-то правильно пнуть чтобы включить hdmi выход.
Для упрощения нарисовал себе скрипт, определяющий при загрузке какая сейчас включена видеокарта и подсовывающий нужный xorg.conf:

# cat /usr/local/etc/rc.d/video
#!/bin/sh
#
# PROVIDE: video
#

. /etc/rc.subr

: ${video_enable="NO"}
: ${video_configdir="/usr/local/etc/X11"}

name=video
rcvar=`set_rcvar`

start_cmd="video_start"

video_start()
{
if ! checkyesno video_enable
then
return 0
fi
if [ -L "${video_configdir}/xorg.conf" ]
then rm "${video_configdir}/xorg.conf"
fi
if ( pciconf -lv|fgrep -q 'Intel Mobile Graphic' )
then
echo "Changing video to Intel"
ln -s xorg.conf.sony.intel "${video_configdir}/xorg.conf"
else
echo "Changing video to nv"
ln -s xorg.conf.sony.nv "${video_configdir}/xorg.conf"
fi
}

load_rc_config ${name}
run_rc_command "$1"

По оценкам FreeBSD на intel время автономной работы больше минимум на 40 минут, чем на nvidia. Но все-равно обещаных 3+ часа автономной работы против обещаных виндой 5 часов немного расстраивают. Думаю что виндовс вытягивает за счет яркости подсветки (которая у меня во FreeBSD на максимуме и не регулируется) и за счет отключения питания с неиспользуемых устройств (dvd привод, firewire порт)

неділя, 1 листопада 2009 р.

Intel WiFi Link 5100 AGN on FreeBSD

Благодаря стараниям Bernhard Schmidt мой нутбучный Intel 5100AGN таки заработал на current. За что ему огромное спасибо.
Сначала в пятницу после применения его последних патчей я смог практически всегда сканировать эфир (при соблюдении определенной последовательности загрузки модуля и создания интерфейса) и с переменным успехом подключаться к AP, а после патчей, которые я получил от него сегодня, всё стало вообще просто замечательно: особой последовательности соблюдать не надо, можно настраивать штатными методами и при этом всё нормально работает.
Для интересующихся и страждущих подробности в freebsd-net@ в ветке с Subject: Intel WiFi 5100/5300
Последних изменений пока что нет ни в HEAD, ни даже в рассылке. Но я думаю что в рассылке они появятся совсем скоро (например завтра) и после этого попадут в HEAD.
P.S. Это и предыдущее сообщение написано по wifi линку через этот самый iwn(4) :)

ata(4) в FreeBSD 8.0

В FreeBSD 8.0 и выше ata(4) разделен на отдельные функциональные и специфичные для вендоров модули. Если вы привыкли прописывать device ata в конфиг ядра, то ничего не изменится, так как device ata в конфиге ядра включит все vendor модули. Если же использовать подгрузку ata модулями (как делаю это я), то обязательно нужно подгружать и соответствующий vendor модуль (ataintel.ko , atanvidia.ko , atavia.ko etc), даже если обычный atapci нормально распознает контроллер.
Я уже два раза нарвался на последствия отсутствия vendor модуля:
- на рабочей станции с ide контроллером Marvell 88SX6121 UDMA133 controller не определялся dvd rw привод, хотя канал определялся
- на сервере с ich7 под нагрузкой пропадал диск со второго sata канала