Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Asus TP300L: разные проблемы по мелочи  (Прочитано 6042 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ghaydn

  • Автор темы
  • Любитель
  • *
  • Сообщений: 50
    • Просмотр профиля
С недавнего времени являюсь счастливым обладателем данного шустрого девайса. Отличный ноутбук в своей задумке, но, увы, слишком новый и слишком закрытый. Как следствие - плохая поддержка никсами. В общем всё работает, но по частным мелочам постоянно что-то не то. Ну вот например:
1. Тачпад. По какой-то причине в настройках полностью отсутствует конфигурация рабочей поверхности тачпада; в частности, нет ни слова про краевую прокрутку. А он, оказывается, вообще не определился, точнее, система называет его "PS/2 Logitech Wheel Mouse". Посмотрел по буржуйским ресурсам - там предлагают пересобирать патченное ядро. Я вот очень сильно подозреваю, что для решения проблемы достаточно просто вручную подправить какие-то конфиги (девайс ведь работает, значит драйвер для него есть, просто дальше что-то неправильно определяется, - поправьте меня, если здесь логическая ошибка).
2. Продолжая тему сенсорных устройств. Экран с мультитачем - вроде он есть, а вроде его и нет. Вроде несколькопальцевый ввод есть, и даже в хроме проверяется через гугл - однако, скажем, изменение масштаба через мультитач в том же хроме не просходит (на предустановленной вин8 происходит). Вообще, посоветуйте утилитку по диагностике и/или настройке сенсорных экранов, если таковая имеется в природе.
(кстати: а как включить виртуальную клавиатуру уже при входе в систему? На данный момент установлена Onboard, но запускается лишь после логина)
3. Крышка ноутбука открывается на 360 градусов, при полностью открытой он превращается в большой планшет. Предполагается, что при полностью открытой крышке клавиатура и тачпад блокируются, чтобы случайно их не нажимать, однако реализовано это не аппаратно, а софтверно, и эта софтина виндоус-онли. Сильно подозреваю, что сенсор, ответственный за определение положения крышки, работает на каком-то стандартном драйвере и посылает какие-то стандартные сигналы. Значит, вероятно, можно написать небольшой скрипт, который будет блокировать и разблокировать клавиатуру и тачпад при получении этих сигналов. Осталось только понять, как это всё проделать на практике.
4. Гибернация. Тут вообще печальная песня. Похоже, как раз спящий/ждущий режим не поддерживаются именно на уровне ядра, потому что а) соответствующие пункты настроек напрочь отсутствуют в менеджере питания б) при попытке уйти в ждущий режим и выйти обратно отваливаются и/или начинают кушать память некоторые программы, например, xscreensaver. Тут у меня вообще нет никаких предположений, что же можно поделать, однако вдруг кто-то сталкивался с подобной проблемой и решил её.
5. Сенсоры ориентации в пространстве (акселерометр). Куда копать, где искать?
[6]. Видеокарта. Вроде бы работает нормально, однако всё же спрошу: нет ли у кого проблем с GeForce 820m под Ubuntu? Нет ли такого, что "это устройство может работать быстрее"?

Вот так. Буду рад любой подсказке и наводке.

Немного о системе. Ubuntu Studio 14.04 (этот дистрибутив использует собственную версию lowlatency-ядра, из-за чего и не принимаются никакие предложения по пересборке или патчеванию, и рабочий стол XFCE).
И немного обо мне: я хоть и пользуюсь линуксом, всё же в первую очередь музыкант, не айтишник. И по возможности стараюсь не лезть в скрипты, конфиги и прочие явления, требующие знания внутренностей системы.

upd. Поигрался с предустановленной виндой, обнаружил ещё, что в планшетном режиме поворот аппарата в пространстве меняет ориентацию экрана. Добавил в список проблем.
« Последнее редактирование: 12 Мая 2015, 17:01:16 от Ghaydn »
— Доктор, меня не понимают…
— вРН БШ ЯЙЮГЮКХ?
Asus TP300L | i7@4x2GHz | 8G | nvidia 820M | Jammy | Mate

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 14037
  • Xubuntu 18.04
    • Просмотр профиля
