barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)
Показаны сообщения с ярлыком T101MT. Показать все сообщения
Показаны сообщения с ярлыком T101MT. Показать все сообщения

среда, 28 января 2015 г.

Ubuntu 14.04 Trusty Tahr на Asus EEEPC T101MT: проблема с яркостью

Поставил Ubuntu 14.04 Trusty Tahr на свой Asus EEEPC T101MT, и стокнулся со старой доброй проблемой с невозможностью поставить максимальную яркость. Решение - такое же старое, но с небольшой поправкой, связанной с тем, что в репозитории plippo/t101mt нет ветки по версию trusty:

  • apt-add-repository plippo/t101mt
  • идем в synaptic (можно конечно и через sources.list, но у меня виндовая привычка пользоваться оконными приложениями, что поделаешь), Настройки -> Репозитории -> Другое ПО, находим запись про plippo/t101mt, выделяем, жмем "Изменить", меняем в поле дистрибутив trusty на quantal
  • сохраняем, synaptic предложит обновить списки пакетов, обновляем
  • после этого устанавливаем пакет eeepc-brightness-workaround, яркость поднимется до максимальной даже без перезагрузки
  • теперь яркость максимальна, но не регулируется Fn-комбинациями. Ползунок бегает, а эффекта нет. Идем в /etc/default/grub, меняем значение GRUB_CMDLINE_LINUX_DEFAULT на "quiet splash acpi_backlight=vendor" ("acpi_osi=Linux", как я в свое время делал для Lenovo B460e, ставить не надо). Делаем update-grub, перезагружаемся.
