xonatius / samsung-backlight

Linux kernel driver for samsung backlight control
https://github.com/xonatius/samsung-backlight/wiki
6 stars 3 forks source link

Samsung N350 #3

Closed BrokenBrake closed 13 years ago

BrokenBrake commented 13 years ago

Здравствуйте, Даниил.

Ох уж эти Самсунги! Замучался :( Ваш модуль тоже, к сожалению, почти не работает. Полное описание проблемы тут - http://brokenbrake.biz/2011/04/20/3aTpax Кратко: попытка убавить/прибавить яркость через xbacklight вводит систему в помешательство: яркость начинает быстро меняться от минимальной до максимальной раз двадцать. А через Fn+Up/Fn+Down вообще никакой реакции.

Я сдаюсь, у меня не хватает знаний, чтобы понять, в чём дело. Убил три дня на попытки решить проблему.

lspci -nn 00:00.0 Host bridge [0600]: Intel Corporation N10 Family DMI Bridge [8086:a010] 00:02.0 VGA compatible controller [0300]: Intel Corporation N10 Family Integrated Graphics Controller [8086:a011] 00:02.1 Display controller [0380]: Intel Corporation N10 Family Integrated Graphics Controller [8086:a012] 00:1b.0 Audio device [0403]: Intel Corporation N10/ICH 7 Family High Definition Audio Controller [8086:27d8](rev 02) 00:1c.0 PCI bridge [0604]: Intel Corporation N10/ICH 7 Family PCI Express Port 1 [8086:27d0](rev 02) 00:1c.1 PCI bridge [0604]: Intel Corporation N10/ICH 7 Family PCI Express Port 2 [8086:27d2](rev 02) 00:1c.2 PCI bridge [0604]: Intel Corporation N10/ICH 7 Family PCI Express Port 3 [8086:27d4](rev 02) 00:1c.3 PCI bridge [0604]: Intel Corporation N10/ICH 7 Family PCI Express Port 4 [8086:27d6](rev 02) 00:1d.0 USB Controller [0c03]: Intel Corporation N10/ICH 7 Family USB UHCI Controller #1 [8086:27c8](rev 02) 00:1d.1 USB Controller [0c03]: Intel Corporation N10/ICH 7 Family USB UHCI Controller #2 [8086:27c9](rev 02) 00:1d.2 USB Controller [0c03]: Intel Corporation N10/ICH 7 Family USB UHCI Controller #3 [8086:27ca](rev 02) 00:1d.3 USB Controller [0c03]: Intel Corporation N10/ICH 7 Family USB UHCI Controller #4 [8086:27cb](rev 02) 00:1d.7 USB Controller [0c03]: Intel Corporation N10/ICH 7 Family USB2 EHCI Controller [8086:27cc](rev 02) 00:1e.0 PCI bridge [0604]: Intel Corporation 82801 Mobile PCI Bridge [8086:2448](rev e2) 00:1f.0 ISA bridge [0601]: Intel Corporation NM10 Family LPC Controller [8086:27bc](rev 02) 00:1f.2 SATA controller [0106]: Intel Corporation N10/ICH7 Family SATA AHCI Controller [8086:27c1](rev 02) 00:1f.3 SMBus [0c05]: Intel Corporation N10/ICH 7 Family SMBus Controller [8086:27da](rev 02) 05:00.0 Network controller [0280]: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller [14e4:4727](rev 01) 09:00.0 Ethernet controller [0200]: Marvell Technology Group Ltd. 88E8040 PCI-E Fast Ethernet Controller [11ab:4354]

dmidecode -s system-product-name N350

xonatius commented 13 years ago

Добрый вечер (=

Угу, самсунги на эту тему печальны )= Fn+Up/Down как правило вообще отдельная тема (= Я так понял у вас GMA3150 на борту? Общий смысл модуля описывается командой setpci -s 00:02.0 f4.b=FF (FF можно менять от 00 до FF (min и max) значения яркости.) По-этому попробуйте сначала выполнить ее из под рута, и пришлите получилось ли что-либо из этого..

BrokenBrake commented 13 years ago

Ура! Спасибо.

Ваш способ работает чётко, без малейших глюков. Значит можно будет набросать просто скриптик на bash и настроить без ядерного модуля даже эти клавиши в крайнем случае. Урррааа! :)

А то я уж смирился и отложил ноут в дальний угол, настроившись на долгую работу за старым компьютером.

BrokenBrake commented 13 years ago

А насчёт GMA3150, я пока не знаю как точно определить это. Но попробую.

BrokenBrake commented 13 years ago

Хм. Наверно ж через lspci эту информацию получить можно, но там почему-то очень куцая информация, даже если -vv в опциях. Всё то же Intel Corporation N10 Family.

xonatius commented 13 years ago

О. ну раз пашет, то уже хорошо (= Правда загадка почему модуль по такому случаю не пашет... Если есть свободное время, то попробуйте следующее

git clone git://github.com/xonatius/samsung-backlight.git
cd samsung-backlight
git checkout samsung_n350
make
sudo make install
sudo rmmod samsung_backlight
sudo modprobe samsung_backlight

Далее пришлите хвост dmesg и попробуйте

cd /sys
find . -name brightness

Получите что-то вроде

./devices/virtual/backlight/acpi_video0/brightness
./devices/pci0000:00/0000:00:02.0/backlight/samsung/brightness

И попробуйте поменять/считать яркость следующим образом

 sudo cat /sys/devices/pci0000:00/0000:00:02.0/backlight/samsung/brightness
 sudo su -c 'echo 7 > /sys/devices/pci0000:00/0000:00:02.0/backlight/samsung/brightness'

Где вместо 7 можно числа от 0 до 7. Аналогично можно попытаться для любого из найденного файла. Пришлите результаты, если не трудно (=

BrokenBrake commented 13 years ago

Всё сделал.

dmesg | tail [ 2972.892371] Samsung-backlight: checking for SABI support. [ 2972.892644] Samsung-backlight: SABI is supported (f5139)

А вот числа в найденный файл производят странный эффект. Вообще никакой логики. То увеличивается, то уменьшается, причём как-то плавно, а не мгновенно, как в случае с setpci.

BrokenBrake commented 13 years ago

И, кстати, увеличение/уменьшение происходит также и через Fn-клавиши, и при этом также (как и с echo любой цифры) только в двух вариантах - или ярко, или темно. Без градаций.

BrokenBrake commented 13 years ago

Через setpci поставил 00 и экран отключился :) Хорошо, что до этого было FF. А нафиг вообще тогда модули все эти нужны? И почему производители так намудрили? Ничччего не понимаю.

xonatius commented 13 years ago

ого, прикольно (= Точнее странно (= попробуй setpci с параметрами 1F, 3F и 5F... и при этом читая содержимое /sys/devices/pci0000:00/0000:00:02.0/backlight/samsung/brightness. Меняется ли яркость в градациях и что выдает содержимое файла? ага, по нулям - это вообще потушить лампу (= Ну как бы использование setpci - это что-то вроде читерства (= Ты просто отправляешь на некоторый адрес устройству какое-то число. Модули предназначены, что б уже нести какую-то логику и связывать между собой компоненты, те. что это не просто какое-то значение по адресу, а яркость ну и соотв. если у др. производителей другой адрес, то модуль тут посредник. Почему намудрили - это загадка (=

BrokenBrake commented 13 years ago

Сделал. 1F и т. п. меняют яркость чётко, но при этом в файле */brightness всегда остаётся 0. Про "читерство" понимаю, конечно, но уж точно лучше так, чем никак :)

xonatius commented 13 years ago

Такс. Стоп. Тут еще одна мысля в голове промелькнула. сделайте sudo rmmod samsung-backlight зайдите в папку где собирали модуль и сделайте sudo insmode ./samsung-backlight.ko. Попробуйте опять dmesg | tail и файлы, кнопки. Вы случайно не ставили пакеты voria, easy-slow-down-manager?

BrokenBrake commented 13 years ago

Ко мне можно и лучше на "ты" :) Voria, конечно же, пробовал, и сейчас, оказывается, стоит этот пакет неудалённый. Извините, что сразу не сказал, вылетело из головы. И в ядро при загрузке передаётся acpi_backlight=vendor.

Пакет сейчас удалю, сделаю rmmod и insmode.

BrokenBrake commented 13 years ago

Блин, с двумя компьютерами постоянно путаюсь, какой клавиатурой набирать ))

xonatius commented 13 years ago

Ок (= Ко мне тоже можно и лучше (= Та я что-то просто сам не подумал, что они конфликтовать могут. То, что передается при загрузке - норм, пусть остается (= (=

BrokenBrake commented 13 years ago

Заработало! Во-первых, сменился файл, он теперь с адресом. /sys/devices/pci0000:00/0000:00:02.0/backlight/samsung/brightness

Во-вторых, отлично стали работать кнопки, семь уровней, и в файлике соответственно отображается от 0 до 7. Но при insmod всё ж были ошибочки...

dmesg | tail -n 25 [ 5511.277825] sdb: [ 5511.282566] sd 5:0:0:0: [sdb] Assuming drive cache: write through [ 5511.282891] sd 5:0:0:0: [sdb] Attached SCSI removable disk [ 5562.991581] samsung_backlight: found laptop model 'N350' [ 5562.997486] ------------[ cut here ]------------ [ 5563.003163] WARNING: at /home/kernel-ppa/COD/linux/drivers/video/backlight/backlight.c:314 backlight_device_register+0x149/0x180() [ 5563.014608] Hardware name: N350
[ 5563.020618] samsung: invalid backlight type [ 5563.020818] Modules linked in: samsung_backlight(+) nls_iso8859_1 nls_cp437 vfat fat usb_storage uas snd_hda_codec_realtek snd_hda_intel snd_hda_codec snd_hwdep snd_pcm snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq btusb bluetooth joydev snd_timer snd_seq_device snd tpm_tis pcspkr soundcore snd_page_alloc uvcvideo tpm videodev tpm_bios psmouse i2c_i801 serio_raw jfs i915 ahci libahci drm_kms_helper drm sky2 i2c_algo_bit video [last unloaded: samsung_backlight] [ 5563.053348] Pid: 2366, comm: insmod Not tainted 2.6.39-020639rc4-generic #201104191410 [ 5563.060252] Call Trace: [ 5563.066869] [] ? backlight_device_register+0x149/0x180 [ 5563.073449] [] warn_slowpath_common+0x81/0xa0 [ 5563.080171] [] ? backlight_device_register+0x149/0x180 [ 5563.086788] [] warn_slowpath_fmt+0x33/0x40 [ 5563.093241] [] backlight_device_register+0x149/0x180 [ 5563.099959] [] ? dmi_check_cb+0x1d/0x1d [samsung_backlight] [ 5563.106644] [] samsung_init+0xc0/0xfe3 [samsung_backlight] [ 5563.113533] [] do_one_initcall+0xba/0x100 [ 5563.120310] [] ? set_page_attributes+0x1b/0x30 [ 5563.127079] [] ? set_section_ro_nx+0x5a/0x70 [ 5563.133651] [] sys_init_module+0xb6/0x200 [ 5563.140486] [] ? sys_close+0x6e/0xc0 [ 5563.147234] [] sysenter_do_call+0x12/0x28 [ 5563.153900] ---[ end trace 0cde7cbc8781c406 ]---

Что это всё значит? Ещё +1 модель к проекту? :)

BrokenBrake commented 13 years ago

Кстати, ядро у меня сейчас самое распоследнее, 2.6.39, т. к. там как раз для самсунгов чего-то делали в последних патчах. Похоже, именно из-за этого варнинги. Разобраться бы, в чём именно дело. Попробую сейчас ещё со старым ядром.

BrokenBrake commented 13 years ago

Ух ты, блин. Крышку закрывал, он, видимо, пытался уснуть, да проснуться теперь и не может. Всё через жопу :) И у Самсунгов, и в Линуксе.

BrokenBrake commented 13 years ago

Так, для старого ядра у меня заголовочные файлы не установлены, поэтому модуль не собирается. Чтобы установить, надо переключить сеть, много всяких заморочек. Надо это сделать, или необязательно?

xonatius commented 13 years ago

Ура (=

А вот что вот это вот за чудо ошибка - я хз О.о Но то, что работает уже хорошо (= Снеси другие пакеты, которые ты до этого ставил и они не работали и поищи find /lib/modules/uname -r-name samsung-backlight.ko, удали их и сделай еще раз sudo make install из директории с репозиторием. Ну и попробуй ребут и просмотри dmesg | less после ребута - мб пропали те приколы? (=

Ну по всей видимости да, +1 (=

xonatius commented 13 years ago

Да, со сном и гибернацией вечные траблы. Но у моего ноута уже устаканилось вроде. Ну если ты хочешь на старое ядро поставить, то придется заголовки качать, иначе не соберет, а собранное под другое ядро - не канает.

BrokenBrake commented 13 years ago

А я уже сперва снёс пакеты, а потом делал то, что ты говорил. Так что всё ОК, замечательно работает. После перезагрузки тоже всё ОК, собранный модуль автоматом подхватывается. Ура, ура :) Спасибо! В блоге написать надо об этой радости, да этим из voria, чтобы тоже обновились.

BrokenBrake commented 13 years ago

Я очень рад и немного завидую даже :) Очень клёво столько знать и уметь. Запросто драйверы для дурацких ноутов писать за считанные минуты. Это супер!

BrokenBrake commented 13 years ago

Прошу прощения за неправильное обращение, сейчас только понял, что ты не Пётр, а Даниил. А кто Пётр, теперь в этих форках и не разобрать :) В любом случае всем участникам сего хорошего дела очень благодарен.

xonatius commented 13 years ago

Это хорошо (= только с новыми ядрами пересобрать придется, до тех пор пока кто-нибудь не отправит этот патч в ядро. Пожалуйста, рад был помочь (= Удачи (= Ну родоначальник модуля не я и не так уж я в этом шарю (= Просто в один день попал в руки самсунговский ноут и пришлось искать решение, набрел на модуль для других моделей, поковырялся, оказалось что просто нужно добавить пару строк о своей модели, форкнул и все (= Ну а потом решил добавить, все че встречалось в сети на эту тему, документировать и собирать аналогичные траблы (= Модуль простой - по сути запись одного числа и куча строк для кого это работает, но зато хоть небольшой опыт в том, как устроены модули ядра. (=

BrokenBrake commented 13 years ago

http://brokenbrake.biz/2011/04/22/Samsung-N350-backlight

Ну всё, теперь остальным легче будет, не потратят столько времени как я, балбес :) И мне польза, и людям. Ладно, пойду поработаю наконец-то, да завтра уж займусь продолжением настройки злополучного этого ноута.

Удачи!

xonatius commented 13 years ago

Та ниче страшного (= Тут сложно к кому обращаться, людей тут много (= Главное что гуглился пост легко (= П.С. Раз на то пошло, то фамилия у меня не через ё, а е (= Это хроническое у меня, все время путают (= Тебе тоже удачи. Будут самсунги - пиши (=