Re: Asus TP300L: разные проблемы по мелочи
« Ответ #1 : 12 Мая 2015, 09:31:01 »
Ghaydn,
По поводу тачпада. Пользователям обычного Ubuntu уже не нужно ставить кастомизированное ядро. Я сделал драйвер в виде dkms. Вот только о lowlatency я не подумал, когда прописывал зависимости. Но он должен собраться и так. Это легко проверить. Сначала надо убедиться, что у вас именно Focaltech. Для этого выполните в терминале

dmesg | grep pnp

Если там есть FLT0101, FLT0102 или FLT0103, то у вас Focaltech.

Теперь нужно установить ядро 3.19, которое будет в 14.04.3. Оно сейчас уже есть в proposed, но мы поставим его из ppa, и ppa отключим, чтобы потом оно обновлялось из штатных репозиториев, когда через несколько дней это ядро появится в основном репозитории. Делается это так.

sudo add-apt-repository ppa:canonical-kernel-team/ppa
sudo apt-get update
sudo apt-get install linux-lowlatency-lts-vivid
sudo add-apt-repository -r ppa:canonical-kernel-team/ppa

Теперь нужно перезагрузиться.

Просто поставить драйвер из моего ppa не получится, так как он хочет linux-GENERIC-lts-vivid. Я это исправлю, чтобы была альтернатива. Но пока это решается просто установкой пакета от vivid, где такой зависимости нет.

Скачиваете пакет.
https://launchpad.net/~hanipouspilot/+archive/ubuntu/focaltech-dkms/+files/focaltech-dkms_1.4_all.deb

Кладете его в домашнюю папку и выполняете.

sudo dpkg -i focaltech*.deb

После перезагрузки тачпад должен заработать нормально.

Кстати один музыкант тоже спрашивал про это. Но он из моих исходников на github собрал сам ядро lowlatency.

На более свежем ядре возможно и другие вопросы сами отпадут.
« Последнее редактирование: 12 Мая 2015, 09:38:07 от Pilot6 »
Я в личке не консультирую. Вопросы задавайте на форуме.

Оффлайн Ghaydn

  • Автор темы
  • Любитель
  • *
  • Сообщений: 50
    • Просмотр профиля
Re: Asus TP300L: разные проблемы по мелочи
« Ответ #2 : 12 Мая 2015, 17:40:53 »
Pilot6
О, спасибо! Да, это куда проще, чем пересборка. Тачпад FLT0102, 10 минут полёт нормальный. После установки драйвера даже чувствительность тачпада изменилась.
Однако всё равно что-то не то: не настраивается чувствительность. Стрелка перемещается с одинаковой скоростью (довольно медленно) вне зависимости от положения ползунка. Ускорение, однако, изменяется.

Следующий на очереди, видимо, сенсорный экран. Пока что самое вразумительное, что удалось накопать: http://www.linux.org.ru/forum/linux-hardware/10454515 - то есть сами иксфсе не умеют вразумительно работать с тачскрином, только и всего. Но неужели за год нигде никаких подвижек? Наверняка уже умельцы хотя бы частично реализовали, просто почему-то оно не входит в стабильную ветку XFCE.
— Доктор, меня не понимают…
— вРН БШ ЯЙЮГЮКХ?
Asus TP300L | i7@4x2GHz | 8G | nvidia 820M | Jammy | Mate

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 14037
  • Xubuntu 18.04
    • Просмотр профиля
Re: Asus TP300L: разные проблемы по мелочи
« Ответ #3 : 12 Мая 2015, 18:34:49 »
Ghaydn,
По поводу чувствительности. Пока еще не раскрыт полностью протокол взаимодействия с этим тачпадом. Поэтому ползунок не работает. Я вот добавил туда возможность сообщать толщину пальцев и включить Palm Detection. Этого в ядре еще нет. Как сделать написано в описании моего ppa.
Но scale можно настроить параметрами xinput.