ЗЫ По проблеме с щелчками винчествера также работает старое решение (http://barbitoff.blogspot.ru/2011/04/ubuntu.html).

пятница, 6 апреля 2012 г.

Настройка grub для загрузки Android-x86

При установке андроида на хард я не стал ставить Grub, так как он у меня уже есть и удобнее просто добавить в него новую ось. Благодаря статье на myubuntu удалось сделать это достаточно быстро, всего лишь добавив в конец файла /etc/grub.d/40_custom следующие строки:
menuentry "Android-x86 4.0 RC1 (on /dev/sda3)" {
        set root='(hd0,3)'
        linux /android-4.0-RC1/kernel quiet root=/dev/ram0 androidboot.hardware=eeepc acpi_sleep=s3_bios,s3_mode SRC=/android-4.0-RC1 SDCARD=/data/sdcard.img
        initrd /android-4.0-RC1/initrd.img
}
 , сделав этот файл исполняемым и выполнив:
sudo update-grub
В принципе, можно было бы сразу отредактировать /boot/grub/grub.cfg, вот только, например, при обновлении ядра Linux`а, он перезатерся бы после выполнения update-grub, что нехорошо.

Создание Live USB с Android-x86 4.0 RC1 для Asus EEEPC T101MT

Мой T101MT очень привередлив в плане загрузки с флешки, поэтому Android-x86 также удалось запустить с флешки не с первого раза. 
Из-под винды сделать загрузочную флешку с андроидом вообще не получилось: образ, зарезанный UltraISO образ вис сразу после загрузки, независимо от используемой ФС (NTFS, FAT, exFAT, FAT32) и метода записи. Universal-USB-Installer-1.8.0.8 выругался на образ андроида как поврежденный.
Зато из-под Kubuntu все отлично записалось: отформатировал флешку в ext3, зарезал образ Unetbootin`ом. И вот он, Андроид:


ЗЫ Под Win Unetbootin тоже без проблем зарезал образ на флешку, отформатированную в FAT32 со стандартным размером кластера.

вторник, 3 января 2012 г.

Настройка тачпада Synaptics в Debian + XFCE

В Гноме тап по тачпаду "из коробки" работал как клик левой кнопкой мыши, в XFCE же почему-то - нет, что собственно и стало поводом поковыряться в конфигах иксов с целью настройки тачпада. Как ни странно, двухпальцевый скроллинг сразу же работал и там, и там (чего не было в Ubuntu, где приходилось ставить Synaptics`овскую утилиту для настройки), а вот поведение тапа двумя пальцами меня тоже не устраивало - оно воспринималось как правый клик, а мне хотелось бы чтобы как в винде - как клик центральной кнопкой, удобно открывать ссылки в браузере на новой вкладке =).
За основу была взята инструкция отсюда: http://www.crunchbang.ru/viewtopic.php?id=938, большое спасибо за неё автору. Я добавил в неё лишь двухпальцевый скроллинг, настройку тапа двумя пальцами и откалибровал скорость перемещения курсора.
Во-первых, убеждаемcя, что у нас действительно тачпад Synaptics:

root@eeedebian:/home/aspirin# egrep -i 'synap|alps|etps' /proc/bus/input/devices
N: Name="SynPS/2 Synaptics TouchPad"
Нам понадобиться модуль synaptics для иксов, поэтому он тоже должен быть установлен:
root@eeedebian:/home/aspirin# aptitude search xserver-xorg-input-synaptics
i A xserver-xorg-input-synaptics    - Synaptics TouchPad driver for X.Org server
p   xserver-xorg-input-synaptics-de - Synaptics TouchPad driver for X.Org server
В этот пакет также входит удобная утилита для мониторинга событий тачпада synclient, которая в дальнейшем пригодится.
Теперь идем в /etc/X11/xorg.conf. Если у Вас его нет - как его сгенерировать, я писал тут: http://barbitoff.blogspot.com/2011/06/touchscreen-egalax-eeepc-t101mt-debian.html, под пунктом 2. Там же написано, как перезапускать искы.
В xorg.conf добавляем следующие строчки (секции, которые уже имеются, добавлять нет необходимости - можно просто вставить в них ещё одну строчку):
Section "ServerLayout"
     InputDevice "Synaptics Touchpad" "SendCoreEvents"
EndSection
...
Section "Module"
Load "synaptics"
EndSection
...
Section "InputDevice"
  Identifier      "Synaptics Touchpad"
  Driver          "synaptics"
#  Option          "SendCoreEvents"        "true"
  Option          "Device"                "/dev/psaux"
  Option          "Protocol"              "auto-dev"
  Option          "HorizEdgeScroll"       "0" # выключаем скроллинг границами тачпада
  Option          "VertEdgeScroll"       "0" # выключаем скроллинг границами тачпада
  Option    "VertTwoFingerScroll" "1" # включаем двухпальцевый скроллинг
  Option  "HorizTwoFingerScroll" "1" # включаем двухпальцевый скроллинг
  Option  "EmulateTwoFingerMinW" "8" # если толщина больше 8 - значит 2 пальца (мой один палец вообще воспринимается не больше, чем 6)
  Option  "EmulateTwoFingerMinZ" "60" # при 70 иногда "проскальзывает", воспринимая 2 пальца за один
  Option          "SHMConfig"             "true"
  Option          "Emulate3Buttons"   "on"
  Option          "LeftEdge"      "1700"
  Option          "RightEdge"     "5300"
  Option          "TopEdge"       "1700"
  Option          "BottomEdge"    "4200"
  Option          "FingerLow"     "35"
  Option          "FingerHigh"    "40"
  Option          "MaxTapTime"    "180"
  Option          "MaxTapMove"    "220"
  Option          "VertScrollDelta" "100"
  Option          "HorizScrollDelta" "50"
  Option          "MinSpeed"      "0.24"
  Option          "MaxSpeed"      "0.48"
  Option          "AccelFactor" "0.00100"
  Option          "TapButton1" "1" #тап одним пальцем -> левый клик
  Option          "TapButton2" "2" #тап двумя пальцами -> центральный клик
  Option          "TapButton3" "3" #эх, жаль, что при эмуляции многопальцевости 3 пальца почему-то не детектируются, а то можно было бы на 3 пальца навесить правую кнопку мыши
EndSection


Собственно, что настроено вышеуказанным конфигом:
  • Выключена прокрутка краями тачпада, включена прокрутка двумя пальцами
  • Скорость движения курсора настраивается параметрами MinSpeed и MaxSpeed, тут уж, как говорится, на вкус и цвет.. Мне нравится, чтобы курсор бегал пошустрее (наверное из-за мыши с 3000dpi), так что я эти параметры увеличил.
  • Опция TapButton1 включила заветный левый клип по тапу одним пальцем
  • Опцией TapButton2 я включил нажатие центральной кнопки по тапу двумя пальцами. Тап 3 пальцами к сожалению не заработал, так как у моего тачпада родной поддержки многопальцевости видимо нет, а при эмуляции драйвер распознает только 2 пальца. 
Кстати об эмуляции: необходимость её использования определить просто: запускаем synclient -m 100, и нажимаем по тачпаду несколькоми пальцами стразу. Если в столбце "f" все время единица - значит тач не умеет определять многопальцевое нажатие. В таком случае продолжаем нажимать на тач то одним, то двумя пальцами, и смотреть на изменение значений в столбцах "w" (ширина нажатия) и "z" (сила нажатия). Наша задача - определить порог по ширине и силе нажатия, отличающий нажатие одного пальца от нажатий двух. Причем важнее всего именно параметр "w", так как сила может быть примерно одинаковой для обоих случаев. Для моих пальцев "w" при нажатии одним пальцем равняется 5, максимум 6, а двумя - не менее 10. Поэтому я взял на всякий случай пороговое значение 8, и присвоил его опции "EmulateTwoFingerMinW". В качестве "EmulateTwoFingerMinZ" я взял 60, хотя порой можно и одним пальцем с такой силой тыкнуть, но ложных срабатываний это не вызывает. А вот установка значения, скажем, 70, приводит иногда к тому, что двухпальцевый скроллинг воспринимается просто как перемещение курсора, если нажать с недостаточной силой. В принципе, при такой эмуляции многопальцевости не составило бы труда определять и нажатия тремя пальцами, установив соответствующий порог ширины нажатия, но программисты synaptics не стали с этим заморачиваться, а жаль.

После изменения конфига перезапускаем иксы и пробуем.

По всем опциям настройки тачпада есть неплохое описание в man synaptics, ещё пара полезностей (как, например, отключение тачпада при наборе на клавиатуре, что мне, лично, не нужно) достаточно доступно описана тут: http://www.crunchbang.ru/viewtopic.php?id=938, так что успехов =).

пятница, 17 июня 2011 г.

Super Hybrid Engine на Asus EeePC T101MT в Debian Linux

Под виндой для EeePC есть фирменная утилита управления профилями энергосбережения, позволяющая менять их по Fn+Space. Для Linux есть аналог, устанавливается следующим образом:
1) Подключить ppa-репозиторий WebUpd8 (встроенной командой apt-add-repository ppa:webupd8team/jupiter в Ubuntu, ну а в Debian - самописным скриптом add-apt-repository ppa:webupd8team/jupiter natty, который я приводил тут: http://barbitoff.blogspot.com/2011/06/ppa-debian.html)
2) apt-get update
3) apt-get-install jupiter-support-eee
4) Перезагружаемся (без перезагрузки ничего работать не будет). Через меню значка в трее можно менять профиль энергосбережения, отключать тачпад, менять разрешение и ориентацию экрана, а также конфигурацию нескольких дисплеев. И даже Fn+Space работает :)

Также, говорят, данный подход работает и на не-EeePC, пакет достаточно универсальный. Только в таком случае нужно устанавливать просто пакет jupiter, а не jupiter-support-eee.

среда, 15 июня 2011 г.

Ждущий режим на EeePC T101MT в Debian

Через pm-utils (pm-suspend, pm-hibernate) ни ждущий режим, не спящий почему-то не работают: скрипты из /etc/pm/sleep.d/ и т.п. выполняются, вот только в ждужий / спящий бук все равно не переходит.
Поставил пакет hibernate из репозитория дебиана, теперь по крайней мере работает ждущий режим вызовом hibernate-ram из-под root`a. Для того, чтобы после выхода из ждущего / спящего режимов появлялось окно ввода пароля и отключался AMP винчестера (http://barbitoff.blogspot.com/2011/06/eeepc-t101mt-dabian.html), добавил / раскомментировал в /etc/hibernate/common.conf следующие строчки:

OnResume 99 hdparm -B255 /dev/sda
LockGnomeScreenSaver yes

UP Да, полезно иногда глядеть в логи: в /var/log/pm-suspend.log видно, что возникает ошибка при вызове скрипта /etc/pm/sleep.d/80_egalax_touchscreen, положенного туда пакетом egalax-multitouch-driver-common (из ppa:plippo/t101mt, пакет содержит вспомогательные скрипты для вращения экрана вместе с тачскрином, а этот файл отвечает за загрузку / выгрузку модуля взаимодействия с тачскрином hid_egalax, который в моей конфигурации и не используется т.к. я использую родной драйвер):

/etc/pm/sleep.d/80_egalax_touchscreen suspend suspend:ERROR: Module hid_egalax does not exist in /proc/modules

Выход - удалить /etc/pm/sleep.d/80_egalax_touchscreen или попросту закомментировать там удаление и загрузку модуля. После этого suspend / hibernate работают через pm-utils.

среда, 8 июня 2011 г.

Щелчки винчестера на EEEPC T101MT в Dabian и как от них избавиться

Очередное решение проблемы с винчестером EeePC T101MT, постоянно паркующего головки, на этот раз для Debian. В отличие от Ubuntu, тут нет /lib/hdparm/hdparm-functions, однако, и от Fedora есть приятное отличие - тут я нашел конфиг hdparm`a: /etc/hdparm.conf, куда и добавил следующие строчки:
/dev/sda {
apm = 255
}
После выхода из спящего/ждущего режима правда снова начинает щелкать, поэтому добавил ещё файлик /etc/pm/sleep.d/72_hdparm (не забыв сделать chmod 755):
#!/bin/sh
# Disable APM on resume|thaw
case "${1}" in
suspend|hibernate)
# nothing
;;
resume|thaw)
hdparm -B255 /dev/sda
;;
esac

вторник, 7 июня 2011 г.

Touchscreen eGalax на EeePC T101MT в Debian

Итак, пара часов в сумасшедших поисках, пара десятков перезагрузок и рецепт, как заставить работать тачскрин EeePC T101MT под Debian Squeeze найден.
Изначально проблема была такая - устройство вроде бы видется (в lsusb его почему-то нет, но xinput list его показывает), вот только независимо от места клика курсор убегает в левый верхний угол. Впрервые столкнулся с таким делом в Дебиане, в Убунте и Федоре все работало из коробки (в Убунте правда я ещё доставлял egalax-multitouch-driver-common из ppa:plippo/t101mt для удобных функций вращения экрана вместе с тачем на 90/180/270 градусов). Перепробовал различные конфиги через evdev / evtouch, ничего не помогало. Место клика перемещалось по экрану, однако все равно от места реального прикосновения к экрану никак не зависело.
В итоге после следующих действий все заработало, причем, в отличие от предыдущих Линухов с работающим "из коробки" тачем, у меня в руках оказалось ещё и средство калибровки от производителя:
1) Отключить работу тачскрина через evdev: в файле /usr/share/X11/xorg.conf.d/10-evdev.conf я закомментировал все блоки "Section", связанные с тачскрином (иначе события тачскрина будут обрабатываться дважды - и родным драйвером, и evdev`ом; блок, связанный с "Tablet", я тоже на всякий случай закомментировал):
#Section "InputClass"
# Identifier "evdev tablet catchall"
# MatchIsTablet "on"
# MatchDevicePath "/dev/input/event*"
# Driver "evdev"
#EndSection
#Section "InputClass"
# Identifier "evdev touchscreen catchall"
# MatchIsTouchscreen "on"
# MatchDevicePath "/dev/input/event*"
# Driver "evdev"
#EndSection
2) Сгенерировать конфиг иксов, которого в дебианоподобных системах нет (а он будет нужен установщику родного драйвера eGalax):
CTRL + ALT + F1 (переведет систему в консольный режим, из которого можно будет вернуться нажатием ALT + F7)
зайти под рутом (ну или делать все следующие действия через sudo)
service gdm3 stop
Xorg -configure
mv /root/xorg.conf.new /etc/X11/xorg.conf
service gdm3 start
3) Скачать и распаковать родной егалаксовский драйвер:
http://home.eeti.com.tw/web20/eGalaxTouchDriver/linuxDriver.htm
По ссылке имеются версии драйвера для версий ядра 2.4.x и 2.6.x, узнать, какая версия ядра у Вас, можно, набрав в консоли uname -r.

