Подробный мануал по Lenovo S10 3C и Linux
Статья уже не актуальна и клавиатура работает после обновления BIOS. Подробности тут
Итак, сегодня я могу сказать, что на Lenovo S10 3C уже можно устанавливать Ubuntu и нормально пользоваться, включая ACPI.
Я попытаюсь обобщить в одном посте всю информацию собранную мною в сети, а также предоставленную пользователями этого сайта. Все описанное ниже будет справедливо для Ubuntu 10.04 Netbook Remix. В новых релизах возможно что то заработает "искаропки"
Для начала готовим загрузочную флешку с Ubuntu Netbook Remix и загружаемся с нее с параметрами
noapic acpi=off
Выбор опций загрузки в Ubuntu вызывается по клавише F6.
Первым делом после установки нам нужно завести клавиатуру, ибо совместно с ACPI она не работает. Для этого создаем файл с произвольным названием, скажем lenovo.c и вставляем в него следующий код:
#include <unistd.h> #include <sys/io.h> #define I8042_COMMAND_REG 0x64 int main(int argc, char *argv[]) { char data = 0xae; // enable keyboard ioperm(I8042_COMMAND_REG, 1, 1); if (argc == 2 && argv[1][0] == '0') data = 0xad; // disable keyboard outb(data, I8042_COMMAND_REG); return 0; }
Далее скомпилируем исходник получив бинарный файл который и будет "лечить" клавиатуру
gcc lenovo.c -o lenovo_keyboard
Кому лень это делать или не знает как внизу поста я прикреплю скомпилированные бинарники для архитектуры x86 и x86_64
Копируем получившийся файл в /usr/local/bin и дадим права на его исполнение:
sudo cp lenovo_keyboard /usr/local/bin
sudo chmod 777 /usr/local/bin/lenovo_keyboard
Теперь нужно сделать так чтобы данный код исполнялся каждый раз при загрузке системы. Для этого откроем /etc/rc.local и приведем его в такой вид:
#!/bin/sh -e /usr/local/bin/lenovo_keyboard 1 exit 0
Теперь перезагрузившись клавиатура должна работать.
Wi-Fi на Lenovo S10 3C искаропки на 10.04 тоже отказалась работать. Я не буду повторяться, так как уже написал небольшой пост о том как поднять на данном устройства Wi-Fi.
Для полноценной работы с нетбуком нужен работоспособный спящий режим (S2RAM). Спящий режим сам по себе работает, только клавиатура после выхода из спячки отваливается и приходится либо перезагружаться либо подключать внешнюю клавиатуру чтобы запустить lenovo_keyboard, что очень омрачает.
Выход из этой ситуации я нашел. Наверняка таких способов может быть куча, но я сделал так:
Создаем событие acpid и скрипт который будет выполняться когда это событие будет отловленно системой. (Открытие закрытие крышки нетбука)
sudo nano -w /etc/acpi/events/wakeup
В открывшийся файл вставляем следующее:
event=button/lid LID 00000080 action=/etc/acpi/wakeup.sh
Сохраняем, закрываем и перейдем к самому скрипту. Скриптом это назвать сложно, но оно работает.
sudo nano -w /etc/acpi/wakeup.sh
В открывшийся файл вставляем:
#!/bin/bash cd /usr/local/bin ./lenovo_keyboard
Сохраним и дадим скрипту права на исполнение
sudo chmod 777 /etc/acpi/wakeup.sh
Теперь при выходе из спящего режима уже начиная с этапа ввода пароля клавиатура должна работать..
Ошибка в пути к файлу
есть
#!/bin/sh -e
/usr/bin/local/lenovo_keyboard 1
exit 0
надо
#!/bin/sh -e
/usr/local/bin/lenovo_keyboard 1
exit 0
Исправил, запечатался.
Сделал acpi_listen
root@123-lenovo:/home/123# acpi_listen
button/lid LID 00000080 00000002
button/lid LID 00000080 00000003
Есть идеи?
Не работает? Скрипту права на исполнение давали?
Спасибо за "пинок"
Сделал sudo chmod 777 /etc/acpi/wakeup.sh и sudo chmod 777 /etc/acpi/events/wakeup
Спасибо за помощь)
p.s. в 11.04 wifi из коробки работает =)
Это не скрипт, он не исполняется, так что можете убрать права на исполнение.
Это не скрипт, он не исполняется, так что можете убрать права на исполнение.
Правельно это папка...на которую тоже надо дать права
#include
#include
у него не написано что надо инклудить) а надо
#include
#include
Правельно это папка...на которую тоже надо дать права
Сам ты папка (c)
Это уважаемый не папка, это файл с описанием события нужное acpid.
В открывшийся файл вставляем:
#!/bin/bash
cd /usr/local/bin
./lenovo_keyboard
Сохраним и дадим скрипту права на исполнение
sudo chmod 777 /usr/local/bin/lenovo_keyboard
а не sudo chmod 777 /etc/acpi/wakeup.sh ????