По поводу экрана не подскажу. Можете для пробы ядро из mainline поставить свежее. Может что-то на этот счет сделали. Я не разбирался. У меня тачскрина нет.
Я в личке не консультирую. Вопросы задавайте на форуме.

Оффлайн Ghaydn

  • Автор темы
  • Любитель
  • *
  • Сообщений: 50
    • Просмотр профиля
Re: Asus TP300L: разные проблемы по мелочи
« Ответ #4 : 12 Мая 2015, 18:56:25 »
Установил gpointing-device-settings - там чувствительность изменяется правильно.
К слову, в этой софтине тачскрин вообще не отображаеся.
— Доктор, меня не понимают…
— вРН БШ ЯЙЮГЮКХ?
Asus TP300L | i7@4x2GHz | 8G | nvidia 820M | Jammy | Mate

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 14037
  • Xubuntu 18.04
    • Просмотр профиля
Re: Asus TP300L: разные проблемы по мелочи
« Ответ #5 : 12 Мая 2015, 19:00:00 »
Пока не придумал как лучше сделать пакет, чтобы lowlatency тащил. Отдельный пакет делать неохота только из-за зависимости. Если будет многим нужно - подумаю. Можно и так ставить от vivid. А убирать зависимость от ядра плохо, так как под 3.13 - 3.16 он не собирается.
Я в личке не консультирую. Вопросы задавайте на форуме.

Оффлайн Ghaydn

  • Автор темы
  • Любитель
  • *
  • Сообщений: 50
    • Просмотр профиля
Re: Asus TP300L: разные проблемы по мелочи
« Ответ #6 : 23 Августа 2015, 13:43:33 »
Наткнулся тут на такую тему: http://kubuntu.ru/node/9061
Осталось понять, через какое место поступает сигнал о том, что крышка открыта более чем на 180 градусов и написать небольшой скрипт, по которому при получении это сигнала клавиатура и тачпад будут блокироваться (а при получении обратного сигнала - снова включаться). Вот только как это понять?

И ещё: а можно как-то применить вот это http://www.mintlinux.ru/forum/thread1947.html к сабжу? Причём подцепить не на кнопку на панели, а на акселерометр (или что там отвечает за ориентацию в пространстве).
« Последнее редактирование: 23 Августа 2015, 13:45:45 от Ghaydn »
— Доктор, меня не понимают…
— вРН БШ ЯЙЮГЮКХ?
Asus TP300L | i7@4x2GHz | 8G | nvidia 820M | Jammy | Mate

Оффлайн Ghaydn

  • Автор темы
  • Любитель
  • *
  • Сообщений: 50
    • Просмотр профиля
Re: Asus TP300L: разные проблемы по мелочи
« Ответ #7 : 02 Сентября 2015, 22:06:43 »
Чистая Ubuntu (юнити) 15.04, ядро 3.19-lowlatency. Драйвер фокалтех устанавливается, но не похоже, что он работает. Ни двухпальцевая прокрутка, ни мультитач не хотят включаться. Gpionting-device-settings позволяет включить эмуляцию прокрутки мышью, однако это ничего не даёт.
Интересно, что я мог сделать не так?
upd: поставил то же в минте - полёт нормальный.

Зато, похоже, компьютер наконец научился правильно засыпать и просыпаться.
« Последнее редактирование: 03 Сентября 2015, 11:51:30 от Ghaydn »
— Доктор, меня не понимают…
— вРН БШ ЯЙЮГЮКХ?
Asus TP300L | i7@4x2GHz | 8G | nvidia 820M | Jammy | Mate

Оффлайн Ghaydn

  • Автор темы
  • Любитель
  • *
  • Сообщений: 50
    • Просмотр профиля
Re: Asus TP300L: разные проблемы по мелочи
« Ответ #8 : 07 Сентября 2015, 04:25:14 »
Попробую новый подход к аппаратным средствам.