4) Запустить из-под рута setup.sh. Ответить на вопрос, к чему подключен экран, 3 вариант, т.е. USB. Перезагрузиться.

5)  Запустить eGalaxTouch, поковыряться в настройках, откалибровать по 4 точкам.

И всё, должно наступить счастье =)

понедельник, 30 мая 2011 г.

Неработающий wifi после возвращения из ждущего режима в Fedora 15 на EeePC T101MT

Столкнулся со следующей проблемой в Федоре: после выхода из ждущего / спящего режима не работает wifi, причем включить его как-либо (через графическую утилиту / командную строку) не получается, лечится только перезагрузкой.
Вылечилось это дело следующим образом: через файл, помещенный в /etc/pm/sleep.d/ (я его назвал 1eeepc, при этом разрешив его выполнение, установив chmod 777), я сделал, чтобы перед уходом в suspend / hibernate сеть выключалась, после выхода - включалась обратно (выполняется это все через cnetworkmanager, который предварительно нужно установить из репозитория). В итоге содержимое файла получилось такое (кроме борьбы с неработающей сетью в нём ещё отключается APM винчестера):

#!/bin/sh

case $1 in
      hibernate|suspend) # disable networking
            cnetworkmanager -o false
            ;;
      thaw|resume) # enable networking, disable HDD APM
            hdparm -B255 /dev/sda
            cnetworkmanager -o true
            ;;
