KolibriOS в BIOS ( coreboot / SeaBIOS ) на G505S - успех!

Using Kolibri in embedded systems
  • olodar wrote:Так я как купил роутер, так сразу скомпилил и накатил на него OpenWRT :) Ну так если бы проблемы были с роутером, то ноут просто бы дисконнектился, а не зависал, что фиг отключишься/подключишься, пока не отключишь и не подключишь заново (аппаратно). Кстати, со встроенным помогает "опустить" сетевой интерфейс и поднять заново.
    А к другому роутеру (2010 года или позже) ты пробовал подключаться - так, на всякий случай? если модель и аппаратная ревизия роутера - 2010 год или позже то скорее всего это стандарт final N и тут всё в порядке. Если и с другим роутером глючит то скорее всего WiFi адаптер сломался. Кстати я никогда не открывал крышку с mini pci-e адаптера, вдруг там термопаста какая-то и её поменять надо? пока нашёл только одно видео разбора но это не совсем то - https://www.youtube.com/watch?v=Sr2mVhVkL_U , крышку кстати легко повредить при таком снятии
  • floppy121 wrote:
    olodar wrote:Да, есть такая фигня! И то, и другое
    Скажи, а перед сборкой этой прошивки ты делал ту правку для двух видеокарт?
    floppy121 wrote:5: (правка для двух видеокарт)
    Spoiler:5) в файле ./coreboot/src/device/Kconfig изменил

    Code: Select all

    config MULTIPLE_VGA_ADAPTERS
    	bool
    	default n
    на

    Code: Select all

    config MULTIPLE_VGA_ADAPTERS
    	bool
    	default y
    потому что в моей версии ноута две видеокарты а не одна (этот конфиг приведет к выполнению дополнительного кода в ./coreboot/src/northbridge/amd/agesa/family15rl/northbridge.c , но я пока толком не разобрался на что это влияет, давно не играл в игры и не использовал дискретную видеокарту)
    Да, конечно, но она никак не влияет... а у тебя тоже не получилось?
  • floppy121 wrote:
    olodar wrote:Так я как купил роутер, так сразу скомпилил и накатил на него OpenWRT :) Ну так если бы проблемы были с роутером, то ноут просто бы дисконнектился, а не зависал, что фиг отключишься/подключишься, пока не отключишь и не подключишь заново (аппаратно). Кстати, со встроенным помогает "опустить" сетевой интерфейс и поднять заново.
    А к другому роутеру (2010 года или позже) ты пробовал подключаться - так, на всякий случай? если модель и аппаратная ревизия роутера - 2010 год или позже то скорее всего это стандарт final N и тут всё в порядке. Если и с другим роутером глючит то скорее всего WiFi адаптер сломался. Кстати я никогда не открывал крышку с mini pci-e адаптера, вдруг там термопаста какая-то и её поменять надо? пока нашёл только одно видео разбора но это не совсем то - https://www.youtube.com/watch?v=Sr2mVhVkL_U , крышку кстати легко повредить при таком снятии
    Даж не знаю, не пробовал, да и где его сейчас достать.. С нищбродским wifi постоянно проблемы. другое дело провода, но с переносной пекой оч неудобно
  • olodar wrote:Да, конечно, но она никак не влияет... а у тебя тоже не получилось?
    Если честно у меня до сих пор наполовину разобранное по углам лежит, так что пока ты первый кто протестировал! :wink: Очень жаль что не заработало, и не понятно почему... Может быть официальный биос ещё что-то дополнительно настраивает, например прописывает какие-то PCI регистры видеокарты. Их можно и самому прописать после загрузки ОС, например в линуксе - всякими командами типа setpci, только нужно ещё выяснить какими значениями. В-общем я пока отложил эту проблему и сейчас буду пытаться пропихнуть некоторые из своих небольших улучшений (про которые рассказано на 1 странице) в официальный код coreboot
  • olodar wrote:Даж не знаю, не пробовал, да и где его сейчас достать.. С нищбродским wifi постоянно проблемы. другое дело провода, но с переносной пекой оч неудобно
    К соседям подключиться :P ну или сходить в гости к кому-нибудь вместе с ноутом,
    или прогуляться в место где можно подключиться к WiFi (если знаешь такие места)
  • floppy121 wrote:
    olodar wrote:Да, конечно, но она никак не влияет... а у тебя тоже не получилось?
    Если честно у меня до сих пор наполовину разобранное по углам лежит, так что пока ты первый кто протестировал! :wink: Очень жаль что не заработало, и не понятно почему... Может быть официальный биос ещё что-то дополнительно настраивает, например прописывает какие-то PCI регистры видеокарты. Их можно и самому прописать после загрузки ОС, например в линуксе - всякими командами типа setpci, только нужно ещё выяснить какими значениями. В-общем я пока отложил эту проблему и сейчас буду пытаться пропихнуть некоторые из своих небольших улучшений (про которые рассказано на 1 странице) в официальный код coreboot
    Интересно, ты единственный, кто что-то делает в coreboot? :D
    По сути, никаких изменений за долгое время со стороны разработчиков не было, все те же баги и недоработки...
  • floppy121 wrote:Попробуй погуглить "программа для настройки яркости Windows" - предлагает Monitor Plus, Display Tuner, DimScreen, тысячи их! Наверняка что-то из этого сработает
    Ничего не работает. Эти говнопрограммы как-то программно затемняют яркость, это костыль 1000000 уровня. Другие не работают, пишут, что монитор что-то там не поддерживает.
    Мы извлекли видеобиос из оригинального, а оригинальный биос потребляет 768 мб рамы, а этот потребляет 512, почему? Это же один и тот же? Мб, для работы CrossFire нужно как раз этот объем задействовать? Ты говорил, что это "очень грязный биос" (или какой там потребляет 768). А где его достать? Мб попробовать его, вдруг заработает вторая карта?
  • olodar wrote:По сути, никаких изменений за долгое время со стороны разработчиков не было, все те же баги и недоработки...
    Коребут активно разрабатывается и улучшается, это можно видеть по частоте коммитов.
    Но с нашей точки зрения есть три типа изменений:

    1) улучшения кода специфичного для Lenovo G505S - самые полезные для нас,
    но происходят нечасто так как далеко не у каждого разработчика коребута есть такой ноут

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

    2) улучшения кода общего для всех плат - тоже полезны для нас, пусть и в меньшей степени,
    но ты как пользователь не всегда можешь почувствовать их на практике (например если оптимизировали код
    так что коребут стал грузиться в полтора раза быстрее, но он и так грузился быстро и ты ничего не заметил :) )


    3) улучшения кода специфичного для других плат - от них есть и польза и вред:

    польза - если коребут будет лучше поддерживать другие ноуты/платы и большее их количество,
    то в коребут придёт больше людей которые будут улучшать и общий код который и для нас полезен

    вред - чем больше "не наших" плат поддерживает коребут, тем меньше вероятность что какой-то опытный разработчик
    коребута будет улучшать код именно для нашей платы даже если она у него есть, когда полно других интересных
    olodar wrote:
    floppy121 wrote:Попробуй погуглить "программа для настройки яркости Windows" - предлагает Monitor Plus, Display Tuner, DimScreen, тысячи их! Наверняка что-то из этого сработает
    Ничего не работает. Эти говнопрограммы как-то программно затемняют яркость, это костыль 1000000 уровня. Другие не работают, пишут, что монитор что-то там не поддерживает
    Странно... мне казалось, среди них должна быть хотя бы одна нормальная программа, которая для изменения яркости использует тот же программный интерфейс что и винда. Ещё интересно - как они определяют что "монитор не поддерживает" ? Может они ориентируются на какую-то запись в реестре винды, и там достаточно поменять 0 на 1 чтобы поддерживало? У меня когда-то была отдалённо похожая ситуация с древним тачпадом у которого кривые драйвера, пока не откроешь regedit и не поменяешь в одной переменной 0 на 1 этот тачпад жутко глючит
    olodar wrote:Ты говорил, что это "очень грязный биос" (или какой там потребляет 768). А где его достать? Мб попробовать его, вдруг заработает вторая карта?
    Видеобиос можно извлечь двумя способами:
    1) "чистый" - извлечь видеобиос напрямую из бинарника проприетарного InsydeH20 биоса,
    использовав утилиту H20EZE отсюда - https://github.com/s-sosnitskiy80/Insider_BIOS_Tools
    2) "грязный" - прошить проприетарный InsydeH20 биос в ноут (желательно образ без серийников)
    включить ноут, загрузить операционную систему и извлечь видеобиос при включенном ноуте

    Вначале я надеялся на способ 1) - но вскоре выяснилось что этот способ плохо работает,
    потому что те файлы видеобиосов которые содержатся в бинарнике проприетарного InsydeH20 биоса
    по умолчанию не особо рабочие - перед тем, как их использовать, биос патчит эти файлы в процессе загрузки!

    Например, если попытаться использовать "чистый" видеобиос для встроенной видеокарты
    (не пропатченный проприетарным биосом) то вообще не работает подсветка экрана! У "чистых" видеобиосов
    для дискретных видеокарт тоже могут быть проблемы - причём менее очевидные, поэтому в репозитории
    https://github.com/g505s-opensource-res ... s-atombios все "чистые" видеобиосы лежат в папке
    clean_unpacked_-_do_not_use только для ознакомительных целей, не для использования!

    Потом переключились на способ 2) но извлечь видеобиос дискретных видеокарт таким способом
    было очень непросто - помнишь, даже ты пробовал извлечь через линукс и писало Input/Output Error ?
    Через линукс у меня так и не получилось, а в винде программы AtiWinflash / GPU-Z / AIDA64 не работали

    Но в итоге получилось! Через винду сдампил всю временную память компьютера при помощи
    бесплатной программы Belkasoft Live RAM Capturer https://belkasoft.com/get?product=ram
    Она по всей видимости дампит не только оперативку, и в её дампах нашёл видеобиос для R5 M230
    Затем одолжил ноут у знакомого (тоже Lenovo G505S но с видеочипом HD-8570M как у тебя)
    и таким же способом сдампил видеобиос для HD-8570M. Все эти дампы "грязных" видеобиосов
    доступны в таблице - https://github.com/g505s-opensource-res ... s-atombios
    olodar wrote:Мы извлекли видеобиос из оригинального, а оригинальный биос потребляет 768 мб рамы, а этот потребляет 512, почему? Это же один и тот же? Мб, для работы CrossFire нужно как раз этот объем задействовать?
    Перед всеми дампами я специально ставил в ноут 16 гигов оперативки, чтобы извлекаемый видеобиос
    как раз таки был настроен на больший размер отъедаемый памяти. Непонятно, почему в коребуте он стал есть 512

    Скажи пожалуйста, для тестирования ты брал два видеобиоса именно из этой таблицы:
    и для дискретной видеокарты, и для встроенной заменил свой на "табличный" ?
    Просто и для встроенной и для дискретной я дампил одновременно, и у них могут быть
    более взаимно совместимые значения переменных

    Code: Select all

    G505S with discrete HD-8570M 	pci1002,990b.rom (HD's) 	pci1002,6663.rom
    То есть нужно было скачать два этих биоса, удалить из образа коребут тот старый pci1002,990b.rom
    который там уже был (командой ./util/cbfstool/cbfstool $COREBOOT_ROM_PATH remove -n pci1002,990b.rom)
    и потом добавить в образ коребут два новых скачанных видеобиоса перед его прошивкой

    Если ты случайно тестировал вместе со старым pci1002,990b.rom, пожалуйста перетестируй с этими двумя новыми
    Last edited by floppy121 on Thu May 23, 2019 10:09 am, edited 1 time in total.
  • А теперь новости по патчам в коребут:

    1) Пытаемся пропихнуть более новую версию тетриса тинт - https://review.coreboot.org/#/c/20637/
    Это почти те же файлы что я выкладывал на первой странице, разве что обновлён Makefile.
    Отличия в лучшую сторону нашей версии тетриса от той которая сейчас в официальном коребуте:
    Spoiler:[*][/b] более новая версия 0.04+nmu1, в которой исправлены два переполнения буфера
    [*][/b] можно перезагружаться из тетриса нажатиями кнопки "q" а не только через кнопку включения
    [*][/b] исправлен вывод сообщения о паузе который раньше был сломан
    [*][/b] значительно уменьшен в размерах раздутый файл libpayload_tint.patch без потери важного

    но самое главное,
    [*][/b] проверка контрольной суммы SHA-256 скачиваемого архива!

    Makefile скачивает архив исходников тетриса с официальной страницы (на сервере debian), проверяет
    контрольную сумму SHA-256 и только потом распаковывает архив исходников и патчит их libpayload_tint.patch

    А сейчас в коребуте тоже качает с сервера debian но какой-то левой ссылки из старых snapshot'ов
    и контрольная сумма вообще не проверяется, и если кто-то нехороший взломает тот сервак и добавит фигни
    в старый архив - никто ничего не заметит! :mrgreen: Поэтому безопасно пользоваться только нашим тетрисом! 8)
    Надеюсь что его примут в официальный коребут в скором времени
    2) Когда попытались добавить улучшение, позволяющее выбирать MULTIPLE_VGA_ADAPTERS
    прямо через menuconfig (без ручного редактирования ./coreboot/src/device/Kconfig) -
    появилась версия что включенный MULTIPLE_VGA_ADAPTERS (который мы всегда включали вручную)
    наоборот может ухудшать поддержку дискретной видеокарты - но это не точно :P
    см. комменты здесь - https://review.coreboot.org/#/c/20638/ , ещё может повлиять ONBOARD_VGA_IS_PRIMARY

    Поэтому я хочу собрать и протестировать аж 4 прошивки:
    * без MULTIPLE_VGA_ADAPTERS и без ONBOARD_VGA_IS_PRIMARY
    * без MULTIPLE_VGA_ADAPTERS но с ONBOARD_VGA_IS_PRIMARY
    * с MULTIPLE_VGA_ADAPTERS но без ONBOARD_VGA_IS_PRIMARY
    * с MULTIPLE_VGA_ADAPTERS и с ONBOARD_VGA_IS_PRIMARY
    хотя бы узнать чем отличаются их логи загрузки

    этим я попытаюсь заняться в ближайшее время)
  • floppy121 wrote: Скажи пожалуйста, для тестирования ты брал два видеобиоса именно из этой таблицы:
    и для дискретной видеокарты, и для встроенной заменил свой на "табличный" ?
    Просто и для встроенной и для дискретной я дампил одновременно, и у них могут быть
    более взаимно совместимые значения переменных

    Code: Select all

    G505S with discrete HD-8570M 	pci1002,990b.rom (HD's) 	pci1002,6663.rom
    То есть нужно было скачать два этих биоса, удалить из образа коребут тот старый pci1002,990b.rom
    который там уже был (командой ./util/cbfstool/cbfstool $COREBOOT_ROM_PATH remove -n pci1002,990b.rom)
    и потом добавить в образ коребут два новых скачанных видеобиоса перед его прошивкой

    Если ты случайно тестировал вместе со старым pci1002,990b.rom, пожалуйста перетестируй с этими двумя новыми
    Я взял оба биоса из твоей ссылки (таблицы), но они не канают. А ты сам тестировал их?
    Вернее, для встроенной-то канает, а дискретная не работает.
    Хм, загружает биос и потом его патчит?
    Attachments
    1446407959162488825.jpg
    1446407959162488825.jpg (12.19 KiB)
    Viewed 8999 times
  • Кстати, по идее, я тут тоже не бесполезен, я довольно тщательно тестирую все необходимое пользователю компутатора (нашего бука), так что я тестер :)
    А есть какие-нибудь изменения с ЕС-контроллером?
    Кстати, а как можно на корбуте управлять скоростью вентилятора? А то ночью если сидишь, то ноут сильно шумит при слабой нагрузке. В таких случаях можно "прогревать" процессор даже до 70 градусов по Цельсию (ведь дальше греть нагрузки нет).
  • olodar wrote:Я взял оба биоса из твоей ссылки (таблицы), но они не канают. А ты сам тестировал их?
    пока что нет. собирался протестировать 4 зашивки но не успел, слишком много дел привалило... :(
    olodar wrote:загружает биос и потом его патчит?
    да, твоя картинка очень в тему)) там даже у видеобиоса для R5 M230 неправильный id-шник (как у HD 8570M) а потом он патчится на правильный :lol:
    olodar wrote:А есть какие-нибудь изменения с ЕС-контроллером?
    опенсорсная прошивка - в процессе разработки (пока что только LED-ами мигать умеет но основная архитектура уже есть)
    olodar wrote:Кстати, а как можно на корбуте управлять скоростью вентилятора? А то ночью если сидишь, то ноут сильно шумит при слабой нагрузке. В таких случаях можно "прогревать" процессор даже до 70 градусов по Цельсию (ведь дальше греть нагрузки нет)
    чем ниже температура любой микросхемы тем дольше её средний срок службы, так что вентилятор правильно делает :) наверное как-то можно менять скорость вращения вентилятора через интерфейс взаимодействия coreboot и EC контроллера - но я его пока не изучал...
  • floppy121 wrote:Есть замечательная утилита AtomDis - https://cgit.freedesktop.org/~mhopf/AtomDis/
    С её помощью можно дизассемблировать AMD-шные видеобиосы - "ATOMBIOS"

    Внизу прилагаю дизассемблеры ATOMBIOS-а встроенной видеокарты (образы выложу попозже).
    Сравнивал три видеобиоса:
    1) Чистый VBIOS - извлекли из образа оф. биоса
    2) Грязный VBIOS - оф. биос загрузился и потом извлекли
    3) Очень грязный VBIOS - оф.биос загрузился, извлекли VBIOS и запихнули в коребут, ещё раз загрузились и опять извлекли

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

    data_table 0000ac5e #0b (VRAM_UsageByFirmware): <---olodar'у будет интересно
    , он хотел чтобы встроенная видеокарта меньше оперативки кушала, где-то в ATOMBIOS это меняется


    Size 000c
    Format Rev. 01
    Param Rev. 00
    Content Rev. 05
    дальше отличие.
    Грязный:
    00000000: e0ff 0b00 2000 2000
    ...
    0004: ULONG ulStartAddrUsedByFirmware = 0x000bffe0 (786400)
    Очень грязный:
    00000000: e0ff 0700 2000 2000
    ...
    0004: ULONG ulStartAddrUsedByFirmware = 0x0007ffe0 (524256)

    ===

    Различий между "чистым" и "грязным" намного больше! Особенно интересны различия в этих таблицах и полях: LVDS_Info, sLCDTiming, ucLVDS_Misc, ucLCDPanel_SpecialHandlingCap, PowerPlayInfo, usSpreadSpectrumPercentage

    Наверное при включении компа официальный BIOS редактирует VBIOS, внося туда нужные параметры для нормальной работы экрана, который - заметим - подключен через LVDS порт! Может поэтому подсветка и не работает, что для её работы нужны дополнительные телодвижения
    А как наооборот увеличить видеопамять? Хочу гта 5 нормально запустить, она требует 1 гиг минимум :shock:
  • Слушай, а по сути в раме должен содержатся биос и встроенной видюхи, который уже должен быть пропатчен. Мб как-то можно его извлечь, и потом все заработает?
  • Who is online

    Users browsing this forum: No registered users and 7 guests