Делаю lsinput и получаю пригоршню девайсов, отвечающих за те или иные события ввода. Также нашлась полезная утилитка input-events, которая показала мне, что многие функциональные кнопки считаются отдельными девайсами. Кроме того, я из этой утилиты узнал, что на сенсорный экран имеются полноценные дрова вместе с мультитачем, но вот как его правильно подружить с десктопным окружением (ныне с кедами) - не очень понятно. Хотя бы такие мелочи как: прокрутка перетаскиванием, правая кнопка длинным нажатием, щелчок на панели (сейчас почему-то сенсорный экран может тавести мышку на панель, но клик не посылает).
В списке не нашлось места для таких девайсов, которые, как мне казалось, должны были там находиться:
1. Датчик освещённости
2. Акселерометр (датчик положения в пространстве)
3. Датчик открытой более чем на 180 градусов крышки
4. Кнопки повышения и понижения яркости экрана (про них чуть ниже)
5. Кнопки режима самолёта
Любопытно, что кнопка выключения монитора и кнопка автоматической яркости работают, выдают сигналы через input-events, в то время как увеличение/уменьшение громкости и самолёт таковых сигналов не выдают.

По первым трём. Где искать инфу, какой командой? Устройства, очевидно, не распознаны ядром, однако же они физически существуют, значит где-то должна быть об этом инфа?
lspci и lsusb тоже пробовал, однако, насколько я могу опознать на глаз, там этих устройств нет.
— Доктор, меня не понимают…
— вРН БШ ЯЙЮГЮКХ?
Asus TP300L | i7@4x2GHz | 8G | nvidia 820M | Jammy | Mate

Оффлайн Ghaydn

  • Автор темы
  • Любитель
  • *
  • Сообщений: 50
    • Просмотр профиля
Re: Asus TP300L: разные проблемы по мелочи
« Ответ #9 : 15 Мая 2017, 23:01:00 »
Внезапно я тут узнал, что акселерометр отсутствует в списке xinput. Также я узнал, что драйвер на него таки ЕСТЬ в ядре. Инфа нашлась тут: https://wiki.debian.org/InstallingDebianOn/Asus/T100TA
Здесь же нашлись скрипты вращения экрана, которые потребовалось допилить, но, в общем-то, они оказались работоспособны. Итак.
1. Тачскрин работает идентично, однако имеет другое имя: в скрипте ATML1000, у моего же просто Atmel - исправляем
2. Док-станция отсутствует как класс, но под ней подразумевается тачпад - исправляем "ASUS.*Base.*pointer" на "FocalTech"
3. Сам акселерометр располагается по адресу /sys/bus/iio/devices/iio\:device1/ (в скрипте было device0) - исправляем
После этого уже скрипт начинает видеть акселерометр и даже что-то там поворачивать, но неправильно. Методом тыка заменяем значения new_rotation и coord_transf_matrix до тех пор, пока не начнёт получаться всё правильно.
Итог: акселерометр наконец-то работает, дисплей наконец-то поворачивается автоматически вместе с сенсорным экраном.

Исправленный скрипт, вдруг кому-то пригодится:
#!/bin/bash

# Частота опроса акселерометра. Думаю, можно будет потом поиграться со значениями
accel_time_check=3


# Absolute value function.
abs(){
    [ $1 -lt 0 ] && echo $((-$1)) || echo $1
}