esac


Осталось ещё решить проблему с перестающим работать по возвращении из suspend / hibernate тачскрином.

воскресенье, 29 мая 2011 г.

Щелчки винчестера на EEEPC T101MT и как от них избавиться в Windows

Я уже писал ранее как избавиться от этого самоубийства винчестера в Ubuntu (http://barbitoff.blogspot.com/2011/04/ubuntu.html) и в Fedora (http://barbitoff.blogspot.com/2011/05/eeepc-t101mt-fedora.html), теперь я наконец-то нашел решение проблемы и для Windows 7:
1) скачать и установить hdparm (http://barbitoff.blogspot.com/2011/05/hdparm-windows.html), поставить в свойствах exe-шника hdparm (C:\Program Files\hdparm\bin) "Запускать от имени администратора"
2) Создать bat-ник со следующим содержимым: hdparm -B255 hda
3) Добавить этот bat-ник в автозагрузку (точнее сделать так, чтобы он запускался при каждом входе в Windows) как написано тут: http://barbitoff.blogspot.com/2011/05/windows-7.html

суббота, 28 мая 2011 г.

Яркость экрана EEEPC в Fedora 15

Похоже, проблема с яркостью экрана EeePC T101MT проявляется по всех Линухах: "из коробки" максимальная яркость экрана оказывается процентов 70 от реального максимума (например, в Винде). Для Ubuntu был пакет eeepc-brightness-workaround из репозитория ppa:plippo/t101mt, для Федоры ничего подобного не нашел, пришлось крутить руками. Добавление опций "acpi_osi=Linux acpi_backlight=vendor" в параметры ядра, в отличие от других EeePC, на моем не работает (грузиться начинает система с нормальной яркостью, однако после запуска Kernel Device Manager яркость снова убавляется), пришлось распотрошить deb-пакет eeepc-brightness-workaround (т.к. я не нашел способа ставить deb пакеты на Федору, впрочем, я особенно и не искал) дабы посмотреть, как же проблема с яркостью решается в нем. Оказалось, что достаточно просто: всего одной командной строчкой "setpci -s 00:02.0 f4.b=ff", которая находится в файле, вызываемом при загрузке системы (файл помещается в /etc/init.d/). Однако у меня после вызова этого файла видимо вызывается что-то ещё, что опять таки убавляет яркость, только что установленную на максимум "моим" скриптом. Искать, в каком из полутора десятков файлов это делается, было лень, так что пришлось поместить эту строчку в /etc/rc.d/rc.local, вызываемый после всех остальных файлов. И всё наконец-то заработало, теперь максимальная яркость действительно максимальна.
Файл /etc/rc.d/rc.local в итоге у меня выглядит так (он также решает проблему с щелчками винчестера из-за частой парковки головок):

hdparm -B255 /dev/sda
setpci -s 00:02.0 f4.b=ff