# Display usage if wrong input arguments are supplied.
if [[ $# -ne 0 ]]
then
    echo "ASUS TP300L screen autorotation script"
    echo -n "This is a non interactive script, "
    echo "just launch it in background."
    exit 1
fi


# Check if xrandr and xinput are installed.
hash xrandr 2>/dev/null || { echo "xrandr is not installed"; exit 1; }
hash xinput 2>/dev/null || { echo "xinput is not installed"; exit 1; }


# Xrandr output for the screen, supposing no external screen attached.
screen_output=$(xrandr | grep -w connected | cut -d" " -f1)

# Тут мы выбираем устройства, с которыми работает скрипт.
# У автора xinput показывал следующее:
#  ⎡ Virtual core pointer                                id=2
#  ⎜   ↳ Virtual core XTEST pointer                      id=4
#  ⎜   ↳ ASUSTek COMPUTER INC. ASUS Base Station(T100)   id=10
#  ⎜   ↳ ASUSTek COMPUTER INC. ASUS Base Station(T100)   id=11  <--
#  ⎜   ↳ ATML1000:00 03EB:8C0E                           id=12  <--
# а вот так у меня:
#  ⎡ Virtual core pointer                    id=2 [master pointer  (3)]
#  ⎜   ↳ Virtual core XTEST pointer              id=4 [slave  pointer  (2)]
#  ⎜   ↳ FocalTechPS/2 FocalTech FocalTech Touchpad id=12 [slave  pointer  (2)]
#  ⎜   ↳ Atmel                                    id=17 [slave  pointer  (2)]
#
# Кто такой SIS, я так и не понял, но раз оно и так работает,
# то убирать не буду. Atmel и FocalTech исправил, последнюю строчку
# подправил (там были пляски с бубном из-за двух позиций док-станции)
input_devices=$(xinput --list | grep Atmel | \
                    sed 's/.*id=\([0-9]*\).*/\1/'; \
                xinput --list | grep SIS | \
                    sed 's/.*id=\([0-9]*\).*/\1/'; \
                xinput --list | grep "FocalTech" | \
                    sed 's/.*id=\([0-9]*\).*/\1/')


# Ну и собственно самое главное
while true
do
    current_rotation=$(xrandr -q --verbose | grep $screen_output | \
                           cut -d" " -f6)
    new_rotation="normal"

# вот здесь пришлось исправлять device0 на device1
    accel_x=$(cat /sys/bus/iio/devices/iio\:device1/in_accel_x_raw)
    accel_y=$(cat /sys/bus/iio/devices/iio\:device1/in_accel_y_raw)

# а вот здесь пришлось подменять значения между четырьмя вариантами
    if [[ $accel_y -gt $(abs $accel_x) ]]
    then
        new_rotation="left "
        coord_transf_matrix="0 -1 1 1 0 0 0 0 1"
    elif [[ $accel_x -gt $(abs $accel_y) ]]
    then
        new_rotation="inverted"
        coord_transf_matrix="-1 0 1 0 -1 1 0 0 1"
    elif [[ $accel_y -lt 0 ]] && [[ $(abs $accel_y) -gt $accel_x ]]
    then
        new_rotation="right"
         coord_transf_matrix="0 1 0 -1 0 1 0 0 1"
    else
         new_rotation="normal"
        coord_transf_matrix="1 0 0 0 1 0 0 0 1"
    fi

    if [[ $new_rotation != $current_rotation ]]
    then
        xrandr --output $screen_output --rotate $new_rotation
        for input in ${input_devices[@]}
        do
            xinput set-prop $input 'Coordinate Transformation Matrix' \
                   $coord_transf_matrix
        done
    fi

    sleep $accel_time_check
done
Кстати. Ещё я обнаружил файлы /sys/bus/iio/devices/iio:device0/in_illuminance_input и in_illuminance_raw - судя по имени, это датчики освещения. А значит и их можно будет оживить. Возможно, в ближайшее время выложу скрипт и для них; но учитывая, что я в bash'е разбираюсь только методом копипаста, он может быть довольно кривой.
Также есть вероятность, что где-то там же может лежать датчик открытия монитора на 360 градусов, это поможет избавиться от костылей в виде ярлыков, включающих и выключающих клавиатуру. Будем искать.
— Доктор, меня не понимают…
— вРН БШ ЯЙЮГЮКХ?
Asus TP300L | i7@4x2GHz | 8G | nvidia 820M | Jammy | Mate

 

Страница сгенерирована за 0.041 секунд. Запросов: 25.